From 0a697e49c115ade34c65f9d98f196c6cc23b3e77 Mon Sep 17 00:00:00 2001 From: Kevin Stubbings Date: Tue, 24 Sep 2024 17:29:25 -0700 Subject: [PATCH 01/63] Add MaD --- java/ql/lib/change-notes/2024-09-24-multipart.md | 4 ++++ java/ql/lib/ext/jakarta.servlet.http.model.yml | 7 +++++++ java/ql/lib/ext/javax.servlet.http.model.yml | 8 ++++++++ java/ql/lib/ext/org.apache.commons.fileupload.yml | 15 +++++++++++++++ 4 files changed, 34 insertions(+) create mode 100644 java/ql/lib/change-notes/2024-09-24-multipart.md create mode 100644 java/ql/lib/ext/org.apache.commons.fileupload.yml diff --git a/java/ql/lib/change-notes/2024-09-24-multipart.md b/java/ql/lib/change-notes/2024-09-24-multipart.md new file mode 100644 index 00000000000..f10cfbfd944 --- /dev/null +++ b/java/ql/lib/change-notes/2024-09-24-multipart.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added more dataflow models of `org.apache.commons.fileupload.FileItem` and `javax.servlet.http.Part`. \ No newline at end of file diff --git a/java/ql/lib/ext/jakarta.servlet.http.model.yml b/java/ql/lib/ext/jakarta.servlet.http.model.yml index 5a83b1ac08d..c1c55bddb9e 100644 --- a/java/ql/lib/ext/jakarta.servlet.http.model.yml +++ b/java/ql/lib/ext/jakarta.servlet.http.model.yml @@ -4,3 +4,10 @@ extensions: extensible: sourceModel data: - ["jakarta.servlet.http", "HttpServletRequest", True, "getServletPath", "", "", "ReturnValue", "remote", "manual"] + - ["jakarta.servlet.http", "Part", True, "getInputStream", "", "()", "ReturnValue", "remote", "manual"] + - ["jakarta.servlet.http", "Part", True, "getName", "", "()", "ReturnValue", "remote", "manual"] + - ["jakarta.servlet.http", "Part", True, "getContentType", "", "()", "ReturnValue", "remote", "manual"] + - ["jakarta.servlet.http", "Part", True, "getHeader", "", "(String)", "ReturnValue", "remote", "manual"] + - ["jakarta.servlet.http", "Part", True, "getHeaders", "", "(String)", "ReturnValue", "remote", "manual"] + - ["jakarta.servlet.http", "Part", True, "getHeaderNames", "", "()", "ReturnValue", "remote", "manual"] + - ["jakarta.servlet.http", "Part", True, "getSubmittedFileName", "", "()", "ReturnValue", "remote", "manual"] diff --git a/java/ql/lib/ext/javax.servlet.http.model.yml b/java/ql/lib/ext/javax.servlet.http.model.yml index ec35445d199..dd345ed3c3e 100644 --- a/java/ql/lib/ext/javax.servlet.http.model.yml +++ b/java/ql/lib/ext/javax.servlet.http.model.yml @@ -19,6 +19,14 @@ extensions: - ["javax.servlet.http", "HttpServletRequest", False, "getRequestURI", "()", "", "ReturnValue", "remote", "manual"] - ["javax.servlet.http", "HttpServletRequest", False, "getRequestURL", "()", "", "ReturnValue", "remote", "manual"] - ["javax.servlet.http", "HttpServletRequest", False, "getServletPath", "()", "", "ReturnValue", "remote", "manual"] + - ["javax.servlet.http", "Part", False, "getInputStream", "()", "", "ReturnValue", "remote", "manual"] + - ["javax.servlet.http", "Part", False, "getName", "()", "", "ReturnValue", "remote", "manual"] + - ["javax.servlet.http", "Part", False, "getContentType", "()", "", "ReturnValue", "remote", "manual"] + - ["javax.servlet.http", "Part", False, "getHeader", "(String)", "", "ReturnValue", "remote", "manual"] + - ["javax.servlet.http", "Part", False, "getSubmittedFileName", "()", "", "ReturnValue", "remote", "manual"] + - ["javax.servlet.http", "Part", False, "getHeaders", "(String)", "", "ReturnValue", "remote", "manual"] + - ["javax.servlet.http", "Part", False, "getHeadersNames", "()", "", "ReturnValue", "remote", "manual"] + - addsTo: pack: codeql/java-all diff --git a/java/ql/lib/ext/org.apache.commons.fileupload.yml b/java/ql/lib/ext/org.apache.commons.fileupload.yml new file mode 100644 index 00000000000..dfa87cd22bb --- /dev/null +++ b/java/ql/lib/ext/org.apache.commons.fileupload.yml @@ -0,0 +1,15 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: sourceModel + data: + - ["org.apache.commons.fileupload", "FileItem", True, "getInputStream", "", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItem", True, "getFieldName", "", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItem", True, "getContentType", "", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItem", True, "getString", "", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItem", True, "getName", "", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItem", True, "get", "", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItemStream", True, "getContentType", "", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItemStream", True, "getFieldName", "", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItemStream", True, "getName", "", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItemStream", True, "openStream", "", "", "ReturnValue", "remote", "manual"] \ No newline at end of file From d99f552cb3ecc9b493ef26cbcf97795cc7feb522 Mon Sep 17 00:00:00 2001 From: Kevin Stubbings Date: Wed, 25 Sep 2024 08:08:02 +0000 Subject: [PATCH 02/63] Test Issues --- .../dataflow/taintsources/App.java | 21 +++++ .../dataflow/taintsources/options | 2 +- .../test/javax/servlet/AsyncContext.java | 31 +++++++ .../stubs/test/javax/servlet/AsyncEvent.java | 20 +++++ .../test/javax/servlet/AsyncListener.java | 14 ++++ .../test/javax/servlet/DispatcherType.java | 10 +++ .../test/stubs/test/javax/servlet/Filter.java | 15 ++++ .../stubs/test/javax/servlet/FilterChain.java | 11 +++ .../test/javax/servlet/FilterConfig.java | 14 ++++ .../javax/servlet/FilterRegistration.java | 19 +++++ .../test/javax/servlet/GenericServlet.java | 28 +++++++ .../javax/servlet/HttpConstraintElement.java | 16 ++++ .../servlet/HttpMethodConstraintElement.java | 13 +++ .../javax/servlet/MultipartConfigElement.java | 17 ++++ .../test/javax/servlet/ReadListener.java | 12 +++ .../test/javax/servlet/Registration.java | 20 +++++ .../test/javax/servlet/RequestDispatcher.java | 30 +++++++ .../stubs/test/javax/servlet/Servlet.java | 16 ++++ .../test/javax/servlet/ServletConfig.java | 14 ++++ .../test/javax/servlet/ServletContext.java | 83 +++++++++++++++++++ .../test/javax/servlet/ServletException.java | 27 ++++++ .../javax/servlet/ServletInputStream.java | 15 ++++ .../javax/servlet/ServletOutputStream.java | 28 +++++++ .../javax/servlet/ServletRegistration.java | 23 +++++ .../test/javax/servlet/ServletRequest.java | 55 ++++++++++++ .../test/javax/servlet/ServletResponse.java | 27 ++++++ .../javax/servlet/ServletSecurityElement.java | 19 +++++ .../javax/servlet/SessionCookieConfig.java | 22 +++++ .../javax/servlet/SessionTrackingMode.java | 10 +++ .../test/javax/servlet/WriteListener.java | 11 +++ .../servlet/annotation/HttpConstraint.java | 18 ++++ .../annotation/HttpMethodConstraint.java | 19 +++++ .../servlet/annotation/MultipartConfig.java | 19 +++++ .../servlet/annotation/ServletSecurity.java | 33 ++++++++ .../servlet/annotation/WebInitParam.java | 20 +++++ .../javax/servlet/annotation/WebServlet.java | 28 +++++++ .../descriptor/JspConfigDescriptor.java | 13 +++ .../JspPropertyGroupDescriptor.java | 21 +++++ .../servlet/descriptor/TaglibDescriptor.java | 10 +++ .../stubs/test/javax/servlet/http/Cookie.java | 29 +++++++ .../test/javax/servlet/http/HttpServlet.java | 24 ++++++ .../servlet/http/HttpServletMapping.java | 13 +++ .../servlet/http/HttpServletRequest.java | 60 ++++++++++++++ .../servlet/http/HttpServletResponse.java | 77 +++++++++++++++++ .../test/javax/servlet/http/HttpSession.java | 28 +++++++ .../servlet/http/HttpSessionContext.java | 12 +++ .../servlet/http/HttpUpgradeHandler.java | 11 +++ .../test/javax/servlet/http/MappingMatch.java | 10 +++ .../stubs/test/javax/servlet/http/Part.java | 20 +++++ .../test/javax/servlet/http/PushBuilder.java | 23 +++++ .../javax/servlet/http/WebConnection.java | 12 +++ 51 files changed, 1142 insertions(+), 1 deletion(-) create mode 100644 java/ql/test/library-tests/dataflow/taintsources/App.java create mode 100644 java/ql/test/stubs/test/javax/servlet/AsyncContext.java create mode 100644 java/ql/test/stubs/test/javax/servlet/AsyncEvent.java create mode 100644 java/ql/test/stubs/test/javax/servlet/AsyncListener.java create mode 100644 java/ql/test/stubs/test/javax/servlet/DispatcherType.java create mode 100644 java/ql/test/stubs/test/javax/servlet/Filter.java create mode 100644 java/ql/test/stubs/test/javax/servlet/FilterChain.java create mode 100644 java/ql/test/stubs/test/javax/servlet/FilterConfig.java create mode 100644 java/ql/test/stubs/test/javax/servlet/FilterRegistration.java create mode 100644 java/ql/test/stubs/test/javax/servlet/GenericServlet.java create mode 100644 java/ql/test/stubs/test/javax/servlet/HttpConstraintElement.java create mode 100644 java/ql/test/stubs/test/javax/servlet/HttpMethodConstraintElement.java create mode 100644 java/ql/test/stubs/test/javax/servlet/MultipartConfigElement.java create mode 100644 java/ql/test/stubs/test/javax/servlet/ReadListener.java create mode 100644 java/ql/test/stubs/test/javax/servlet/Registration.java create mode 100644 java/ql/test/stubs/test/javax/servlet/RequestDispatcher.java create mode 100644 java/ql/test/stubs/test/javax/servlet/Servlet.java create mode 100644 java/ql/test/stubs/test/javax/servlet/ServletConfig.java create mode 100644 java/ql/test/stubs/test/javax/servlet/ServletContext.java create mode 100644 java/ql/test/stubs/test/javax/servlet/ServletException.java create mode 100644 java/ql/test/stubs/test/javax/servlet/ServletInputStream.java create mode 100644 java/ql/test/stubs/test/javax/servlet/ServletOutputStream.java create mode 100644 java/ql/test/stubs/test/javax/servlet/ServletRegistration.java create mode 100644 java/ql/test/stubs/test/javax/servlet/ServletRequest.java create mode 100644 java/ql/test/stubs/test/javax/servlet/ServletResponse.java create mode 100644 java/ql/test/stubs/test/javax/servlet/ServletSecurityElement.java create mode 100644 java/ql/test/stubs/test/javax/servlet/SessionCookieConfig.java create mode 100644 java/ql/test/stubs/test/javax/servlet/SessionTrackingMode.java create mode 100644 java/ql/test/stubs/test/javax/servlet/WriteListener.java create mode 100644 java/ql/test/stubs/test/javax/servlet/annotation/HttpConstraint.java create mode 100644 java/ql/test/stubs/test/javax/servlet/annotation/HttpMethodConstraint.java create mode 100644 java/ql/test/stubs/test/javax/servlet/annotation/MultipartConfig.java create mode 100644 java/ql/test/stubs/test/javax/servlet/annotation/ServletSecurity.java create mode 100644 java/ql/test/stubs/test/javax/servlet/annotation/WebInitParam.java create mode 100644 java/ql/test/stubs/test/javax/servlet/annotation/WebServlet.java create mode 100644 java/ql/test/stubs/test/javax/servlet/descriptor/JspConfigDescriptor.java create mode 100644 java/ql/test/stubs/test/javax/servlet/descriptor/JspPropertyGroupDescriptor.java create mode 100644 java/ql/test/stubs/test/javax/servlet/descriptor/TaglibDescriptor.java create mode 100644 java/ql/test/stubs/test/javax/servlet/http/Cookie.java create mode 100644 java/ql/test/stubs/test/javax/servlet/http/HttpServlet.java create mode 100644 java/ql/test/stubs/test/javax/servlet/http/HttpServletMapping.java create mode 100644 java/ql/test/stubs/test/javax/servlet/http/HttpServletRequest.java create mode 100644 java/ql/test/stubs/test/javax/servlet/http/HttpServletResponse.java create mode 100644 java/ql/test/stubs/test/javax/servlet/http/HttpSession.java create mode 100644 java/ql/test/stubs/test/javax/servlet/http/HttpSessionContext.java create mode 100644 java/ql/test/stubs/test/javax/servlet/http/HttpUpgradeHandler.java create mode 100644 java/ql/test/stubs/test/javax/servlet/http/MappingMatch.java create mode 100644 java/ql/test/stubs/test/javax/servlet/http/Part.java create mode 100644 java/ql/test/stubs/test/javax/servlet/http/PushBuilder.java create mode 100644 java/ql/test/stubs/test/javax/servlet/http/WebConnection.java diff --git a/java/ql/test/library-tests/dataflow/taintsources/App.java b/java/ql/test/library-tests/dataflow/taintsources/App.java new file mode 100644 index 00000000000..73caade7525 --- /dev/null +++ b/java/ql/test/library-tests/dataflow/taintsources/App.java @@ -0,0 +1,21 @@ +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.Part; + +/** + * Hello world! + */ +public class App { + + + +public class FileUploadServlet extends HttpServlet { + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException { + Part filePart = request.getPart("file"); // Retrieves + sink(filePart.getName()); + + } +} +} \ No newline at end of file diff --git a/java/ql/test/library-tests/dataflow/taintsources/options b/java/ql/test/library-tests/dataflow/taintsources/options index c8249b05e38..f2365fc973b 100644 --- a/java/ql/test/library-tests/dataflow/taintsources/options +++ b/java/ql/test/library-tests/dataflow/taintsources/options @@ -1 +1 @@ -//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/servlet-api-2.4:${testdir}/../../../stubs/springframework-5.3.8:${testdir}/../../../stubs/google-android-9.0.0:${testdir}/../../../stubs/playframework-2.6.x:${testdir}/../../../stubs/jackson-databind-2.12:${testdir}/../../../stubs/jackson-core-2.12:${testdir}/../../../stubs/akka-2.6.x:${testdir}/../../../stubs/jwtk-jjwt-0.11.2:${testdir}/../../../stubs/jenkins:${testdir}/../../../stubs/stapler-1.263 \ No newline at end of file +//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/servlet-api-2.4:${testdir}/../../../stubs/springframework-5.3.8:${testdir}/../../../stubs/google-android-9.0.0:${testdir}/../../../stubs/playframework-2.6.x:${testdir}/../../../stubs/jackson-databind-2.12:${testdir}/../../../stubs/jackson-core-2.12:${testdir}/../../../stubs/akka-2.6.x:${testdir}/../../../stubs/jwtk-jjwt-0.11.2:${testdir}/../../../stubs/jenkins:${testdir}/../../../stubs/stapler-1.263:${testdir}/../../../stubs/test \ No newline at end of file diff --git a/java/ql/test/stubs/test/javax/servlet/AsyncContext.java b/java/ql/test/stubs/test/javax/servlet/AsyncContext.java new file mode 100644 index 00000000000..70a39f55ac9 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/AsyncContext.java @@ -0,0 +1,31 @@ +// Generated automatically from javax.servlet.AsyncContext for testing purposes + +package javax.servlet; + +import javax.servlet.AsyncListener; +import javax.servlet.ServletContext; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; + +public interface AsyncContext +{ + T createListener(java.lang.Class p0); + ServletRequest getRequest(); + ServletResponse getResponse(); + boolean hasOriginalRequestAndResponse(); + long getTimeout(); + static String ASYNC_CONTEXT_PATH = null; + static String ASYNC_MAPPING = null; + static String ASYNC_PATH_INFO = null; + static String ASYNC_QUERY_STRING = null; + static String ASYNC_REQUEST_URI = null; + static String ASYNC_SERVLET_PATH = null; + void addListener(AsyncListener p0); + void addListener(AsyncListener p0, ServletRequest p1, ServletResponse p2); + void complete(); + void dispatch(); + void dispatch(ServletContext p0, String p1); + void dispatch(String p0); + void setTimeout(long p0); + void start(Runnable p0); +} diff --git a/java/ql/test/stubs/test/javax/servlet/AsyncEvent.java b/java/ql/test/stubs/test/javax/servlet/AsyncEvent.java new file mode 100644 index 00000000000..d7cb9c2b175 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/AsyncEvent.java @@ -0,0 +1,20 @@ +// Generated automatically from javax.servlet.AsyncEvent for testing purposes + +package javax.servlet; + +import javax.servlet.AsyncContext; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; + +public class AsyncEvent +{ + protected AsyncEvent() {} + public AsyncContext getAsyncContext(){ return null; } + public AsyncEvent(AsyncContext p0){} + public AsyncEvent(AsyncContext p0, ServletRequest p1, ServletResponse p2){} + public AsyncEvent(AsyncContext p0, ServletRequest p1, ServletResponse p2, Throwable p3){} + public AsyncEvent(AsyncContext p0, Throwable p1){} + public ServletRequest getSuppliedRequest(){ return null; } + public ServletResponse getSuppliedResponse(){ return null; } + public Throwable getThrowable(){ return null; } +} diff --git a/java/ql/test/stubs/test/javax/servlet/AsyncListener.java b/java/ql/test/stubs/test/javax/servlet/AsyncListener.java new file mode 100644 index 00000000000..2723482f668 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/AsyncListener.java @@ -0,0 +1,14 @@ +// Generated automatically from javax.servlet.AsyncListener for testing purposes + +package javax.servlet; + +import java.util.EventListener; +import javax.servlet.AsyncEvent; + +public interface AsyncListener extends EventListener +{ + void onComplete(AsyncEvent p0); + void onError(AsyncEvent p0); + void onStartAsync(AsyncEvent p0); + void onTimeout(AsyncEvent p0); +} diff --git a/java/ql/test/stubs/test/javax/servlet/DispatcherType.java b/java/ql/test/stubs/test/javax/servlet/DispatcherType.java new file mode 100644 index 00000000000..2b7b44f328d --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/DispatcherType.java @@ -0,0 +1,10 @@ +// Generated automatically from javax.servlet.DispatcherType for testing purposes + +package javax.servlet; + + +public enum DispatcherType +{ + ASYNC, ERROR, FORWARD, INCLUDE, REQUEST; + private DispatcherType() {} +} diff --git a/java/ql/test/stubs/test/javax/servlet/Filter.java b/java/ql/test/stubs/test/javax/servlet/Filter.java new file mode 100644 index 00000000000..64b9f9d73a8 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/Filter.java @@ -0,0 +1,15 @@ +// Generated automatically from javax.servlet.Filter for testing purposes + +package javax.servlet; + +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; + +public interface Filter +{ + default void destroy(){} + default void init(FilterConfig p0){} + void doFilter(ServletRequest p0, ServletResponse p1, FilterChain p2); +} diff --git a/java/ql/test/stubs/test/javax/servlet/FilterChain.java b/java/ql/test/stubs/test/javax/servlet/FilterChain.java new file mode 100644 index 00000000000..f64ab722684 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/FilterChain.java @@ -0,0 +1,11 @@ +// Generated automatically from javax.servlet.FilterChain for testing purposes + +package javax.servlet; + +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; + +public interface FilterChain +{ + void doFilter(ServletRequest p0, ServletResponse p1); +} diff --git a/java/ql/test/stubs/test/javax/servlet/FilterConfig.java b/java/ql/test/stubs/test/javax/servlet/FilterConfig.java new file mode 100644 index 00000000000..0e140c6680c --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/FilterConfig.java @@ -0,0 +1,14 @@ +// Generated automatically from javax.servlet.FilterConfig for testing purposes + +package javax.servlet; + +import java.util.Enumeration; +import javax.servlet.ServletContext; + +public interface FilterConfig +{ + Enumeration getInitParameterNames(); + ServletContext getServletContext(); + String getFilterName(); + String getInitParameter(String p0); +} diff --git a/java/ql/test/stubs/test/javax/servlet/FilterRegistration.java b/java/ql/test/stubs/test/javax/servlet/FilterRegistration.java new file mode 100644 index 00000000000..6ad0739ceb6 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/FilterRegistration.java @@ -0,0 +1,19 @@ +// Generated automatically from javax.servlet.FilterRegistration for testing purposes + +package javax.servlet; + +import java.util.Collection; +import java.util.EnumSet; +import javax.servlet.DispatcherType; +import javax.servlet.Registration; + +public interface FilterRegistration extends Registration +{ + Collection getServletNameMappings(); + Collection getUrlPatternMappings(); + static public interface Dynamic extends FilterRegistration, Registration.Dynamic + { + } + void addMappingForServletNames(EnumSet p0, boolean p1, String... p2); + void addMappingForUrlPatterns(EnumSet p0, boolean p1, String... p2); +} diff --git a/java/ql/test/stubs/test/javax/servlet/GenericServlet.java b/java/ql/test/stubs/test/javax/servlet/GenericServlet.java new file mode 100644 index 00000000000..5f7bdcda487 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/GenericServlet.java @@ -0,0 +1,28 @@ +// Generated automatically from javax.servlet.GenericServlet for testing purposes + +package javax.servlet; + +import java.io.Serializable; +import java.util.Enumeration; +import javax.servlet.Servlet; +import javax.servlet.ServletConfig; +import javax.servlet.ServletContext; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; + +abstract public class GenericServlet implements Serializable, Servlet, ServletConfig +{ + public Enumeration getInitParameterNames(){ return null; } + public GenericServlet(){} + public ServletConfig getServletConfig(){ return null; } + public ServletContext getServletContext(){ return null; } + public String getInitParameter(String p0){ return null; } + public String getServletInfo(){ return null; } + public String getServletName(){ return null; } + public abstract void service(ServletRequest p0, ServletResponse p1); + public void destroy(){} + public void init(){} + public void init(ServletConfig p0){} + public void log(String p0){} + public void log(String p0, Throwable p1){} +} diff --git a/java/ql/test/stubs/test/javax/servlet/HttpConstraintElement.java b/java/ql/test/stubs/test/javax/servlet/HttpConstraintElement.java new file mode 100644 index 00000000000..6598aa47cc5 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/HttpConstraintElement.java @@ -0,0 +1,16 @@ +// Generated automatically from javax.servlet.HttpConstraintElement for testing purposes + +package javax.servlet; + +import javax.servlet.annotation.ServletSecurity; + +public class HttpConstraintElement +{ + public HttpConstraintElement(){} + public HttpConstraintElement(ServletSecurity.EmptyRoleSemantic p0){} + public HttpConstraintElement(ServletSecurity.EmptyRoleSemantic p0, ServletSecurity.TransportGuarantee p1, String... p2){} + public HttpConstraintElement(ServletSecurity.TransportGuarantee p0, String... p1){} + public ServletSecurity.EmptyRoleSemantic getEmptyRoleSemantic(){ return null; } + public ServletSecurity.TransportGuarantee getTransportGuarantee(){ return null; } + public String[] getRolesAllowed(){ return null; } +} diff --git a/java/ql/test/stubs/test/javax/servlet/HttpMethodConstraintElement.java b/java/ql/test/stubs/test/javax/servlet/HttpMethodConstraintElement.java new file mode 100644 index 00000000000..ddb52527004 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/HttpMethodConstraintElement.java @@ -0,0 +1,13 @@ +// Generated automatically from javax.servlet.HttpMethodConstraintElement for testing purposes + +package javax.servlet; + +import javax.servlet.HttpConstraintElement; + +public class HttpMethodConstraintElement extends HttpConstraintElement +{ + protected HttpMethodConstraintElement() {} + public HttpMethodConstraintElement(String p0){} + public HttpMethodConstraintElement(String p0, HttpConstraintElement p1){} + public String getMethodName(){ return null; } +} diff --git a/java/ql/test/stubs/test/javax/servlet/MultipartConfigElement.java b/java/ql/test/stubs/test/javax/servlet/MultipartConfigElement.java new file mode 100644 index 00000000000..8470d9a5317 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/MultipartConfigElement.java @@ -0,0 +1,17 @@ +// Generated automatically from javax.servlet.MultipartConfigElement for testing purposes + +package javax.servlet; + +import javax.servlet.annotation.MultipartConfig; + +public class MultipartConfigElement +{ + protected MultipartConfigElement() {} + public MultipartConfigElement(MultipartConfig p0){} + public MultipartConfigElement(String p0){} + public MultipartConfigElement(String p0, long p1, long p2, int p3){} + public String getLocation(){ return null; } + public int getFileSizeThreshold(){ return 0; } + public long getMaxFileSize(){ return 0; } + public long getMaxRequestSize(){ return 0; } +} diff --git a/java/ql/test/stubs/test/javax/servlet/ReadListener.java b/java/ql/test/stubs/test/javax/servlet/ReadListener.java new file mode 100644 index 00000000000..367594ef7da --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/ReadListener.java @@ -0,0 +1,12 @@ +// Generated automatically from javax.servlet.ReadListener for testing purposes + +package javax.servlet; + +import java.util.EventListener; + +public interface ReadListener extends EventListener +{ + void onAllDataRead(); + void onDataAvailable(); + void onError(Throwable p0); +} diff --git a/java/ql/test/stubs/test/javax/servlet/Registration.java b/java/ql/test/stubs/test/javax/servlet/Registration.java new file mode 100644 index 00000000000..5d4095813ef --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/Registration.java @@ -0,0 +1,20 @@ +// Generated automatically from javax.servlet.Registration for testing purposes + +package javax.servlet; + +import java.util.Map; +import java.util.Set; + +public interface Registration +{ + Map getInitParameters(); + Set setInitParameters(Map p0); + String getClassName(); + String getInitParameter(String p0); + String getName(); + boolean setInitParameter(String p0, String p1); + static public interface Dynamic extends Registration + { + void setAsyncSupported(boolean p0); + } +} diff --git a/java/ql/test/stubs/test/javax/servlet/RequestDispatcher.java b/java/ql/test/stubs/test/javax/servlet/RequestDispatcher.java new file mode 100644 index 00000000000..ad017e4f501 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/RequestDispatcher.java @@ -0,0 +1,30 @@ +// Generated automatically from javax.servlet.RequestDispatcher for testing purposes + +package javax.servlet; + +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; + +public interface RequestDispatcher +{ + static String ERROR_EXCEPTION = null; + static String ERROR_EXCEPTION_TYPE = null; + static String ERROR_MESSAGE = null; + static String ERROR_REQUEST_URI = null; + static String ERROR_SERVLET_NAME = null; + static String ERROR_STATUS_CODE = null; + static String FORWARD_CONTEXT_PATH = null; + static String FORWARD_MAPPING = null; + static String FORWARD_PATH_INFO = null; + static String FORWARD_QUERY_STRING = null; + static String FORWARD_REQUEST_URI = null; + static String FORWARD_SERVLET_PATH = null; + static String INCLUDE_CONTEXT_PATH = null; + static String INCLUDE_MAPPING = null; + static String INCLUDE_PATH_INFO = null; + static String INCLUDE_QUERY_STRING = null; + static String INCLUDE_REQUEST_URI = null; + static String INCLUDE_SERVLET_PATH = null; + void forward(ServletRequest p0, ServletResponse p1); + void include(ServletRequest p0, ServletResponse p1); +} diff --git a/java/ql/test/stubs/test/javax/servlet/Servlet.java b/java/ql/test/stubs/test/javax/servlet/Servlet.java new file mode 100644 index 00000000000..231c011a6f8 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/Servlet.java @@ -0,0 +1,16 @@ +// Generated automatically from javax.servlet.Servlet for testing purposes + +package javax.servlet; + +import javax.servlet.ServletConfig; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; + +public interface Servlet +{ + ServletConfig getServletConfig(); + String getServletInfo(); + void destroy(); + void init(ServletConfig p0); + void service(ServletRequest p0, ServletResponse p1); +} diff --git a/java/ql/test/stubs/test/javax/servlet/ServletConfig.java b/java/ql/test/stubs/test/javax/servlet/ServletConfig.java new file mode 100644 index 00000000000..c483c16ac4e --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/ServletConfig.java @@ -0,0 +1,14 @@ +// Generated automatically from javax.servlet.ServletConfig for testing purposes + +package javax.servlet; + +import java.util.Enumeration; +import javax.servlet.ServletContext; + +public interface ServletConfig +{ + Enumeration getInitParameterNames(); + ServletContext getServletContext(); + String getInitParameter(String p0); + String getServletName(); +} diff --git a/java/ql/test/stubs/test/javax/servlet/ServletContext.java b/java/ql/test/stubs/test/javax/servlet/ServletContext.java new file mode 100644 index 00000000000..812393f61e9 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/ServletContext.java @@ -0,0 +1,83 @@ +// Generated automatically from javax.servlet.ServletContext for testing purposes + +package javax.servlet; + +import java.io.InputStream; +import java.net.URL; +import java.util.Enumeration; +import java.util.EventListener; +import java.util.Map; +import java.util.Set; +import javax.servlet.Filter; +import javax.servlet.FilterRegistration; +import javax.servlet.RequestDispatcher; +import javax.servlet.Servlet; +import javax.servlet.ServletRegistration; +import javax.servlet.SessionCookieConfig; +import javax.servlet.SessionTrackingMode; +import javax.servlet.descriptor.JspConfigDescriptor; + +public interface ServletContext +{ + T createListener(java.lang.Class p0); + void addListener(T p0); + T createFilter(java.lang.Class p0); + T createServlet(java.lang.Class p0); + ClassLoader getClassLoader(); + Enumeration getServlets(); + Enumeration getAttributeNames(); + Enumeration getInitParameterNames(); + Enumeration getServletNames(); + FilterRegistration getFilterRegistration(String p0); + FilterRegistration.Dynamic addFilter(String p0, Class p1); + FilterRegistration.Dynamic addFilter(String p0, Filter p1); + FilterRegistration.Dynamic addFilter(String p0, String p1); + InputStream getResourceAsStream(String p0); + JspConfigDescriptor getJspConfigDescriptor(); + Map getFilterRegistrations(); + Map getServletRegistrations(); + Object getAttribute(String p0); + RequestDispatcher getNamedDispatcher(String p0); + RequestDispatcher getRequestDispatcher(String p0); + Servlet getServlet(String p0); + ServletContext getContext(String p0); + ServletRegistration getServletRegistration(String p0); + ServletRegistration.Dynamic addJspFile(String p0, String p1); + ServletRegistration.Dynamic addServlet(String p0, Class p1); + ServletRegistration.Dynamic addServlet(String p0, Servlet p1); + ServletRegistration.Dynamic addServlet(String p0, String p1); + SessionCookieConfig getSessionCookieConfig(); + Set getDefaultSessionTrackingModes(); + Set getEffectiveSessionTrackingModes(); + Set getResourcePaths(String p0); + String getContextPath(); + String getInitParameter(String p0); + String getMimeType(String p0); + String getRealPath(String p0); + String getRequestCharacterEncoding(); + String getResponseCharacterEncoding(); + String getServerInfo(); + String getServletContextName(); + String getVirtualServerName(); + URL getResource(String p0); + boolean setInitParameter(String p0, String p1); + int getEffectiveMajorVersion(); + int getEffectiveMinorVersion(); + int getMajorVersion(); + int getMinorVersion(); + int getSessionTimeout(); + static String ORDERED_LIBS = null; + static String TEMPDIR = null; + void addListener(Class p0); + void addListener(String p0); + void declareRoles(String... p0); + void log(Exception p0, String p1); + void log(String p0); + void log(String p0, Throwable p1); + void removeAttribute(String p0); + void setAttribute(String p0, Object p1); + void setRequestCharacterEncoding(String p0); + void setResponseCharacterEncoding(String p0); + void setSessionTimeout(int p0); + void setSessionTrackingModes(Set p0); +} diff --git a/java/ql/test/stubs/test/javax/servlet/ServletException.java b/java/ql/test/stubs/test/javax/servlet/ServletException.java new file mode 100644 index 00000000000..812b1687665 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/ServletException.java @@ -0,0 +1,27 @@ +/** + * + * Copyright 2003-2004 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * Adapted from the Java Servlet API version 2.4 as available at + * http://search.maven.org/remotecontent?filepath=javax/servlet/servlet-api/2.4/servlet-api-2.4-sources.jar + * Only relevant stubs of this file have been retained for test purposes. + */ + +package javax.servlet; + +public class ServletException extends Exception { +} diff --git a/java/ql/test/stubs/test/javax/servlet/ServletInputStream.java b/java/ql/test/stubs/test/javax/servlet/ServletInputStream.java new file mode 100644 index 00000000000..31034066970 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/ServletInputStream.java @@ -0,0 +1,15 @@ +// Generated automatically from javax.servlet.ServletInputStream for testing purposes + +package javax.servlet; + +import java.io.InputStream; +import javax.servlet.ReadListener; + +abstract public class ServletInputStream extends InputStream +{ + protected ServletInputStream(){} + public abstract boolean isFinished(); + public abstract boolean isReady(); + public abstract void setReadListener(ReadListener p0); + public int readLine(byte[] p0, int p1, int p2){ return 0; } +} diff --git a/java/ql/test/stubs/test/javax/servlet/ServletOutputStream.java b/java/ql/test/stubs/test/javax/servlet/ServletOutputStream.java new file mode 100644 index 00000000000..52a2162c9eb --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/ServletOutputStream.java @@ -0,0 +1,28 @@ +// Generated automatically from javax.servlet.ServletOutputStream for testing purposes + +package javax.servlet; + +import java.io.OutputStream; +import javax.servlet.WriteListener; + +abstract public class ServletOutputStream extends OutputStream +{ + protected ServletOutputStream(){} + public abstract boolean isReady(); + public abstract void setWriteListener(WriteListener p0); + public void print(String p0){} + public void print(boolean p0){} + public void print(char p0){} + public void print(double p0){} + public void print(float p0){} + public void print(int p0){} + public void print(long p0){} + public void println(){} + public void println(String p0){} + public void println(boolean p0){} + public void println(char p0){} + public void println(double p0){} + public void println(float p0){} + public void println(int p0){} + public void println(long p0){} +} diff --git a/java/ql/test/stubs/test/javax/servlet/ServletRegistration.java b/java/ql/test/stubs/test/javax/servlet/ServletRegistration.java new file mode 100644 index 00000000000..a1cc66f2d19 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/ServletRegistration.java @@ -0,0 +1,23 @@ +// Generated automatically from javax.servlet.ServletRegistration for testing purposes + +package javax.servlet; + +import java.util.Collection; +import java.util.Set; +import javax.servlet.MultipartConfigElement; +import javax.servlet.Registration; +import javax.servlet.ServletSecurityElement; + +public interface ServletRegistration extends Registration +{ + Collection getMappings(); + Set addMapping(String... p0); + String getRunAsRole(); + static public interface Dynamic extends Registration.Dynamic, ServletRegistration + { + Set setServletSecurity(ServletSecurityElement p0); + void setLoadOnStartup(int p0); + void setMultipartConfig(MultipartConfigElement p0); + void setRunAsRole(String p0); + } +} diff --git a/java/ql/test/stubs/test/javax/servlet/ServletRequest.java b/java/ql/test/stubs/test/javax/servlet/ServletRequest.java new file mode 100644 index 00000000000..fc0db462cc0 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/ServletRequest.java @@ -0,0 +1,55 @@ +// Generated automatically from javax.servlet.ServletRequest for testing purposes + +package javax.servlet; + +import java.io.BufferedReader; +import java.util.Enumeration; +import java.util.Locale; +import java.util.Map; +import javax.servlet.AsyncContext; +import javax.servlet.DispatcherType; +import javax.servlet.RequestDispatcher; +import javax.servlet.ServletContext; +import javax.servlet.ServletInputStream; +import javax.servlet.ServletResponse; + +public interface ServletRequest +{ + AsyncContext getAsyncContext(); + AsyncContext startAsync(); + AsyncContext startAsync(ServletRequest p0, ServletResponse p1); + BufferedReader getReader(); + DispatcherType getDispatcherType(); + Enumeration getLocales(); + Enumeration getAttributeNames(); + Enumeration getParameterNames(); + Locale getLocale(); + Map getParameterMap(); + Object getAttribute(String p0); + RequestDispatcher getRequestDispatcher(String p0); + ServletContext getServletContext(); + ServletInputStream getInputStream(); + String getCharacterEncoding(); + String getContentType(); + String getLocalAddr(); + String getLocalName(); + String getParameter(String p0); + String getProtocol(); + String getRealPath(String p0); + String getRemoteAddr(); + String getRemoteHost(); + String getScheme(); + String getServerName(); + String[] getParameterValues(String p0); + boolean isAsyncStarted(); + boolean isAsyncSupported(); + boolean isSecure(); + int getContentLength(); + int getLocalPort(); + int getRemotePort(); + int getServerPort(); + long getContentLengthLong(); + void removeAttribute(String p0); + void setAttribute(String p0, Object p1); + void setCharacterEncoding(String p0); +} diff --git a/java/ql/test/stubs/test/javax/servlet/ServletResponse.java b/java/ql/test/stubs/test/javax/servlet/ServletResponse.java new file mode 100644 index 00000000000..db6610bc15d --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/ServletResponse.java @@ -0,0 +1,27 @@ +// Generated automatically from javax.servlet.ServletResponse for testing purposes + +package javax.servlet; + +import java.io.PrintWriter; +import java.util.Locale; +import javax.servlet.ServletOutputStream; + +public interface ServletResponse +{ + Locale getLocale(); + PrintWriter getWriter(); + ServletOutputStream getOutputStream(); + String getCharacterEncoding(); + String getContentType(); + boolean isCommitted(); + int getBufferSize(); + void flushBuffer(); + void reset(); + void resetBuffer(); + void setBufferSize(int p0); + void setCharacterEncoding(String p0); + void setContentLength(int p0); + void setContentLengthLong(long p0); + void setContentType(String p0); + void setLocale(Locale p0); +} diff --git a/java/ql/test/stubs/test/javax/servlet/ServletSecurityElement.java b/java/ql/test/stubs/test/javax/servlet/ServletSecurityElement.java new file mode 100644 index 00000000000..def47937391 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/ServletSecurityElement.java @@ -0,0 +1,19 @@ +// Generated automatically from javax.servlet.ServletSecurityElement for testing purposes + +package javax.servlet; + +import java.util.Collection; +import javax.servlet.HttpConstraintElement; +import javax.servlet.HttpMethodConstraintElement; +import javax.servlet.annotation.ServletSecurity; + +public class ServletSecurityElement extends HttpConstraintElement +{ + public Collection getHttpMethodConstraints(){ return null; } + public Collection getMethodNames(){ return null; } + public ServletSecurityElement(){} + public ServletSecurityElement(Collection p0){} + public ServletSecurityElement(HttpConstraintElement p0){} + public ServletSecurityElement(HttpConstraintElement p0, Collection p1){} + public ServletSecurityElement(ServletSecurity p0){} +} diff --git a/java/ql/test/stubs/test/javax/servlet/SessionCookieConfig.java b/java/ql/test/stubs/test/javax/servlet/SessionCookieConfig.java new file mode 100644 index 00000000000..4cae9a11f30 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/SessionCookieConfig.java @@ -0,0 +1,22 @@ +// Generated automatically from javax.servlet.SessionCookieConfig for testing purposes + +package javax.servlet; + + +public interface SessionCookieConfig +{ + String getComment(); + String getDomain(); + String getName(); + String getPath(); + boolean isHttpOnly(); + boolean isSecure(); + int getMaxAge(); + void setComment(String p0); + void setDomain(String p0); + void setHttpOnly(boolean p0); + void setMaxAge(int p0); + void setName(String p0); + void setPath(String p0); + void setSecure(boolean p0); +} diff --git a/java/ql/test/stubs/test/javax/servlet/SessionTrackingMode.java b/java/ql/test/stubs/test/javax/servlet/SessionTrackingMode.java new file mode 100644 index 00000000000..684ac40c56f --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/SessionTrackingMode.java @@ -0,0 +1,10 @@ +// Generated automatically from javax.servlet.SessionTrackingMode for testing purposes + +package javax.servlet; + + +public enum SessionTrackingMode +{ + COOKIE, SSL, URL; + private SessionTrackingMode() {} +} diff --git a/java/ql/test/stubs/test/javax/servlet/WriteListener.java b/java/ql/test/stubs/test/javax/servlet/WriteListener.java new file mode 100644 index 00000000000..24fe504271c --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/WriteListener.java @@ -0,0 +1,11 @@ +// Generated automatically from javax.servlet.WriteListener for testing purposes + +package javax.servlet; + +import java.util.EventListener; + +public interface WriteListener extends EventListener +{ + void onError(Throwable p0); + void onWritePossible(); +} diff --git a/java/ql/test/stubs/test/javax/servlet/annotation/HttpConstraint.java b/java/ql/test/stubs/test/javax/servlet/annotation/HttpConstraint.java new file mode 100644 index 00000000000..f47efc62744 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/annotation/HttpConstraint.java @@ -0,0 +1,18 @@ +// Generated automatically from javax.servlet.annotation.HttpConstraint for testing purposes + +package javax.servlet.annotation; + +import java.lang.annotation.Annotation; +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import javax.servlet.annotation.ServletSecurity; + +@Documented +@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) +public @interface HttpConstraint +{ + ServletSecurity.EmptyRoleSemantic value(); + ServletSecurity.TransportGuarantee transportGuarantee(); + String[] rolesAllowed(); +} diff --git a/java/ql/test/stubs/test/javax/servlet/annotation/HttpMethodConstraint.java b/java/ql/test/stubs/test/javax/servlet/annotation/HttpMethodConstraint.java new file mode 100644 index 00000000000..288f4651018 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/annotation/HttpMethodConstraint.java @@ -0,0 +1,19 @@ +// Generated automatically from javax.servlet.annotation.HttpMethodConstraint for testing purposes + +package javax.servlet.annotation; + +import java.lang.annotation.Annotation; +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import javax.servlet.annotation.ServletSecurity; + +@Documented +@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) +public @interface HttpMethodConstraint +{ + ServletSecurity.EmptyRoleSemantic emptyRoleSemantic(); + ServletSecurity.TransportGuarantee transportGuarantee(); + String value(); + String[] rolesAllowed(); +} diff --git a/java/ql/test/stubs/test/javax/servlet/annotation/MultipartConfig.java b/java/ql/test/stubs/test/javax/servlet/annotation/MultipartConfig.java new file mode 100644 index 00000000000..baccad3e199 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/annotation/MultipartConfig.java @@ -0,0 +1,19 @@ +// Generated automatically from javax.servlet.annotation.MultipartConfig for testing purposes + +package javax.servlet.annotation; + +import java.lang.annotation.Annotation; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) +@Target(value={java.lang.annotation.ElementType.TYPE}) +public @interface MultipartConfig +{ + String location(); + int fileSizeThreshold(); + long maxFileSize(); + long maxRequestSize(); +} diff --git a/java/ql/test/stubs/test/javax/servlet/annotation/ServletSecurity.java b/java/ql/test/stubs/test/javax/servlet/annotation/ServletSecurity.java new file mode 100644 index 00000000000..021b6c64c2a --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/annotation/ServletSecurity.java @@ -0,0 +1,33 @@ +// Generated automatically from javax.servlet.annotation.ServletSecurity for testing purposes + +package javax.servlet.annotation; + +import java.lang.annotation.Annotation; +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +import javax.servlet.annotation.HttpConstraint; +import javax.servlet.annotation.HttpMethodConstraint; + +@Documented +@Inherited +@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) +@Target(value={java.lang.annotation.ElementType.TYPE}) +public @interface ServletSecurity +{ + HttpConstraint value(); + HttpMethodConstraint[] httpMethodConstraints(); + static public enum EmptyRoleSemantic + { + DENY, PERMIT; + private EmptyRoleSemantic() {} + } + static public enum TransportGuarantee + { + CONFIDENTIAL, NONE; + private TransportGuarantee() {} + } +} diff --git a/java/ql/test/stubs/test/javax/servlet/annotation/WebInitParam.java b/java/ql/test/stubs/test/javax/servlet/annotation/WebInitParam.java new file mode 100644 index 00000000000..513c7d7053b --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/annotation/WebInitParam.java @@ -0,0 +1,20 @@ +// Generated automatically from javax.servlet.annotation.WebInitParam for testing purposes + +package javax.servlet.annotation; + +import java.lang.annotation.Annotation; +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Documented +@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) +@Target(value={java.lang.annotation.ElementType.TYPE}) +public @interface WebInitParam +{ + String description(); + String name(); + String value(); +} diff --git a/java/ql/test/stubs/test/javax/servlet/annotation/WebServlet.java b/java/ql/test/stubs/test/javax/servlet/annotation/WebServlet.java new file mode 100644 index 00000000000..83b5d2e476a --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/annotation/WebServlet.java @@ -0,0 +1,28 @@ +// Generated automatically from javax.servlet.annotation.WebServlet for testing purposes + +package javax.servlet.annotation; + +import java.lang.annotation.Annotation; +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +import javax.servlet.annotation.WebInitParam; + +@Documented +@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) +@Target(value={java.lang.annotation.ElementType.TYPE}) +public @interface WebServlet +{ + String description(); + String displayName(); + String largeIcon(); + String name(); + String smallIcon(); + String[] urlPatterns(); + String[] value(); + WebInitParam[] initParams(); + boolean asyncSupported(); + int loadOnStartup(); +} diff --git a/java/ql/test/stubs/test/javax/servlet/descriptor/JspConfigDescriptor.java b/java/ql/test/stubs/test/javax/servlet/descriptor/JspConfigDescriptor.java new file mode 100644 index 00000000000..8d93a4318d7 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/descriptor/JspConfigDescriptor.java @@ -0,0 +1,13 @@ +// Generated automatically from javax.servlet.descriptor.JspConfigDescriptor for testing purposes + +package javax.servlet.descriptor; + +import java.util.Collection; +import javax.servlet.descriptor.JspPropertyGroupDescriptor; +import javax.servlet.descriptor.TaglibDescriptor; + +public interface JspConfigDescriptor +{ + Collection getJspPropertyGroups(); + Collection getTaglibs(); +} diff --git a/java/ql/test/stubs/test/javax/servlet/descriptor/JspPropertyGroupDescriptor.java b/java/ql/test/stubs/test/javax/servlet/descriptor/JspPropertyGroupDescriptor.java new file mode 100644 index 00000000000..dd852fa1088 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/descriptor/JspPropertyGroupDescriptor.java @@ -0,0 +1,21 @@ +// Generated automatically from javax.servlet.descriptor.JspPropertyGroupDescriptor for testing purposes + +package javax.servlet.descriptor; + +import java.util.Collection; + +public interface JspPropertyGroupDescriptor +{ + Collection getIncludeCodas(); + Collection getIncludePreludes(); + Collection getUrlPatterns(); + String getBuffer(); + String getDefaultContentType(); + String getDeferredSyntaxAllowedAsLiteral(); + String getElIgnored(); + String getErrorOnUndeclaredNamespace(); + String getIsXml(); + String getPageEncoding(); + String getScriptingInvalid(); + String getTrimDirectiveWhitespaces(); +} diff --git a/java/ql/test/stubs/test/javax/servlet/descriptor/TaglibDescriptor.java b/java/ql/test/stubs/test/javax/servlet/descriptor/TaglibDescriptor.java new file mode 100644 index 00000000000..c3dd5c10473 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/descriptor/TaglibDescriptor.java @@ -0,0 +1,10 @@ +// Generated automatically from javax.servlet.descriptor.TaglibDescriptor for testing purposes + +package javax.servlet.descriptor; + + +public interface TaglibDescriptor +{ + String getTaglibLocation(); + String getTaglibURI(); +} diff --git a/java/ql/test/stubs/test/javax/servlet/http/Cookie.java b/java/ql/test/stubs/test/javax/servlet/http/Cookie.java new file mode 100644 index 00000000000..b5a180029be --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/http/Cookie.java @@ -0,0 +1,29 @@ +// Generated automatically from javax.servlet.http.Cookie for testing purposes + +package javax.servlet.http; + +import java.io.Serializable; + +public class Cookie implements Cloneable, Serializable +{ + protected Cookie() {} + public Cookie(String p0, String p1){} + public Object clone(){ return null; } + public String getComment(){ return null; } + public String getDomain(){ return null; } + public String getName(){ return null; } + public String getPath(){ return null; } + public String getValue(){ return null; } + public boolean getSecure(){ return false; } + public boolean isHttpOnly(){ return false; } + public int getMaxAge(){ return 0; } + public int getVersion(){ return 0; } + public void setComment(String p0){} + public void setDomain(String p0){} + public void setHttpOnly(boolean p0){} + public void setMaxAge(int p0){} + public void setPath(String p0){} + public void setSecure(boolean p0){} + public void setValue(String p0){} + public void setVersion(int p0){} +} diff --git a/java/ql/test/stubs/test/javax/servlet/http/HttpServlet.java b/java/ql/test/stubs/test/javax/servlet/http/HttpServlet.java new file mode 100644 index 00000000000..1247f956d78 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/http/HttpServlet.java @@ -0,0 +1,24 @@ +// Generated automatically from javax.servlet.http.HttpServlet for testing purposes + +package javax.servlet.http; + +import javax.servlet.GenericServlet; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +abstract public class HttpServlet extends GenericServlet +{ + protected long getLastModified(HttpServletRequest p0){ return 0; } + protected void doDelete(HttpServletRequest p0, HttpServletResponse p1){} + protected void doGet(HttpServletRequest p0, HttpServletResponse p1){} + protected void doHead(HttpServletRequest p0, HttpServletResponse p1){} + protected void doOptions(HttpServletRequest p0, HttpServletResponse p1){} + protected void doPost(HttpServletRequest p0, HttpServletResponse p1){} + protected void doPut(HttpServletRequest p0, HttpServletResponse p1){} + protected void doTrace(HttpServletRequest p0, HttpServletResponse p1){} + protected void service(HttpServletRequest p0, HttpServletResponse p1){} + public HttpServlet(){} + public void service(ServletRequest p0, ServletResponse p1){} +} diff --git a/java/ql/test/stubs/test/javax/servlet/http/HttpServletMapping.java b/java/ql/test/stubs/test/javax/servlet/http/HttpServletMapping.java new file mode 100644 index 00000000000..1b597f27773 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/http/HttpServletMapping.java @@ -0,0 +1,13 @@ +// Generated automatically from javax.servlet.http.HttpServletMapping for testing purposes + +package javax.servlet.http; + +import javax.servlet.http.MappingMatch; + +public interface HttpServletMapping +{ + MappingMatch getMappingMatch(); + String getMatchValue(); + String getPattern(); + String getServletName(); +} diff --git a/java/ql/test/stubs/test/javax/servlet/http/HttpServletRequest.java b/java/ql/test/stubs/test/javax/servlet/http/HttpServletRequest.java new file mode 100644 index 00000000000..8612c34fb69 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/http/HttpServletRequest.java @@ -0,0 +1,60 @@ +// Generated automatically from javax.servlet.http.HttpServletRequest for testing purposes + +package javax.servlet.http; + +import java.security.Principal; +import java.util.Collection; +import java.util.Enumeration; +import java.util.Map; +import javax.servlet.ServletRequest; +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletMapping; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import javax.servlet.http.HttpUpgradeHandler; +import javax.servlet.http.Part; +import javax.servlet.http.PushBuilder; + +public interface HttpServletRequest extends ServletRequest +{ + T upgrade(java.lang.Class p0); + Collection getParts(); + Cookie[] getCookies(); + Enumeration getHeaderNames(); + Enumeration getHeaders(String p0); + HttpSession getSession(); + HttpSession getSession(boolean p0); + Part getPart(String p0); + Principal getUserPrincipal(); + String changeSessionId(); + String getAuthType(); + String getContextPath(); + String getHeader(String p0); + String getMethod(); + String getPathInfo(); + String getPathTranslated(); + String getQueryString(); + String getRemoteUser(); + String getRequestURI(); + String getRequestedSessionId(); + String getServletPath(); + StringBuffer getRequestURL(); + boolean authenticate(HttpServletResponse p0); + boolean isRequestedSessionIdFromCookie(); + boolean isRequestedSessionIdFromURL(); + boolean isRequestedSessionIdFromUrl(); + boolean isRequestedSessionIdValid(); + boolean isUserInRole(String p0); + default HttpServletMapping getHttpServletMapping(){ return null; } + default Map getTrailerFields(){ return null; } + default PushBuilder newPushBuilder(){ return null; } + default boolean isTrailerFieldsReady(){ return false; } + int getIntHeader(String p0); + long getDateHeader(String p0); + static String BASIC_AUTH = null; + static String CLIENT_CERT_AUTH = null; + static String DIGEST_AUTH = null; + static String FORM_AUTH = null; + void login(String p0, String p1); + void logout(); +} diff --git a/java/ql/test/stubs/test/javax/servlet/http/HttpServletResponse.java b/java/ql/test/stubs/test/javax/servlet/http/HttpServletResponse.java new file mode 100644 index 00000000000..da902dbf30c --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/http/HttpServletResponse.java @@ -0,0 +1,77 @@ +// Generated automatically from javax.servlet.http.HttpServletResponse for testing purposes + +package javax.servlet.http; + +import java.util.Collection; +import java.util.Map; +import java.util.function.Supplier; +import javax.servlet.ServletResponse; +import javax.servlet.http.Cookie; + +public interface HttpServletResponse extends ServletResponse +{ + Collection getHeaderNames(); + Collection getHeaders(String p0); + String encodeRedirectURL(String p0); + String encodeRedirectUrl(String p0); + String encodeURL(String p0); + String encodeUrl(String p0); + String getHeader(String p0); + boolean containsHeader(String p0); + default Supplier> getTrailerFields(){ return null; } + default void setTrailerFields(Supplier> p0){} + int getStatus(); + static int SC_ACCEPTED = 0; + static int SC_BAD_GATEWAY = 0; + static int SC_BAD_REQUEST = 0; + static int SC_CONFLICT = 0; + static int SC_CONTINUE = 0; + static int SC_CREATED = 0; + static int SC_EXPECTATION_FAILED = 0; + static int SC_FORBIDDEN = 0; + static int SC_FOUND = 0; + static int SC_GATEWAY_TIMEOUT = 0; + static int SC_GONE = 0; + static int SC_HTTP_VERSION_NOT_SUPPORTED = 0; + static int SC_INTERNAL_SERVER_ERROR = 0; + static int SC_LENGTH_REQUIRED = 0; + static int SC_METHOD_NOT_ALLOWED = 0; + static int SC_MOVED_PERMANENTLY = 0; + static int SC_MOVED_TEMPORARILY = 0; + static int SC_MULTIPLE_CHOICES = 0; + static int SC_NON_AUTHORITATIVE_INFORMATION = 0; + static int SC_NOT_ACCEPTABLE = 0; + static int SC_NOT_FOUND = 0; + static int SC_NOT_IMPLEMENTED = 0; + static int SC_NOT_MODIFIED = 0; + static int SC_NO_CONTENT = 0; + static int SC_OK = 0; + static int SC_PARTIAL_CONTENT = 0; + static int SC_PAYMENT_REQUIRED = 0; + static int SC_PRECONDITION_FAILED = 0; + static int SC_PROXY_AUTHENTICATION_REQUIRED = 0; + static int SC_REQUESTED_RANGE_NOT_SATISFIABLE = 0; + static int SC_REQUEST_ENTITY_TOO_LARGE = 0; + static int SC_REQUEST_TIMEOUT = 0; + static int SC_REQUEST_URI_TOO_LONG = 0; + static int SC_RESET_CONTENT = 0; + static int SC_SEE_OTHER = 0; + static int SC_SERVICE_UNAVAILABLE = 0; + static int SC_SWITCHING_PROTOCOLS = 0; + static int SC_TEMPORARY_REDIRECT = 0; + static int SC_UNAUTHORIZED = 0; + static int SC_UNSUPPORTED_MEDIA_TYPE = 0; + static int SC_USE_PROXY = 0; + void addCookie(Cookie p0); + void addDateHeader(String p0, long p1); + void addHeader(String p0, String p1); + void addIntHeader(String p0, int p1); + void sendError(int p0); + void sendError(int p0, String p1); + void sendRedirect(String p0); + void setDateHeader(String p0, long p1); + void setHeader(String p0, String p1); + void setIntHeader(String p0, int p1); + void setStatus(int p0); + void setStatus(int p0, String p1); +} diff --git a/java/ql/test/stubs/test/javax/servlet/http/HttpSession.java b/java/ql/test/stubs/test/javax/servlet/http/HttpSession.java new file mode 100644 index 00000000000..f8f455b1423 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/http/HttpSession.java @@ -0,0 +1,28 @@ +// Generated automatically from javax.servlet.http.HttpSession for testing purposes + +package javax.servlet.http; + +import java.util.Enumeration; +import javax.servlet.ServletContext; +import javax.servlet.http.HttpSessionContext; + +public interface HttpSession +{ + Enumeration getAttributeNames(); + HttpSessionContext getSessionContext(); + Object getAttribute(String p0); + Object getValue(String p0); + ServletContext getServletContext(); + String getId(); + String[] getValueNames(); + boolean isNew(); + int getMaxInactiveInterval(); + long getCreationTime(); + long getLastAccessedTime(); + void invalidate(); + void putValue(String p0, Object p1); + void removeAttribute(String p0); + void removeValue(String p0); + void setAttribute(String p0, Object p1); + void setMaxInactiveInterval(int p0); +} diff --git a/java/ql/test/stubs/test/javax/servlet/http/HttpSessionContext.java b/java/ql/test/stubs/test/javax/servlet/http/HttpSessionContext.java new file mode 100644 index 00000000000..97a77b48358 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/http/HttpSessionContext.java @@ -0,0 +1,12 @@ +// Generated automatically from javax.servlet.http.HttpSessionContext for testing purposes + +package javax.servlet.http; + +import java.util.Enumeration; +import javax.servlet.http.HttpSession; + +public interface HttpSessionContext +{ + Enumeration getIds(); + HttpSession getSession(String p0); +} diff --git a/java/ql/test/stubs/test/javax/servlet/http/HttpUpgradeHandler.java b/java/ql/test/stubs/test/javax/servlet/http/HttpUpgradeHandler.java new file mode 100644 index 00000000000..987d49dbde2 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/http/HttpUpgradeHandler.java @@ -0,0 +1,11 @@ +// Generated automatically from javax.servlet.http.HttpUpgradeHandler for testing purposes + +package javax.servlet.http; + +import javax.servlet.http.WebConnection; + +public interface HttpUpgradeHandler +{ + void destroy(); + void init(WebConnection p0); +} diff --git a/java/ql/test/stubs/test/javax/servlet/http/MappingMatch.java b/java/ql/test/stubs/test/javax/servlet/http/MappingMatch.java new file mode 100644 index 00000000000..0432fd2ef7d --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/http/MappingMatch.java @@ -0,0 +1,10 @@ +// Generated automatically from javax.servlet.http.MappingMatch for testing purposes + +package javax.servlet.http; + + +public enum MappingMatch +{ + CONTEXT_ROOT, DEFAULT, EXACT, EXTENSION, PATH; + private MappingMatch() {} +} diff --git a/java/ql/test/stubs/test/javax/servlet/http/Part.java b/java/ql/test/stubs/test/javax/servlet/http/Part.java new file mode 100644 index 00000000000..a4e599748a5 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/http/Part.java @@ -0,0 +1,20 @@ +// Generated automatically from javax.servlet.http.Part for testing purposes + +package javax.servlet.http; + +import java.io.InputStream; +import java.util.Collection; + +public interface Part +{ + Collection getHeaderNames(); + Collection getHeaders(String p0); + InputStream getInputStream(); + String getContentType(); + String getHeader(String p0); + String getName(); + String getSubmittedFileName(); + long getSize(); + void delete(); + void write(String p0); +} diff --git a/java/ql/test/stubs/test/javax/servlet/http/PushBuilder.java b/java/ql/test/stubs/test/javax/servlet/http/PushBuilder.java new file mode 100644 index 00000000000..195e2426a83 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/http/PushBuilder.java @@ -0,0 +1,23 @@ +// Generated automatically from javax.servlet.http.PushBuilder for testing purposes + +package javax.servlet.http; + +import java.util.Set; + +public interface PushBuilder +{ + PushBuilder addHeader(String p0, String p1); + PushBuilder method(String p0); + PushBuilder path(String p0); + PushBuilder queryString(String p0); + PushBuilder removeHeader(String p0); + PushBuilder sessionId(String p0); + PushBuilder setHeader(String p0, String p1); + Set getHeaderNames(); + String getHeader(String p0); + String getMethod(); + String getPath(); + String getQueryString(); + String getSessionId(); + void push(); +} diff --git a/java/ql/test/stubs/test/javax/servlet/http/WebConnection.java b/java/ql/test/stubs/test/javax/servlet/http/WebConnection.java new file mode 100644 index 00000000000..5001c046400 --- /dev/null +++ b/java/ql/test/stubs/test/javax/servlet/http/WebConnection.java @@ -0,0 +1,12 @@ +// Generated automatically from javax.servlet.http.WebConnection for testing purposes + +package javax.servlet.http; + +import javax.servlet.ServletInputStream; +import javax.servlet.ServletOutputStream; + +public interface WebConnection extends AutoCloseable +{ + ServletInputStream getInputStream(); + ServletOutputStream getOutputStream(); +} From a8efb92b9baa78ede300d3e5a2dc90e85d842733 Mon Sep 17 00:00:00 2001 From: Kevin Stubbings Date: Wed, 25 Sep 2024 17:27:41 +0000 Subject: [PATCH 03/63] Simple Test --- .../dataflow/taintsources/App.java | 21 --------- .../dataflow/taintsources/FileUpload/App.java | 22 +++++++++ .../dataflow/taintsources/FileUpload/options | 1 + .../taintsources/FileUpload/remote.expected | 2 + .../taintsources/FileUpload/remote.ql | 47 +++++++++++++++++++ .../dataflow/taintsources/options | 2 +- 6 files changed, 73 insertions(+), 22 deletions(-) delete mode 100644 java/ql/test/library-tests/dataflow/taintsources/App.java create mode 100644 java/ql/test/library-tests/dataflow/taintsources/FileUpload/App.java create mode 100644 java/ql/test/library-tests/dataflow/taintsources/FileUpload/options create mode 100644 java/ql/test/library-tests/dataflow/taintsources/FileUpload/remote.expected create mode 100644 java/ql/test/library-tests/dataflow/taintsources/FileUpload/remote.ql diff --git a/java/ql/test/library-tests/dataflow/taintsources/App.java b/java/ql/test/library-tests/dataflow/taintsources/App.java deleted file mode 100644 index 73caade7525..00000000000 --- a/java/ql/test/library-tests/dataflow/taintsources/App.java +++ /dev/null @@ -1,21 +0,0 @@ -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.Part; - -/** - * Hello world! - */ -public class App { - - - -public class FileUploadServlet extends HttpServlet { - protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException { - Part filePart = request.getPart("file"); // Retrieves - sink(filePart.getName()); - - } -} -} \ No newline at end of file diff --git a/java/ql/test/library-tests/dataflow/taintsources/FileUpload/App.java b/java/ql/test/library-tests/dataflow/taintsources/FileUpload/App.java new file mode 100644 index 00000000000..1e16c3bcbf8 --- /dev/null +++ b/java/ql/test/library-tests/dataflow/taintsources/FileUpload/App.java @@ -0,0 +1,22 @@ +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.Part; + +public class App { + + private HttpServletRequest request; + private HttpServletResponse response; + private Part filePart; + + private static void sink(Object o) {} + + public void test() throws Exception { + sink(filePart.getContentType()); // $hasRemoteValueFlow + sink(filePart.getHeader("test")); // $hasRemoteValueFlow + sink(filePart.getInputStream()); // $hasRemoteValueFlow + sink(filePart.getHeaders("test")); // $hasRemoteValueFlow + //sink(filePart.getHeaderNames()); // $hasRemoteValueFlow + sink(filePart.getSubmittedFileName()); // $hasRemoteValueFlow + sink(filePart.getName()); // $hasRemoteValueFlow + } +} \ No newline at end of file diff --git a/java/ql/test/library-tests/dataflow/taintsources/FileUpload/options b/java/ql/test/library-tests/dataflow/taintsources/FileUpload/options new file mode 100644 index 00000000000..be803cb3895 --- /dev/null +++ b/java/ql/test/library-tests/dataflow/taintsources/FileUpload/options @@ -0,0 +1 @@ +//semmle-extractor-options: --javac-args -cp ${testdir}/../../../../stubs/test \ No newline at end of file diff --git a/java/ql/test/library-tests/dataflow/taintsources/FileUpload/remote.expected b/java/ql/test/library-tests/dataflow/taintsources/FileUpload/remote.expected new file mode 100644 index 00000000000..48de9172b36 --- /dev/null +++ b/java/ql/test/library-tests/dataflow/taintsources/FileUpload/remote.expected @@ -0,0 +1,2 @@ +failures +testFailures diff --git a/java/ql/test/library-tests/dataflow/taintsources/FileUpload/remote.ql b/java/ql/test/library-tests/dataflow/taintsources/FileUpload/remote.ql new file mode 100644 index 00000000000..ce466f6c647 --- /dev/null +++ b/java/ql/test/library-tests/dataflow/taintsources/FileUpload/remote.ql @@ -0,0 +1,47 @@ +import java +import semmle.code.java.dataflow.FlowSources +import TestUtilities.InlineExpectationsTest + +predicate isTestSink(DataFlow::Node n) { + exists(MethodCall ma | ma.getMethod().hasName("sink") | n.asExpr() = ma.getAnArgument()) +} + +module RemoteValueConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node n) { n instanceof RemoteFlowSource } + + predicate isSink(DataFlow::Node n) { isTestSink(n) } +} + +module RemoteValueFlow = DataFlow::Global; + +module RemoteTaintConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node n) { n instanceof RemoteFlowSource } + + predicate isSink(DataFlow::Node n) { isTestSink(n) } +} + +module RemoteTaintFlow = TaintTracking::Global; + +module RemoteFlowTest implements TestSig { + string getARelevantTag() { result = ["hasRemoteValueFlow", "hasRemoteTaintFlow"] } + + predicate hasActualResult(Location location, string element, string tag, string value) { + tag = "hasRemoteValueFlow" and + exists(DataFlow::Node sink | RemoteValueFlow::flowTo(sink) | + sink.getLocation() = location and + element = sink.toString() and + value = "" + ) + or + tag = "hasRemoteTaintFlow" and + exists(DataFlow::Node src, DataFlow::Node sink | + RemoteTaintFlow::flow(src, sink) and not RemoteValueFlow::flow(src, sink) + | + sink.getLocation() = location and + element = sink.toString() and + value = "" + ) + } +} + +import MakeTest diff --git a/java/ql/test/library-tests/dataflow/taintsources/options b/java/ql/test/library-tests/dataflow/taintsources/options index f2365fc973b..c8249b05e38 100644 --- a/java/ql/test/library-tests/dataflow/taintsources/options +++ b/java/ql/test/library-tests/dataflow/taintsources/options @@ -1 +1 @@ -//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/servlet-api-2.4:${testdir}/../../../stubs/springframework-5.3.8:${testdir}/../../../stubs/google-android-9.0.0:${testdir}/../../../stubs/playframework-2.6.x:${testdir}/../../../stubs/jackson-databind-2.12:${testdir}/../../../stubs/jackson-core-2.12:${testdir}/../../../stubs/akka-2.6.x:${testdir}/../../../stubs/jwtk-jjwt-0.11.2:${testdir}/../../../stubs/jenkins:${testdir}/../../../stubs/stapler-1.263:${testdir}/../../../stubs/test \ No newline at end of file +//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/servlet-api-2.4:${testdir}/../../../stubs/springframework-5.3.8:${testdir}/../../../stubs/google-android-9.0.0:${testdir}/../../../stubs/playframework-2.6.x:${testdir}/../../../stubs/jackson-databind-2.12:${testdir}/../../../stubs/jackson-core-2.12:${testdir}/../../../stubs/akka-2.6.x:${testdir}/../../../stubs/jwtk-jjwt-0.11.2:${testdir}/../../../stubs/jenkins:${testdir}/../../../stubs/stapler-1.263 \ No newline at end of file From 6445074feab477f6b7b6cb4055f20f3b0d3033f3 Mon Sep 17 00:00:00 2001 From: Kevin Stubbings Date: Wed, 25 Sep 2024 21:46:52 +0000 Subject: [PATCH 04/63] Fixed but errors still --- java/ql/lib/ext/javax.servlet.http.model.yml | 2 +- .../lib/ext/org.apache.commons.fileupload.yml | 15 ---- .../dataflow/taintsources/FileUpload.java | 39 +++++++++ .../dataflow/taintsources/FileUpload/App.java | 22 ----- .../dataflow/taintsources/FileUpload/options | 1 - .../taintsources/FileUpload/remote.expected | 2 - .../taintsources/FileUpload/remote.ql | 47 ----------- .../dataflow/taintsources/options | 2 +- .../commons/fileupload/FileItemStream.java | 14 ++++ .../test/javax/servlet/AsyncContext.java | 31 ------- .../stubs/test/javax/servlet/AsyncEvent.java | 20 ----- .../test/javax/servlet/AsyncListener.java | 14 ---- .../test/javax/servlet/DispatcherType.java | 10 --- .../test/stubs/test/javax/servlet/Filter.java | 15 ---- .../stubs/test/javax/servlet/FilterChain.java | 11 --- .../test/javax/servlet/FilterConfig.java | 14 ---- .../javax/servlet/FilterRegistration.java | 19 ----- .../test/javax/servlet/GenericServlet.java | 28 ------- .../javax/servlet/HttpConstraintElement.java | 16 ---- .../servlet/HttpMethodConstraintElement.java | 13 --- .../javax/servlet/MultipartConfigElement.java | 17 ---- .../test/javax/servlet/ReadListener.java | 12 --- .../test/javax/servlet/Registration.java | 20 ----- .../test/javax/servlet/RequestDispatcher.java | 30 ------- .../stubs/test/javax/servlet/Servlet.java | 16 ---- .../test/javax/servlet/ServletConfig.java | 14 ---- .../test/javax/servlet/ServletContext.java | 83 ------------------- .../test/javax/servlet/ServletException.java | 27 ------ .../javax/servlet/ServletInputStream.java | 15 ---- .../javax/servlet/ServletOutputStream.java | 28 ------- .../javax/servlet/ServletRegistration.java | 23 ----- .../test/javax/servlet/ServletRequest.java | 55 ------------ .../test/javax/servlet/ServletResponse.java | 27 ------ .../javax/servlet/ServletSecurityElement.java | 19 ----- .../javax/servlet/SessionCookieConfig.java | 22 ----- .../javax/servlet/SessionTrackingMode.java | 10 --- .../test/javax/servlet/WriteListener.java | 11 --- .../servlet/annotation/HttpConstraint.java | 18 ---- .../annotation/HttpMethodConstraint.java | 19 ----- .../servlet/annotation/MultipartConfig.java | 19 ----- .../servlet/annotation/ServletSecurity.java | 33 -------- .../servlet/annotation/WebInitParam.java | 20 ----- .../javax/servlet/annotation/WebServlet.java | 28 ------- .../descriptor/JspConfigDescriptor.java | 13 --- .../JspPropertyGroupDescriptor.java | 21 ----- .../servlet/descriptor/TaglibDescriptor.java | 10 --- .../stubs/test/javax/servlet/http/Cookie.java | 29 ------- .../test/javax/servlet/http/HttpServlet.java | 24 ------ .../servlet/http/HttpServletMapping.java | 13 --- .../servlet/http/HttpServletRequest.java | 60 -------------- .../servlet/http/HttpServletResponse.java | 77 ----------------- .../test/javax/servlet/http/HttpSession.java | 28 ------- .../servlet/http/HttpSessionContext.java | 12 --- .../servlet/http/HttpUpgradeHandler.java | 11 --- .../test/javax/servlet/http/MappingMatch.java | 10 --- .../stubs/test/javax/servlet/http/Part.java | 20 ----- .../test/javax/servlet/http/PushBuilder.java | 23 ----- .../javax/servlet/http/WebConnection.java | 12 --- 58 files changed, 55 insertions(+), 1209 deletions(-) delete mode 100644 java/ql/lib/ext/org.apache.commons.fileupload.yml create mode 100644 java/ql/test/library-tests/dataflow/taintsources/FileUpload.java delete mode 100644 java/ql/test/library-tests/dataflow/taintsources/FileUpload/App.java delete mode 100644 java/ql/test/library-tests/dataflow/taintsources/FileUpload/options delete mode 100644 java/ql/test/library-tests/dataflow/taintsources/FileUpload/remote.expected delete mode 100644 java/ql/test/library-tests/dataflow/taintsources/FileUpload/remote.ql create mode 100644 java/ql/test/stubs/apache-commons-fileupload-1.4/org/apache/commons/fileupload/FileItemStream.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/AsyncContext.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/AsyncEvent.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/AsyncListener.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/DispatcherType.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/Filter.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/FilterChain.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/FilterConfig.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/FilterRegistration.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/GenericServlet.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/HttpConstraintElement.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/HttpMethodConstraintElement.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/MultipartConfigElement.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/ReadListener.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/Registration.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/RequestDispatcher.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/Servlet.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/ServletConfig.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/ServletContext.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/ServletException.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/ServletInputStream.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/ServletOutputStream.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/ServletRegistration.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/ServletRequest.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/ServletResponse.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/ServletSecurityElement.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/SessionCookieConfig.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/SessionTrackingMode.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/WriteListener.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/annotation/HttpConstraint.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/annotation/HttpMethodConstraint.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/annotation/MultipartConfig.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/annotation/ServletSecurity.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/annotation/WebInitParam.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/annotation/WebServlet.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/descriptor/JspConfigDescriptor.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/descriptor/JspPropertyGroupDescriptor.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/descriptor/TaglibDescriptor.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/http/Cookie.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/http/HttpServlet.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/http/HttpServletMapping.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/http/HttpServletRequest.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/http/HttpServletResponse.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/http/HttpSession.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/http/HttpSessionContext.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/http/HttpUpgradeHandler.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/http/MappingMatch.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/http/Part.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/http/PushBuilder.java delete mode 100644 java/ql/test/stubs/test/javax/servlet/http/WebConnection.java diff --git a/java/ql/lib/ext/javax.servlet.http.model.yml b/java/ql/lib/ext/javax.servlet.http.model.yml index dd345ed3c3e..46b9765a1fd 100644 --- a/java/ql/lib/ext/javax.servlet.http.model.yml +++ b/java/ql/lib/ext/javax.servlet.http.model.yml @@ -25,7 +25,7 @@ extensions: - ["javax.servlet.http", "Part", False, "getHeader", "(String)", "", "ReturnValue", "remote", "manual"] - ["javax.servlet.http", "Part", False, "getSubmittedFileName", "()", "", "ReturnValue", "remote", "manual"] - ["javax.servlet.http", "Part", False, "getHeaders", "(String)", "", "ReturnValue", "remote", "manual"] - - ["javax.servlet.http", "Part", False, "getHeadersNames", "()", "", "ReturnValue", "remote", "manual"] + - ["javax.servlet.http", "Part", False, "getHeaderNames", "()", "", "ReturnValue", "remote", "manual"] - addsTo: diff --git a/java/ql/lib/ext/org.apache.commons.fileupload.yml b/java/ql/lib/ext/org.apache.commons.fileupload.yml deleted file mode 100644 index dfa87cd22bb..00000000000 --- a/java/ql/lib/ext/org.apache.commons.fileupload.yml +++ /dev/null @@ -1,15 +0,0 @@ -extensions: - - addsTo: - pack: codeql/java-all - extensible: sourceModel - data: - - ["org.apache.commons.fileupload", "FileItem", True, "getInputStream", "", "", "ReturnValue", "remote", "manual"] - - ["org.apache.commons.fileupload", "FileItem", True, "getFieldName", "", "", "ReturnValue", "remote", "manual"] - - ["org.apache.commons.fileupload", "FileItem", True, "getContentType", "", "", "ReturnValue", "remote", "manual"] - - ["org.apache.commons.fileupload", "FileItem", True, "getString", "", "", "ReturnValue", "remote", "manual"] - - ["org.apache.commons.fileupload", "FileItem", True, "getName", "", "", "ReturnValue", "remote", "manual"] - - ["org.apache.commons.fileupload", "FileItem", True, "get", "", "", "ReturnValue", "remote", "manual"] - - ["org.apache.commons.fileupload", "FileItemStream", True, "getContentType", "", "", "ReturnValue", "remote", "manual"] - - ["org.apache.commons.fileupload", "FileItemStream", True, "getFieldName", "", "", "ReturnValue", "remote", "manual"] - - ["org.apache.commons.fileupload", "FileItemStream", True, "getName", "", "", "ReturnValue", "remote", "manual"] - - ["org.apache.commons.fileupload", "FileItemStream", True, "openStream", "", "", "ReturnValue", "remote", "manual"] \ No newline at end of file diff --git a/java/ql/test/library-tests/dataflow/taintsources/FileUpload.java b/java/ql/test/library-tests/dataflow/taintsources/FileUpload.java new file mode 100644 index 00000000000..15c393b1082 --- /dev/null +++ b/java/ql/test/library-tests/dataflow/taintsources/FileUpload.java @@ -0,0 +1,39 @@ +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.Part; +import org.apache.commons.fileupload.FileItem; +import org.apache.commons.fileupload.FileItemStream; + +public class FileUpload { + + private HttpServletRequest request; + private HttpServletResponse response; + private Part filePart; + private FileItem fileItem; + private FileItemStream fileItemStream; + + private static void sink(Object o) {} + + public void test() throws Exception { + sink(filePart.getContentType()); // $ hasRemoteValueFlow + sink(filePart.getHeader("test")); // $ hasRemoteValueFlow + sink(filePart.getInputStream()); // $ hasRemoteValueFlow + sink(filePart.getHeaders("test")); // $ hasRemoteValueFlow + sink(filePart.getHeaderNames()); // $ hasRemoteValueFlow + sink(filePart.getSubmittedFileName()); // $ hasRemoteValueFlow + sink(filePart.getName()); // $ hasRemoteValueFlow + + sink(fileItem.getName()); // $ hasRemoteValueFlow + sink(fileItem.get()); // $ hasRemoteValueFlow + sink(fileItem.getString()); // $ hasRemoteValueFlow + sink(fileItem.getContentType()); // $ hasRemoteValueFlow + sink(fileItem.getName()); // $ hasRemoteValueFlow + + //These result in a compiler error when uncommented + //sink(fileItemStream) // $ hasRemoteValueFlow + //sink(fileItemStream.getFieldName()) // $ hasRemoteValueFlow + //sink(fileItemStream.getName()) // $ hasRemoteValueFlow + //sink(fileItemStream.openStream()) // $ hasRemoteValueFlow + + } +} \ No newline at end of file diff --git a/java/ql/test/library-tests/dataflow/taintsources/FileUpload/App.java b/java/ql/test/library-tests/dataflow/taintsources/FileUpload/App.java deleted file mode 100644 index 1e16c3bcbf8..00000000000 --- a/java/ql/test/library-tests/dataflow/taintsources/FileUpload/App.java +++ /dev/null @@ -1,22 +0,0 @@ -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.Part; - -public class App { - - private HttpServletRequest request; - private HttpServletResponse response; - private Part filePart; - - private static void sink(Object o) {} - - public void test() throws Exception { - sink(filePart.getContentType()); // $hasRemoteValueFlow - sink(filePart.getHeader("test")); // $hasRemoteValueFlow - sink(filePart.getInputStream()); // $hasRemoteValueFlow - sink(filePart.getHeaders("test")); // $hasRemoteValueFlow - //sink(filePart.getHeaderNames()); // $hasRemoteValueFlow - sink(filePart.getSubmittedFileName()); // $hasRemoteValueFlow - sink(filePart.getName()); // $hasRemoteValueFlow - } -} \ No newline at end of file diff --git a/java/ql/test/library-tests/dataflow/taintsources/FileUpload/options b/java/ql/test/library-tests/dataflow/taintsources/FileUpload/options deleted file mode 100644 index be803cb3895..00000000000 --- a/java/ql/test/library-tests/dataflow/taintsources/FileUpload/options +++ /dev/null @@ -1 +0,0 @@ -//semmle-extractor-options: --javac-args -cp ${testdir}/../../../../stubs/test \ No newline at end of file diff --git a/java/ql/test/library-tests/dataflow/taintsources/FileUpload/remote.expected b/java/ql/test/library-tests/dataflow/taintsources/FileUpload/remote.expected deleted file mode 100644 index 48de9172b36..00000000000 --- a/java/ql/test/library-tests/dataflow/taintsources/FileUpload/remote.expected +++ /dev/null @@ -1,2 +0,0 @@ -failures -testFailures diff --git a/java/ql/test/library-tests/dataflow/taintsources/FileUpload/remote.ql b/java/ql/test/library-tests/dataflow/taintsources/FileUpload/remote.ql deleted file mode 100644 index ce466f6c647..00000000000 --- a/java/ql/test/library-tests/dataflow/taintsources/FileUpload/remote.ql +++ /dev/null @@ -1,47 +0,0 @@ -import java -import semmle.code.java.dataflow.FlowSources -import TestUtilities.InlineExpectationsTest - -predicate isTestSink(DataFlow::Node n) { - exists(MethodCall ma | ma.getMethod().hasName("sink") | n.asExpr() = ma.getAnArgument()) -} - -module RemoteValueConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node n) { n instanceof RemoteFlowSource } - - predicate isSink(DataFlow::Node n) { isTestSink(n) } -} - -module RemoteValueFlow = DataFlow::Global; - -module RemoteTaintConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node n) { n instanceof RemoteFlowSource } - - predicate isSink(DataFlow::Node n) { isTestSink(n) } -} - -module RemoteTaintFlow = TaintTracking::Global; - -module RemoteFlowTest implements TestSig { - string getARelevantTag() { result = ["hasRemoteValueFlow", "hasRemoteTaintFlow"] } - - predicate hasActualResult(Location location, string element, string tag, string value) { - tag = "hasRemoteValueFlow" and - exists(DataFlow::Node sink | RemoteValueFlow::flowTo(sink) | - sink.getLocation() = location and - element = sink.toString() and - value = "" - ) - or - tag = "hasRemoteTaintFlow" and - exists(DataFlow::Node src, DataFlow::Node sink | - RemoteTaintFlow::flow(src, sink) and not RemoteValueFlow::flow(src, sink) - | - sink.getLocation() = location and - element = sink.toString() and - value = "" - ) - } -} - -import MakeTest diff --git a/java/ql/test/library-tests/dataflow/taintsources/options b/java/ql/test/library-tests/dataflow/taintsources/options index c8249b05e38..85e7b4a6454 100644 --- a/java/ql/test/library-tests/dataflow/taintsources/options +++ b/java/ql/test/library-tests/dataflow/taintsources/options @@ -1 +1 @@ -//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/servlet-api-2.4:${testdir}/../../../stubs/springframework-5.3.8:${testdir}/../../../stubs/google-android-9.0.0:${testdir}/../../../stubs/playframework-2.6.x:${testdir}/../../../stubs/jackson-databind-2.12:${testdir}/../../../stubs/jackson-core-2.12:${testdir}/../../../stubs/akka-2.6.x:${testdir}/../../../stubs/jwtk-jjwt-0.11.2:${testdir}/../../../stubs/jenkins:${testdir}/../../../stubs/stapler-1.263 \ No newline at end of file +//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/apache-commons-fileupload-1.4:${testdir}/../../../stubs/javax-servlet-2.5:${testdir}/../../../stubs/servlet-api-2.4:${testdir}/../../../stubs/springframework-5.3.8:${testdir}/../../../stubs/google-android-9.0.0:${testdir}/../../../stubs/playframework-2.6.x:${testdir}/../../../stubs/jackson-databind-2.12:${testdir}/../../../stubs/jackson-core-2.12:${testdir}/../../../stubs/akka-2.6.x:${testdir}/../../../stubs/jwtk-jjwt-0.11.2:${testdir}/../../../stubs/jenkins:${testdir}/../../../stubs/stapler-1.263 \ No newline at end of file diff --git a/java/ql/test/stubs/apache-commons-fileupload-1.4/org/apache/commons/fileupload/FileItemStream.java b/java/ql/test/stubs/apache-commons-fileupload-1.4/org/apache/commons/fileupload/FileItemStream.java new file mode 100644 index 00000000000..b60c53fc95c --- /dev/null +++ b/java/ql/test/stubs/apache-commons-fileupload-1.4/org/apache/commons/fileupload/FileItemStream.java @@ -0,0 +1,14 @@ +package org.apache.commons.fileupload; + +import java.io.InputStream; +import org.apache.commons.fileupload.FileItemHeadersSupport; + + +public interface FileItemStream extends FileItemHeadersSupport +{ + InputStream openStream() throws java.io.IOException; + String getContentType(); + String getName(); + String getFieldName(); + boolean isFormField(); +} \ No newline at end of file diff --git a/java/ql/test/stubs/test/javax/servlet/AsyncContext.java b/java/ql/test/stubs/test/javax/servlet/AsyncContext.java deleted file mode 100644 index 70a39f55ac9..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/AsyncContext.java +++ /dev/null @@ -1,31 +0,0 @@ -// Generated automatically from javax.servlet.AsyncContext for testing purposes - -package javax.servlet; - -import javax.servlet.AsyncListener; -import javax.servlet.ServletContext; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; - -public interface AsyncContext -{ - T createListener(java.lang.Class p0); - ServletRequest getRequest(); - ServletResponse getResponse(); - boolean hasOriginalRequestAndResponse(); - long getTimeout(); - static String ASYNC_CONTEXT_PATH = null; - static String ASYNC_MAPPING = null; - static String ASYNC_PATH_INFO = null; - static String ASYNC_QUERY_STRING = null; - static String ASYNC_REQUEST_URI = null; - static String ASYNC_SERVLET_PATH = null; - void addListener(AsyncListener p0); - void addListener(AsyncListener p0, ServletRequest p1, ServletResponse p2); - void complete(); - void dispatch(); - void dispatch(ServletContext p0, String p1); - void dispatch(String p0); - void setTimeout(long p0); - void start(Runnable p0); -} diff --git a/java/ql/test/stubs/test/javax/servlet/AsyncEvent.java b/java/ql/test/stubs/test/javax/servlet/AsyncEvent.java deleted file mode 100644 index d7cb9c2b175..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/AsyncEvent.java +++ /dev/null @@ -1,20 +0,0 @@ -// Generated automatically from javax.servlet.AsyncEvent for testing purposes - -package javax.servlet; - -import javax.servlet.AsyncContext; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; - -public class AsyncEvent -{ - protected AsyncEvent() {} - public AsyncContext getAsyncContext(){ return null; } - public AsyncEvent(AsyncContext p0){} - public AsyncEvent(AsyncContext p0, ServletRequest p1, ServletResponse p2){} - public AsyncEvent(AsyncContext p0, ServletRequest p1, ServletResponse p2, Throwable p3){} - public AsyncEvent(AsyncContext p0, Throwable p1){} - public ServletRequest getSuppliedRequest(){ return null; } - public ServletResponse getSuppliedResponse(){ return null; } - public Throwable getThrowable(){ return null; } -} diff --git a/java/ql/test/stubs/test/javax/servlet/AsyncListener.java b/java/ql/test/stubs/test/javax/servlet/AsyncListener.java deleted file mode 100644 index 2723482f668..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/AsyncListener.java +++ /dev/null @@ -1,14 +0,0 @@ -// Generated automatically from javax.servlet.AsyncListener for testing purposes - -package javax.servlet; - -import java.util.EventListener; -import javax.servlet.AsyncEvent; - -public interface AsyncListener extends EventListener -{ - void onComplete(AsyncEvent p0); - void onError(AsyncEvent p0); - void onStartAsync(AsyncEvent p0); - void onTimeout(AsyncEvent p0); -} diff --git a/java/ql/test/stubs/test/javax/servlet/DispatcherType.java b/java/ql/test/stubs/test/javax/servlet/DispatcherType.java deleted file mode 100644 index 2b7b44f328d..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/DispatcherType.java +++ /dev/null @@ -1,10 +0,0 @@ -// Generated automatically from javax.servlet.DispatcherType for testing purposes - -package javax.servlet; - - -public enum DispatcherType -{ - ASYNC, ERROR, FORWARD, INCLUDE, REQUEST; - private DispatcherType() {} -} diff --git a/java/ql/test/stubs/test/javax/servlet/Filter.java b/java/ql/test/stubs/test/javax/servlet/Filter.java deleted file mode 100644 index 64b9f9d73a8..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/Filter.java +++ /dev/null @@ -1,15 +0,0 @@ -// Generated automatically from javax.servlet.Filter for testing purposes - -package javax.servlet; - -import javax.servlet.FilterChain; -import javax.servlet.FilterConfig; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; - -public interface Filter -{ - default void destroy(){} - default void init(FilterConfig p0){} - void doFilter(ServletRequest p0, ServletResponse p1, FilterChain p2); -} diff --git a/java/ql/test/stubs/test/javax/servlet/FilterChain.java b/java/ql/test/stubs/test/javax/servlet/FilterChain.java deleted file mode 100644 index f64ab722684..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/FilterChain.java +++ /dev/null @@ -1,11 +0,0 @@ -// Generated automatically from javax.servlet.FilterChain for testing purposes - -package javax.servlet; - -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; - -public interface FilterChain -{ - void doFilter(ServletRequest p0, ServletResponse p1); -} diff --git a/java/ql/test/stubs/test/javax/servlet/FilterConfig.java b/java/ql/test/stubs/test/javax/servlet/FilterConfig.java deleted file mode 100644 index 0e140c6680c..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/FilterConfig.java +++ /dev/null @@ -1,14 +0,0 @@ -// Generated automatically from javax.servlet.FilterConfig for testing purposes - -package javax.servlet; - -import java.util.Enumeration; -import javax.servlet.ServletContext; - -public interface FilterConfig -{ - Enumeration getInitParameterNames(); - ServletContext getServletContext(); - String getFilterName(); - String getInitParameter(String p0); -} diff --git a/java/ql/test/stubs/test/javax/servlet/FilterRegistration.java b/java/ql/test/stubs/test/javax/servlet/FilterRegistration.java deleted file mode 100644 index 6ad0739ceb6..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/FilterRegistration.java +++ /dev/null @@ -1,19 +0,0 @@ -// Generated automatically from javax.servlet.FilterRegistration for testing purposes - -package javax.servlet; - -import java.util.Collection; -import java.util.EnumSet; -import javax.servlet.DispatcherType; -import javax.servlet.Registration; - -public interface FilterRegistration extends Registration -{ - Collection getServletNameMappings(); - Collection getUrlPatternMappings(); - static public interface Dynamic extends FilterRegistration, Registration.Dynamic - { - } - void addMappingForServletNames(EnumSet p0, boolean p1, String... p2); - void addMappingForUrlPatterns(EnumSet p0, boolean p1, String... p2); -} diff --git a/java/ql/test/stubs/test/javax/servlet/GenericServlet.java b/java/ql/test/stubs/test/javax/servlet/GenericServlet.java deleted file mode 100644 index 5f7bdcda487..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/GenericServlet.java +++ /dev/null @@ -1,28 +0,0 @@ -// Generated automatically from javax.servlet.GenericServlet for testing purposes - -package javax.servlet; - -import java.io.Serializable; -import java.util.Enumeration; -import javax.servlet.Servlet; -import javax.servlet.ServletConfig; -import javax.servlet.ServletContext; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; - -abstract public class GenericServlet implements Serializable, Servlet, ServletConfig -{ - public Enumeration getInitParameterNames(){ return null; } - public GenericServlet(){} - public ServletConfig getServletConfig(){ return null; } - public ServletContext getServletContext(){ return null; } - public String getInitParameter(String p0){ return null; } - public String getServletInfo(){ return null; } - public String getServletName(){ return null; } - public abstract void service(ServletRequest p0, ServletResponse p1); - public void destroy(){} - public void init(){} - public void init(ServletConfig p0){} - public void log(String p0){} - public void log(String p0, Throwable p1){} -} diff --git a/java/ql/test/stubs/test/javax/servlet/HttpConstraintElement.java b/java/ql/test/stubs/test/javax/servlet/HttpConstraintElement.java deleted file mode 100644 index 6598aa47cc5..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/HttpConstraintElement.java +++ /dev/null @@ -1,16 +0,0 @@ -// Generated automatically from javax.servlet.HttpConstraintElement for testing purposes - -package javax.servlet; - -import javax.servlet.annotation.ServletSecurity; - -public class HttpConstraintElement -{ - public HttpConstraintElement(){} - public HttpConstraintElement(ServletSecurity.EmptyRoleSemantic p0){} - public HttpConstraintElement(ServletSecurity.EmptyRoleSemantic p0, ServletSecurity.TransportGuarantee p1, String... p2){} - public HttpConstraintElement(ServletSecurity.TransportGuarantee p0, String... p1){} - public ServletSecurity.EmptyRoleSemantic getEmptyRoleSemantic(){ return null; } - public ServletSecurity.TransportGuarantee getTransportGuarantee(){ return null; } - public String[] getRolesAllowed(){ return null; } -} diff --git a/java/ql/test/stubs/test/javax/servlet/HttpMethodConstraintElement.java b/java/ql/test/stubs/test/javax/servlet/HttpMethodConstraintElement.java deleted file mode 100644 index ddb52527004..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/HttpMethodConstraintElement.java +++ /dev/null @@ -1,13 +0,0 @@ -// Generated automatically from javax.servlet.HttpMethodConstraintElement for testing purposes - -package javax.servlet; - -import javax.servlet.HttpConstraintElement; - -public class HttpMethodConstraintElement extends HttpConstraintElement -{ - protected HttpMethodConstraintElement() {} - public HttpMethodConstraintElement(String p0){} - public HttpMethodConstraintElement(String p0, HttpConstraintElement p1){} - public String getMethodName(){ return null; } -} diff --git a/java/ql/test/stubs/test/javax/servlet/MultipartConfigElement.java b/java/ql/test/stubs/test/javax/servlet/MultipartConfigElement.java deleted file mode 100644 index 8470d9a5317..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/MultipartConfigElement.java +++ /dev/null @@ -1,17 +0,0 @@ -// Generated automatically from javax.servlet.MultipartConfigElement for testing purposes - -package javax.servlet; - -import javax.servlet.annotation.MultipartConfig; - -public class MultipartConfigElement -{ - protected MultipartConfigElement() {} - public MultipartConfigElement(MultipartConfig p0){} - public MultipartConfigElement(String p0){} - public MultipartConfigElement(String p0, long p1, long p2, int p3){} - public String getLocation(){ return null; } - public int getFileSizeThreshold(){ return 0; } - public long getMaxFileSize(){ return 0; } - public long getMaxRequestSize(){ return 0; } -} diff --git a/java/ql/test/stubs/test/javax/servlet/ReadListener.java b/java/ql/test/stubs/test/javax/servlet/ReadListener.java deleted file mode 100644 index 367594ef7da..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/ReadListener.java +++ /dev/null @@ -1,12 +0,0 @@ -// Generated automatically from javax.servlet.ReadListener for testing purposes - -package javax.servlet; - -import java.util.EventListener; - -public interface ReadListener extends EventListener -{ - void onAllDataRead(); - void onDataAvailable(); - void onError(Throwable p0); -} diff --git a/java/ql/test/stubs/test/javax/servlet/Registration.java b/java/ql/test/stubs/test/javax/servlet/Registration.java deleted file mode 100644 index 5d4095813ef..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/Registration.java +++ /dev/null @@ -1,20 +0,0 @@ -// Generated automatically from javax.servlet.Registration for testing purposes - -package javax.servlet; - -import java.util.Map; -import java.util.Set; - -public interface Registration -{ - Map getInitParameters(); - Set setInitParameters(Map p0); - String getClassName(); - String getInitParameter(String p0); - String getName(); - boolean setInitParameter(String p0, String p1); - static public interface Dynamic extends Registration - { - void setAsyncSupported(boolean p0); - } -} diff --git a/java/ql/test/stubs/test/javax/servlet/RequestDispatcher.java b/java/ql/test/stubs/test/javax/servlet/RequestDispatcher.java deleted file mode 100644 index ad017e4f501..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/RequestDispatcher.java +++ /dev/null @@ -1,30 +0,0 @@ -// Generated automatically from javax.servlet.RequestDispatcher for testing purposes - -package javax.servlet; - -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; - -public interface RequestDispatcher -{ - static String ERROR_EXCEPTION = null; - static String ERROR_EXCEPTION_TYPE = null; - static String ERROR_MESSAGE = null; - static String ERROR_REQUEST_URI = null; - static String ERROR_SERVLET_NAME = null; - static String ERROR_STATUS_CODE = null; - static String FORWARD_CONTEXT_PATH = null; - static String FORWARD_MAPPING = null; - static String FORWARD_PATH_INFO = null; - static String FORWARD_QUERY_STRING = null; - static String FORWARD_REQUEST_URI = null; - static String FORWARD_SERVLET_PATH = null; - static String INCLUDE_CONTEXT_PATH = null; - static String INCLUDE_MAPPING = null; - static String INCLUDE_PATH_INFO = null; - static String INCLUDE_QUERY_STRING = null; - static String INCLUDE_REQUEST_URI = null; - static String INCLUDE_SERVLET_PATH = null; - void forward(ServletRequest p0, ServletResponse p1); - void include(ServletRequest p0, ServletResponse p1); -} diff --git a/java/ql/test/stubs/test/javax/servlet/Servlet.java b/java/ql/test/stubs/test/javax/servlet/Servlet.java deleted file mode 100644 index 231c011a6f8..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/Servlet.java +++ /dev/null @@ -1,16 +0,0 @@ -// Generated automatically from javax.servlet.Servlet for testing purposes - -package javax.servlet; - -import javax.servlet.ServletConfig; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; - -public interface Servlet -{ - ServletConfig getServletConfig(); - String getServletInfo(); - void destroy(); - void init(ServletConfig p0); - void service(ServletRequest p0, ServletResponse p1); -} diff --git a/java/ql/test/stubs/test/javax/servlet/ServletConfig.java b/java/ql/test/stubs/test/javax/servlet/ServletConfig.java deleted file mode 100644 index c483c16ac4e..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/ServletConfig.java +++ /dev/null @@ -1,14 +0,0 @@ -// Generated automatically from javax.servlet.ServletConfig for testing purposes - -package javax.servlet; - -import java.util.Enumeration; -import javax.servlet.ServletContext; - -public interface ServletConfig -{ - Enumeration getInitParameterNames(); - ServletContext getServletContext(); - String getInitParameter(String p0); - String getServletName(); -} diff --git a/java/ql/test/stubs/test/javax/servlet/ServletContext.java b/java/ql/test/stubs/test/javax/servlet/ServletContext.java deleted file mode 100644 index 812393f61e9..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/ServletContext.java +++ /dev/null @@ -1,83 +0,0 @@ -// Generated automatically from javax.servlet.ServletContext for testing purposes - -package javax.servlet; - -import java.io.InputStream; -import java.net.URL; -import java.util.Enumeration; -import java.util.EventListener; -import java.util.Map; -import java.util.Set; -import javax.servlet.Filter; -import javax.servlet.FilterRegistration; -import javax.servlet.RequestDispatcher; -import javax.servlet.Servlet; -import javax.servlet.ServletRegistration; -import javax.servlet.SessionCookieConfig; -import javax.servlet.SessionTrackingMode; -import javax.servlet.descriptor.JspConfigDescriptor; - -public interface ServletContext -{ - T createListener(java.lang.Class p0); - void addListener(T p0); - T createFilter(java.lang.Class p0); - T createServlet(java.lang.Class p0); - ClassLoader getClassLoader(); - Enumeration getServlets(); - Enumeration getAttributeNames(); - Enumeration getInitParameterNames(); - Enumeration getServletNames(); - FilterRegistration getFilterRegistration(String p0); - FilterRegistration.Dynamic addFilter(String p0, Class p1); - FilterRegistration.Dynamic addFilter(String p0, Filter p1); - FilterRegistration.Dynamic addFilter(String p0, String p1); - InputStream getResourceAsStream(String p0); - JspConfigDescriptor getJspConfigDescriptor(); - Map getFilterRegistrations(); - Map getServletRegistrations(); - Object getAttribute(String p0); - RequestDispatcher getNamedDispatcher(String p0); - RequestDispatcher getRequestDispatcher(String p0); - Servlet getServlet(String p0); - ServletContext getContext(String p0); - ServletRegistration getServletRegistration(String p0); - ServletRegistration.Dynamic addJspFile(String p0, String p1); - ServletRegistration.Dynamic addServlet(String p0, Class p1); - ServletRegistration.Dynamic addServlet(String p0, Servlet p1); - ServletRegistration.Dynamic addServlet(String p0, String p1); - SessionCookieConfig getSessionCookieConfig(); - Set getDefaultSessionTrackingModes(); - Set getEffectiveSessionTrackingModes(); - Set getResourcePaths(String p0); - String getContextPath(); - String getInitParameter(String p0); - String getMimeType(String p0); - String getRealPath(String p0); - String getRequestCharacterEncoding(); - String getResponseCharacterEncoding(); - String getServerInfo(); - String getServletContextName(); - String getVirtualServerName(); - URL getResource(String p0); - boolean setInitParameter(String p0, String p1); - int getEffectiveMajorVersion(); - int getEffectiveMinorVersion(); - int getMajorVersion(); - int getMinorVersion(); - int getSessionTimeout(); - static String ORDERED_LIBS = null; - static String TEMPDIR = null; - void addListener(Class p0); - void addListener(String p0); - void declareRoles(String... p0); - void log(Exception p0, String p1); - void log(String p0); - void log(String p0, Throwable p1); - void removeAttribute(String p0); - void setAttribute(String p0, Object p1); - void setRequestCharacterEncoding(String p0); - void setResponseCharacterEncoding(String p0); - void setSessionTimeout(int p0); - void setSessionTrackingModes(Set p0); -} diff --git a/java/ql/test/stubs/test/javax/servlet/ServletException.java b/java/ql/test/stubs/test/javax/servlet/ServletException.java deleted file mode 100644 index 812b1687665..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/ServletException.java +++ /dev/null @@ -1,27 +0,0 @@ -/** - * - * Copyright 2003-2004 The Apache Software Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * Adapted from the Java Servlet API version 2.4 as available at - * http://search.maven.org/remotecontent?filepath=javax/servlet/servlet-api/2.4/servlet-api-2.4-sources.jar - * Only relevant stubs of this file have been retained for test purposes. - */ - -package javax.servlet; - -public class ServletException extends Exception { -} diff --git a/java/ql/test/stubs/test/javax/servlet/ServletInputStream.java b/java/ql/test/stubs/test/javax/servlet/ServletInputStream.java deleted file mode 100644 index 31034066970..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/ServletInputStream.java +++ /dev/null @@ -1,15 +0,0 @@ -// Generated automatically from javax.servlet.ServletInputStream for testing purposes - -package javax.servlet; - -import java.io.InputStream; -import javax.servlet.ReadListener; - -abstract public class ServletInputStream extends InputStream -{ - protected ServletInputStream(){} - public abstract boolean isFinished(); - public abstract boolean isReady(); - public abstract void setReadListener(ReadListener p0); - public int readLine(byte[] p0, int p1, int p2){ return 0; } -} diff --git a/java/ql/test/stubs/test/javax/servlet/ServletOutputStream.java b/java/ql/test/stubs/test/javax/servlet/ServletOutputStream.java deleted file mode 100644 index 52a2162c9eb..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/ServletOutputStream.java +++ /dev/null @@ -1,28 +0,0 @@ -// Generated automatically from javax.servlet.ServletOutputStream for testing purposes - -package javax.servlet; - -import java.io.OutputStream; -import javax.servlet.WriteListener; - -abstract public class ServletOutputStream extends OutputStream -{ - protected ServletOutputStream(){} - public abstract boolean isReady(); - public abstract void setWriteListener(WriteListener p0); - public void print(String p0){} - public void print(boolean p0){} - public void print(char p0){} - public void print(double p0){} - public void print(float p0){} - public void print(int p0){} - public void print(long p0){} - public void println(){} - public void println(String p0){} - public void println(boolean p0){} - public void println(char p0){} - public void println(double p0){} - public void println(float p0){} - public void println(int p0){} - public void println(long p0){} -} diff --git a/java/ql/test/stubs/test/javax/servlet/ServletRegistration.java b/java/ql/test/stubs/test/javax/servlet/ServletRegistration.java deleted file mode 100644 index a1cc66f2d19..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/ServletRegistration.java +++ /dev/null @@ -1,23 +0,0 @@ -// Generated automatically from javax.servlet.ServletRegistration for testing purposes - -package javax.servlet; - -import java.util.Collection; -import java.util.Set; -import javax.servlet.MultipartConfigElement; -import javax.servlet.Registration; -import javax.servlet.ServletSecurityElement; - -public interface ServletRegistration extends Registration -{ - Collection getMappings(); - Set addMapping(String... p0); - String getRunAsRole(); - static public interface Dynamic extends Registration.Dynamic, ServletRegistration - { - Set setServletSecurity(ServletSecurityElement p0); - void setLoadOnStartup(int p0); - void setMultipartConfig(MultipartConfigElement p0); - void setRunAsRole(String p0); - } -} diff --git a/java/ql/test/stubs/test/javax/servlet/ServletRequest.java b/java/ql/test/stubs/test/javax/servlet/ServletRequest.java deleted file mode 100644 index fc0db462cc0..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/ServletRequest.java +++ /dev/null @@ -1,55 +0,0 @@ -// Generated automatically from javax.servlet.ServletRequest for testing purposes - -package javax.servlet; - -import java.io.BufferedReader; -import java.util.Enumeration; -import java.util.Locale; -import java.util.Map; -import javax.servlet.AsyncContext; -import javax.servlet.DispatcherType; -import javax.servlet.RequestDispatcher; -import javax.servlet.ServletContext; -import javax.servlet.ServletInputStream; -import javax.servlet.ServletResponse; - -public interface ServletRequest -{ - AsyncContext getAsyncContext(); - AsyncContext startAsync(); - AsyncContext startAsync(ServletRequest p0, ServletResponse p1); - BufferedReader getReader(); - DispatcherType getDispatcherType(); - Enumeration getLocales(); - Enumeration getAttributeNames(); - Enumeration getParameterNames(); - Locale getLocale(); - Map getParameterMap(); - Object getAttribute(String p0); - RequestDispatcher getRequestDispatcher(String p0); - ServletContext getServletContext(); - ServletInputStream getInputStream(); - String getCharacterEncoding(); - String getContentType(); - String getLocalAddr(); - String getLocalName(); - String getParameter(String p0); - String getProtocol(); - String getRealPath(String p0); - String getRemoteAddr(); - String getRemoteHost(); - String getScheme(); - String getServerName(); - String[] getParameterValues(String p0); - boolean isAsyncStarted(); - boolean isAsyncSupported(); - boolean isSecure(); - int getContentLength(); - int getLocalPort(); - int getRemotePort(); - int getServerPort(); - long getContentLengthLong(); - void removeAttribute(String p0); - void setAttribute(String p0, Object p1); - void setCharacterEncoding(String p0); -} diff --git a/java/ql/test/stubs/test/javax/servlet/ServletResponse.java b/java/ql/test/stubs/test/javax/servlet/ServletResponse.java deleted file mode 100644 index db6610bc15d..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/ServletResponse.java +++ /dev/null @@ -1,27 +0,0 @@ -// Generated automatically from javax.servlet.ServletResponse for testing purposes - -package javax.servlet; - -import java.io.PrintWriter; -import java.util.Locale; -import javax.servlet.ServletOutputStream; - -public interface ServletResponse -{ - Locale getLocale(); - PrintWriter getWriter(); - ServletOutputStream getOutputStream(); - String getCharacterEncoding(); - String getContentType(); - boolean isCommitted(); - int getBufferSize(); - void flushBuffer(); - void reset(); - void resetBuffer(); - void setBufferSize(int p0); - void setCharacterEncoding(String p0); - void setContentLength(int p0); - void setContentLengthLong(long p0); - void setContentType(String p0); - void setLocale(Locale p0); -} diff --git a/java/ql/test/stubs/test/javax/servlet/ServletSecurityElement.java b/java/ql/test/stubs/test/javax/servlet/ServletSecurityElement.java deleted file mode 100644 index def47937391..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/ServletSecurityElement.java +++ /dev/null @@ -1,19 +0,0 @@ -// Generated automatically from javax.servlet.ServletSecurityElement for testing purposes - -package javax.servlet; - -import java.util.Collection; -import javax.servlet.HttpConstraintElement; -import javax.servlet.HttpMethodConstraintElement; -import javax.servlet.annotation.ServletSecurity; - -public class ServletSecurityElement extends HttpConstraintElement -{ - public Collection getHttpMethodConstraints(){ return null; } - public Collection getMethodNames(){ return null; } - public ServletSecurityElement(){} - public ServletSecurityElement(Collection p0){} - public ServletSecurityElement(HttpConstraintElement p0){} - public ServletSecurityElement(HttpConstraintElement p0, Collection p1){} - public ServletSecurityElement(ServletSecurity p0){} -} diff --git a/java/ql/test/stubs/test/javax/servlet/SessionCookieConfig.java b/java/ql/test/stubs/test/javax/servlet/SessionCookieConfig.java deleted file mode 100644 index 4cae9a11f30..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/SessionCookieConfig.java +++ /dev/null @@ -1,22 +0,0 @@ -// Generated automatically from javax.servlet.SessionCookieConfig for testing purposes - -package javax.servlet; - - -public interface SessionCookieConfig -{ - String getComment(); - String getDomain(); - String getName(); - String getPath(); - boolean isHttpOnly(); - boolean isSecure(); - int getMaxAge(); - void setComment(String p0); - void setDomain(String p0); - void setHttpOnly(boolean p0); - void setMaxAge(int p0); - void setName(String p0); - void setPath(String p0); - void setSecure(boolean p0); -} diff --git a/java/ql/test/stubs/test/javax/servlet/SessionTrackingMode.java b/java/ql/test/stubs/test/javax/servlet/SessionTrackingMode.java deleted file mode 100644 index 684ac40c56f..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/SessionTrackingMode.java +++ /dev/null @@ -1,10 +0,0 @@ -// Generated automatically from javax.servlet.SessionTrackingMode for testing purposes - -package javax.servlet; - - -public enum SessionTrackingMode -{ - COOKIE, SSL, URL; - private SessionTrackingMode() {} -} diff --git a/java/ql/test/stubs/test/javax/servlet/WriteListener.java b/java/ql/test/stubs/test/javax/servlet/WriteListener.java deleted file mode 100644 index 24fe504271c..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/WriteListener.java +++ /dev/null @@ -1,11 +0,0 @@ -// Generated automatically from javax.servlet.WriteListener for testing purposes - -package javax.servlet; - -import java.util.EventListener; - -public interface WriteListener extends EventListener -{ - void onError(Throwable p0); - void onWritePossible(); -} diff --git a/java/ql/test/stubs/test/javax/servlet/annotation/HttpConstraint.java b/java/ql/test/stubs/test/javax/servlet/annotation/HttpConstraint.java deleted file mode 100644 index f47efc62744..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/annotation/HttpConstraint.java +++ /dev/null @@ -1,18 +0,0 @@ -// Generated automatically from javax.servlet.annotation.HttpConstraint for testing purposes - -package javax.servlet.annotation; - -import java.lang.annotation.Annotation; -import java.lang.annotation.Documented; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import javax.servlet.annotation.ServletSecurity; - -@Documented -@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) -public @interface HttpConstraint -{ - ServletSecurity.EmptyRoleSemantic value(); - ServletSecurity.TransportGuarantee transportGuarantee(); - String[] rolesAllowed(); -} diff --git a/java/ql/test/stubs/test/javax/servlet/annotation/HttpMethodConstraint.java b/java/ql/test/stubs/test/javax/servlet/annotation/HttpMethodConstraint.java deleted file mode 100644 index 288f4651018..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/annotation/HttpMethodConstraint.java +++ /dev/null @@ -1,19 +0,0 @@ -// Generated automatically from javax.servlet.annotation.HttpMethodConstraint for testing purposes - -package javax.servlet.annotation; - -import java.lang.annotation.Annotation; -import java.lang.annotation.Documented; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import javax.servlet.annotation.ServletSecurity; - -@Documented -@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) -public @interface HttpMethodConstraint -{ - ServletSecurity.EmptyRoleSemantic emptyRoleSemantic(); - ServletSecurity.TransportGuarantee transportGuarantee(); - String value(); - String[] rolesAllowed(); -} diff --git a/java/ql/test/stubs/test/javax/servlet/annotation/MultipartConfig.java b/java/ql/test/stubs/test/javax/servlet/annotation/MultipartConfig.java deleted file mode 100644 index baccad3e199..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/annotation/MultipartConfig.java +++ /dev/null @@ -1,19 +0,0 @@ -// Generated automatically from javax.servlet.annotation.MultipartConfig for testing purposes - -package javax.servlet.annotation; - -import java.lang.annotation.Annotation; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) -@Target(value={java.lang.annotation.ElementType.TYPE}) -public @interface MultipartConfig -{ - String location(); - int fileSizeThreshold(); - long maxFileSize(); - long maxRequestSize(); -} diff --git a/java/ql/test/stubs/test/javax/servlet/annotation/ServletSecurity.java b/java/ql/test/stubs/test/javax/servlet/annotation/ServletSecurity.java deleted file mode 100644 index 021b6c64c2a..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/annotation/ServletSecurity.java +++ /dev/null @@ -1,33 +0,0 @@ -// Generated automatically from javax.servlet.annotation.ServletSecurity for testing purposes - -package javax.servlet.annotation; - -import java.lang.annotation.Annotation; -import java.lang.annotation.Documented; -import java.lang.annotation.ElementType; -import java.lang.annotation.Inherited; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; -import javax.servlet.annotation.HttpConstraint; -import javax.servlet.annotation.HttpMethodConstraint; - -@Documented -@Inherited -@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) -@Target(value={java.lang.annotation.ElementType.TYPE}) -public @interface ServletSecurity -{ - HttpConstraint value(); - HttpMethodConstraint[] httpMethodConstraints(); - static public enum EmptyRoleSemantic - { - DENY, PERMIT; - private EmptyRoleSemantic() {} - } - static public enum TransportGuarantee - { - CONFIDENTIAL, NONE; - private TransportGuarantee() {} - } -} diff --git a/java/ql/test/stubs/test/javax/servlet/annotation/WebInitParam.java b/java/ql/test/stubs/test/javax/servlet/annotation/WebInitParam.java deleted file mode 100644 index 513c7d7053b..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/annotation/WebInitParam.java +++ /dev/null @@ -1,20 +0,0 @@ -// Generated automatically from javax.servlet.annotation.WebInitParam for testing purposes - -package javax.servlet.annotation; - -import java.lang.annotation.Annotation; -import java.lang.annotation.Documented; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -@Documented -@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) -@Target(value={java.lang.annotation.ElementType.TYPE}) -public @interface WebInitParam -{ - String description(); - String name(); - String value(); -} diff --git a/java/ql/test/stubs/test/javax/servlet/annotation/WebServlet.java b/java/ql/test/stubs/test/javax/servlet/annotation/WebServlet.java deleted file mode 100644 index 83b5d2e476a..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/annotation/WebServlet.java +++ /dev/null @@ -1,28 +0,0 @@ -// Generated automatically from javax.servlet.annotation.WebServlet for testing purposes - -package javax.servlet.annotation; - -import java.lang.annotation.Annotation; -import java.lang.annotation.Documented; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; -import javax.servlet.annotation.WebInitParam; - -@Documented -@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) -@Target(value={java.lang.annotation.ElementType.TYPE}) -public @interface WebServlet -{ - String description(); - String displayName(); - String largeIcon(); - String name(); - String smallIcon(); - String[] urlPatterns(); - String[] value(); - WebInitParam[] initParams(); - boolean asyncSupported(); - int loadOnStartup(); -} diff --git a/java/ql/test/stubs/test/javax/servlet/descriptor/JspConfigDescriptor.java b/java/ql/test/stubs/test/javax/servlet/descriptor/JspConfigDescriptor.java deleted file mode 100644 index 8d93a4318d7..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/descriptor/JspConfigDescriptor.java +++ /dev/null @@ -1,13 +0,0 @@ -// Generated automatically from javax.servlet.descriptor.JspConfigDescriptor for testing purposes - -package javax.servlet.descriptor; - -import java.util.Collection; -import javax.servlet.descriptor.JspPropertyGroupDescriptor; -import javax.servlet.descriptor.TaglibDescriptor; - -public interface JspConfigDescriptor -{ - Collection getJspPropertyGroups(); - Collection getTaglibs(); -} diff --git a/java/ql/test/stubs/test/javax/servlet/descriptor/JspPropertyGroupDescriptor.java b/java/ql/test/stubs/test/javax/servlet/descriptor/JspPropertyGroupDescriptor.java deleted file mode 100644 index dd852fa1088..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/descriptor/JspPropertyGroupDescriptor.java +++ /dev/null @@ -1,21 +0,0 @@ -// Generated automatically from javax.servlet.descriptor.JspPropertyGroupDescriptor for testing purposes - -package javax.servlet.descriptor; - -import java.util.Collection; - -public interface JspPropertyGroupDescriptor -{ - Collection getIncludeCodas(); - Collection getIncludePreludes(); - Collection getUrlPatterns(); - String getBuffer(); - String getDefaultContentType(); - String getDeferredSyntaxAllowedAsLiteral(); - String getElIgnored(); - String getErrorOnUndeclaredNamespace(); - String getIsXml(); - String getPageEncoding(); - String getScriptingInvalid(); - String getTrimDirectiveWhitespaces(); -} diff --git a/java/ql/test/stubs/test/javax/servlet/descriptor/TaglibDescriptor.java b/java/ql/test/stubs/test/javax/servlet/descriptor/TaglibDescriptor.java deleted file mode 100644 index c3dd5c10473..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/descriptor/TaglibDescriptor.java +++ /dev/null @@ -1,10 +0,0 @@ -// Generated automatically from javax.servlet.descriptor.TaglibDescriptor for testing purposes - -package javax.servlet.descriptor; - - -public interface TaglibDescriptor -{ - String getTaglibLocation(); - String getTaglibURI(); -} diff --git a/java/ql/test/stubs/test/javax/servlet/http/Cookie.java b/java/ql/test/stubs/test/javax/servlet/http/Cookie.java deleted file mode 100644 index b5a180029be..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/http/Cookie.java +++ /dev/null @@ -1,29 +0,0 @@ -// Generated automatically from javax.servlet.http.Cookie for testing purposes - -package javax.servlet.http; - -import java.io.Serializable; - -public class Cookie implements Cloneable, Serializable -{ - protected Cookie() {} - public Cookie(String p0, String p1){} - public Object clone(){ return null; } - public String getComment(){ return null; } - public String getDomain(){ return null; } - public String getName(){ return null; } - public String getPath(){ return null; } - public String getValue(){ return null; } - public boolean getSecure(){ return false; } - public boolean isHttpOnly(){ return false; } - public int getMaxAge(){ return 0; } - public int getVersion(){ return 0; } - public void setComment(String p0){} - public void setDomain(String p0){} - public void setHttpOnly(boolean p0){} - public void setMaxAge(int p0){} - public void setPath(String p0){} - public void setSecure(boolean p0){} - public void setValue(String p0){} - public void setVersion(int p0){} -} diff --git a/java/ql/test/stubs/test/javax/servlet/http/HttpServlet.java b/java/ql/test/stubs/test/javax/servlet/http/HttpServlet.java deleted file mode 100644 index 1247f956d78..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/http/HttpServlet.java +++ /dev/null @@ -1,24 +0,0 @@ -// Generated automatically from javax.servlet.http.HttpServlet for testing purposes - -package javax.servlet.http; - -import javax.servlet.GenericServlet; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -abstract public class HttpServlet extends GenericServlet -{ - protected long getLastModified(HttpServletRequest p0){ return 0; } - protected void doDelete(HttpServletRequest p0, HttpServletResponse p1){} - protected void doGet(HttpServletRequest p0, HttpServletResponse p1){} - protected void doHead(HttpServletRequest p0, HttpServletResponse p1){} - protected void doOptions(HttpServletRequest p0, HttpServletResponse p1){} - protected void doPost(HttpServletRequest p0, HttpServletResponse p1){} - protected void doPut(HttpServletRequest p0, HttpServletResponse p1){} - protected void doTrace(HttpServletRequest p0, HttpServletResponse p1){} - protected void service(HttpServletRequest p0, HttpServletResponse p1){} - public HttpServlet(){} - public void service(ServletRequest p0, ServletResponse p1){} -} diff --git a/java/ql/test/stubs/test/javax/servlet/http/HttpServletMapping.java b/java/ql/test/stubs/test/javax/servlet/http/HttpServletMapping.java deleted file mode 100644 index 1b597f27773..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/http/HttpServletMapping.java +++ /dev/null @@ -1,13 +0,0 @@ -// Generated automatically from javax.servlet.http.HttpServletMapping for testing purposes - -package javax.servlet.http; - -import javax.servlet.http.MappingMatch; - -public interface HttpServletMapping -{ - MappingMatch getMappingMatch(); - String getMatchValue(); - String getPattern(); - String getServletName(); -} diff --git a/java/ql/test/stubs/test/javax/servlet/http/HttpServletRequest.java b/java/ql/test/stubs/test/javax/servlet/http/HttpServletRequest.java deleted file mode 100644 index 8612c34fb69..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/http/HttpServletRequest.java +++ /dev/null @@ -1,60 +0,0 @@ -// Generated automatically from javax.servlet.http.HttpServletRequest for testing purposes - -package javax.servlet.http; - -import java.security.Principal; -import java.util.Collection; -import java.util.Enumeration; -import java.util.Map; -import javax.servlet.ServletRequest; -import javax.servlet.http.Cookie; -import javax.servlet.http.HttpServletMapping; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; -import javax.servlet.http.HttpUpgradeHandler; -import javax.servlet.http.Part; -import javax.servlet.http.PushBuilder; - -public interface HttpServletRequest extends ServletRequest -{ - T upgrade(java.lang.Class p0); - Collection getParts(); - Cookie[] getCookies(); - Enumeration getHeaderNames(); - Enumeration getHeaders(String p0); - HttpSession getSession(); - HttpSession getSession(boolean p0); - Part getPart(String p0); - Principal getUserPrincipal(); - String changeSessionId(); - String getAuthType(); - String getContextPath(); - String getHeader(String p0); - String getMethod(); - String getPathInfo(); - String getPathTranslated(); - String getQueryString(); - String getRemoteUser(); - String getRequestURI(); - String getRequestedSessionId(); - String getServletPath(); - StringBuffer getRequestURL(); - boolean authenticate(HttpServletResponse p0); - boolean isRequestedSessionIdFromCookie(); - boolean isRequestedSessionIdFromURL(); - boolean isRequestedSessionIdFromUrl(); - boolean isRequestedSessionIdValid(); - boolean isUserInRole(String p0); - default HttpServletMapping getHttpServletMapping(){ return null; } - default Map getTrailerFields(){ return null; } - default PushBuilder newPushBuilder(){ return null; } - default boolean isTrailerFieldsReady(){ return false; } - int getIntHeader(String p0); - long getDateHeader(String p0); - static String BASIC_AUTH = null; - static String CLIENT_CERT_AUTH = null; - static String DIGEST_AUTH = null; - static String FORM_AUTH = null; - void login(String p0, String p1); - void logout(); -} diff --git a/java/ql/test/stubs/test/javax/servlet/http/HttpServletResponse.java b/java/ql/test/stubs/test/javax/servlet/http/HttpServletResponse.java deleted file mode 100644 index da902dbf30c..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/http/HttpServletResponse.java +++ /dev/null @@ -1,77 +0,0 @@ -// Generated automatically from javax.servlet.http.HttpServletResponse for testing purposes - -package javax.servlet.http; - -import java.util.Collection; -import java.util.Map; -import java.util.function.Supplier; -import javax.servlet.ServletResponse; -import javax.servlet.http.Cookie; - -public interface HttpServletResponse extends ServletResponse -{ - Collection getHeaderNames(); - Collection getHeaders(String p0); - String encodeRedirectURL(String p0); - String encodeRedirectUrl(String p0); - String encodeURL(String p0); - String encodeUrl(String p0); - String getHeader(String p0); - boolean containsHeader(String p0); - default Supplier> getTrailerFields(){ return null; } - default void setTrailerFields(Supplier> p0){} - int getStatus(); - static int SC_ACCEPTED = 0; - static int SC_BAD_GATEWAY = 0; - static int SC_BAD_REQUEST = 0; - static int SC_CONFLICT = 0; - static int SC_CONTINUE = 0; - static int SC_CREATED = 0; - static int SC_EXPECTATION_FAILED = 0; - static int SC_FORBIDDEN = 0; - static int SC_FOUND = 0; - static int SC_GATEWAY_TIMEOUT = 0; - static int SC_GONE = 0; - static int SC_HTTP_VERSION_NOT_SUPPORTED = 0; - static int SC_INTERNAL_SERVER_ERROR = 0; - static int SC_LENGTH_REQUIRED = 0; - static int SC_METHOD_NOT_ALLOWED = 0; - static int SC_MOVED_PERMANENTLY = 0; - static int SC_MOVED_TEMPORARILY = 0; - static int SC_MULTIPLE_CHOICES = 0; - static int SC_NON_AUTHORITATIVE_INFORMATION = 0; - static int SC_NOT_ACCEPTABLE = 0; - static int SC_NOT_FOUND = 0; - static int SC_NOT_IMPLEMENTED = 0; - static int SC_NOT_MODIFIED = 0; - static int SC_NO_CONTENT = 0; - static int SC_OK = 0; - static int SC_PARTIAL_CONTENT = 0; - static int SC_PAYMENT_REQUIRED = 0; - static int SC_PRECONDITION_FAILED = 0; - static int SC_PROXY_AUTHENTICATION_REQUIRED = 0; - static int SC_REQUESTED_RANGE_NOT_SATISFIABLE = 0; - static int SC_REQUEST_ENTITY_TOO_LARGE = 0; - static int SC_REQUEST_TIMEOUT = 0; - static int SC_REQUEST_URI_TOO_LONG = 0; - static int SC_RESET_CONTENT = 0; - static int SC_SEE_OTHER = 0; - static int SC_SERVICE_UNAVAILABLE = 0; - static int SC_SWITCHING_PROTOCOLS = 0; - static int SC_TEMPORARY_REDIRECT = 0; - static int SC_UNAUTHORIZED = 0; - static int SC_UNSUPPORTED_MEDIA_TYPE = 0; - static int SC_USE_PROXY = 0; - void addCookie(Cookie p0); - void addDateHeader(String p0, long p1); - void addHeader(String p0, String p1); - void addIntHeader(String p0, int p1); - void sendError(int p0); - void sendError(int p0, String p1); - void sendRedirect(String p0); - void setDateHeader(String p0, long p1); - void setHeader(String p0, String p1); - void setIntHeader(String p0, int p1); - void setStatus(int p0); - void setStatus(int p0, String p1); -} diff --git a/java/ql/test/stubs/test/javax/servlet/http/HttpSession.java b/java/ql/test/stubs/test/javax/servlet/http/HttpSession.java deleted file mode 100644 index f8f455b1423..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/http/HttpSession.java +++ /dev/null @@ -1,28 +0,0 @@ -// Generated automatically from javax.servlet.http.HttpSession for testing purposes - -package javax.servlet.http; - -import java.util.Enumeration; -import javax.servlet.ServletContext; -import javax.servlet.http.HttpSessionContext; - -public interface HttpSession -{ - Enumeration getAttributeNames(); - HttpSessionContext getSessionContext(); - Object getAttribute(String p0); - Object getValue(String p0); - ServletContext getServletContext(); - String getId(); - String[] getValueNames(); - boolean isNew(); - int getMaxInactiveInterval(); - long getCreationTime(); - long getLastAccessedTime(); - void invalidate(); - void putValue(String p0, Object p1); - void removeAttribute(String p0); - void removeValue(String p0); - void setAttribute(String p0, Object p1); - void setMaxInactiveInterval(int p0); -} diff --git a/java/ql/test/stubs/test/javax/servlet/http/HttpSessionContext.java b/java/ql/test/stubs/test/javax/servlet/http/HttpSessionContext.java deleted file mode 100644 index 97a77b48358..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/http/HttpSessionContext.java +++ /dev/null @@ -1,12 +0,0 @@ -// Generated automatically from javax.servlet.http.HttpSessionContext for testing purposes - -package javax.servlet.http; - -import java.util.Enumeration; -import javax.servlet.http.HttpSession; - -public interface HttpSessionContext -{ - Enumeration getIds(); - HttpSession getSession(String p0); -} diff --git a/java/ql/test/stubs/test/javax/servlet/http/HttpUpgradeHandler.java b/java/ql/test/stubs/test/javax/servlet/http/HttpUpgradeHandler.java deleted file mode 100644 index 987d49dbde2..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/http/HttpUpgradeHandler.java +++ /dev/null @@ -1,11 +0,0 @@ -// Generated automatically from javax.servlet.http.HttpUpgradeHandler for testing purposes - -package javax.servlet.http; - -import javax.servlet.http.WebConnection; - -public interface HttpUpgradeHandler -{ - void destroy(); - void init(WebConnection p0); -} diff --git a/java/ql/test/stubs/test/javax/servlet/http/MappingMatch.java b/java/ql/test/stubs/test/javax/servlet/http/MappingMatch.java deleted file mode 100644 index 0432fd2ef7d..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/http/MappingMatch.java +++ /dev/null @@ -1,10 +0,0 @@ -// Generated automatically from javax.servlet.http.MappingMatch for testing purposes - -package javax.servlet.http; - - -public enum MappingMatch -{ - CONTEXT_ROOT, DEFAULT, EXACT, EXTENSION, PATH; - private MappingMatch() {} -} diff --git a/java/ql/test/stubs/test/javax/servlet/http/Part.java b/java/ql/test/stubs/test/javax/servlet/http/Part.java deleted file mode 100644 index a4e599748a5..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/http/Part.java +++ /dev/null @@ -1,20 +0,0 @@ -// Generated automatically from javax.servlet.http.Part for testing purposes - -package javax.servlet.http; - -import java.io.InputStream; -import java.util.Collection; - -public interface Part -{ - Collection getHeaderNames(); - Collection getHeaders(String p0); - InputStream getInputStream(); - String getContentType(); - String getHeader(String p0); - String getName(); - String getSubmittedFileName(); - long getSize(); - void delete(); - void write(String p0); -} diff --git a/java/ql/test/stubs/test/javax/servlet/http/PushBuilder.java b/java/ql/test/stubs/test/javax/servlet/http/PushBuilder.java deleted file mode 100644 index 195e2426a83..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/http/PushBuilder.java +++ /dev/null @@ -1,23 +0,0 @@ -// Generated automatically from javax.servlet.http.PushBuilder for testing purposes - -package javax.servlet.http; - -import java.util.Set; - -public interface PushBuilder -{ - PushBuilder addHeader(String p0, String p1); - PushBuilder method(String p0); - PushBuilder path(String p0); - PushBuilder queryString(String p0); - PushBuilder removeHeader(String p0); - PushBuilder sessionId(String p0); - PushBuilder setHeader(String p0, String p1); - Set getHeaderNames(); - String getHeader(String p0); - String getMethod(); - String getPath(); - String getQueryString(); - String getSessionId(); - void push(); -} diff --git a/java/ql/test/stubs/test/javax/servlet/http/WebConnection.java b/java/ql/test/stubs/test/javax/servlet/http/WebConnection.java deleted file mode 100644 index 5001c046400..00000000000 --- a/java/ql/test/stubs/test/javax/servlet/http/WebConnection.java +++ /dev/null @@ -1,12 +0,0 @@ -// Generated automatically from javax.servlet.http.WebConnection for testing purposes - -package javax.servlet.http; - -import javax.servlet.ServletInputStream; -import javax.servlet.ServletOutputStream; - -public interface WebConnection extends AutoCloseable -{ - ServletInputStream getInputStream(); - ServletOutputStream getOutputStream(); -} From 1b5299de5afa5e8b0280ca1ffde879c18f855be9 Mon Sep 17 00:00:00 2001 From: Kevin Stubbings Date: Wed, 25 Sep 2024 22:00:42 +0000 Subject: [PATCH 05/63] Forgot something --- .../ext/org.apache.commons.fileupload.model.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 java/ql/lib/ext/org.apache.commons.fileupload.model.yml diff --git a/java/ql/lib/ext/org.apache.commons.fileupload.model.yml b/java/ql/lib/ext/org.apache.commons.fileupload.model.yml new file mode 100644 index 00000000000..1b68b8e8c75 --- /dev/null +++ b/java/ql/lib/ext/org.apache.commons.fileupload.model.yml @@ -0,0 +1,16 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: sourceModel + data: + - ["org.apache.commons.fileupload", "FileItem", True, "getInputStream", "()", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItem", True, "getFieldName", "()", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItem", True, "getContentType", "()", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItem", False, "getString", "()", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItem", True, "getName", "()", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItem", True, "getName", "(String)", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItem", True, "get", "()", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItemStream", True, "getContentType", "()", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItemStream", True, "getFieldName", "()", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItemStream", True, "getName", "()", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItemStream", True, "openStream", "()", "", "ReturnValue", "remote", "manual"] \ No newline at end of file From f0560458af6ea4f7190d23a49679280c9acb573c Mon Sep 17 00:00:00 2001 From: Kevin Stubbings Date: Fri, 27 Sep 2024 19:24:40 +0000 Subject: [PATCH 06/63] Finished up --- .../ql/lib/ext/jakarta.servlet.http.model.yml | 16 ++-- .../org.apache.commons.fileupload.model.yml | 2 +- .../dataflow/taintsources/FileUpload.java | 21 +++-- .../dataflow/taintsources/options | 2 +- .../jakarta/servlet/AsyncContext.java | 31 ++++++++ .../jakarta/servlet/AsyncEvent.java | 20 +++++ .../jakarta/servlet/AsyncListener.java | 14 ++++ .../jakarta/servlet/DispatcherType.java | 10 +++ .../jakarta/servlet/Filter.java | 15 ++++ .../jakarta/servlet/FilterChain.java | 11 +++ .../jakarta/servlet/FilterConfig.java | 14 ++++ .../jakarta/servlet/FilterRegistration.java | 19 +++++ .../servlet/HttpConstraintElement.java | 16 ++++ .../servlet/HttpMethodConstraintElement.java | 13 +++ .../servlet/MultipartConfigElement.java | 17 ++++ .../jakarta/servlet/ReadListener.java | 12 +++ .../jakarta/servlet/Registration.java | 20 +++++ .../jakarta/servlet/RequestDispatcher.java | 30 +++++++ .../jakarta/servlet/Servlet.java | 16 ++++ .../jakarta/servlet/ServletConfig.java | 14 ++++ .../jakarta/servlet/ServletConnection.java | 12 +++ .../jakarta/servlet/ServletContext.java | 79 +++++++++++++++++++ .../jakarta/servlet/ServletInputStream.java | 15 ++++ .../jakarta/servlet/ServletOutputStream.java | 28 +++++++ .../jakarta/servlet/ServletRegistration.java | 23 ++++++ .../jakarta/servlet/ServletRequest.java | 58 ++++++++++++++ .../jakarta/servlet/ServletResponse.java | 27 +++++++ .../servlet/ServletSecurityElement.java | 19 +++++ .../jakarta/servlet/SessionCookieConfig.java | 26 ++++++ .../jakarta/servlet/SessionTrackingMode.java | 10 +++ .../jakarta/servlet/WriteListener.java | 11 +++ .../servlet/annotation/HttpConstraint.java | 18 +++++ .../annotation/HttpMethodConstraint.java | 19 +++++ .../servlet/annotation/MultipartConfig.java | 19 +++++ .../servlet/annotation/ServletSecurity.java | 33 ++++++++ .../descriptor/JspConfigDescriptor.java | 13 +++ .../JspPropertyGroupDescriptor.java | 22 ++++++ .../servlet/descriptor/TaglibDescriptor.java | 10 +++ .../jakarta/servlet/http/Cookie.java | 36 +++++++++ .../servlet/http/HttpServletMapping.java | 13 +++ .../servlet/http/HttpServletRequest.java | 59 ++++++++++++++ .../servlet/http/HttpServletResponse.java | 74 +++++++++++++++++ .../jakarta/servlet/http/HttpSession.java | 22 ++++++ .../servlet/http/HttpUpgradeHandler.java | 11 +++ .../jakarta/servlet/http/MappingMatch.java | 10 +++ .../jakarta/servlet/http/Part.java | 20 +++++ .../jakarta/servlet/http/PushBuilder.java | 23 ++++++ .../jakarta/servlet/http/WebConnection.java | 12 +++ 48 files changed, 1018 insertions(+), 17 deletions(-) create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/AsyncContext.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/AsyncEvent.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/AsyncListener.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/DispatcherType.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/Filter.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/FilterChain.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/FilterConfig.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/FilterRegistration.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/HttpConstraintElement.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/HttpMethodConstraintElement.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/MultipartConfigElement.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ReadListener.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/Registration.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/RequestDispatcher.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/Servlet.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletConfig.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletConnection.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletContext.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletInputStream.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletOutputStream.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletRegistration.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletRequest.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletResponse.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletSecurityElement.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/SessionCookieConfig.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/SessionTrackingMode.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/WriteListener.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/annotation/HttpConstraint.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/annotation/HttpMethodConstraint.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/annotation/MultipartConfig.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/annotation/ServletSecurity.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/descriptor/JspConfigDescriptor.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/descriptor/JspPropertyGroupDescriptor.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/descriptor/TaglibDescriptor.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/Cookie.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpServletMapping.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpServletRequest.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpServletResponse.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpSession.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpUpgradeHandler.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/MappingMatch.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/Part.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/PushBuilder.java create mode 100644 java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/WebConnection.java diff --git a/java/ql/lib/ext/jakarta.servlet.http.model.yml b/java/ql/lib/ext/jakarta.servlet.http.model.yml index c1c55bddb9e..ba461a181de 100644 --- a/java/ql/lib/ext/jakarta.servlet.http.model.yml +++ b/java/ql/lib/ext/jakarta.servlet.http.model.yml @@ -3,11 +3,11 @@ extensions: pack: codeql/java-all extensible: sourceModel data: - - ["jakarta.servlet.http", "HttpServletRequest", True, "getServletPath", "", "", "ReturnValue", "remote", "manual"] - - ["jakarta.servlet.http", "Part", True, "getInputStream", "", "()", "ReturnValue", "remote", "manual"] - - ["jakarta.servlet.http", "Part", True, "getName", "", "()", "ReturnValue", "remote", "manual"] - - ["jakarta.servlet.http", "Part", True, "getContentType", "", "()", "ReturnValue", "remote", "manual"] - - ["jakarta.servlet.http", "Part", True, "getHeader", "", "(String)", "ReturnValue", "remote", "manual"] - - ["jakarta.servlet.http", "Part", True, "getHeaders", "", "(String)", "ReturnValue", "remote", "manual"] - - ["jakarta.servlet.http", "Part", True, "getHeaderNames", "", "()", "ReturnValue", "remote", "manual"] - - ["jakarta.servlet.http", "Part", True, "getSubmittedFileName", "", "()", "ReturnValue", "remote", "manual"] + - ["jakarta.servlet.http", "HttpServletRequest", True, "getServletPath", "()", "", "ReturnValue", "remote", "manual"] + - ["jakarta.servlet.http", "Part", True, "getInputStream", "()", "", "ReturnValue", "remote", "manual"] + - ["jakarta.servlet.http", "Part", True, "getName", "()", "", "ReturnValue", "remote", "manual"] + - ["jakarta.servlet.http", "Part", True, "getContentType", "()", "", "ReturnValue", "remote", "manual"] + - ["jakarta.servlet.http", "Part", True, "getHeader", "(String)", "", "ReturnValue", "remote", "manual"] + - ["jakarta.servlet.http", "Part", True, "getHeaders", "(String)", "", "ReturnValue", "remote", "manual"] + - ["jakarta.servlet.http", "Part", True, "getHeaderNames", "()", "", "ReturnValue", "remote", "manual"] + - ["jakarta.servlet.http", "Part", True, "getSubmittedFileName", "()", "", "ReturnValue", "remote", "manual"] diff --git a/java/ql/lib/ext/org.apache.commons.fileupload.model.yml b/java/ql/lib/ext/org.apache.commons.fileupload.model.yml index 1b68b8e8c75..228abadcc3e 100644 --- a/java/ql/lib/ext/org.apache.commons.fileupload.model.yml +++ b/java/ql/lib/ext/org.apache.commons.fileupload.model.yml @@ -6,7 +6,7 @@ extensions: - ["org.apache.commons.fileupload", "FileItem", True, "getInputStream", "()", "", "ReturnValue", "remote", "manual"] - ["org.apache.commons.fileupload", "FileItem", True, "getFieldName", "()", "", "ReturnValue", "remote", "manual"] - ["org.apache.commons.fileupload", "FileItem", True, "getContentType", "()", "", "ReturnValue", "remote", "manual"] - - ["org.apache.commons.fileupload", "FileItem", False, "getString", "()", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItem", True, "getString", "()", "", "ReturnValue", "remote", "manual"] - ["org.apache.commons.fileupload", "FileItem", True, "getName", "()", "", "ReturnValue", "remote", "manual"] - ["org.apache.commons.fileupload", "FileItem", True, "getName", "(String)", "", "ReturnValue", "remote", "manual"] - ["org.apache.commons.fileupload", "FileItem", True, "get", "()", "", "ReturnValue", "remote", "manual"] diff --git a/java/ql/test/library-tests/dataflow/taintsources/FileUpload.java b/java/ql/test/library-tests/dataflow/taintsources/FileUpload.java index 15c393b1082..29437a4ab18 100644 --- a/java/ql/test/library-tests/dataflow/taintsources/FileUpload.java +++ b/java/ql/test/library-tests/dataflow/taintsources/FileUpload.java @@ -1,16 +1,17 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.Part; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileItemStream; + public class FileUpload { private HttpServletRequest request; private HttpServletResponse response; - private Part filePart; + private javax.servlet.http.Part filePart; private FileItem fileItem; private FileItemStream fileItemStream; + private jakarta.servlet.http.Part jakartaPart; private static void sink(Object o) {} @@ -29,11 +30,17 @@ public class FileUpload { sink(fileItem.getContentType()); // $ hasRemoteValueFlow sink(fileItem.getName()); // $ hasRemoteValueFlow - //These result in a compiler error when uncommented - //sink(fileItemStream) // $ hasRemoteValueFlow - //sink(fileItemStream.getFieldName()) // $ hasRemoteValueFlow - //sink(fileItemStream.getName()) // $ hasRemoteValueFlow - //sink(fileItemStream.openStream()) // $ hasRemoteValueFlow + sink(fileItemStream.getFieldName()); // $ hasRemoteValueFlow + sink(fileItemStream.getName()); // $ hasRemoteValueFlow + sink(fileItemStream.openStream()); // $ hasRemoteValueFlow + + sink(jakartaPart.getContentType()); // $ hasRemoteValueFlow + sink(jakartaPart.getHeader("test")); // $ hasRemoteValueFlow + sink(jakartaPart.getInputStream()); // $ hasRemoteValueFlow + sink(jakartaPart.getHeaders("test")); // $ hasRemoteValueFlow + sink(jakartaPart.getHeaderNames()); // $ hasRemoteValueFlow + sink(jakartaPart.getSubmittedFileName()); // $ hasRemoteValueFlow + sink(jakartaPart.getName()); // $ hasRemoteValueFlow } } \ No newline at end of file diff --git a/java/ql/test/library-tests/dataflow/taintsources/options b/java/ql/test/library-tests/dataflow/taintsources/options index 85e7b4a6454..69d482d2013 100644 --- a/java/ql/test/library-tests/dataflow/taintsources/options +++ b/java/ql/test/library-tests/dataflow/taintsources/options @@ -1 +1 @@ -//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/apache-commons-fileupload-1.4:${testdir}/../../../stubs/javax-servlet-2.5:${testdir}/../../../stubs/servlet-api-2.4:${testdir}/../../../stubs/springframework-5.3.8:${testdir}/../../../stubs/google-android-9.0.0:${testdir}/../../../stubs/playframework-2.6.x:${testdir}/../../../stubs/jackson-databind-2.12:${testdir}/../../../stubs/jackson-core-2.12:${testdir}/../../../stubs/akka-2.6.x:${testdir}/../../../stubs/jwtk-jjwt-0.11.2:${testdir}/../../../stubs/jenkins:${testdir}/../../../stubs/stapler-1.263 \ No newline at end of file +//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/jakarta.servlet-api-6.0.0:${testdir}/../../../stubs/apache-commons-fileupload-1.4:${testdir}/../../../stubs/javax-servlet-2.5:${testdir}/../../../stubs/servlet-api-2.4:${testdir}/../../../stubs/springframework-5.3.8:${testdir}/../../../stubs/google-android-9.0.0:${testdir}/../../../stubs/playframework-2.6.x:${testdir}/../../../stubs/jackson-databind-2.12:${testdir}/../../../stubs/jackson-core-2.12:${testdir}/../../../stubs/akka-2.6.x:${testdir}/../../../stubs/jwtk-jjwt-0.11.2:${testdir}/../../../stubs/jenkins:${testdir}/../../../stubs/stapler-1.263 \ No newline at end of file diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/AsyncContext.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/AsyncContext.java new file mode 100644 index 00000000000..2dd7f0043a1 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/AsyncContext.java @@ -0,0 +1,31 @@ +// Generated automatically from jakarta.servlet.AsyncContext for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.AsyncListener; +import jakarta.servlet.ServletContext; +import jakarta.servlet.ServletRequest; +import jakarta.servlet.ServletResponse; + +public interface AsyncContext +{ + T createListener(java.lang.Class p0); + ServletRequest getRequest(); + ServletResponse getResponse(); + boolean hasOriginalRequestAndResponse(); + long getTimeout(); + static String ASYNC_CONTEXT_PATH = null; + static String ASYNC_MAPPING = null; + static String ASYNC_PATH_INFO = null; + static String ASYNC_QUERY_STRING = null; + static String ASYNC_REQUEST_URI = null; + static String ASYNC_SERVLET_PATH = null; + void addListener(AsyncListener p0); + void addListener(AsyncListener p0, ServletRequest p1, ServletResponse p2); + void complete(); + void dispatch(); + void dispatch(ServletContext p0, String p1); + void dispatch(String p0); + void setTimeout(long p0); + void start(Runnable p0); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/AsyncEvent.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/AsyncEvent.java new file mode 100644 index 00000000000..cf67716e25d --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/AsyncEvent.java @@ -0,0 +1,20 @@ +// Generated automatically from jakarta.servlet.AsyncEvent for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.AsyncContext; +import jakarta.servlet.ServletRequest; +import jakarta.servlet.ServletResponse; + +public class AsyncEvent +{ + protected AsyncEvent() {} + public AsyncContext getAsyncContext(){ return null; } + public AsyncEvent(AsyncContext p0){} + public AsyncEvent(AsyncContext p0, ServletRequest p1, ServletResponse p2){} + public AsyncEvent(AsyncContext p0, ServletRequest p1, ServletResponse p2, Throwable p3){} + public AsyncEvent(AsyncContext p0, Throwable p1){} + public ServletRequest getSuppliedRequest(){ return null; } + public ServletResponse getSuppliedResponse(){ return null; } + public Throwable getThrowable(){ return null; } +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/AsyncListener.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/AsyncListener.java new file mode 100644 index 00000000000..312f16c7fe4 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/AsyncListener.java @@ -0,0 +1,14 @@ +// Generated automatically from jakarta.servlet.AsyncListener for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.AsyncEvent; +import java.util.EventListener; + +public interface AsyncListener extends EventListener +{ + void onComplete(AsyncEvent p0); + void onError(AsyncEvent p0); + void onStartAsync(AsyncEvent p0); + void onTimeout(AsyncEvent p0); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/DispatcherType.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/DispatcherType.java new file mode 100644 index 00000000000..f66519259c3 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/DispatcherType.java @@ -0,0 +1,10 @@ +// Generated automatically from jakarta.servlet.DispatcherType for testing purposes + +package jakarta.servlet; + + +public enum DispatcherType +{ + ASYNC, ERROR, FORWARD, INCLUDE, REQUEST; + private DispatcherType() {} +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/Filter.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/Filter.java new file mode 100644 index 00000000000..60ed2c9e4b2 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/Filter.java @@ -0,0 +1,15 @@ +// Generated automatically from jakarta.servlet.Filter for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.FilterChain; +import jakarta.servlet.FilterConfig; +import jakarta.servlet.ServletRequest; +import jakarta.servlet.ServletResponse; + +public interface Filter +{ + default void destroy(){} + default void init(FilterConfig p0){} + void doFilter(ServletRequest p0, ServletResponse p1, FilterChain p2); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/FilterChain.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/FilterChain.java new file mode 100644 index 00000000000..d6943485a81 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/FilterChain.java @@ -0,0 +1,11 @@ +// Generated automatically from jakarta.servlet.FilterChain for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.ServletRequest; +import jakarta.servlet.ServletResponse; + +public interface FilterChain +{ + void doFilter(ServletRequest p0, ServletResponse p1); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/FilterConfig.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/FilterConfig.java new file mode 100644 index 00000000000..46f0bbca10c --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/FilterConfig.java @@ -0,0 +1,14 @@ +// Generated automatically from jakarta.servlet.FilterConfig for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.ServletContext; +import java.util.Enumeration; + +public interface FilterConfig +{ + Enumeration getInitParameterNames(); + ServletContext getServletContext(); + String getFilterName(); + String getInitParameter(String p0); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/FilterRegistration.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/FilterRegistration.java new file mode 100644 index 00000000000..e6963bbe10c --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/FilterRegistration.java @@ -0,0 +1,19 @@ +// Generated automatically from jakarta.servlet.FilterRegistration for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.DispatcherType; +import jakarta.servlet.Registration; +import java.util.Collection; +import java.util.EnumSet; + +public interface FilterRegistration extends Registration +{ + Collection getServletNameMappings(); + Collection getUrlPatternMappings(); + static public interface Dynamic extends FilterRegistration, Registration.Dynamic + { + } + void addMappingForServletNames(EnumSet p0, boolean p1, String... p2); + void addMappingForUrlPatterns(EnumSet p0, boolean p1, String... p2); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/HttpConstraintElement.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/HttpConstraintElement.java new file mode 100644 index 00000000000..7c35c7647da --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/HttpConstraintElement.java @@ -0,0 +1,16 @@ +// Generated automatically from jakarta.servlet.HttpConstraintElement for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.annotation.ServletSecurity; + +public class HttpConstraintElement +{ + public HttpConstraintElement(){} + public HttpConstraintElement(ServletSecurity.EmptyRoleSemantic p0){} + public HttpConstraintElement(ServletSecurity.EmptyRoleSemantic p0, ServletSecurity.TransportGuarantee p1, String... p2){} + public HttpConstraintElement(ServletSecurity.TransportGuarantee p0, String... p1){} + public ServletSecurity.EmptyRoleSemantic getEmptyRoleSemantic(){ return null; } + public ServletSecurity.TransportGuarantee getTransportGuarantee(){ return null; } + public String[] getRolesAllowed(){ return null; } +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/HttpMethodConstraintElement.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/HttpMethodConstraintElement.java new file mode 100644 index 00000000000..784e0a70c60 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/HttpMethodConstraintElement.java @@ -0,0 +1,13 @@ +// Generated automatically from jakarta.servlet.HttpMethodConstraintElement for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.HttpConstraintElement; + +public class HttpMethodConstraintElement extends HttpConstraintElement +{ + protected HttpMethodConstraintElement() {} + public HttpMethodConstraintElement(String p0){} + public HttpMethodConstraintElement(String p0, HttpConstraintElement p1){} + public String getMethodName(){ return null; } +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/MultipartConfigElement.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/MultipartConfigElement.java new file mode 100644 index 00000000000..e92e0cd1ce8 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/MultipartConfigElement.java @@ -0,0 +1,17 @@ +// Generated automatically from jakarta.servlet.MultipartConfigElement for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.annotation.MultipartConfig; + +public class MultipartConfigElement +{ + protected MultipartConfigElement() {} + public MultipartConfigElement(MultipartConfig p0){} + public MultipartConfigElement(String p0){} + public MultipartConfigElement(String p0, long p1, long p2, int p3){} + public String getLocation(){ return null; } + public int getFileSizeThreshold(){ return 0; } + public long getMaxFileSize(){ return 0; } + public long getMaxRequestSize(){ return 0; } +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ReadListener.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ReadListener.java new file mode 100644 index 00000000000..d3bd6b6406e --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ReadListener.java @@ -0,0 +1,12 @@ +// Generated automatically from jakarta.servlet.ReadListener for testing purposes + +package jakarta.servlet; + +import java.util.EventListener; + +public interface ReadListener extends EventListener +{ + void onAllDataRead(); + void onDataAvailable(); + void onError(Throwable p0); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/Registration.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/Registration.java new file mode 100644 index 00000000000..ed28c2fd90c --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/Registration.java @@ -0,0 +1,20 @@ +// Generated automatically from jakarta.servlet.Registration for testing purposes + +package jakarta.servlet; + +import java.util.Map; +import java.util.Set; + +public interface Registration +{ + Map getInitParameters(); + Set setInitParameters(Map p0); + String getClassName(); + String getInitParameter(String p0); + String getName(); + boolean setInitParameter(String p0, String p1); + static public interface Dynamic extends Registration + { + void setAsyncSupported(boolean p0); + } +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/RequestDispatcher.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/RequestDispatcher.java new file mode 100644 index 00000000000..261772a868c --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/RequestDispatcher.java @@ -0,0 +1,30 @@ +// Generated automatically from jakarta.servlet.RequestDispatcher for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.ServletRequest; +import jakarta.servlet.ServletResponse; + +public interface RequestDispatcher +{ + static String ERROR_EXCEPTION = null; + static String ERROR_EXCEPTION_TYPE = null; + static String ERROR_MESSAGE = null; + static String ERROR_REQUEST_URI = null; + static String ERROR_SERVLET_NAME = null; + static String ERROR_STATUS_CODE = null; + static String FORWARD_CONTEXT_PATH = null; + static String FORWARD_MAPPING = null; + static String FORWARD_PATH_INFO = null; + static String FORWARD_QUERY_STRING = null; + static String FORWARD_REQUEST_URI = null; + static String FORWARD_SERVLET_PATH = null; + static String INCLUDE_CONTEXT_PATH = null; + static String INCLUDE_MAPPING = null; + static String INCLUDE_PATH_INFO = null; + static String INCLUDE_QUERY_STRING = null; + static String INCLUDE_REQUEST_URI = null; + static String INCLUDE_SERVLET_PATH = null; + void forward(ServletRequest p0, ServletResponse p1); + void include(ServletRequest p0, ServletResponse p1); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/Servlet.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/Servlet.java new file mode 100644 index 00000000000..23fba12646f --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/Servlet.java @@ -0,0 +1,16 @@ +// Generated automatically from jakarta.servlet.Servlet for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.ServletConfig; +import jakarta.servlet.ServletRequest; +import jakarta.servlet.ServletResponse; + +public interface Servlet +{ + ServletConfig getServletConfig(); + String getServletInfo(); + void destroy(); + void init(ServletConfig p0); + void service(ServletRequest p0, ServletResponse p1); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletConfig.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletConfig.java new file mode 100644 index 00000000000..1f914cdb1de --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletConfig.java @@ -0,0 +1,14 @@ +// Generated automatically from jakarta.servlet.ServletConfig for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.ServletContext; +import java.util.Enumeration; + +public interface ServletConfig +{ + Enumeration getInitParameterNames(); + ServletContext getServletContext(); + String getInitParameter(String p0); + String getServletName(); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletConnection.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletConnection.java new file mode 100644 index 00000000000..927d47e6c42 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletConnection.java @@ -0,0 +1,12 @@ +// Generated automatically from jakarta.servlet.ServletConnection for testing purposes + +package jakarta.servlet; + + +public interface ServletConnection +{ + String getConnectionId(); + String getProtocol(); + String getProtocolConnectionId(); + boolean isSecure(); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletContext.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletContext.java new file mode 100644 index 00000000000..df05b77fd0f --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletContext.java @@ -0,0 +1,79 @@ +// Generated automatically from jakarta.servlet.ServletContext for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.Filter; +import jakarta.servlet.FilterRegistration; +import jakarta.servlet.RequestDispatcher; +import jakarta.servlet.Servlet; +import jakarta.servlet.ServletRegistration; +import jakarta.servlet.SessionCookieConfig; +import jakarta.servlet.SessionTrackingMode; +import jakarta.servlet.descriptor.JspConfigDescriptor; +import java.io.InputStream; +import java.net.URL; +import java.util.Enumeration; +import java.util.EventListener; +import java.util.Map; +import java.util.Set; + +public interface ServletContext +{ + T createListener(java.lang.Class p0); + void addListener(T p0); + T createFilter(java.lang.Class p0); + T createServlet(java.lang.Class p0); + ClassLoader getClassLoader(); + Enumeration getAttributeNames(); + Enumeration getInitParameterNames(); + FilterRegistration getFilterRegistration(String p0); + FilterRegistration.Dynamic addFilter(String p0, Class p1); + FilterRegistration.Dynamic addFilter(String p0, Filter p1); + FilterRegistration.Dynamic addFilter(String p0, String p1); + InputStream getResourceAsStream(String p0); + JspConfigDescriptor getJspConfigDescriptor(); + Map getFilterRegistrations(); + Map getServletRegistrations(); + Object getAttribute(String p0); + RequestDispatcher getNamedDispatcher(String p0); + RequestDispatcher getRequestDispatcher(String p0); + ServletContext getContext(String p0); + ServletRegistration getServletRegistration(String p0); + ServletRegistration.Dynamic addJspFile(String p0, String p1); + ServletRegistration.Dynamic addServlet(String p0, Class p1); + ServletRegistration.Dynamic addServlet(String p0, Servlet p1); + ServletRegistration.Dynamic addServlet(String p0, String p1); + SessionCookieConfig getSessionCookieConfig(); + Set getDefaultSessionTrackingModes(); + Set getEffectiveSessionTrackingModes(); + Set getResourcePaths(String p0); + String getContextPath(); + String getInitParameter(String p0); + String getMimeType(String p0); + String getRealPath(String p0); + String getRequestCharacterEncoding(); + String getResponseCharacterEncoding(); + String getServerInfo(); + String getServletContextName(); + String getVirtualServerName(); + URL getResource(String p0); + boolean setInitParameter(String p0, String p1); + int getEffectiveMajorVersion(); + int getEffectiveMinorVersion(); + int getMajorVersion(); + int getMinorVersion(); + int getSessionTimeout(); + static String ORDERED_LIBS = null; + static String TEMPDIR = null; + void addListener(Class p0); + void addListener(String p0); + void declareRoles(String... p0); + void log(String p0); + void log(String p0, Throwable p1); + void removeAttribute(String p0); + void setAttribute(String p0, Object p1); + void setRequestCharacterEncoding(String p0); + void setResponseCharacterEncoding(String p0); + void setSessionTimeout(int p0); + void setSessionTrackingModes(Set p0); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletInputStream.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletInputStream.java new file mode 100644 index 00000000000..9db836af589 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletInputStream.java @@ -0,0 +1,15 @@ +// Generated automatically from jakarta.servlet.ServletInputStream for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.ReadListener; +import java.io.InputStream; + +abstract public class ServletInputStream extends InputStream +{ + protected ServletInputStream(){} + public abstract boolean isFinished(); + public abstract boolean isReady(); + public abstract void setReadListener(ReadListener p0); + public int readLine(byte[] p0, int p1, int p2){ return 0; } +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletOutputStream.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletOutputStream.java new file mode 100644 index 00000000000..18cd370346f --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletOutputStream.java @@ -0,0 +1,28 @@ +// Generated automatically from jakarta.servlet.ServletOutputStream for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.WriteListener; +import java.io.OutputStream; + +abstract public class ServletOutputStream extends OutputStream +{ + protected ServletOutputStream(){} + public abstract boolean isReady(); + public abstract void setWriteListener(WriteListener p0); + public void print(String p0){} + public void print(boolean p0){} + public void print(char p0){} + public void print(double p0){} + public void print(float p0){} + public void print(int p0){} + public void print(long p0){} + public void println(){} + public void println(String p0){} + public void println(boolean p0){} + public void println(char p0){} + public void println(double p0){} + public void println(float p0){} + public void println(int p0){} + public void println(long p0){} +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletRegistration.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletRegistration.java new file mode 100644 index 00000000000..edb9c15562c --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletRegistration.java @@ -0,0 +1,23 @@ +// Generated automatically from jakarta.servlet.ServletRegistration for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.MultipartConfigElement; +import jakarta.servlet.Registration; +import jakarta.servlet.ServletSecurityElement; +import java.util.Collection; +import java.util.Set; + +public interface ServletRegistration extends Registration +{ + Collection getMappings(); + Set addMapping(String... p0); + String getRunAsRole(); + static public interface Dynamic extends Registration.Dynamic, ServletRegistration + { + Set setServletSecurity(ServletSecurityElement p0); + void setLoadOnStartup(int p0); + void setMultipartConfig(MultipartConfigElement p0); + void setRunAsRole(String p0); + } +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletRequest.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletRequest.java new file mode 100644 index 00000000000..f2c421a5a90 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletRequest.java @@ -0,0 +1,58 @@ +// Generated automatically from jakarta.servlet.ServletRequest for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.AsyncContext; +import jakarta.servlet.DispatcherType; +import jakarta.servlet.RequestDispatcher; +import jakarta.servlet.ServletConnection; +import jakarta.servlet.ServletContext; +import jakarta.servlet.ServletInputStream; +import jakarta.servlet.ServletResponse; +import java.io.BufferedReader; +import java.util.Enumeration; +import java.util.Locale; +import java.util.Map; + +public interface ServletRequest +{ + AsyncContext getAsyncContext(); + AsyncContext startAsync(); + AsyncContext startAsync(ServletRequest p0, ServletResponse p1); + BufferedReader getReader(); + DispatcherType getDispatcherType(); + Enumeration getLocales(); + Enumeration getAttributeNames(); + Enumeration getParameterNames(); + Locale getLocale(); + Map getParameterMap(); + Object getAttribute(String p0); + RequestDispatcher getRequestDispatcher(String p0); + ServletConnection getServletConnection(); + ServletContext getServletContext(); + ServletInputStream getInputStream(); + String getCharacterEncoding(); + String getContentType(); + String getLocalAddr(); + String getLocalName(); + String getParameter(String p0); + String getProtocol(); + String getProtocolRequestId(); + String getRemoteAddr(); + String getRemoteHost(); + String getRequestId(); + String getScheme(); + String getServerName(); + String[] getParameterValues(String p0); + boolean isAsyncStarted(); + boolean isAsyncSupported(); + boolean isSecure(); + int getContentLength(); + int getLocalPort(); + int getRemotePort(); + int getServerPort(); + long getContentLengthLong(); + void removeAttribute(String p0); + void setAttribute(String p0, Object p1); + void setCharacterEncoding(String p0); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletResponse.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletResponse.java new file mode 100644 index 00000000000..05bcae9da5a --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletResponse.java @@ -0,0 +1,27 @@ +// Generated automatically from jakarta.servlet.ServletResponse for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.ServletOutputStream; +import java.io.PrintWriter; +import java.util.Locale; + +public interface ServletResponse +{ + Locale getLocale(); + PrintWriter getWriter(); + ServletOutputStream getOutputStream(); + String getCharacterEncoding(); + String getContentType(); + boolean isCommitted(); + int getBufferSize(); + void flushBuffer(); + void reset(); + void resetBuffer(); + void setBufferSize(int p0); + void setCharacterEncoding(String p0); + void setContentLength(int p0); + void setContentLengthLong(long p0); + void setContentType(String p0); + void setLocale(Locale p0); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletSecurityElement.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletSecurityElement.java new file mode 100644 index 00000000000..c234a0d213c --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletSecurityElement.java @@ -0,0 +1,19 @@ +// Generated automatically from jakarta.servlet.ServletSecurityElement for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.HttpConstraintElement; +import jakarta.servlet.HttpMethodConstraintElement; +import jakarta.servlet.annotation.ServletSecurity; +import java.util.Collection; + +public class ServletSecurityElement extends HttpConstraintElement +{ + public Collection getHttpMethodConstraints(){ return null; } + public Collection getMethodNames(){ return null; } + public ServletSecurityElement(){} + public ServletSecurityElement(Collection p0){} + public ServletSecurityElement(HttpConstraintElement p0){} + public ServletSecurityElement(HttpConstraintElement p0, Collection p1){} + public ServletSecurityElement(ServletSecurity p0){} +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/SessionCookieConfig.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/SessionCookieConfig.java new file mode 100644 index 00000000000..ed314f11633 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/SessionCookieConfig.java @@ -0,0 +1,26 @@ +// Generated automatically from jakarta.servlet.SessionCookieConfig for testing purposes + +package jakarta.servlet; + +import java.util.Map; + +public interface SessionCookieConfig +{ + Map getAttributes(); + String getAttribute(String p0); + String getComment(); + String getDomain(); + String getName(); + String getPath(); + boolean isHttpOnly(); + boolean isSecure(); + int getMaxAge(); + void setAttribute(String p0, String p1); + void setComment(String p0); + void setDomain(String p0); + void setHttpOnly(boolean p0); + void setMaxAge(int p0); + void setName(String p0); + void setPath(String p0); + void setSecure(boolean p0); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/SessionTrackingMode.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/SessionTrackingMode.java new file mode 100644 index 00000000000..cfb68be5773 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/SessionTrackingMode.java @@ -0,0 +1,10 @@ +// Generated automatically from jakarta.servlet.SessionTrackingMode for testing purposes + +package jakarta.servlet; + + +public enum SessionTrackingMode +{ + COOKIE, SSL, URL; + private SessionTrackingMode() {} +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/WriteListener.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/WriteListener.java new file mode 100644 index 00000000000..a15ca4a89e1 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/WriteListener.java @@ -0,0 +1,11 @@ +// Generated automatically from jakarta.servlet.WriteListener for testing purposes + +package jakarta.servlet; + +import java.util.EventListener; + +public interface WriteListener extends EventListener +{ + void onError(Throwable p0); + void onWritePossible(); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/annotation/HttpConstraint.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/annotation/HttpConstraint.java new file mode 100644 index 00000000000..674193af068 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/annotation/HttpConstraint.java @@ -0,0 +1,18 @@ +// Generated automatically from jakarta.servlet.annotation.HttpConstraint for testing purposes + +package jakarta.servlet.annotation; + +import jakarta.servlet.annotation.ServletSecurity; +import java.lang.annotation.Annotation; +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +@Documented +@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) +public @interface HttpConstraint +{ + ServletSecurity.EmptyRoleSemantic value(); + ServletSecurity.TransportGuarantee transportGuarantee(); + String[] rolesAllowed(); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/annotation/HttpMethodConstraint.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/annotation/HttpMethodConstraint.java new file mode 100644 index 00000000000..4cf3c935924 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/annotation/HttpMethodConstraint.java @@ -0,0 +1,19 @@ +// Generated automatically from jakarta.servlet.annotation.HttpMethodConstraint for testing purposes + +package jakarta.servlet.annotation; + +import jakarta.servlet.annotation.ServletSecurity; +import java.lang.annotation.Annotation; +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +@Documented +@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) +public @interface HttpMethodConstraint +{ + ServletSecurity.EmptyRoleSemantic emptyRoleSemantic(); + ServletSecurity.TransportGuarantee transportGuarantee(); + String value(); + String[] rolesAllowed(); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/annotation/MultipartConfig.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/annotation/MultipartConfig.java new file mode 100644 index 00000000000..3d989631871 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/annotation/MultipartConfig.java @@ -0,0 +1,19 @@ +// Generated automatically from jakarta.servlet.annotation.MultipartConfig for testing purposes + +package jakarta.servlet.annotation; + +import java.lang.annotation.Annotation; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) +@Target(value={java.lang.annotation.ElementType.TYPE}) +public @interface MultipartConfig +{ + String location(); + int fileSizeThreshold(); + long maxFileSize(); + long maxRequestSize(); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/annotation/ServletSecurity.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/annotation/ServletSecurity.java new file mode 100644 index 00000000000..1819fbd07ae --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/annotation/ServletSecurity.java @@ -0,0 +1,33 @@ +// Generated automatically from jakarta.servlet.annotation.ServletSecurity for testing purposes + +package jakarta.servlet.annotation; + +import jakarta.servlet.annotation.HttpConstraint; +import jakarta.servlet.annotation.HttpMethodConstraint; +import java.lang.annotation.Annotation; +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Documented +@Inherited +@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) +@Target(value={java.lang.annotation.ElementType.TYPE}) +public @interface ServletSecurity +{ + HttpConstraint value(); + HttpMethodConstraint[] httpMethodConstraints(); + static public enum EmptyRoleSemantic + { + DENY, PERMIT; + private EmptyRoleSemantic() {} + } + static public enum TransportGuarantee + { + CONFIDENTIAL, NONE; + private TransportGuarantee() {} + } +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/descriptor/JspConfigDescriptor.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/descriptor/JspConfigDescriptor.java new file mode 100644 index 00000000000..eaa4ad0dc54 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/descriptor/JspConfigDescriptor.java @@ -0,0 +1,13 @@ +// Generated automatically from jakarta.servlet.descriptor.JspConfigDescriptor for testing purposes + +package jakarta.servlet.descriptor; + +import jakarta.servlet.descriptor.JspPropertyGroupDescriptor; +import jakarta.servlet.descriptor.TaglibDescriptor; +import java.util.Collection; + +public interface JspConfigDescriptor +{ + Collection getJspPropertyGroups(); + Collection getTaglibs(); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/descriptor/JspPropertyGroupDescriptor.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/descriptor/JspPropertyGroupDescriptor.java new file mode 100644 index 00000000000..f5abf48ff10 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/descriptor/JspPropertyGroupDescriptor.java @@ -0,0 +1,22 @@ +// Generated automatically from jakarta.servlet.descriptor.JspPropertyGroupDescriptor for testing purposes + +package jakarta.servlet.descriptor; + +import java.util.Collection; + +public interface JspPropertyGroupDescriptor +{ + Collection getIncludeCodas(); + Collection getIncludePreludes(); + Collection getUrlPatterns(); + String getBuffer(); + String getDefaultContentType(); + String getDeferredSyntaxAllowedAsLiteral(); + String getElIgnored(); + String getErrorOnELNotFound(); + String getErrorOnUndeclaredNamespace(); + String getIsXml(); + String getPageEncoding(); + String getScriptingInvalid(); + String getTrimDirectiveWhitespaces(); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/descriptor/TaglibDescriptor.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/descriptor/TaglibDescriptor.java new file mode 100644 index 00000000000..ce54c9ca96d --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/descriptor/TaglibDescriptor.java @@ -0,0 +1,10 @@ +// Generated automatically from jakarta.servlet.descriptor.TaglibDescriptor for testing purposes + +package jakarta.servlet.descriptor; + + +public interface TaglibDescriptor +{ + String getTaglibLocation(); + String getTaglibURI(); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/Cookie.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/Cookie.java new file mode 100644 index 00000000000..2ad1179a144 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/Cookie.java @@ -0,0 +1,36 @@ +// Generated automatically from jakarta.servlet.http.Cookie for testing purposes + +package jakarta.servlet.http; + +import java.io.Serializable; +import java.util.Map; + +public class Cookie implements Cloneable, Serializable +{ + protected Cookie() {} + public Cookie(String p0, String p1){} + public Map getAttributes(){ return null; } + public Object clone(){ return null; } + public String getAttribute(String p0){ return null; } + public String getComment(){ return null; } + public String getDomain(){ return null; } + public String getName(){ return null; } + public String getPath(){ return null; } + public String getValue(){ return null; } + public String toString(){ return null; } + public boolean equals(Object p0){ return false; } + public boolean getSecure(){ return false; } + public boolean isHttpOnly(){ return false; } + public int getMaxAge(){ return 0; } + public int getVersion(){ return 0; } + public int hashCode(){ return 0; } + public void setAttribute(String p0, String p1){} + public void setComment(String p0){} + public void setDomain(String p0){} + public void setHttpOnly(boolean p0){} + public void setMaxAge(int p0){} + public void setPath(String p0){} + public void setSecure(boolean p0){} + public void setValue(String p0){} + public void setVersion(int p0){} +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpServletMapping.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpServletMapping.java new file mode 100644 index 00000000000..3b9ca6afbf2 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpServletMapping.java @@ -0,0 +1,13 @@ +// Generated automatically from jakarta.servlet.http.HttpServletMapping for testing purposes + +package jakarta.servlet.http; + +import jakarta.servlet.http.MappingMatch; + +public interface HttpServletMapping +{ + MappingMatch getMappingMatch(); + String getMatchValue(); + String getPattern(); + String getServletName(); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpServletRequest.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpServletRequest.java new file mode 100644 index 00000000000..acaeba3253a --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpServletRequest.java @@ -0,0 +1,59 @@ +// Generated automatically from jakarta.servlet.http.HttpServletRequest for testing purposes + +package jakarta.servlet.http; + +import jakarta.servlet.ServletRequest; +import jakarta.servlet.http.Cookie; +import jakarta.servlet.http.HttpServletMapping; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpSession; +import jakarta.servlet.http.HttpUpgradeHandler; +import jakarta.servlet.http.Part; +import jakarta.servlet.http.PushBuilder; +import java.security.Principal; +import java.util.Collection; +import java.util.Enumeration; +import java.util.Map; + +public interface HttpServletRequest extends ServletRequest +{ + T upgrade(java.lang.Class p0); + Collection getParts(); + Cookie[] getCookies(); + Enumeration getHeaderNames(); + Enumeration getHeaders(String p0); + HttpSession getSession(); + HttpSession getSession(boolean p0); + Part getPart(String p0); + Principal getUserPrincipal(); + String changeSessionId(); + String getAuthType(); + String getContextPath(); + String getHeader(String p0); + String getMethod(); + String getPathInfo(); + String getPathTranslated(); + String getQueryString(); + String getRemoteUser(); + String getRequestURI(); + String getRequestedSessionId(); + String getServletPath(); + StringBuffer getRequestURL(); + boolean authenticate(HttpServletResponse p0); + boolean isRequestedSessionIdFromCookie(); + boolean isRequestedSessionIdFromURL(); + boolean isRequestedSessionIdValid(); + boolean isUserInRole(String p0); + default HttpServletMapping getHttpServletMapping(){ return null; } + default Map getTrailerFields(){ return null; } + default PushBuilder newPushBuilder(){ return null; } + default boolean isTrailerFieldsReady(){ return false; } + int getIntHeader(String p0); + long getDateHeader(String p0); + static String BASIC_AUTH = null; + static String CLIENT_CERT_AUTH = null; + static String DIGEST_AUTH = null; + static String FORM_AUTH = null; + void login(String p0, String p1); + void logout(); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpServletResponse.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpServletResponse.java new file mode 100644 index 00000000000..92bf802235a --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpServletResponse.java @@ -0,0 +1,74 @@ +// Generated automatically from jakarta.servlet.http.HttpServletResponse for testing purposes + +package jakarta.servlet.http; + +import jakarta.servlet.ServletResponse; +import jakarta.servlet.http.Cookie; +import java.util.Collection; +import java.util.Map; +import java.util.function.Supplier; + +public interface HttpServletResponse extends ServletResponse +{ + Collection getHeaderNames(); + Collection getHeaders(String p0); + String encodeRedirectURL(String p0); + String encodeURL(String p0); + String getHeader(String p0); + boolean containsHeader(String p0); + default Supplier> getTrailerFields(){ return null; } + default void setTrailerFields(Supplier> p0){} + int getStatus(); + static int SC_ACCEPTED = 0; + static int SC_BAD_GATEWAY = 0; + static int SC_BAD_REQUEST = 0; + static int SC_CONFLICT = 0; + static int SC_CONTINUE = 0; + static int SC_CREATED = 0; + static int SC_EXPECTATION_FAILED = 0; + static int SC_FORBIDDEN = 0; + static int SC_FOUND = 0; + static int SC_GATEWAY_TIMEOUT = 0; + static int SC_GONE = 0; + static int SC_HTTP_VERSION_NOT_SUPPORTED = 0; + static int SC_INTERNAL_SERVER_ERROR = 0; + static int SC_LENGTH_REQUIRED = 0; + static int SC_METHOD_NOT_ALLOWED = 0; + static int SC_MOVED_PERMANENTLY = 0; + static int SC_MOVED_TEMPORARILY = 0; + static int SC_MULTIPLE_CHOICES = 0; + static int SC_NON_AUTHORITATIVE_INFORMATION = 0; + static int SC_NOT_ACCEPTABLE = 0; + static int SC_NOT_FOUND = 0; + static int SC_NOT_IMPLEMENTED = 0; + static int SC_NOT_MODIFIED = 0; + static int SC_NO_CONTENT = 0; + static int SC_OK = 0; + static int SC_PARTIAL_CONTENT = 0; + static int SC_PAYMENT_REQUIRED = 0; + static int SC_PRECONDITION_FAILED = 0; + static int SC_PROXY_AUTHENTICATION_REQUIRED = 0; + static int SC_REQUESTED_RANGE_NOT_SATISFIABLE = 0; + static int SC_REQUEST_ENTITY_TOO_LARGE = 0; + static int SC_REQUEST_TIMEOUT = 0; + static int SC_REQUEST_URI_TOO_LONG = 0; + static int SC_RESET_CONTENT = 0; + static int SC_SEE_OTHER = 0; + static int SC_SERVICE_UNAVAILABLE = 0; + static int SC_SWITCHING_PROTOCOLS = 0; + static int SC_TEMPORARY_REDIRECT = 0; + static int SC_UNAUTHORIZED = 0; + static int SC_UNSUPPORTED_MEDIA_TYPE = 0; + static int SC_USE_PROXY = 0; + void addCookie(Cookie p0); + void addDateHeader(String p0, long p1); + void addHeader(String p0, String p1); + void addIntHeader(String p0, int p1); + void sendError(int p0); + void sendError(int p0, String p1); + void sendRedirect(String p0); + void setDateHeader(String p0, long p1); + void setHeader(String p0, String p1); + void setIntHeader(String p0, int p1); + void setStatus(int p0); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpSession.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpSession.java new file mode 100644 index 00000000000..0072d502ea6 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpSession.java @@ -0,0 +1,22 @@ +// Generated automatically from jakarta.servlet.http.HttpSession for testing purposes + +package jakarta.servlet.http; + +import jakarta.servlet.ServletContext; +import java.util.Enumeration; + +public interface HttpSession +{ + Enumeration getAttributeNames(); + Object getAttribute(String p0); + ServletContext getServletContext(); + String getId(); + boolean isNew(); + int getMaxInactiveInterval(); + long getCreationTime(); + long getLastAccessedTime(); + void invalidate(); + void removeAttribute(String p0); + void setAttribute(String p0, Object p1); + void setMaxInactiveInterval(int p0); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpUpgradeHandler.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpUpgradeHandler.java new file mode 100644 index 00000000000..94f8655be0a --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpUpgradeHandler.java @@ -0,0 +1,11 @@ +// Generated automatically from jakarta.servlet.http.HttpUpgradeHandler for testing purposes + +package jakarta.servlet.http; + +import jakarta.servlet.http.WebConnection; + +public interface HttpUpgradeHandler +{ + void destroy(); + void init(WebConnection p0); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/MappingMatch.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/MappingMatch.java new file mode 100644 index 00000000000..0c5e2f93ff3 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/MappingMatch.java @@ -0,0 +1,10 @@ +// Generated automatically from jakarta.servlet.http.MappingMatch for testing purposes + +package jakarta.servlet.http; + + +public enum MappingMatch +{ + CONTEXT_ROOT, DEFAULT, EXACT, EXTENSION, PATH; + private MappingMatch() {} +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/Part.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/Part.java new file mode 100644 index 00000000000..37e83db3d07 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/Part.java @@ -0,0 +1,20 @@ +// Generated automatically from jakarta.servlet.http.Part for testing purposes + +package jakarta.servlet.http; + +import java.io.InputStream; +import java.util.Collection; + +public interface Part +{ + Collection getHeaderNames(); + Collection getHeaders(String p0); + InputStream getInputStream(); + String getContentType(); + String getHeader(String p0); + String getName(); + String getSubmittedFileName(); + long getSize(); + void delete(); + void write(String p0); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/PushBuilder.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/PushBuilder.java new file mode 100644 index 00000000000..0821bde70e8 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/PushBuilder.java @@ -0,0 +1,23 @@ +// Generated automatically from jakarta.servlet.http.PushBuilder for testing purposes + +package jakarta.servlet.http; + +import java.util.Set; + +public interface PushBuilder +{ + PushBuilder addHeader(String p0, String p1); + PushBuilder method(String p0); + PushBuilder path(String p0); + PushBuilder queryString(String p0); + PushBuilder removeHeader(String p0); + PushBuilder sessionId(String p0); + PushBuilder setHeader(String p0, String p1); + Set getHeaderNames(); + String getHeader(String p0); + String getMethod(); + String getPath(); + String getQueryString(); + String getSessionId(); + void push(); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/WebConnection.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/WebConnection.java new file mode 100644 index 00000000000..1a71a2c78ec --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/WebConnection.java @@ -0,0 +1,12 @@ +// Generated automatically from jakarta.servlet.http.WebConnection for testing purposes + +package jakarta.servlet.http; + +import jakarta.servlet.ServletInputStream; +import jakarta.servlet.ServletOutputStream; + +public interface WebConnection extends AutoCloseable +{ + ServletInputStream getInputStream(); + ServletOutputStream getOutputStream(); +} From 999fcca8f344b2930af65aa8dbad996a7d4ff633 Mon Sep 17 00:00:00 2001 From: Kevin Stubbings Date: Tue, 15 Oct 2024 23:24:41 +0000 Subject: [PATCH 07/63] Add summary steps --- .../lib/ext/org.apache.commons.fileupload.util.model.yml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 java/ql/lib/ext/org.apache.commons.fileupload.util.model.yml diff --git a/java/ql/lib/ext/org.apache.commons.fileupload.util.model.yml b/java/ql/lib/ext/org.apache.commons.fileupload.util.model.yml new file mode 100644 index 00000000000..ed1e24d410d --- /dev/null +++ b/java/ql/lib/ext/org.apache.commons.fileupload.util.model.yml @@ -0,0 +1,9 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["org.apache.commons.fileupload.util", "Streams", True, "copy", "(InputStream,OutputStream,boolean)", "", "Argument[0]", "Argument[1]", "taint", "manual"] + - ["org.apache.commons.fileupload.util", "Streams", True, "copy", "(InputStream,OutputStream,boolean,byte[])", "", "Argument[0]", "Argument[1]", "taint", "manual"] + - ["org.apache.commons.fileupload.util", "Streams", True, "asString", "(InputStream)", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["org.apache.commons.fileupload.util", "Streams", True, "asString", "(InputStream,String)", "", "Argument[0]", "ReturnValue", "taint", "manual"] \ No newline at end of file From ddcf852d3f59078be3ea182669dc0b1de05e7b04 Mon Sep 17 00:00:00 2001 From: Kevin Stubbings Date: Wed, 20 Nov 2024 01:07:03 +0000 Subject: [PATCH 08/63] Add taint steps --- .../lib/change-notes/2024-09-24-multipart.md | 2 +- .../apache-commons-fileupload-1.4/Test.java | 55 +++++++++++++++++++ .../apache-commons-fileupload-1.4/options | 1 + .../test.expected | 45 +++++++++++++++ .../apache-commons-fileupload-1.4/test.ql | 4 ++ .../commons/fileupload/util/Streams.java | 16 ++++++ 6 files changed, 122 insertions(+), 1 deletion(-) create mode 100644 java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/Test.java create mode 100644 java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/options create mode 100644 java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/test.expected create mode 100644 java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/test.ql create mode 100644 java/ql/test/stubs/apache-commons-fileupload-1.4/org/apache/commons/fileupload/util/Streams.java diff --git a/java/ql/lib/change-notes/2024-09-24-multipart.md b/java/ql/lib/change-notes/2024-09-24-multipart.md index f10cfbfd944..e1102698065 100644 --- a/java/ql/lib/change-notes/2024-09-24-multipart.md +++ b/java/ql/lib/change-notes/2024-09-24-multipart.md @@ -1,4 +1,4 @@ --- category: minorAnalysis --- -* Added more dataflow models of `org.apache.commons.fileupload.FileItem` and `javax.servlet.http.Part`. \ No newline at end of file +* Added more dataflow models of `org.apache.commons.fileupload.FileItem`, `javax/jakarta.servlet.http.Part` and `org.apache.commons.fileupload.util.Streams`. \ No newline at end of file diff --git a/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/Test.java b/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/Test.java new file mode 100644 index 00000000000..552b9fc6973 --- /dev/null +++ b/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/Test.java @@ -0,0 +1,55 @@ +package com.mycompany.app; + +import org.apache.commons.fileupload.util.Streams; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.ByteArrayOutputStream; + +// Test case generated by GenerateFlowTestCase.ql +public class Test { + + Object source() { + return null; + } + + void sink(Object o) { + } + + public void test() throws Exception { + + { + InputStream in = (InputStream)source(); + OutputStream os = new ByteArrayOutputStream(1024); + + InputStream in2 = (InputStream)source(); + OutputStream os2 = new ByteArrayOutputStream(1024); + + byte[] myArray = new byte[1024]; + + // "org.apache.commons.fileupload.util;Streams;true;copy;(InputStream,OutputStream,boolean,byte[]);;Argument[0];Argument[1];taint;manual" + long status = Streams.copy(in, os, true, myArray); + sink(os); // $ hasTaintFlow + // "org.apache.commons.fileupload.util;Streams;true;copy;(InputStream,OutputStream,boolean);;Argument[0];Argument[1];taint;manual" + long status2 = Streams.copy(in2, os2, true); + sink(os2); // $ hasTaintFlow + } + + } + public void test2() throws Exception { + + { + + InputStream in = (InputStream)source(); + // "org.apache.commons.fileupload.util;Streams;true;asString;(InputStream,String);;Argument[0];ReturnValue;taint;manual" + String result = Streams.asString(in); + sink(result); // $ hasTaintFlow + + InputStream in1 = (InputStream)source(); + // "org.apache.commons.fileupload.util;Streams;true;asString;(InputStream,String);;Argument[0];ReturnValue;taint;manual" + String result1 = Streams.asString(in1, "test"); + sink(result1); // $ hasTaintFlow + } + + } + +} \ No newline at end of file diff --git a/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/options b/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/options new file mode 100644 index 00000000000..89451545827 --- /dev/null +++ b/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/options @@ -0,0 +1 @@ +//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/apache-commons-fileupload-1.4 \ No newline at end of file diff --git a/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/test.expected b/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/test.expected new file mode 100644 index 00000000000..f725a2f11bd --- /dev/null +++ b/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/test.expected @@ -0,0 +1,45 @@ +models +| 1 | Summary: org.apache.commons.fileupload.util; Streams; true; asString; (InputStream); ; Argument[0]; ReturnValue; taint; manual | +| 2 | Summary: org.apache.commons.fileupload.util; Streams; true; asString; (InputStream,String); ; Argument[0]; ReturnValue; taint; manual | +| 3 | Summary: org.apache.commons.fileupload.util; Streams; true; copy; (InputStream,OutputStream,boolean); ; Argument[0]; Argument[1]; taint; manual | +| 4 | Summary: org.apache.commons.fileupload.util; Streams; true; copy; (InputStream,OutputStream,boolean,byte[]); ; Argument[0]; Argument[1]; taint; manual | +edges +| Test.java:22:30:22:50 | (...)... : InputStream | Test.java:30:31:30:32 | in : InputStream | provenance | | +| Test.java:22:43:22:50 | source(...) : Object | Test.java:22:30:22:50 | (...)... : InputStream | provenance | | +| Test.java:25:22:25:42 | (...)... : InputStream | Test.java:33:32:33:34 | in2 : InputStream | provenance | | +| Test.java:25:35:25:42 | source(...) : Object | Test.java:25:22:25:42 | (...)... : InputStream | provenance | | +| Test.java:30:31:30:32 | in : InputStream | Test.java:30:35:30:36 | os [post update] : ByteArrayOutputStream | provenance | MaD:4 | +| Test.java:30:35:30:36 | os [post update] : ByteArrayOutputStream | Test.java:31:9:31:10 | os | provenance | | +| Test.java:33:32:33:34 | in2 : InputStream | Test.java:33:37:33:39 | os2 [post update] : ByteArrayOutputStream | provenance | MaD:3 | +| Test.java:33:37:33:39 | os2 [post update] : ByteArrayOutputStream | Test.java:34:9:34:11 | os2 | provenance | | +| Test.java:45:30:45:50 | (...)... : InputStream | Test.java:47:37:47:38 | in : InputStream | provenance | | +| Test.java:45:43:45:50 | source(...) : Object | Test.java:45:30:45:50 | (...)... : InputStream | provenance | | +| Test.java:47:20:47:39 | asString(...) : String | Test.java:48:9:48:14 | result | provenance | | +| Test.java:47:37:47:38 | in : InputStream | Test.java:47:20:47:39 | asString(...) : String | provenance | MaD:1 | +| Test.java:50:31:50:51 | (...)... : InputStream | Test.java:51:47:51:49 | in1 : InputStream | provenance | | +| Test.java:50:44:50:51 | source(...) : Object | Test.java:50:31:50:51 | (...)... : InputStream | provenance | | +| Test.java:51:30:51:58 | asString(...) : String | Test.java:52:18:52:24 | result1 | provenance | | +| Test.java:51:47:51:49 | in1 : InputStream | Test.java:51:30:51:58 | asString(...) : String | provenance | MaD:2 | +nodes +| Test.java:22:30:22:50 | (...)... : InputStream | semmle.label | (...)... : InputStream | +| Test.java:22:43:22:50 | source(...) : Object | semmle.label | source(...) : Object | +| Test.java:25:22:25:42 | (...)... : InputStream | semmle.label | (...)... : InputStream | +| Test.java:25:35:25:42 | source(...) : Object | semmle.label | source(...) : Object | +| Test.java:30:31:30:32 | in : InputStream | semmle.label | in : InputStream | +| Test.java:30:35:30:36 | os [post update] : ByteArrayOutputStream | semmle.label | os [post update] : ByteArrayOutputStream | +| Test.java:31:9:31:10 | os | semmle.label | os | +| Test.java:33:32:33:34 | in2 : InputStream | semmle.label | in2 : InputStream | +| Test.java:33:37:33:39 | os2 [post update] : ByteArrayOutputStream | semmle.label | os2 [post update] : ByteArrayOutputStream | +| Test.java:34:9:34:11 | os2 | semmle.label | os2 | +| Test.java:45:30:45:50 | (...)... : InputStream | semmle.label | (...)... : InputStream | +| Test.java:45:43:45:50 | source(...) : Object | semmle.label | source(...) : Object | +| Test.java:47:20:47:39 | asString(...) : String | semmle.label | asString(...) : String | +| Test.java:47:37:47:38 | in : InputStream | semmle.label | in : InputStream | +| Test.java:48:9:48:14 | result | semmle.label | result | +| Test.java:50:31:50:51 | (...)... : InputStream | semmle.label | (...)... : InputStream | +| Test.java:50:44:50:51 | source(...) : Object | semmle.label | source(...) : Object | +| Test.java:51:30:51:58 | asString(...) : String | semmle.label | asString(...) : String | +| Test.java:51:47:51:49 | in1 : InputStream | semmle.label | in1 : InputStream | +| Test.java:52:18:52:24 | result1 | semmle.label | result1 | +subpaths +testFailures diff --git a/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/test.ql b/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/test.ql new file mode 100644 index 00000000000..0004e84a3f1 --- /dev/null +++ b/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/test.ql @@ -0,0 +1,4 @@ +import java +import TestUtilities.InlineFlowTest +import DefaultFlowTest +import TaintFlow::PathGraph \ No newline at end of file diff --git a/java/ql/test/stubs/apache-commons-fileupload-1.4/org/apache/commons/fileupload/util/Streams.java b/java/ql/test/stubs/apache-commons-fileupload-1.4/org/apache/commons/fileupload/util/Streams.java new file mode 100644 index 00000000000..3c84ce04198 --- /dev/null +++ b/java/ql/test/stubs/apache-commons-fileupload-1.4/org/apache/commons/fileupload/util/Streams.java @@ -0,0 +1,16 @@ +// Generated automatically from org.apache.commons.fileupload.util.Streams for testing purposes + +package org.apache.commons.fileupload.util; + +import java.io.InputStream; +import java.io.OutputStream; + +public class Streams +{ + protected Streams() {} + public static String asString(InputStream p0){ return null; } + public static String asString(InputStream p0, String p1){ return null; } + public static String checkFileName(String p0){ return null; } + public static long copy(InputStream p0, OutputStream p1, boolean p2){ return 0; } + public static long copy(InputStream p0, OutputStream p1, boolean p2, byte[] p3){ return 0; } +} From 981f67598cd32f264a21702eb2c69185087aaded Mon Sep 17 00:00:00 2001 From: Kevin Stubbings Date: Wed, 20 Nov 2024 07:51:11 +0000 Subject: [PATCH 09/63] Formatting --- .../frameworks/apache-commons-fileupload-1.4/test.ql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/test.ql b/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/test.ql index 0004e84a3f1..a8287d6c5f1 100644 --- a/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/test.ql +++ b/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/test.ql @@ -1,4 +1,4 @@ import java import TestUtilities.InlineFlowTest import DefaultFlowTest -import TaintFlow::PathGraph \ No newline at end of file +import TaintFlow::PathGraph From 9c63033d45de400b0328f17838f46f7eb8448e42 Mon Sep 17 00:00:00 2001 From: Kevin Stubbings Date: Wed, 20 Nov 2024 16:53:39 +0000 Subject: [PATCH 10/63] Fix tests --- .../test.expected | 52 +++++++++---------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/test.expected b/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/test.expected index f725a2f11bd..76324560ac6 100644 --- a/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/test.expected +++ b/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/test.expected @@ -4,42 +4,42 @@ models | 3 | Summary: org.apache.commons.fileupload.util; Streams; true; copy; (InputStream,OutputStream,boolean); ; Argument[0]; Argument[1]; taint; manual | | 4 | Summary: org.apache.commons.fileupload.util; Streams; true; copy; (InputStream,OutputStream,boolean,byte[]); ; Argument[0]; Argument[1]; taint; manual | edges -| Test.java:22:30:22:50 | (...)... : InputStream | Test.java:30:31:30:32 | in : InputStream | provenance | | -| Test.java:22:43:22:50 | source(...) : Object | Test.java:22:30:22:50 | (...)... : InputStream | provenance | | -| Test.java:25:22:25:42 | (...)... : InputStream | Test.java:33:32:33:34 | in2 : InputStream | provenance | | -| Test.java:25:35:25:42 | source(...) : Object | Test.java:25:22:25:42 | (...)... : InputStream | provenance | | +| Test.java:21:30:21:50 | (...)... : InputStream | Test.java:30:31:30:32 | in : InputStream | provenance | | +| Test.java:21:43:21:50 | source(...) : Object | Test.java:21:30:21:50 | (...)... : InputStream | provenance | | +| Test.java:24:22:24:42 | (...)... : InputStream | Test.java:33:32:33:34 | in2 : InputStream | provenance | | +| Test.java:24:35:24:42 | source(...) : Object | Test.java:24:22:24:42 | (...)... : InputStream | provenance | | | Test.java:30:31:30:32 | in : InputStream | Test.java:30:35:30:36 | os [post update] : ByteArrayOutputStream | provenance | MaD:4 | | Test.java:30:35:30:36 | os [post update] : ByteArrayOutputStream | Test.java:31:9:31:10 | os | provenance | | | Test.java:33:32:33:34 | in2 : InputStream | Test.java:33:37:33:39 | os2 [post update] : ByteArrayOutputStream | provenance | MaD:3 | | Test.java:33:37:33:39 | os2 [post update] : ByteArrayOutputStream | Test.java:34:9:34:11 | os2 | provenance | | -| Test.java:45:30:45:50 | (...)... : InputStream | Test.java:47:37:47:38 | in : InputStream | provenance | | -| Test.java:45:43:45:50 | source(...) : Object | Test.java:45:30:45:50 | (...)... : InputStream | provenance | | -| Test.java:47:20:47:39 | asString(...) : String | Test.java:48:9:48:14 | result | provenance | | -| Test.java:47:37:47:38 | in : InputStream | Test.java:47:20:47:39 | asString(...) : String | provenance | MaD:1 | -| Test.java:50:31:50:51 | (...)... : InputStream | Test.java:51:47:51:49 | in1 : InputStream | provenance | | -| Test.java:50:44:50:51 | source(...) : Object | Test.java:50:31:50:51 | (...)... : InputStream | provenance | | -| Test.java:51:30:51:58 | asString(...) : String | Test.java:52:18:52:24 | result1 | provenance | | -| Test.java:51:47:51:49 | in1 : InputStream | Test.java:51:30:51:58 | asString(...) : String | provenance | MaD:2 | +| Test.java:42:30:42:50 | (...)... : InputStream | Test.java:44:37:44:38 | in : InputStream | provenance | | +| Test.java:42:43:42:50 | source(...) : Object | Test.java:42:30:42:50 | (...)... : InputStream | provenance | | +| Test.java:44:20:44:39 | asString(...) : String | Test.java:45:9:45:14 | result | provenance | | +| Test.java:44:37:44:38 | in : InputStream | Test.java:44:20:44:39 | asString(...) : String | provenance | MaD:1 | +| Test.java:47:31:47:51 | (...)... : InputStream | Test.java:49:47:49:49 | in1 : InputStream | provenance | | +| Test.java:47:44:47:51 | source(...) : Object | Test.java:47:31:47:51 | (...)... : InputStream | provenance | | +| Test.java:49:30:49:58 | asString(...) : String | Test.java:50:18:50:24 | result1 | provenance | | +| Test.java:49:47:49:49 | in1 : InputStream | Test.java:49:30:49:58 | asString(...) : String | provenance | MaD:2 | nodes -| Test.java:22:30:22:50 | (...)... : InputStream | semmle.label | (...)... : InputStream | -| Test.java:22:43:22:50 | source(...) : Object | semmle.label | source(...) : Object | -| Test.java:25:22:25:42 | (...)... : InputStream | semmle.label | (...)... : InputStream | -| Test.java:25:35:25:42 | source(...) : Object | semmle.label | source(...) : Object | +| Test.java:21:30:21:50 | (...)... : InputStream | semmle.label | (...)... : InputStream | +| Test.java:21:43:21:50 | source(...) : Object | semmle.label | source(...) : Object | +| Test.java:24:22:24:42 | (...)... : InputStream | semmle.label | (...)... : InputStream | +| Test.java:24:35:24:42 | source(...) : Object | semmle.label | source(...) : Object | | Test.java:30:31:30:32 | in : InputStream | semmle.label | in : InputStream | | Test.java:30:35:30:36 | os [post update] : ByteArrayOutputStream | semmle.label | os [post update] : ByteArrayOutputStream | | Test.java:31:9:31:10 | os | semmle.label | os | | Test.java:33:32:33:34 | in2 : InputStream | semmle.label | in2 : InputStream | | Test.java:33:37:33:39 | os2 [post update] : ByteArrayOutputStream | semmle.label | os2 [post update] : ByteArrayOutputStream | | Test.java:34:9:34:11 | os2 | semmle.label | os2 | -| Test.java:45:30:45:50 | (...)... : InputStream | semmle.label | (...)... : InputStream | -| Test.java:45:43:45:50 | source(...) : Object | semmle.label | source(...) : Object | -| Test.java:47:20:47:39 | asString(...) : String | semmle.label | asString(...) : String | -| Test.java:47:37:47:38 | in : InputStream | semmle.label | in : InputStream | -| Test.java:48:9:48:14 | result | semmle.label | result | -| Test.java:50:31:50:51 | (...)... : InputStream | semmle.label | (...)... : InputStream | -| Test.java:50:44:50:51 | source(...) : Object | semmle.label | source(...) : Object | -| Test.java:51:30:51:58 | asString(...) : String | semmle.label | asString(...) : String | -| Test.java:51:47:51:49 | in1 : InputStream | semmle.label | in1 : InputStream | -| Test.java:52:18:52:24 | result1 | semmle.label | result1 | +| Test.java:42:30:42:50 | (...)... : InputStream | semmle.label | (...)... : InputStream | +| Test.java:42:43:42:50 | source(...) : Object | semmle.label | source(...) : Object | +| Test.java:44:20:44:39 | asString(...) : String | semmle.label | asString(...) : String | +| Test.java:44:37:44:38 | in : InputStream | semmle.label | in : InputStream | +| Test.java:45:9:45:14 | result | semmle.label | result | +| Test.java:47:31:47:51 | (...)... : InputStream | semmle.label | (...)... : InputStream | +| Test.java:47:44:47:51 | source(...) : Object | semmle.label | source(...) : Object | +| Test.java:49:30:49:58 | asString(...) : String | semmle.label | asString(...) : String | +| Test.java:49:47:49:49 | in1 : InputStream | semmle.label | in1 : InputStream | +| Test.java:50:18:50:24 | result1 | semmle.label | result1 | subpaths testFailures From 88f9f90236f4565627fd858225b8ef44bf2410e9 Mon Sep 17 00:00:00 2001 From: Kevin Stubbings Date: Mon, 6 Oct 2025 22:41:16 -0700 Subject: [PATCH 11/63] Fix merge problems --- java/ql/lib/ext/jakarta.servlet.http.model.yml | 1 - java/ql/test/library-tests/dataflow/taintsources/options | 5 ----- 2 files changed, 6 deletions(-) diff --git a/java/ql/lib/ext/jakarta.servlet.http.model.yml b/java/ql/lib/ext/jakarta.servlet.http.model.yml index 7f22d8cb479..6af7f479784 100644 --- a/java/ql/lib/ext/jakarta.servlet.http.model.yml +++ b/java/ql/lib/ext/jakarta.servlet.http.model.yml @@ -11,7 +11,6 @@ extensions: - ["jakarta.servlet.http", "Part", True, "getHeaders", "(String)", "", "ReturnValue", "remote", "manual"] - ["jakarta.servlet.http", "Part", True, "getHeaderNames", "()", "", "ReturnValue", "remote", "manual"] - ["jakarta.servlet.http", "Part", True, "getSubmittedFileName", "()", "", "ReturnValue", "remote", "manual"] - - ["jakarta.servlet.http", "HttpServletRequest", True, "getServletPath", "", "", "ReturnValue", "remote", "manual"] - ["jakarta.servlet.http", "HttpServletRequest", False, "getHeader", "(String)", "", "ReturnValue", "remote", "manual"] - ["jakarta.servlet.http", "HttpServletRequest", False, "getHeaderNames", "()", "", "ReturnValue", "remote", "manual"] - ["jakarta.servlet.http", "HttpServletRequest", False, "getHeaders", "(String)", "", "ReturnValue", "remote", "manual"] diff --git a/java/ql/test/library-tests/dataflow/taintsources/options b/java/ql/test/library-tests/dataflow/taintsources/options index b8e42c1fd48..fce5927b73a 100644 --- a/java/ql/test/library-tests/dataflow/taintsources/options +++ b/java/ql/test/library-tests/dataflow/taintsources/options @@ -1,6 +1 @@ -<<<<<<< HEAD -//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/jakarta.servlet-api-6.0.0:${testdir}/../../../stubs/apache-commons-fileupload-1.4:${testdir}/../../../stubs/javax-servlet-2.5:${testdir}/../../../stubs/servlet-api-2.4:${testdir}/../../../stubs/springframework-5.3.8:${testdir}/../../../stubs/google-android-9.0.0:${testdir}/../../../stubs/playframework-2.6.x:${testdir}/../../../stubs/jackson-databind-2.12:${testdir}/../../../stubs/jackson-core-2.12:${testdir}/../../../stubs/akka-2.6.x:${testdir}/../../../stubs/jwtk-jjwt-0.11.2:${testdir}/../../../stubs/jenkins:${testdir}/../../../stubs/stapler-1.263 -======= -//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/servlet-api-2.4:${testdir}/../../../stubs/springframework-5.8.x:${testdir}/../../../stubs/google-android-9.0.0:${testdir}/../../../stubs/playframework-2.6.x:${testdir}/../../../stubs/jackson-databind-2.12:${testdir}/../../../stubs/jackson-core-2.12:${testdir}/../../../stubs/akka-2.6.x:${testdir}/../../../stubs/jwtk-jjwt-0.11.2:${testdir}/../../../stubs/jenkins:${testdir}/../../../stubs/stapler-1.263 ->>>>>>> main //semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/jakarta.servlet-api-6.0.0:${testdir}/../../../stubs/apache-commons-fileupload-1.4:${testdir}/../../../stubs/javax-servlet-2.5:${testdir}/../../../stubs/servlet-api-2.4:${testdir}/../../../stubs/springframework-5.8.x:${testdir}/../../../stubs/google-android-9.0.0:${testdir}/../../../stubs/playframework-2.6.x:${testdir}/../../../stubs/jackson-databind-2.12:${testdir}/../../../stubs/akka-2.6.x:${testdir}/../../../stubs/jwtk-jjwt-0.11.2:${testdir}/../../../stubs/jenkins:${testdir}/../../../stubs/stapler-1.263 \ No newline at end of file From fe6b4330de779cc151d9170747544836e130cd0a Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan <62447351+owen-mc@users.noreply.github.com> Date: Tue, 28 Oct 2025 23:14:23 +0000 Subject: [PATCH 12/63] Fix test import --- .../frameworks/apache-commons-fileupload-1.4/test.ql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/test.ql b/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/test.ql index a8287d6c5f1..de0d4722737 100644 --- a/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/test.ql +++ b/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/test.ql @@ -1,4 +1,4 @@ import java -import TestUtilities.InlineFlowTest +import utils.test.InlineFlowTest import DefaultFlowTest import TaintFlow::PathGraph From f3f256d07098a24bef7058074a5b15802c89630a Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan <62447351+owen-mc@users.noreply.github.com> Date: Wed, 29 Oct 2025 12:26:19 +0000 Subject: [PATCH 13/63] Add back import that was accidentally deleted from `options` file --- java/ql/test/library-tests/dataflow/taintsources/options | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/ql/test/library-tests/dataflow/taintsources/options b/java/ql/test/library-tests/dataflow/taintsources/options index fce5927b73a..1ae3d158cec 100644 --- a/java/ql/test/library-tests/dataflow/taintsources/options +++ b/java/ql/test/library-tests/dataflow/taintsources/options @@ -1 +1 @@ -//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/jakarta.servlet-api-6.0.0:${testdir}/../../../stubs/apache-commons-fileupload-1.4:${testdir}/../../../stubs/javax-servlet-2.5:${testdir}/../../../stubs/servlet-api-2.4:${testdir}/../../../stubs/springframework-5.8.x:${testdir}/../../../stubs/google-android-9.0.0:${testdir}/../../../stubs/playframework-2.6.x:${testdir}/../../../stubs/jackson-databind-2.12:${testdir}/../../../stubs/akka-2.6.x:${testdir}/../../../stubs/jwtk-jjwt-0.11.2:${testdir}/../../../stubs/jenkins:${testdir}/../../../stubs/stapler-1.263 \ No newline at end of file +//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/jakarta.servlet-api-6.0.0:${testdir}/../../../stubs/apache-commons-fileupload-1.4:${testdir}/../../../stubs/javax-servlet-2.5:${testdir}/../../../stubs/servlet-api-2.4:${testdir}/../../../stubs/springframework-5.8.x:${testdir}/../../../stubs/google-android-9.0.0:${testdir}/../../../stubs/playframework-2.6.x:${testdir}/../../../stubs/jackson-databind-2.12:${testdir}/../../../stubs/jackson-core-2.12:${testdir}/../../../stubs/akka-2.6.x:${testdir}/../../../stubs/jwtk-jjwt-0.11.2:${testdir}/../../../stubs/jenkins:${testdir}/../../../stubs/stapler-1.263 \ No newline at end of file From f598027cbd30e5029b5f6c889b99e99268a79dd6 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan <62447351+owen-mc@users.noreply.github.com> Date: Wed, 12 Nov 2025 15:02:42 +0000 Subject: [PATCH 14/63] Apply suggestions from code review --- java/ql/lib/ext/jakarta.servlet.http.model.yml | 2 +- java/ql/lib/ext/javax.servlet.http.model.yml | 8 ++++---- java/ql/lib/ext/org.apache.commons.fileupload.model.yml | 2 +- .../library-tests/dataflow/taintsources/FileUpload.java | 3 +++ 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/java/ql/lib/ext/jakarta.servlet.http.model.yml b/java/ql/lib/ext/jakarta.servlet.http.model.yml index 6af7f479784..ed2fe4e0599 100644 --- a/java/ql/lib/ext/jakarta.servlet.http.model.yml +++ b/java/ql/lib/ext/jakarta.servlet.http.model.yml @@ -8,8 +8,8 @@ extensions: - ["jakarta.servlet.http", "Part", True, "getName", "()", "", "ReturnValue", "remote", "manual"] - ["jakarta.servlet.http", "Part", True, "getContentType", "()", "", "ReturnValue", "remote", "manual"] - ["jakarta.servlet.http", "Part", True, "getHeader", "(String)", "", "ReturnValue", "remote", "manual"] - - ["jakarta.servlet.http", "Part", True, "getHeaders", "(String)", "", "ReturnValue", "remote", "manual"] - ["jakarta.servlet.http", "Part", True, "getHeaderNames", "()", "", "ReturnValue", "remote", "manual"] + - ["jakarta.servlet.http", "Part", True, "getHeaders", "(String)", "", "ReturnValue", "remote", "manual"] - ["jakarta.servlet.http", "Part", True, "getSubmittedFileName", "()", "", "ReturnValue", "remote", "manual"] - ["jakarta.servlet.http", "HttpServletRequest", False, "getHeader", "(String)", "", "ReturnValue", "remote", "manual"] - ["jakarta.servlet.http", "HttpServletRequest", False, "getHeaderNames", "()", "", "ReturnValue", "remote", "manual"] diff --git a/java/ql/lib/ext/javax.servlet.http.model.yml b/java/ql/lib/ext/javax.servlet.http.model.yml index 46b9765a1fd..9c2537f94a6 100644 --- a/java/ql/lib/ext/javax.servlet.http.model.yml +++ b/java/ql/lib/ext/javax.servlet.http.model.yml @@ -19,13 +19,13 @@ extensions: - ["javax.servlet.http", "HttpServletRequest", False, "getRequestURI", "()", "", "ReturnValue", "remote", "manual"] - ["javax.servlet.http", "HttpServletRequest", False, "getRequestURL", "()", "", "ReturnValue", "remote", "manual"] - ["javax.servlet.http", "HttpServletRequest", False, "getServletPath", "()", "", "ReturnValue", "remote", "manual"] - - ["javax.servlet.http", "Part", False, "getInputStream", "()", "", "ReturnValue", "remote", "manual"] - - ["javax.servlet.http", "Part", False, "getName", "()", "", "ReturnValue", "remote", "manual"] - ["javax.servlet.http", "Part", False, "getContentType", "()", "", "ReturnValue", "remote", "manual"] - ["javax.servlet.http", "Part", False, "getHeader", "(String)", "", "ReturnValue", "remote", "manual"] - - ["javax.servlet.http", "Part", False, "getSubmittedFileName", "()", "", "ReturnValue", "remote", "manual"] - - ["javax.servlet.http", "Part", False, "getHeaders", "(String)", "", "ReturnValue", "remote", "manual"] - ["javax.servlet.http", "Part", False, "getHeaderNames", "()", "", "ReturnValue", "remote", "manual"] + - ["javax.servlet.http", "Part", False, "getHeaders", "(String)", "", "ReturnValue", "remote", "manual"] + - ["javax.servlet.http", "Part", False, "getInputStream", "()", "", "ReturnValue", "remote", "manual"] + - ["javax.servlet.http", "Part", False, "getName", "()", "", "ReturnValue", "remote", "manual"] + - ["javax.servlet.http", "Part", False, "getSubmittedFileName", "()", "", "ReturnValue", "remote", "manual"] - addsTo: diff --git a/java/ql/lib/ext/org.apache.commons.fileupload.model.yml b/java/ql/lib/ext/org.apache.commons.fileupload.model.yml index 228abadcc3e..66a0d329641 100644 --- a/java/ql/lib/ext/org.apache.commons.fileupload.model.yml +++ b/java/ql/lib/ext/org.apache.commons.fileupload.model.yml @@ -8,7 +8,7 @@ extensions: - ["org.apache.commons.fileupload", "FileItem", True, "getContentType", "()", "", "ReturnValue", "remote", "manual"] - ["org.apache.commons.fileupload", "FileItem", True, "getString", "()", "", "ReturnValue", "remote", "manual"] - ["org.apache.commons.fileupload", "FileItem", True, "getName", "()", "", "ReturnValue", "remote", "manual"] - - ["org.apache.commons.fileupload", "FileItem", True, "getName", "(String)", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItem", True, "getString "(String)", "", "ReturnValue", "remote", "manual"] - ["org.apache.commons.fileupload", "FileItem", True, "get", "()", "", "ReturnValue", "remote", "manual"] - ["org.apache.commons.fileupload", "FileItemStream", True, "getContentType", "()", "", "ReturnValue", "remote", "manual"] - ["org.apache.commons.fileupload", "FileItemStream", True, "getFieldName", "()", "", "ReturnValue", "remote", "manual"] diff --git a/java/ql/test/library-tests/dataflow/taintsources/FileUpload.java b/java/ql/test/library-tests/dataflow/taintsources/FileUpload.java index 29437a4ab18..6cec8c1f658 100644 --- a/java/ql/test/library-tests/dataflow/taintsources/FileUpload.java +++ b/java/ql/test/library-tests/dataflow/taintsources/FileUpload.java @@ -28,10 +28,13 @@ public class FileUpload { sink(fileItem.get()); // $ hasRemoteValueFlow sink(fileItem.getString()); // $ hasRemoteValueFlow sink(fileItem.getContentType()); // $ hasRemoteValueFlow + sink(fileItem.getFieldName()); // $ hasRemoteValueFlow + sink(fileItem.getInputStream()); // $ hasRemoteValueFlow sink(fileItem.getName()); // $ hasRemoteValueFlow sink(fileItemStream.getFieldName()); // $ hasRemoteValueFlow sink(fileItemStream.getName()); // $ hasRemoteValueFlow + sink(fileItemStream.getContentType()); // $ hasRemoteValueFlow sink(fileItemStream.openStream()); // $ hasRemoteValueFlow sink(jakartaPart.getContentType()); // $ hasRemoteValueFlow From 7b533db4fb704df2da158492719823a5523848a5 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan <62447351+owen-mc@users.noreply.github.com> Date: Wed, 12 Nov 2025 15:10:29 +0000 Subject: [PATCH 15/63] Sort models and tests alphabetically --- .../org.apache.commons.fileupload.model.yml | 12 ++++++------ ...rg.apache.commons.fileupload.util.model.yml | 6 +++--- .../dataflow/taintsources/FileUpload.java | 18 +++++++++--------- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/java/ql/lib/ext/org.apache.commons.fileupload.model.yml b/java/ql/lib/ext/org.apache.commons.fileupload.model.yml index 66a0d329641..e7f61572164 100644 --- a/java/ql/lib/ext/org.apache.commons.fileupload.model.yml +++ b/java/ql/lib/ext/org.apache.commons.fileupload.model.yml @@ -3,13 +3,13 @@ extensions: pack: codeql/java-all extensible: sourceModel data: - - ["org.apache.commons.fileupload", "FileItem", True, "getInputStream", "()", "", "ReturnValue", "remote", "manual"] - - ["org.apache.commons.fileupload", "FileItem", True, "getFieldName", "()", "", "ReturnValue", "remote", "manual"] - - ["org.apache.commons.fileupload", "FileItem", True, "getContentType", "()", "", "ReturnValue", "remote", "manual"] - - ["org.apache.commons.fileupload", "FileItem", True, "getString", "()", "", "ReturnValue", "remote", "manual"] - - ["org.apache.commons.fileupload", "FileItem", True, "getName", "()", "", "ReturnValue", "remote", "manual"] - - ["org.apache.commons.fileupload", "FileItem", True, "getString "(String)", "", "ReturnValue", "remote", "manual"] - ["org.apache.commons.fileupload", "FileItem", True, "get", "()", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItem", True, "getContentType", "()", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItem", True, "getFieldName", "()", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItem", True, "getInputStream", "()", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItem", True, "getName", "()", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItem", True, "getString", "()", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItem", True, "getString", "(String)", "", "ReturnValue", "remote", "manual"] - ["org.apache.commons.fileupload", "FileItemStream", True, "getContentType", "()", "", "ReturnValue", "remote", "manual"] - ["org.apache.commons.fileupload", "FileItemStream", True, "getFieldName", "()", "", "ReturnValue", "remote", "manual"] - ["org.apache.commons.fileupload", "FileItemStream", True, "getName", "()", "", "ReturnValue", "remote", "manual"] diff --git a/java/ql/lib/ext/org.apache.commons.fileupload.util.model.yml b/java/ql/lib/ext/org.apache.commons.fileupload.util.model.yml index ed1e24d410d..e2336cf8b8b 100644 --- a/java/ql/lib/ext/org.apache.commons.fileupload.util.model.yml +++ b/java/ql/lib/ext/org.apache.commons.fileupload.util.model.yml @@ -3,7 +3,7 @@ extensions: pack: codeql/java-all extensible: summaryModel data: - - ["org.apache.commons.fileupload.util", "Streams", True, "copy", "(InputStream,OutputStream,boolean)", "", "Argument[0]", "Argument[1]", "taint", "manual"] - - ["org.apache.commons.fileupload.util", "Streams", True, "copy", "(InputStream,OutputStream,boolean,byte[])", "", "Argument[0]", "Argument[1]", "taint", "manual"] - ["org.apache.commons.fileupload.util", "Streams", True, "asString", "(InputStream)", "", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["org.apache.commons.fileupload.util", "Streams", True, "asString", "(InputStream,String)", "", "Argument[0]", "ReturnValue", "taint", "manual"] \ No newline at end of file + - ["org.apache.commons.fileupload.util", "Streams", True, "asString", "(InputStream,String)", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["org.apache.commons.fileupload.util", "Streams", True, "copy", "(InputStream,OutputStream,boolean)", "", "Argument[0]", "Argument[1]", "taint", "manual"] + - ["org.apache.commons.fileupload.util", "Streams", True, "copy", "(InputStream,OutputStream,boolean,byte[])", "", "Argument[0]", "Argument[1]", "taint", "manual"] \ No newline at end of file diff --git a/java/ql/test/library-tests/dataflow/taintsources/FileUpload.java b/java/ql/test/library-tests/dataflow/taintsources/FileUpload.java index 6cec8c1f658..f1d6e7ca569 100644 --- a/java/ql/test/library-tests/dataflow/taintsources/FileUpload.java +++ b/java/ql/test/library-tests/dataflow/taintsources/FileUpload.java @@ -18,32 +18,32 @@ public class FileUpload { public void test() throws Exception { sink(filePart.getContentType()); // $ hasRemoteValueFlow sink(filePart.getHeader("test")); // $ hasRemoteValueFlow - sink(filePart.getInputStream()); // $ hasRemoteValueFlow - sink(filePart.getHeaders("test")); // $ hasRemoteValueFlow sink(filePart.getHeaderNames()); // $ hasRemoteValueFlow - sink(filePart.getSubmittedFileName()); // $ hasRemoteValueFlow + sink(filePart.getHeaders("test")); // $ hasRemoteValueFlow + sink(filePart.getInputStream()); // $ hasRemoteValueFlow sink(filePart.getName()); // $ hasRemoteValueFlow + sink(filePart.getSubmittedFileName()); // $ hasRemoteValueFlow - sink(fileItem.getName()); // $ hasRemoteValueFlow sink(fileItem.get()); // $ hasRemoteValueFlow - sink(fileItem.getString()); // $ hasRemoteValueFlow sink(fileItem.getContentType()); // $ hasRemoteValueFlow sink(fileItem.getFieldName()); // $ hasRemoteValueFlow sink(fileItem.getInputStream()); // $ hasRemoteValueFlow sink(fileItem.getName()); // $ hasRemoteValueFlow + sink(fileItem.getName()); // $ hasRemoteValueFlow + sink(fileItem.getString()); // $ hasRemoteValueFlow + sink(fileItemStream.getContentType()); // $ hasRemoteValueFlow sink(fileItemStream.getFieldName()); // $ hasRemoteValueFlow sink(fileItemStream.getName()); // $ hasRemoteValueFlow - sink(fileItemStream.getContentType()); // $ hasRemoteValueFlow sink(fileItemStream.openStream()); // $ hasRemoteValueFlow sink(jakartaPart.getContentType()); // $ hasRemoteValueFlow sink(jakartaPart.getHeader("test")); // $ hasRemoteValueFlow - sink(jakartaPart.getInputStream()); // $ hasRemoteValueFlow - sink(jakartaPart.getHeaders("test")); // $ hasRemoteValueFlow sink(jakartaPart.getHeaderNames()); // $ hasRemoteValueFlow - sink(jakartaPart.getSubmittedFileName()); // $ hasRemoteValueFlow + sink(jakartaPart.getHeaders("test")); // $ hasRemoteValueFlow + sink(jakartaPart.getInputStream()); // $ hasRemoteValueFlow sink(jakartaPart.getName()); // $ hasRemoteValueFlow + sink(jakartaPart.getSubmittedFileName()); // $ hasRemoteValueFlow } } \ No newline at end of file From ad68a5e4e936b942d28f53799b460518a1764200 Mon Sep 17 00:00:00 2001 From: Taus Date: Tue, 9 Dec 2025 22:50:51 +0000 Subject: [PATCH 16/63] Python: Add modelling for `zstd.compression` See https://docs.python.org/3/library/compression.zstd.html for information about this library. As far as I can tell, the `zstd` library is not vulnerable to things like ZipSlip, but it _could_ be vulnerable to a decompression bomb attack, so I extended those models accordingly. --- .../python/security/DecompressionBomb.qll | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/python/ql/src/experimental/semmle/python/security/DecompressionBomb.qll b/python/ql/src/experimental/semmle/python/security/DecompressionBomb.qll index a2e50d0ade5..87a47ebeb00 100644 --- a/python/ql/src/experimental/semmle/python/security/DecompressionBomb.qll +++ b/python/ql/src/experimental/semmle/python/security/DecompressionBomb.qll @@ -364,6 +364,46 @@ module Lzma { } } +/** Provides sinks and additional taint steps related to the `zstd` library in Python 3.14+. */ +module Zstd { + private API::Node zstdInstance() { + result = API::moduleImport("compression").getMember("zstd").getMember(["ZstdFile", "open"]) + } + + /** + * The Decompression Sinks of `zstd` library + * + * `zstd.open(sink)` + * `zstd.ZstdFile(sink)` + * + * only read mode is sink + */ + class DecompressionSink extends DecompressionBomb::Sink { + DecompressionSink() { + exists(API::CallNode zstdCall | zstdCall = zstdInstance().getACall() | + this = zstdCall.getParameter(0, "filename").asSink() and + ( + not exists( + zstdCall + .getParameter(1, "mode") + .getAValueReachingSink() + .asExpr() + .(StringLiteral) + .getText() + ) or + zstdCall + .getParameter(1, "mode") + .getAValueReachingSink() + .asExpr() + .(StringLiteral) + .getText() + .matches("%r%") + ) + ) + } + } +} + /** * `io.TextIOWrapper(ip, encoding='utf-8')` like following: * ```python From e6e05012c848e0c617e1a7c83320bc44e839a541 Mon Sep 17 00:00:00 2001 From: Taus Date: Tue, 9 Dec 2025 22:55:40 +0000 Subject: [PATCH 17/63] Python: Add change note --- .../2025-12-09-add-modelling-of-zstd-compression.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 python/ql/lib/change-notes/2025-12-09-add-modelling-of-zstd-compression.md diff --git a/python/ql/lib/change-notes/2025-12-09-add-modelling-of-zstd-compression.md b/python/ql/lib/change-notes/2025-12-09-add-modelling-of-zstd-compression.md new file mode 100644 index 00000000000..8ec42ca0db2 --- /dev/null +++ b/python/ql/lib/change-notes/2025-12-09-add-modelling-of-zstd-compression.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The `compression.zstd` library (added in Python 3.14) is now supported by the `py/decompression-bomb` query. From 6af9fd816fb6eba9a1513992d98fde314e3e7483 Mon Sep 17 00:00:00 2001 From: Taus Date: Wed, 10 Dec 2025 13:20:19 +0000 Subject: [PATCH 18/63] Python: Make space for new test --- .../CWE-409/DecompressionBombs.expected | 48 +++++++++---------- .../query-tests/Security/CWE-409/test.py | 5 ++ 2 files changed, 29 insertions(+), 24 deletions(-) diff --git a/python/ql/test/experimental/query-tests/Security/CWE-409/DecompressionBombs.expected b/python/ql/test/experimental/query-tests/Security/CWE-409/DecompressionBombs.expected index 87b07df086f..a8355a5a5fc 100644 --- a/python/ql/test/experimental/query-tests/Security/CWE-409/DecompressionBombs.expected +++ b/python/ql/test/experimental/query-tests/Security/CWE-409/DecompressionBombs.expected @@ -36,15 +36,15 @@ edges | test.py:28:26:28:34 | ControlFlowNode for file_path | test.py:45:17:45:25 | ControlFlowNode for file_path | provenance | | | test.py:28:26:28:34 | ControlFlowNode for file_path | test.py:49:15:49:23 | ControlFlowNode for file_path | provenance | | | test.py:28:26:28:34 | ControlFlowNode for file_path | test.py:50:19:50:27 | ControlFlowNode for file_path | provenance | | -| test.py:28:26:28:34 | ControlFlowNode for file_path | test.py:54:40:54:48 | ControlFlowNode for file_path | provenance | | -| test.py:28:26:28:34 | ControlFlowNode for file_path | test.py:56:23:56:31 | ControlFlowNode for file_path | provenance | | -| test.py:28:26:28:34 | ControlFlowNode for file_path | test.py:57:21:57:29 | ControlFlowNode for file_path | provenance | | | test.py:28:26:28:34 | ControlFlowNode for file_path | test.py:59:40:59:48 | ControlFlowNode for file_path | provenance | | -| test.py:28:26:28:34 | ControlFlowNode for file_path | test.py:60:22:60:30 | ControlFlowNode for file_path | provenance | | -| test.py:28:26:28:34 | ControlFlowNode for file_path | test.py:61:21:61:29 | ControlFlowNode for file_path | provenance | | -| test.py:28:26:28:34 | ControlFlowNode for file_path | test.py:62:42:62:50 | ControlFlowNode for file_path | provenance | | -| test.py:28:26:28:34 | ControlFlowNode for file_path | test.py:63:23:63:31 | ControlFlowNode for file_path | provenance | | -| test.py:28:26:28:34 | ControlFlowNode for file_path | test.py:64:36:64:44 | ControlFlowNode for file_path | provenance | | +| test.py:28:26:28:34 | ControlFlowNode for file_path | test.py:61:23:61:31 | ControlFlowNode for file_path | provenance | | +| test.py:28:26:28:34 | ControlFlowNode for file_path | test.py:62:21:62:29 | ControlFlowNode for file_path | provenance | | +| test.py:28:26:28:34 | ControlFlowNode for file_path | test.py:64:40:64:48 | ControlFlowNode for file_path | provenance | | +| test.py:28:26:28:34 | ControlFlowNode for file_path | test.py:65:22:65:30 | ControlFlowNode for file_path | provenance | | +| test.py:28:26:28:34 | ControlFlowNode for file_path | test.py:66:21:66:29 | ControlFlowNode for file_path | provenance | | +| test.py:28:26:28:34 | ControlFlowNode for file_path | test.py:67:42:67:50 | ControlFlowNode for file_path | provenance | | +| test.py:28:26:28:34 | ControlFlowNode for file_path | test.py:68:23:68:31 | ControlFlowNode for file_path | provenance | | +| test.py:28:26:28:34 | ControlFlowNode for file_path | test.py:69:36:69:44 | ControlFlowNode for file_path | provenance | | nodes | test.py:10:16:10:24 | ControlFlowNode for file_path | semmle.label | ControlFlowNode for file_path | | test.py:11:5:11:35 | ControlFlowNode for Attribute() | semmle.label | ControlFlowNode for Attribute() | @@ -79,15 +79,15 @@ nodes | test.py:45:17:45:25 | ControlFlowNode for file_path | semmle.label | ControlFlowNode for file_path | | test.py:49:15:49:23 | ControlFlowNode for file_path | semmle.label | ControlFlowNode for file_path | | test.py:50:19:50:27 | ControlFlowNode for file_path | semmle.label | ControlFlowNode for file_path | -| test.py:54:40:54:48 | ControlFlowNode for file_path | semmle.label | ControlFlowNode for file_path | -| test.py:56:23:56:31 | ControlFlowNode for file_path | semmle.label | ControlFlowNode for file_path | -| test.py:57:21:57:29 | ControlFlowNode for file_path | semmle.label | ControlFlowNode for file_path | | test.py:59:40:59:48 | ControlFlowNode for file_path | semmle.label | ControlFlowNode for file_path | -| test.py:60:22:60:30 | ControlFlowNode for file_path | semmle.label | ControlFlowNode for file_path | -| test.py:61:21:61:29 | ControlFlowNode for file_path | semmle.label | ControlFlowNode for file_path | -| test.py:62:42:62:50 | ControlFlowNode for file_path | semmle.label | ControlFlowNode for file_path | -| test.py:63:23:63:31 | ControlFlowNode for file_path | semmle.label | ControlFlowNode for file_path | -| test.py:64:36:64:44 | ControlFlowNode for file_path | semmle.label | ControlFlowNode for file_path | +| test.py:61:23:61:31 | ControlFlowNode for file_path | semmle.label | ControlFlowNode for file_path | +| test.py:62:21:62:29 | ControlFlowNode for file_path | semmle.label | ControlFlowNode for file_path | +| test.py:64:40:64:48 | ControlFlowNode for file_path | semmle.label | ControlFlowNode for file_path | +| test.py:65:22:65:30 | ControlFlowNode for file_path | semmle.label | ControlFlowNode for file_path | +| test.py:66:21:66:29 | ControlFlowNode for file_path | semmle.label | ControlFlowNode for file_path | +| test.py:67:42:67:50 | ControlFlowNode for file_path | semmle.label | ControlFlowNode for file_path | +| test.py:68:23:68:31 | ControlFlowNode for file_path | semmle.label | ControlFlowNode for file_path | +| test.py:69:36:69:44 | ControlFlowNode for file_path | semmle.label | ControlFlowNode for file_path | subpaths #select | test.py:11:5:11:52 | ControlFlowNode for Attribute() | test.py:10:16:10:24 | ControlFlowNode for file_path | test.py:11:5:11:52 | ControlFlowNode for Attribute() | This uncontrolled file extraction is $@. | test.py:10:16:10:24 | ControlFlowNode for file_path | depends on this user controlled data | @@ -107,12 +107,12 @@ subpaths | test.py:45:17:45:25 | ControlFlowNode for file_path | test.py:10:16:10:24 | ControlFlowNode for file_path | test.py:45:17:45:25 | ControlFlowNode for file_path | This uncontrolled file extraction is $@. | test.py:10:16:10:24 | ControlFlowNode for file_path | depends on this user controlled data | | test.py:49:15:49:23 | ControlFlowNode for file_path | test.py:10:16:10:24 | ControlFlowNode for file_path | test.py:49:15:49:23 | ControlFlowNode for file_path | This uncontrolled file extraction is $@. | test.py:10:16:10:24 | ControlFlowNode for file_path | depends on this user controlled data | | test.py:50:19:50:27 | ControlFlowNode for file_path | test.py:10:16:10:24 | ControlFlowNode for file_path | test.py:50:19:50:27 | ControlFlowNode for file_path | This uncontrolled file extraction is $@. | test.py:10:16:10:24 | ControlFlowNode for file_path | depends on this user controlled data | -| test.py:54:40:54:48 | ControlFlowNode for file_path | test.py:10:16:10:24 | ControlFlowNode for file_path | test.py:54:40:54:48 | ControlFlowNode for file_path | This uncontrolled file extraction is $@. | test.py:10:16:10:24 | ControlFlowNode for file_path | depends on this user controlled data | -| test.py:56:23:56:31 | ControlFlowNode for file_path | test.py:10:16:10:24 | ControlFlowNode for file_path | test.py:56:23:56:31 | ControlFlowNode for file_path | This uncontrolled file extraction is $@. | test.py:10:16:10:24 | ControlFlowNode for file_path | depends on this user controlled data | -| test.py:57:21:57:29 | ControlFlowNode for file_path | test.py:10:16:10:24 | ControlFlowNode for file_path | test.py:57:21:57:29 | ControlFlowNode for file_path | This uncontrolled file extraction is $@. | test.py:10:16:10:24 | ControlFlowNode for file_path | depends on this user controlled data | | test.py:59:40:59:48 | ControlFlowNode for file_path | test.py:10:16:10:24 | ControlFlowNode for file_path | test.py:59:40:59:48 | ControlFlowNode for file_path | This uncontrolled file extraction is $@. | test.py:10:16:10:24 | ControlFlowNode for file_path | depends on this user controlled data | -| test.py:60:22:60:30 | ControlFlowNode for file_path | test.py:10:16:10:24 | ControlFlowNode for file_path | test.py:60:22:60:30 | ControlFlowNode for file_path | This uncontrolled file extraction is $@. | test.py:10:16:10:24 | ControlFlowNode for file_path | depends on this user controlled data | -| test.py:61:21:61:29 | ControlFlowNode for file_path | test.py:10:16:10:24 | ControlFlowNode for file_path | test.py:61:21:61:29 | ControlFlowNode for file_path | This uncontrolled file extraction is $@. | test.py:10:16:10:24 | ControlFlowNode for file_path | depends on this user controlled data | -| test.py:62:42:62:50 | ControlFlowNode for file_path | test.py:10:16:10:24 | ControlFlowNode for file_path | test.py:62:42:62:50 | ControlFlowNode for file_path | This uncontrolled file extraction is $@. | test.py:10:16:10:24 | ControlFlowNode for file_path | depends on this user controlled data | -| test.py:63:23:63:31 | ControlFlowNode for file_path | test.py:10:16:10:24 | ControlFlowNode for file_path | test.py:63:23:63:31 | ControlFlowNode for file_path | This uncontrolled file extraction is $@. | test.py:10:16:10:24 | ControlFlowNode for file_path | depends on this user controlled data | -| test.py:64:36:64:44 | ControlFlowNode for file_path | test.py:10:16:10:24 | ControlFlowNode for file_path | test.py:64:36:64:44 | ControlFlowNode for file_path | This uncontrolled file extraction is $@. | test.py:10:16:10:24 | ControlFlowNode for file_path | depends on this user controlled data | +| test.py:61:23:61:31 | ControlFlowNode for file_path | test.py:10:16:10:24 | ControlFlowNode for file_path | test.py:61:23:61:31 | ControlFlowNode for file_path | This uncontrolled file extraction is $@. | test.py:10:16:10:24 | ControlFlowNode for file_path | depends on this user controlled data | +| test.py:62:21:62:29 | ControlFlowNode for file_path | test.py:10:16:10:24 | ControlFlowNode for file_path | test.py:62:21:62:29 | ControlFlowNode for file_path | This uncontrolled file extraction is $@. | test.py:10:16:10:24 | ControlFlowNode for file_path | depends on this user controlled data | +| test.py:64:40:64:48 | ControlFlowNode for file_path | test.py:10:16:10:24 | ControlFlowNode for file_path | test.py:64:40:64:48 | ControlFlowNode for file_path | This uncontrolled file extraction is $@. | test.py:10:16:10:24 | ControlFlowNode for file_path | depends on this user controlled data | +| test.py:65:22:65:30 | ControlFlowNode for file_path | test.py:10:16:10:24 | ControlFlowNode for file_path | test.py:65:22:65:30 | ControlFlowNode for file_path | This uncontrolled file extraction is $@. | test.py:10:16:10:24 | ControlFlowNode for file_path | depends on this user controlled data | +| test.py:66:21:66:29 | ControlFlowNode for file_path | test.py:10:16:10:24 | ControlFlowNode for file_path | test.py:66:21:66:29 | ControlFlowNode for file_path | This uncontrolled file extraction is $@. | test.py:10:16:10:24 | ControlFlowNode for file_path | depends on this user controlled data | +| test.py:67:42:67:50 | ControlFlowNode for file_path | test.py:10:16:10:24 | ControlFlowNode for file_path | test.py:67:42:67:50 | ControlFlowNode for file_path | This uncontrolled file extraction is $@. | test.py:10:16:10:24 | ControlFlowNode for file_path | depends on this user controlled data | +| test.py:68:23:68:31 | ControlFlowNode for file_path | test.py:10:16:10:24 | ControlFlowNode for file_path | test.py:68:23:68:31 | ControlFlowNode for file_path | This uncontrolled file extraction is $@. | test.py:10:16:10:24 | ControlFlowNode for file_path | depends on this user controlled data | +| test.py:69:36:69:44 | ControlFlowNode for file_path | test.py:10:16:10:24 | ControlFlowNode for file_path | test.py:69:36:69:44 | ControlFlowNode for file_path | This uncontrolled file extraction is $@. | test.py:10:16:10:24 | ControlFlowNode for file_path | depends on this user controlled data | diff --git a/python/ql/test/experimental/query-tests/Security/CWE-409/test.py b/python/ql/test/experimental/query-tests/Security/CWE-409/test.py index 06113bf9fe4..352bd1f425f 100644 --- a/python/ql/test/experimental/query-tests/Security/CWE-409/test.py +++ b/python/ql/test/experimental/query-tests/Security/CWE-409/test.py @@ -49,6 +49,11 @@ async def bomb(file_path): gzip.open(file_path) # $ result=BAD gzip.GzipFile(file_path) # $ result=BAD +# from compression import zstd +# +# zstd.open(file_path) # $ result=BAD +# zstd.ZstdFile(file_path).read() # $ result=BAD +# import pandas pandas.read_csv(filepath_or_buffer=file_path) # $ result=BAD From d2c7147480b297e8fec5ec735230c24d9b943a7a Mon Sep 17 00:00:00 2001 From: Taus Date: Wed, 10 Dec 2025 13:52:13 +0000 Subject: [PATCH 19/63] Python: Add new test --- .../Security/CWE-409/DecompressionBombs.expected | 6 ++++++ .../experimental/query-tests/Security/CWE-409/test.py | 10 +++++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/python/ql/test/experimental/query-tests/Security/CWE-409/DecompressionBombs.expected b/python/ql/test/experimental/query-tests/Security/CWE-409/DecompressionBombs.expected index a8355a5a5fc..17c28aa1d95 100644 --- a/python/ql/test/experimental/query-tests/Security/CWE-409/DecompressionBombs.expected +++ b/python/ql/test/experimental/query-tests/Security/CWE-409/DecompressionBombs.expected @@ -36,6 +36,8 @@ edges | test.py:28:26:28:34 | ControlFlowNode for file_path | test.py:45:17:45:25 | ControlFlowNode for file_path | provenance | | | test.py:28:26:28:34 | ControlFlowNode for file_path | test.py:49:15:49:23 | ControlFlowNode for file_path | provenance | | | test.py:28:26:28:34 | ControlFlowNode for file_path | test.py:50:19:50:27 | ControlFlowNode for file_path | provenance | | +| test.py:28:26:28:34 | ControlFlowNode for file_path | test.py:54:15:54:23 | ControlFlowNode for file_path | provenance | | +| test.py:28:26:28:34 | ControlFlowNode for file_path | test.py:55:19:55:27 | ControlFlowNode for file_path | provenance | | | test.py:28:26:28:34 | ControlFlowNode for file_path | test.py:59:40:59:48 | ControlFlowNode for file_path | provenance | | | test.py:28:26:28:34 | ControlFlowNode for file_path | test.py:61:23:61:31 | ControlFlowNode for file_path | provenance | | | test.py:28:26:28:34 | ControlFlowNode for file_path | test.py:62:21:62:29 | ControlFlowNode for file_path | provenance | | @@ -79,6 +81,8 @@ nodes | test.py:45:17:45:25 | ControlFlowNode for file_path | semmle.label | ControlFlowNode for file_path | | test.py:49:15:49:23 | ControlFlowNode for file_path | semmle.label | ControlFlowNode for file_path | | test.py:50:19:50:27 | ControlFlowNode for file_path | semmle.label | ControlFlowNode for file_path | +| test.py:54:15:54:23 | ControlFlowNode for file_path | semmle.label | ControlFlowNode for file_path | +| test.py:55:19:55:27 | ControlFlowNode for file_path | semmle.label | ControlFlowNode for file_path | | test.py:59:40:59:48 | ControlFlowNode for file_path | semmle.label | ControlFlowNode for file_path | | test.py:61:23:61:31 | ControlFlowNode for file_path | semmle.label | ControlFlowNode for file_path | | test.py:62:21:62:29 | ControlFlowNode for file_path | semmle.label | ControlFlowNode for file_path | @@ -107,6 +111,8 @@ subpaths | test.py:45:17:45:25 | ControlFlowNode for file_path | test.py:10:16:10:24 | ControlFlowNode for file_path | test.py:45:17:45:25 | ControlFlowNode for file_path | This uncontrolled file extraction is $@. | test.py:10:16:10:24 | ControlFlowNode for file_path | depends on this user controlled data | | test.py:49:15:49:23 | ControlFlowNode for file_path | test.py:10:16:10:24 | ControlFlowNode for file_path | test.py:49:15:49:23 | ControlFlowNode for file_path | This uncontrolled file extraction is $@. | test.py:10:16:10:24 | ControlFlowNode for file_path | depends on this user controlled data | | test.py:50:19:50:27 | ControlFlowNode for file_path | test.py:10:16:10:24 | ControlFlowNode for file_path | test.py:50:19:50:27 | ControlFlowNode for file_path | This uncontrolled file extraction is $@. | test.py:10:16:10:24 | ControlFlowNode for file_path | depends on this user controlled data | +| test.py:54:15:54:23 | ControlFlowNode for file_path | test.py:10:16:10:24 | ControlFlowNode for file_path | test.py:54:15:54:23 | ControlFlowNode for file_path | This uncontrolled file extraction is $@. | test.py:10:16:10:24 | ControlFlowNode for file_path | depends on this user controlled data | +| test.py:55:19:55:27 | ControlFlowNode for file_path | test.py:10:16:10:24 | ControlFlowNode for file_path | test.py:55:19:55:27 | ControlFlowNode for file_path | This uncontrolled file extraction is $@. | test.py:10:16:10:24 | ControlFlowNode for file_path | depends on this user controlled data | | test.py:59:40:59:48 | ControlFlowNode for file_path | test.py:10:16:10:24 | ControlFlowNode for file_path | test.py:59:40:59:48 | ControlFlowNode for file_path | This uncontrolled file extraction is $@. | test.py:10:16:10:24 | ControlFlowNode for file_path | depends on this user controlled data | | test.py:61:23:61:31 | ControlFlowNode for file_path | test.py:10:16:10:24 | ControlFlowNode for file_path | test.py:61:23:61:31 | ControlFlowNode for file_path | This uncontrolled file extraction is $@. | test.py:10:16:10:24 | ControlFlowNode for file_path | depends on this user controlled data | | test.py:62:21:62:29 | ControlFlowNode for file_path | test.py:10:16:10:24 | ControlFlowNode for file_path | test.py:62:21:62:29 | ControlFlowNode for file_path | This uncontrolled file extraction is $@. | test.py:10:16:10:24 | ControlFlowNode for file_path | depends on this user controlled data | diff --git a/python/ql/test/experimental/query-tests/Security/CWE-409/test.py b/python/ql/test/experimental/query-tests/Security/CWE-409/test.py index 352bd1f425f..feb6b1293bb 100644 --- a/python/ql/test/experimental/query-tests/Security/CWE-409/test.py +++ b/python/ql/test/experimental/query-tests/Security/CWE-409/test.py @@ -49,11 +49,11 @@ async def bomb(file_path): gzip.open(file_path) # $ result=BAD gzip.GzipFile(file_path) # $ result=BAD -# from compression import zstd -# -# zstd.open(file_path) # $ result=BAD -# zstd.ZstdFile(file_path).read() # $ result=BAD -# + from compression import zstd + + zstd.open(file_path) # $ result=BAD + zstd.ZstdFile(file_path).read() # $ result=BAD + import pandas pandas.read_csv(filepath_or_buffer=file_path) # $ result=BAD From a65d385297d3a58043f38b20ba13fb0de1610581 Mon Sep 17 00:00:00 2001 From: yoff Date: Tue, 25 Nov 2025 15:42:07 +0100 Subject: [PATCH 20/63] java: add tests for thread safe initialisation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Raúl Pardo --- .../ThreadSafe/ThreadSafe.expected | 4 ++ .../examples/ThreadSafeInitializers.java | 55 +++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 java/ql/test/query-tests/ThreadSafe/examples/ThreadSafeInitializers.java diff --git a/java/ql/test/query-tests/ThreadSafe/ThreadSafe.expected b/java/ql/test/query-tests/ThreadSafe/ThreadSafe.expected index 3d73caaffe5..c0df4852d78 100644 --- a/java/ql/test/query-tests/ThreadSafe/ThreadSafe.expected +++ b/java/ql/test/query-tests/ThreadSafe/ThreadSafe.expected @@ -43,3 +43,7 @@ | examples/Test.java:60:5:60:10 | this.y | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/Test.java:60:5:60:10 | this.y | this expression | | examples/Test.java:74:5:74:10 | this.y | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/Test.java:74:5:74:10 | this.y | this expression | | examples/Test.java:74:14:74:14 | y | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/Test.java:74:14:74:14 | y | this expression | +| examples/ThreadSafeInitializers.java:29:9:29:16 | sync_map | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/ThreadSafeInitializers.java:29:9:29:16 | sync_map | this expression | +| examples/ThreadSafeInitializers.java:37:9:37:12 | cmap | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/ThreadSafeInitializers.java:37:9:37:12 | cmap | this expression | +| examples/ThreadSafeInitializers.java:45:9:45:14 | this.y | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/ThreadSafeInitializers.java:45:9:45:14 | this.y | this expression | +| examples/ThreadSafeInitializers.java:49:9:49:11 | set | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/ThreadSafeInitializers.java:49:9:49:11 | set | this expression | diff --git a/java/ql/test/query-tests/ThreadSafe/examples/ThreadSafeInitializers.java b/java/ql/test/query-tests/ThreadSafe/examples/ThreadSafeInitializers.java new file mode 100644 index 00000000000..8262c6bf69e --- /dev/null +++ b/java/ql/test/query-tests/ThreadSafe/examples/ThreadSafeInitializers.java @@ -0,0 +1,55 @@ +package examples; + +import java.util.Map; +import java.util.Set; +import java.util.HashMap; +import java.util.Collections; +import java.util.concurrent.ConcurrentHashMap; + +@ThreadSafe +public class ThreadSafeInitializers { + + private int y; + private final Map sync_map; + private final Map sync_map_initialised = Collections.synchronizedMap(new HashMap()); + + + private final Map cmap; + private final Map cmap_initialised = new ConcurrentHashMap(); + private final Set set; + private final Set set_initialised = ConcurrentHashMap.newKeySet(); + + public ThreadSafeInitializers() { + sync_map = Collections.synchronizedMap(new HashMap()); + cmap = new ConcurrentHashMap(); + set = ConcurrentHashMap.newKeySet(); + } + + public void sync_map_put(Integer i, Integer v) { + sync_map.put(i,v); // $ SPURIOUS: Alert + } + + public void sync_map_initialised_put(Integer i, Integer v) { + sync_map_initialised.put(i,v); + } + + public void cmap_put(String s1, String s2) { + cmap.put(s1, s2); // $ SPURIOUS: Alert + } + + public void cmap_initialised_put(String s1, String s2) { + cmap_initialised.put(s1, s2); + } + + public void setY(int y) { + this.y = y; // $ Alert + } + + public void set_add(Integer i) { + set.add(i); // $ SPURIOUS: Alert + } + + public void set_initialised_add(Integer i) { + set_initialised.add(i); + } +} \ No newline at end of file From c6240e5a99c3d5d993a97823e53f73a13a98b466 Mon Sep 17 00:00:00 2001 From: yoff Date: Tue, 25 Nov 2025 15:46:18 +0100 Subject: [PATCH 21/63] java: understand more initializers Whne a fiels is assigned a safe type in a constructor, that field is not exposed. --- .../ql/lib/semmle/code/java/ConflictingAccess.qll | 15 +++++++++++++-- .../query-tests/ThreadSafe/ThreadSafe.expected | 3 --- .../examples/ThreadSafeInitializers.java | 6 +++--- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/java/ql/lib/semmle/code/java/ConflictingAccess.qll b/java/ql/lib/semmle/code/java/ConflictingAccess.qll index ceff3e4ffa3..12886769095 100644 --- a/java/ql/lib/semmle/code/java/ConflictingAccess.qll +++ b/java/ql/lib/semmle/code/java/ConflictingAccess.qll @@ -63,12 +63,23 @@ class ExposedField extends Field { not this.getType() instanceof LockType and // field is not thread-safe not isThreadSafeType(this.getType()) and - not isThreadSafeType(this.getInitializer().getType()) and + not isThreadSafeType(initialValue(this).getType()) and // the initializer guarantees thread safety - not isThreadSafeInitializer(this.getInitializer()) + not isThreadSafeInitializer(initialValue(this)) } } +/** + * Gets the initial value for the field `f`. + * This is either a static initializer or an assignment in a constructor. + */ +Expr initialValue(Field f) { + result = f.getInitializer() + or + result = f.getAnAssignedValue() and + result.getEnclosingCallable() = f.getDeclaringType().getAConstructor() +} + /** * A field access that is exposed to potential data races. * We require the field to be in a class that is annotated as `@ThreadSafe`. diff --git a/java/ql/test/query-tests/ThreadSafe/ThreadSafe.expected b/java/ql/test/query-tests/ThreadSafe/ThreadSafe.expected index c0df4852d78..488cfa1a482 100644 --- a/java/ql/test/query-tests/ThreadSafe/ThreadSafe.expected +++ b/java/ql/test/query-tests/ThreadSafe/ThreadSafe.expected @@ -43,7 +43,4 @@ | examples/Test.java:60:5:60:10 | this.y | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/Test.java:60:5:60:10 | this.y | this expression | | examples/Test.java:74:5:74:10 | this.y | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/Test.java:74:5:74:10 | this.y | this expression | | examples/Test.java:74:14:74:14 | y | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/Test.java:74:14:74:14 | y | this expression | -| examples/ThreadSafeInitializers.java:29:9:29:16 | sync_map | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/ThreadSafeInitializers.java:29:9:29:16 | sync_map | this expression | -| examples/ThreadSafeInitializers.java:37:9:37:12 | cmap | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/ThreadSafeInitializers.java:37:9:37:12 | cmap | this expression | | examples/ThreadSafeInitializers.java:45:9:45:14 | this.y | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/ThreadSafeInitializers.java:45:9:45:14 | this.y | this expression | -| examples/ThreadSafeInitializers.java:49:9:49:11 | set | This field access (publicly accessible via $@) is not protected by any monitor, but the class is annotated as @ThreadSafe. | examples/ThreadSafeInitializers.java:49:9:49:11 | set | this expression | diff --git a/java/ql/test/query-tests/ThreadSafe/examples/ThreadSafeInitializers.java b/java/ql/test/query-tests/ThreadSafe/examples/ThreadSafeInitializers.java index 8262c6bf69e..b8f50405066 100644 --- a/java/ql/test/query-tests/ThreadSafe/examples/ThreadSafeInitializers.java +++ b/java/ql/test/query-tests/ThreadSafe/examples/ThreadSafeInitializers.java @@ -26,7 +26,7 @@ public class ThreadSafeInitializers { } public void sync_map_put(Integer i, Integer v) { - sync_map.put(i,v); // $ SPURIOUS: Alert + sync_map.put(i,v); } public void sync_map_initialised_put(Integer i, Integer v) { @@ -34,7 +34,7 @@ public class ThreadSafeInitializers { } public void cmap_put(String s1, String s2) { - cmap.put(s1, s2); // $ SPURIOUS: Alert + cmap.put(s1, s2); } public void cmap_initialised_put(String s1, String s2) { @@ -46,7 +46,7 @@ public class ThreadSafeInitializers { } public void set_add(Integer i) { - set.add(i); // $ SPURIOUS: Alert + set.add(i); } public void set_initialised_add(Integer i) { From 50e9057db122c7aba96ad1bb9c0e7c61dfa8c709 Mon Sep 17 00:00:00 2001 From: yoff Date: Tue, 25 Nov 2025 15:50:53 +0100 Subject: [PATCH 22/63] java: add change note --- .../src/change-notes/2025-11-25-thread-safe-initializers.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 java/ql/src/change-notes/2025-11-25-thread-safe-initializers.md diff --git a/java/ql/src/change-notes/2025-11-25-thread-safe-initializers.md b/java/ql/src/change-notes/2025-11-25-thread-safe-initializers.md new file mode 100644 index 00000000000..f373dae839d --- /dev/null +++ b/java/ql/src/change-notes/2025-11-25-thread-safe-initializers.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Java thread safety analysis now understands initialization to thread safe classes inside constructors. \ No newline at end of file From cbc01006758d563bba5407dcc51c11fb77125534 Mon Sep 17 00:00:00 2001 From: yoff Date: Tue, 16 Dec 2025 10:10:29 +0100 Subject: [PATCH 23/63] Apply suggestion from @Copilot --- java/ql/lib/semmle/code/java/ConflictingAccess.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/ql/lib/semmle/code/java/ConflictingAccess.qll b/java/ql/lib/semmle/code/java/ConflictingAccess.qll index 12886769095..28908e2c117 100644 --- a/java/ql/lib/semmle/code/java/ConflictingAccess.qll +++ b/java/ql/lib/semmle/code/java/ConflictingAccess.qll @@ -71,7 +71,7 @@ class ExposedField extends Field { /** * Gets the initial value for the field `f`. - * This is either a static initializer or an assignment in a constructor. + * This is either a field initializer or an assignment in a constructor. */ Expr initialValue(Field f) { result = f.getInitializer() From f73f1a7aa9b1d1b7839169a438d7af2d898b7f7e Mon Sep 17 00:00:00 2001 From: Kevin Stubbings Date: Mon, 29 Dec 2025 07:09:31 +0000 Subject: [PATCH 24/63] Add additional test --- .../dataflow/taintsources/FileUpload.java | 5 ++++- .../commons/fileupload/servlet/ServletFileUpload.java | 11 +++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 java/ql/test/stubs/apache-commons-fileupload-1.4/org/apache/commons/fileupload/servlet/ServletFileUpload.java diff --git a/java/ql/test/library-tests/dataflow/taintsources/FileUpload.java b/java/ql/test/library-tests/dataflow/taintsources/FileUpload.java index f1d6e7ca569..d463c984d80 100644 --- a/java/ql/test/library-tests/dataflow/taintsources/FileUpload.java +++ b/java/ql/test/library-tests/dataflow/taintsources/FileUpload.java @@ -2,7 +2,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileItemStream; - +import org.apache.commons.fileupload.servlet.ServletFileUpload; public class FileUpload { @@ -12,6 +12,7 @@ public class FileUpload { private FileItem fileItem; private FileItemStream fileItemStream; private jakarta.servlet.http.Part jakartaPart; + private ServletFileUpload servletFileUpload; private static void sink(Object o) {} @@ -45,5 +46,7 @@ public class FileUpload { sink(jakartaPart.getName()); // $ hasRemoteValueFlow sink(jakartaPart.getSubmittedFileName()); // $ hasRemoteValueFlow + FileItem item = servletFileUpload.parseRequest(request).get(0); + sink(item.getName()); // $ hasRemoteValueFlow } } \ No newline at end of file diff --git a/java/ql/test/stubs/apache-commons-fileupload-1.4/org/apache/commons/fileupload/servlet/ServletFileUpload.java b/java/ql/test/stubs/apache-commons-fileupload-1.4/org/apache/commons/fileupload/servlet/ServletFileUpload.java new file mode 100644 index 00000000000..33e144406be --- /dev/null +++ b/java/ql/test/stubs/apache-commons-fileupload-1.4/org/apache/commons/fileupload/servlet/ServletFileUpload.java @@ -0,0 +1,11 @@ +// Generated automatically from org.apache.commons.fileupload.servlet.ServletFileUpload for testing purposes + +package org.apache.commons.fileupload.servlet; + +import java.util.List; +import javax.servlet.http.HttpServletRequest; +import org.apache.commons.fileupload.FileItem; + +public class ServletFileUpload { + public List parseRequest(HttpServletRequest p0){ return null; } +} From af36eae002df13ccbe241ec01270f624dfaa129e Mon Sep 17 00:00:00 2001 From: Chris Smowton Date: Tue, 6 Jan 2026 12:48:01 +0000 Subject: [PATCH 25/63] All languages: account for paths and paths-ignore in XML and other ancillary extraction --- csharp/tools/pre-finalize.cmd | 1 + csharp/tools/pre-finalize.sh | 1 + go/codeql-tools/pre-finalize.cmd | 1 + go/codeql-tools/pre-finalize.sh | 1 + python/tools/pre-finalize.cmd | 1 + python/tools/pre-finalize.sh | 1 + ql/tools/pre-finalize.cmd | 1 + ql/tools/pre-finalize.sh | 1 + 8 files changed, 8 insertions(+) diff --git a/csharp/tools/pre-finalize.cmd b/csharp/tools/pre-finalize.cmd index 0ee982b6585..b20e2bf77d8 100644 --- a/csharp/tools/pre-finalize.cmd +++ b/csharp/tools/pre-finalize.cmd @@ -5,6 +5,7 @@ type NUL && "%CODEQL_DIST%\codeql" database index-files ^ --include-extension=.csproj ^ --include-extension=.props ^ --include-extension=.xml ^ + --also-match-lgtm-index-filters ^ --size-limit 10m ^ --language xml ^ --working-dir=. ^ diff --git a/csharp/tools/pre-finalize.sh b/csharp/tools/pre-finalize.sh index b0abd28f9ee..409fb252da3 100755 --- a/csharp/tools/pre-finalize.sh +++ b/csharp/tools/pre-finalize.sh @@ -7,6 +7,7 @@ set -eu --include-extension=.csproj \ --include-extension=.props \ --include-extension=.xml \ + --also-match-lgtm-index-filters \ --size-limit 10m \ --language xml \ --working-dir=. \ diff --git a/go/codeql-tools/pre-finalize.cmd b/go/codeql-tools/pre-finalize.cmd index 4abac249933..66f6e80a69f 100644 --- a/go/codeql-tools/pre-finalize.cmd +++ b/go/codeql-tools/pre-finalize.cmd @@ -9,6 +9,7 @@ if NOT "%CODEQL_EXTRACTOR_GO_EXTRACT_HTML%"=="no" ( --include-extension=.xhtm ^ --include-extension=.xhtml ^ --include-extension=.vue ^ + --also-match-lgtm-index-filters ^ --size-limit 10m ^ --language html ^ -- ^ diff --git a/go/codeql-tools/pre-finalize.sh b/go/codeql-tools/pre-finalize.sh index 3a8b31c70a0..9cf0b7ae0b1 100755 --- a/go/codeql-tools/pre-finalize.sh +++ b/go/codeql-tools/pre-finalize.sh @@ -10,6 +10,7 @@ if [ "${CODEQL_EXTRACTOR_GO_EXTRACT_HTML:-yes}" != "no" ]; then --include-extension=.xhtm \ --include-extension=.xhtml \ --include-extension=.vue \ + --also-match-lgtm-index-filters \ --size-limit 10m \ --language html \ -- \ diff --git a/python/tools/pre-finalize.cmd b/python/tools/pre-finalize.cmd index 07454671062..235b79c77b0 100644 --- a/python/tools/pre-finalize.cmd +++ b/python/tools/pre-finalize.cmd @@ -3,6 +3,7 @@ type NUL && "%CODEQL_DIST%\codeql" database index-files ^ --include-extension=.yaml ^ --include-extension=.yml ^ + --also-match-lgtm-index-filters ^ --size-limit=5m ^ --language yaml ^ -- ^ diff --git a/python/tools/pre-finalize.sh b/python/tools/pre-finalize.sh index 9fe5200a38f..b938be75aa7 100755 --- a/python/tools/pre-finalize.sh +++ b/python/tools/pre-finalize.sh @@ -5,6 +5,7 @@ set -eu "$CODEQL_DIST/codeql" database index-files \ --include-extension=.yaml \ --include-extension=.yml \ + --also-match-lgtm-index-filters \ --size-limit=5m \ --language yaml \ -- \ diff --git a/ql/tools/pre-finalize.cmd b/ql/tools/pre-finalize.cmd index 49d18f3d197..19fa7b04523 100644 --- a/ql/tools/pre-finalize.cmd +++ b/ql/tools/pre-finalize.cmd @@ -3,6 +3,7 @@ type NUL && "%CODEQL_DIST%\codeql" database index-files ^ --include=**/qlpack.yml ^ --include-extension=.qlref ^ + --also-match-lgtm-index-filters ^ --size-limit=5m ^ --language yaml ^ -- ^ diff --git a/ql/tools/pre-finalize.sh b/ql/tools/pre-finalize.sh index 7003ad81c1b..afae94ef83a 100755 --- a/ql/tools/pre-finalize.sh +++ b/ql/tools/pre-finalize.sh @@ -5,6 +5,7 @@ set -eu "$CODEQL_DIST/codeql" database index-files \ "--include=**/qlpack.yml" \ --include-extension=.qlref \ + --also-match-lgtm-index-filters \ --size-limit=5m \ --language yaml \ -- \ From 6ed24f22b50118b44a77b52ebf1a0b08cb83710b Mon Sep 17 00:00:00 2001 From: Chris Smowton Date: Tue, 6 Jan 2026 13:01:37 +0000 Subject: [PATCH 26/63] Change notes --- .../2026-01-06-paths-directives-ancillary-data.md | 4 ++++ .../2026-01-06-paths-directives-ancillary-data.md | 4 ++++ .../2026-01-06-paths-directives-ancillary-data.md | 4 ++++ 3 files changed, 12 insertions(+) create mode 100644 csharp/ql/lib/change-notes/2026-01-06-paths-directives-ancillary-data.md create mode 100644 go/ql/lib/change-notes/2026-01-06-paths-directives-ancillary-data.md create mode 100644 python/ql/lib/change-notes/2026-01-06-paths-directives-ancillary-data.md diff --git a/csharp/ql/lib/change-notes/2026-01-06-paths-directives-ancillary-data.md b/csharp/ql/lib/change-notes/2026-01-06-paths-directives-ancillary-data.md new file mode 100644 index 00000000000..ac96e579147 --- /dev/null +++ b/csharp/ql/lib/change-notes/2026-01-06-paths-directives-ancillary-data.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* When a code-scanning configuration specifies the `paths:` and/or `paths-ignore:` settings, these are now taken into account by the C# extractor's search for `.config`, `.props`, XML and project files. diff --git a/go/ql/lib/change-notes/2026-01-06-paths-directives-ancillary-data.md b/go/ql/lib/change-notes/2026-01-06-paths-directives-ancillary-data.md new file mode 100644 index 00000000000..bf9c4553573 --- /dev/null +++ b/go/ql/lib/change-notes/2026-01-06-paths-directives-ancillary-data.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* When a code-scanning configuration specifies the `paths:` and/or `paths-ignore:` settings, these are now taken into account by the Go extractor's search for `.vue` and HTML files. diff --git a/python/ql/lib/change-notes/2026-01-06-paths-directives-ancillary-data.md b/python/ql/lib/change-notes/2026-01-06-paths-directives-ancillary-data.md new file mode 100644 index 00000000000..ed16f8b6565 --- /dev/null +++ b/python/ql/lib/change-notes/2026-01-06-paths-directives-ancillary-data.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* When a code-scanning configuration specifies the `paths:` and/or `paths-ignore:` settings, these are now taken into account by the Python extractor's search for YAML files. From 81667d741a8175687066289dc3e9b9d8aa3e8161 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan Date: Wed, 17 Dec 2025 10:47:45 +0000 Subject: [PATCH 27/63] Rename classes for external sanitizers --- java/ql/lib/semmle/code/java/security/PathSanitizer.qll | 4 ++-- java/ql/lib/semmle/code/java/security/RequestForgery.qll | 4 ++-- .../semmle/code/java/security/TrustBoundaryViolationQuery.qll | 4 ++-- java/ql/lib/semmle/code/java/security/XSS.qll | 4 ++-- .../lib/semmle/code/java/security/regexp/RegexInjection.qll | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/java/ql/lib/semmle/code/java/security/PathSanitizer.qll b/java/ql/lib/semmle/code/java/security/PathSanitizer.qll index 2018004a3fb..4685f5e48f7 100644 --- a/java/ql/lib/semmle/code/java/security/PathSanitizer.qll +++ b/java/ql/lib/semmle/code/java/security/PathSanitizer.qll @@ -289,8 +289,8 @@ private Method getSourceMethod(Method m) { result = m } -private class DefaultPathInjectionSanitizer extends PathInjectionSanitizer { - DefaultPathInjectionSanitizer() { barrierNode(this, "path-injection") } +private class ExternalPathInjectionSanitizer extends PathInjectionSanitizer { + ExternalPathInjectionSanitizer() { barrierNode(this, "path-injection") } } /** Holds if `g` is a guard that checks for `..` components. */ diff --git a/java/ql/lib/semmle/code/java/security/RequestForgery.qll b/java/ql/lib/semmle/code/java/security/RequestForgery.qll index 690e4f9315b..489b45dffa2 100644 --- a/java/ql/lib/semmle/code/java/security/RequestForgery.qll +++ b/java/ql/lib/semmle/code/java/security/RequestForgery.qll @@ -118,8 +118,8 @@ private class ContainsUrlSanitizer extends RequestForgerySanitizer { } } -private class DefaultRequestForgerySanitizer extends RequestForgerySanitizer { - DefaultRequestForgerySanitizer() { barrierNode(this, "request-forgery") } +private class ExternalRequestForgerySanitizer extends RequestForgerySanitizer { + ExternalRequestForgerySanitizer() { barrierNode(this, "request-forgery") } } /** diff --git a/java/ql/lib/semmle/code/java/security/TrustBoundaryViolationQuery.qll b/java/ql/lib/semmle/code/java/security/TrustBoundaryViolationQuery.qll index 477aeb48b64..d234f3df20c 100644 --- a/java/ql/lib/semmle/code/java/security/TrustBoundaryViolationQuery.qll +++ b/java/ql/lib/semmle/code/java/security/TrustBoundaryViolationQuery.qll @@ -27,8 +27,8 @@ class TrustBoundaryViolationSink extends DataFlow::Node { */ abstract class TrustBoundaryValidationSanitizer extends DataFlow::Node { } -private class DefaultTrustBoundaryValidationSanitizer extends TrustBoundaryValidationSanitizer { - DefaultTrustBoundaryValidationSanitizer() { barrierNode(this, "trust-boundary-violation") } +private class ExternalTrustBoundaryValidationSanitizer extends TrustBoundaryValidationSanitizer { + ExternalTrustBoundaryValidationSanitizer() { barrierNode(this, "trust-boundary-violation") } } /** diff --git a/java/ql/lib/semmle/code/java/security/XSS.qll b/java/ql/lib/semmle/code/java/security/XSS.qll index c131f868f36..0d52d480ae7 100644 --- a/java/ql/lib/semmle/code/java/security/XSS.qll +++ b/java/ql/lib/semmle/code/java/security/XSS.qll @@ -54,8 +54,8 @@ private class DefaultXssSink extends XssSink { } } -private class DefaultXssSanitizer extends XssSanitizer { - DefaultXssSanitizer() { barrierNode(this, ["html-injection", "js-injection"]) } +private class ExternalXssSanitizer extends XssSanitizer { + ExternalXssSanitizer() { barrierNode(this, ["html-injection", "js-injection"]) } } /** A sanitizer that considers numeric and boolean typed data safe for writing to output. */ diff --git a/java/ql/lib/semmle/code/java/security/regexp/RegexInjection.qll b/java/ql/lib/semmle/code/java/security/regexp/RegexInjection.qll index d91b411b797..944ffca803a 100644 --- a/java/ql/lib/semmle/code/java/security/regexp/RegexInjection.qll +++ b/java/ql/lib/semmle/code/java/security/regexp/RegexInjection.qll @@ -21,8 +21,8 @@ private class DefaultRegexInjectionSink extends RegexInjectionSink { } } -private class DefaultRegexInjectionSanitizer extends RegexInjectionSanitizer { - DefaultRegexInjectionSanitizer() { barrierNode(this, "regex-use") } +private class ExternalRegexInjectionSanitizer extends RegexInjectionSanitizer { + ExternalRegexInjectionSanitizer() { barrierNode(this, "regex-use") } } /** From 766e908c79a5280164d678493da3b74e23b1e188 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan Date: Fri, 19 Dec 2025 08:13:19 +0000 Subject: [PATCH 28/63] Accept MaD sanitizers for existing sink kinds --- .../code/java/security/AndroidIntentRedirection.qll | 5 +++++ .../lib/semmle/code/java/security/CommandLineQuery.qll | 4 ++++ .../lib/semmle/code/java/security/FragmentInjection.qll | 9 +++++++++ .../semmle/code/java/security/FragmentInjectionQuery.qll | 2 ++ .../ql/lib/semmle/code/java/security/GroovyInjection.qll | 7 +++++++ 5 files changed, 27 insertions(+) diff --git a/java/ql/lib/semmle/code/java/security/AndroidIntentRedirection.qll b/java/ql/lib/semmle/code/java/security/AndroidIntentRedirection.qll index 08a86092afb..57dfcd29117 100644 --- a/java/ql/lib/semmle/code/java/security/AndroidIntentRedirection.qll +++ b/java/ql/lib/semmle/code/java/security/AndroidIntentRedirection.qll @@ -35,6 +35,11 @@ private class DefaultIntentRedirectionSink extends IntentRedirectionSink { DefaultIntentRedirectionSink() { sinkNode(this, "intent-redirection") } } +/** External sanitizers for Intent redirection vulnerabilities. */ +private class ExternalIntentRedirectionSanitizer extends IntentRedirectionSanitizer { + ExternalIntentRedirectionSanitizer() { barrierNode(this, "intent-redirection") } +} + /** * A default sanitizer for `Intent` nodes dominated by calls to `ComponentName.getPackageName` * and `ComponentName.getClassName`. These are used to check whether the origin or destination diff --git a/java/ql/lib/semmle/code/java/security/CommandLineQuery.qll b/java/ql/lib/semmle/code/java/security/CommandLineQuery.qll index b6b9d02e289..273c5360b81 100644 --- a/java/ql/lib/semmle/code/java/security/CommandLineQuery.qll +++ b/java/ql/lib/semmle/code/java/security/CommandLineQuery.qll @@ -37,6 +37,10 @@ private class DefaultCommandInjectionSink extends CommandInjectionSink { DefaultCommandInjectionSink() { sinkNode(this, "command-injection") } } +private class ExternalCommandInjectionSanitizer extends CommandInjectionSanitizer { + ExternalCommandInjectionSanitizer() { barrierNode(this, "command-injection") } +} + private class DefaultCommandInjectionSanitizer extends CommandInjectionSanitizer { DefaultCommandInjectionSanitizer() { this instanceof SimpleTypeSanitizer diff --git a/java/ql/lib/semmle/code/java/security/FragmentInjection.qll b/java/ql/lib/semmle/code/java/security/FragmentInjection.qll index 8cd5e32a5ec..6a01b2c8b18 100644 --- a/java/ql/lib/semmle/code/java/security/FragmentInjection.qll +++ b/java/ql/lib/semmle/code/java/security/FragmentInjection.qll @@ -49,6 +49,15 @@ private class DefaultFragmentInjectionSink extends FragmentInjectionSink { DefaultFragmentInjectionSink() { sinkNode(this, "fragment-injection") } } +/** + * A barrier for Fragment injection vulnerabilities. + */ +abstract class FragmentInjectionSanitizer extends DataFlow::Node { } + +private class ExternalFragmentInjectionSanitizer extends FragmentInjectionSanitizer { + ExternalFragmentInjectionSanitizer() { barrierNode(this, "fragment-injection") } +} + private class DefaultFragmentInjectionAdditionalTaintStep extends FragmentInjectionAdditionalTaintStep { override predicate step(DataFlow::Node n1, DataFlow::Node n2) { diff --git a/java/ql/lib/semmle/code/java/security/FragmentInjectionQuery.qll b/java/ql/lib/semmle/code/java/security/FragmentInjectionQuery.qll index 40636ffd8c2..1cb9f711b6f 100644 --- a/java/ql/lib/semmle/code/java/security/FragmentInjectionQuery.qll +++ b/java/ql/lib/semmle/code/java/security/FragmentInjectionQuery.qll @@ -14,6 +14,8 @@ module FragmentInjectionTaintConfig implements DataFlow::ConfigSig { predicate isSink(DataFlow::Node sink) { sink instanceof FragmentInjectionSink } + predicate isBarrier(DataFlow::Node node) { node instanceof FragmentInjectionSanitizer } + predicate isAdditionalFlowStep(DataFlow::Node n1, DataFlow::Node n2) { any(FragmentInjectionAdditionalTaintStep c).step(n1, n2) } diff --git a/java/ql/lib/semmle/code/java/security/GroovyInjection.qll b/java/ql/lib/semmle/code/java/security/GroovyInjection.qll index 45d66489777..d9a5db7b12d 100644 --- a/java/ql/lib/semmle/code/java/security/GroovyInjection.qll +++ b/java/ql/lib/semmle/code/java/security/GroovyInjection.qll @@ -26,6 +26,13 @@ private class DefaultGroovyInjectionSink extends GroovyInjectionSink { DefaultGroovyInjectionSink() { sinkNode(this, "groovy-injection") } } +/** A data flow sanitizer for Groovy expression injection vulnerabilities. */ +abstract class GroovyInjectionSanitizer extends DataFlow::ExprNode { } + +private class ExternalGroovyInjectionSanitizer extends GroovyInjectionSanitizer { + ExternalGroovyInjectionSanitizer() { barrierNode(this, "groovy-injection") } +} + /** A set of additional taint steps to consider when taint tracking Groovy related data flows. */ private class DefaultGroovyInjectionAdditionalTaintStep extends GroovyInjectionAdditionalTaintStep { override predicate step(DataFlow::Node node1, DataFlow::Node node2) { From caa0e90cd8763e79226fc44d25eda17bf8f6784e Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Mon, 8 Dec 2025 14:57:22 +0100 Subject: [PATCH 29/63] Rust: More type inference tests --- .../type-inference/dereference.rs | 12 + .../type-inference/type-inference.expected | 1113 +++++++++-------- 2 files changed, 591 insertions(+), 534 deletions(-) diff --git a/rust/ql/test/library-tests/type-inference/dereference.rs b/rust/ql/test/library-tests/type-inference/dereference.rs index 6b8d659eb3e..6e803d7eca6 100644 --- a/rust/ql/test/library-tests/type-inference/dereference.rs +++ b/rust/ql/test/library-tests/type-inference/dereference.rs @@ -1,5 +1,6 @@ /// This file contains tests for dereferencing with through the `Deref` trait. use std::ops::Deref; +use std::ops::DerefMut; struct MyIntPointer { value: i64, @@ -27,6 +28,13 @@ impl Deref for MySmartPointer { } } +impl DerefMut for MySmartPointer { + // MySmartPointer::deref_mut + fn deref_mut(&mut self) -> &mut T { + &mut self.value // $ fieldof=MySmartPointer + } +} + struct S(T); impl S { @@ -102,6 +110,10 @@ fn implicit_dereference() { let z = MySmartPointer { value: S(0i64) }; let z_ = z.foo(); // $ MISSING: target=foo type=z_:TRef.i64 + + let v = Vec::new(); // $ target=new $ MISSING: type=v:T.i32 + let mut x = MySmartPointer { value: v }; + x.push(0); // $ MISSING: target=push } mod implicit_deref_coercion_cycle { diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index d5b9e30f05e..19a00442499 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -275,198 +275,216 @@ inferCertainType | closure.rs:74:31:74:53 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | | closure.rs:74:41:74:41 | _ | | {EXTERNAL LOCATION} | i64 | | closure.rs:74:49:74:52 | true | | {EXTERNAL LOCATION} | bool | -| dereference.rs:12:14:12:18 | SelfParam | | {EXTERNAL LOCATION} | & | -| dereference.rs:12:14:12:18 | SelfParam | TRef | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:12:29:14:5 | { ... } | | {EXTERNAL LOCATION} | & | -| dereference.rs:12:29:14:5 | { ... } | TRef | {EXTERNAL LOCATION} | i64 | -| dereference.rs:13:9:13:19 | &... | | {EXTERNAL LOCATION} | & | -| dereference.rs:13:10:13:13 | self | | {EXTERNAL LOCATION} | & | -| dereference.rs:13:10:13:13 | self | TRef | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:25:14:25:18 | SelfParam | | {EXTERNAL LOCATION} | & | -| dereference.rs:25:14:25:18 | SelfParam | TRef | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:25:14:25:18 | SelfParam | TRef.T | dereference.rs:21:6:21:6 | T | -| dereference.rs:25:27:27:5 | { ... } | | {EXTERNAL LOCATION} | & | -| dereference.rs:25:27:27:5 | { ... } | TRef | dereference.rs:21:6:21:6 | T | -| dereference.rs:26:9:26:19 | &... | | {EXTERNAL LOCATION} | & | -| dereference.rs:26:10:26:13 | self | | {EXTERNAL LOCATION} | & | -| dereference.rs:26:10:26:13 | self | TRef | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:26:10:26:13 | self | TRef.T | dereference.rs:21:6:21:6 | T | -| dereference.rs:33:12:33:16 | SelfParam | | {EXTERNAL LOCATION} | & | -| dereference.rs:33:12:33:16 | SelfParam | TRef | dereference.rs:30:1:30:15 | S | -| dereference.rs:33:12:33:16 | SelfParam | TRef.T | dereference.rs:32:6:32:6 | T | -| dereference.rs:33:25:35:5 | { ... } | | {EXTERNAL LOCATION} | & | -| dereference.rs:33:25:35:5 | { ... } | TRef | dereference.rs:32:6:32:6 | T | -| dereference.rs:34:9:34:15 | &... | | {EXTERNAL LOCATION} | & | -| dereference.rs:34:10:34:13 | self | | {EXTERNAL LOCATION} | & | -| dereference.rs:34:10:34:13 | self | TRef | dereference.rs:30:1:30:15 | S | -| dereference.rs:34:10:34:13 | self | TRef.T | dereference.rs:32:6:32:6 | T | -| dereference.rs:38:39:50:1 | { ... } | | {EXTERNAL LOCATION} | () | -| dereference.rs:40:9:40:10 | a1 | | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:40:14:40:42 | MyIntPointer {...} | | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:40:36:40:40 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:41:15:41:16 | a1 | | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:44:9:44:10 | a2 | | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:44:14:44:42 | MyIntPointer {...} | | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:44:36:44:40 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:45:16:45:17 | a2 | | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:48:9:48:10 | a3 | | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:48:14:48:42 | MyIntPointer {...} | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:13:14:13:18 | SelfParam | | {EXTERNAL LOCATION} | & | +| dereference.rs:13:14:13:18 | SelfParam | TRef | dereference.rs:5:1:7:1 | MyIntPointer | +| dereference.rs:13:29:15:5 | { ... } | | {EXTERNAL LOCATION} | & | +| dereference.rs:13:29:15:5 | { ... } | TRef | {EXTERNAL LOCATION} | i64 | +| dereference.rs:14:9:14:19 | &... | | {EXTERNAL LOCATION} | & | +| dereference.rs:14:10:14:13 | self | | {EXTERNAL LOCATION} | & | +| dereference.rs:14:10:14:13 | self | TRef | dereference.rs:5:1:7:1 | MyIntPointer | +| dereference.rs:26:14:26:18 | SelfParam | | {EXTERNAL LOCATION} | & | +| dereference.rs:26:14:26:18 | SelfParam | TRef | dereference.rs:18:1:20:1 | MySmartPointer | +| dereference.rs:26:14:26:18 | SelfParam | TRef.T | dereference.rs:22:6:22:6 | T | +| dereference.rs:26:27:28:5 | { ... } | | {EXTERNAL LOCATION} | & | +| dereference.rs:26:27:28:5 | { ... } | TRef | dereference.rs:22:6:22:6 | T | +| dereference.rs:27:9:27:19 | &... | | {EXTERNAL LOCATION} | & | +| dereference.rs:27:10:27:13 | self | | {EXTERNAL LOCATION} | & | +| dereference.rs:27:10:27:13 | self | TRef | dereference.rs:18:1:20:1 | MySmartPointer | +| dereference.rs:27:10:27:13 | self | TRef.T | dereference.rs:22:6:22:6 | T | +| dereference.rs:33:18:33:26 | SelfParam | | {EXTERNAL LOCATION} | &mut | +| dereference.rs:33:18:33:26 | SelfParam | TRefMut | dereference.rs:18:1:20:1 | MySmartPointer | +| dereference.rs:33:18:33:26 | SelfParam | TRefMut.T | dereference.rs:31:6:31:6 | T | +| dereference.rs:33:39:35:5 | { ... } | | {EXTERNAL LOCATION} | &mut | +| dereference.rs:33:39:35:5 | { ... } | TRefMut | dereference.rs:31:6:31:6 | T | +| dereference.rs:34:9:34:23 | &mut ... | | {EXTERNAL LOCATION} | &mut | +| dereference.rs:34:14:34:17 | self | | {EXTERNAL LOCATION} | &mut | +| dereference.rs:34:14:34:17 | self | TRefMut | dereference.rs:18:1:20:1 | MySmartPointer | +| dereference.rs:34:14:34:17 | self | TRefMut.T | dereference.rs:31:6:31:6 | T | +| dereference.rs:41:12:41:16 | SelfParam | | {EXTERNAL LOCATION} | & | +| dereference.rs:41:12:41:16 | SelfParam | TRef | dereference.rs:38:1:38:15 | S | +| dereference.rs:41:12:41:16 | SelfParam | TRef.T | dereference.rs:40:6:40:6 | T | +| dereference.rs:41:25:43:5 | { ... } | | {EXTERNAL LOCATION} | & | +| dereference.rs:41:25:43:5 | { ... } | TRef | dereference.rs:40:6:40:6 | T | +| dereference.rs:42:9:42:15 | &... | | {EXTERNAL LOCATION} | & | +| dereference.rs:42:10:42:13 | self | | {EXTERNAL LOCATION} | & | +| dereference.rs:42:10:42:13 | self | TRef | dereference.rs:38:1:38:15 | S | +| dereference.rs:42:10:42:13 | self | TRef.T | dereference.rs:40:6:40:6 | T | +| dereference.rs:46:39:58:1 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:48:9:48:10 | a1 | | dereference.rs:5:1:7:1 | MyIntPointer | +| dereference.rs:48:14:48:42 | MyIntPointer {...} | | dereference.rs:5:1:7:1 | MyIntPointer | | dereference.rs:48:36:48:40 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:49:17:49:18 | a3 | | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:52:39:64:1 | { ... } | | {EXTERNAL LOCATION} | () | -| dereference.rs:54:9:54:10 | c1 | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:54:14:54:42 | MySmartPointer {...} | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:54:38:54:40 | 'a' | | {EXTERNAL LOCATION} | char | -| dereference.rs:55:15:55:16 | c1 | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:58:9:58:10 | c2 | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:58:14:58:42 | MySmartPointer {...} | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:58:38:58:40 | 'a' | | {EXTERNAL LOCATION} | char | -| dereference.rs:59:16:59:17 | c2 | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:62:9:62:10 | c3 | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:62:14:62:44 | MySmartPointer {...} | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:62:38:62:42 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:63:17:63:18 | c3 | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:66:31:78:1 | { ... } | | {EXTERNAL LOCATION} | () | -| dereference.rs:68:9:68:10 | e1 | | {EXTERNAL LOCATION} | & | -| dereference.rs:68:14:68:17 | &'a' | | {EXTERNAL LOCATION} | & | -| dereference.rs:68:15:68:17 | 'a' | | {EXTERNAL LOCATION} | char | -| dereference.rs:69:15:69:16 | e1 | | {EXTERNAL LOCATION} | & | -| dereference.rs:72:9:72:10 | e2 | | {EXTERNAL LOCATION} | & | -| dereference.rs:72:14:72:17 | &'a' | | {EXTERNAL LOCATION} | & | -| dereference.rs:72:15:72:17 | 'a' | | {EXTERNAL LOCATION} | char | -| dereference.rs:73:16:73:17 | e2 | | {EXTERNAL LOCATION} | & | -| dereference.rs:76:9:76:10 | e3 | | {EXTERNAL LOCATION} | & | -| dereference.rs:76:14:76:19 | &34i64 | | {EXTERNAL LOCATION} | & | -| dereference.rs:76:15:76:19 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:77:17:77:18 | e3 | | {EXTERNAL LOCATION} | & | -| dereference.rs:80:31:92:1 | { ... } | | {EXTERNAL LOCATION} | () | -| dereference.rs:82:9:82:10 | g1 | | {EXTERNAL LOCATION} | Box | -| dereference.rs:82:9:82:10 | g1 | A | {EXTERNAL LOCATION} | Global | -| dereference.rs:82:9:82:10 | g1 | T | {EXTERNAL LOCATION} | char | -| dereference.rs:82:25:82:37 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| dereference.rs:82:25:82:37 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| dereference.rs:82:34:82:36 | 'a' | | {EXTERNAL LOCATION} | char | -| dereference.rs:83:15:83:16 | g1 | | {EXTERNAL LOCATION} | Box | -| dereference.rs:83:15:83:16 | g1 | A | {EXTERNAL LOCATION} | Global | -| dereference.rs:83:15:83:16 | g1 | T | {EXTERNAL LOCATION} | char | -| dereference.rs:86:9:86:10 | g2 | | {EXTERNAL LOCATION} | Box | -| dereference.rs:86:9:86:10 | g2 | A | {EXTERNAL LOCATION} | Global | -| dereference.rs:86:9:86:10 | g2 | T | {EXTERNAL LOCATION} | char | -| dereference.rs:86:25:86:37 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| dereference.rs:86:25:86:37 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| dereference.rs:86:34:86:36 | 'a' | | {EXTERNAL LOCATION} | char | -| dereference.rs:87:16:87:17 | g2 | | {EXTERNAL LOCATION} | Box | -| dereference.rs:87:16:87:17 | g2 | A | {EXTERNAL LOCATION} | Global | -| dereference.rs:87:16:87:17 | g2 | T | {EXTERNAL LOCATION} | char | -| dereference.rs:90:9:90:10 | g3 | | {EXTERNAL LOCATION} | Box | -| dereference.rs:90:9:90:10 | g3 | A | {EXTERNAL LOCATION} | Global | -| dereference.rs:90:9:90:10 | g3 | T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:90:24:90:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| dereference.rs:90:24:90:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| dereference.rs:90:33:90:37 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:91:17:91:18 | g3 | | {EXTERNAL LOCATION} | Box | -| dereference.rs:91:17:91:18 | g3 | A | {EXTERNAL LOCATION} | Global | -| dereference.rs:91:17:91:18 | g3 | T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:94:27:105:1 | { ... } | | {EXTERNAL LOCATION} | () | -| dereference.rs:96:9:96:9 | x | | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:96:13:96:41 | MyIntPointer {...} | | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:96:35:96:39 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:97:14:97:14 | x | | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:100:9:100:9 | x | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:100:13:100:43 | MySmartPointer {...} | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:100:37:100:41 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:101:14:101:14 | x | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:103:9:103:9 | z | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:103:13:103:45 | MySmartPointer {...} | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:103:39:103:42 | 0i64 | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:104:14:104:14 | z | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:131:19:139:5 | { ... } | | {EXTERNAL LOCATION} | () | -| dereference.rs:132:17:132:26 | key_to_key | | {EXTERNAL LOCATION} | HashMap | -| dereference.rs:132:17:132:26 | key_to_key | K | {EXTERNAL LOCATION} | & | -| dereference.rs:132:17:132:26 | key_to_key | K.TRef | dereference.rs:110:5:111:21 | Key | -| dereference.rs:132:17:132:26 | key_to_key | S | {EXTERNAL LOCATION} | RandomState | -| dereference.rs:132:17:132:26 | key_to_key | V | {EXTERNAL LOCATION} | & | -| dereference.rs:132:17:132:26 | key_to_key | V.TRef | dereference.rs:110:5:111:21 | Key | -| dereference.rs:132:30:132:57 | ...::new(...) | | {EXTERNAL LOCATION} | HashMap | -| dereference.rs:132:30:132:57 | ...::new(...) | K | {EXTERNAL LOCATION} | & | -| dereference.rs:132:30:132:57 | ...::new(...) | K.TRef | dereference.rs:110:5:111:21 | Key | -| dereference.rs:132:30:132:57 | ...::new(...) | S | {EXTERNAL LOCATION} | RandomState | -| dereference.rs:132:30:132:57 | ...::new(...) | V | {EXTERNAL LOCATION} | & | -| dereference.rs:132:30:132:57 | ...::new(...) | V.TRef | dereference.rs:110:5:111:21 | Key | -| dereference.rs:133:17:133:19 | key | | {EXTERNAL LOCATION} | & | -| dereference.rs:133:23:133:29 | &... | | {EXTERNAL LOCATION} | & | -| dereference.rs:133:24:133:29 | Key {...} | | dereference.rs:110:5:111:21 | Key | -| dereference.rs:134:9:137:9 | if ... {...} | | {EXTERNAL LOCATION} | () | -| dereference.rs:134:32:134:41 | key_to_key | | {EXTERNAL LOCATION} | HashMap | -| dereference.rs:134:32:134:41 | key_to_key | K | {EXTERNAL LOCATION} | & | -| dereference.rs:134:32:134:41 | key_to_key | K.TRef | dereference.rs:110:5:111:21 | Key | -| dereference.rs:134:32:134:41 | key_to_key | S | {EXTERNAL LOCATION} | RandomState | -| dereference.rs:134:32:134:41 | key_to_key | V | {EXTERNAL LOCATION} | & | -| dereference.rs:134:32:134:41 | key_to_key | V.TRef | dereference.rs:110:5:111:21 | Key | -| dereference.rs:134:47:134:49 | key | | {EXTERNAL LOCATION} | & | -| dereference.rs:134:52:137:9 | { ... } | | {EXTERNAL LOCATION} | () | -| dereference.rs:136:13:136:15 | key | | {EXTERNAL LOCATION} | & | -| dereference.rs:138:9:138:18 | key_to_key | | {EXTERNAL LOCATION} | HashMap | -| dereference.rs:138:9:138:18 | key_to_key | K | {EXTERNAL LOCATION} | & | -| dereference.rs:138:9:138:18 | key_to_key | K.TRef | dereference.rs:110:5:111:21 | Key | -| dereference.rs:138:9:138:18 | key_to_key | S | {EXTERNAL LOCATION} | RandomState | -| dereference.rs:138:9:138:18 | key_to_key | V | {EXTERNAL LOCATION} | & | -| dereference.rs:138:9:138:18 | key_to_key | V.TRef | dereference.rs:110:5:111:21 | Key | -| dereference.rs:138:27:138:29 | key | | {EXTERNAL LOCATION} | & | -| dereference.rs:138:32:138:34 | key | | {EXTERNAL LOCATION} | & | -| dereference.rs:144:16:144:19 | SelfParam | | dereference.rs:143:5:145:5 | Self [trait MyTrait1] | -| dereference.rs:151:16:151:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| dereference.rs:151:16:151:19 | SelfParam | TRef | dereference.rs:147:5:147:13 | S | -| dereference.rs:151:27:153:9 | { ... } | | dereference.rs:147:5:147:13 | S | -| dereference.rs:158:16:158:19 | SelfParam | | {EXTERNAL LOCATION} | &mut | -| dereference.rs:158:16:158:19 | SelfParam | TRefMut | dereference.rs:147:5:147:13 | S | -| dereference.rs:158:29:160:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:164:16:164:19 | SelfParam | | dereference.rs:163:5:165:5 | Self [trait MyTrait2] | -| dereference.rs:164:22:164:24 | arg | | dereference.rs:163:20:163:21 | T1 | -| dereference.rs:169:16:169:19 | SelfParam | | dereference.rs:147:5:147:13 | S | -| dereference.rs:169:22:169:24 | arg | | {EXTERNAL LOCATION} | & | -| dereference.rs:169:22:169:24 | arg | TRef | dereference.rs:147:5:147:13 | S | -| dereference.rs:169:36:171:9 | { ... } | | dereference.rs:147:5:147:13 | S | -| dereference.rs:176:16:176:19 | SelfParam | | dereference.rs:147:5:147:13 | S | -| dereference.rs:176:22:176:24 | arg | | {EXTERNAL LOCATION} | &mut | -| dereference.rs:176:22:176:24 | arg | TRefMut | dereference.rs:147:5:147:13 | S | -| dereference.rs:176:42:178:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:181:19:188:5 | { ... } | | {EXTERNAL LOCATION} | () | -| dereference.rs:182:17:182:20 | (...) | | {EXTERNAL LOCATION} | & | -| dereference.rs:182:18:182:19 | &S | | {EXTERNAL LOCATION} | & | -| dereference.rs:184:17:184:24 | (...) | | {EXTERNAL LOCATION} | &mut | -| dereference.rs:184:18:184:23 | &mut S | | {EXTERNAL LOCATION} | &mut | -| dereference.rs:186:23:186:24 | &S | | {EXTERNAL LOCATION} | & | -| dereference.rs:187:23:187:28 | &mut S | | {EXTERNAL LOCATION} | &mut | -| dereference.rs:196:16:196:20 | SelfParam | | {EXTERNAL LOCATION} | & | -| dereference.rs:196:16:196:20 | SelfParam | TRef | dereference.rs:195:5:197:5 | Self [trait Bar] | -| dereference.rs:201:16:201:24 | SelfParam | | {EXTERNAL LOCATION} | &mut | -| dereference.rs:201:16:201:24 | SelfParam | TRefMut | dereference.rs:193:5:193:17 | Foo | -| dereference.rs:201:27:203:9 | { ... } | | {EXTERNAL LOCATION} | () | -| dereference.rs:202:22:202:38 | "In struct impl!\\n" | | {EXTERNAL LOCATION} | & | -| dereference.rs:202:22:202:38 | "In struct impl!\\n" | TRef | {EXTERNAL LOCATION} | str | -| dereference.rs:202:22:202:38 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| dereference.rs:202:22:202:38 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:49:15:49:16 | a1 | | dereference.rs:5:1:7:1 | MyIntPointer | +| dereference.rs:52:9:52:10 | a2 | | dereference.rs:5:1:7:1 | MyIntPointer | +| dereference.rs:52:14:52:42 | MyIntPointer {...} | | dereference.rs:5:1:7:1 | MyIntPointer | +| dereference.rs:52:36:52:40 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:53:16:53:17 | a2 | | dereference.rs:5:1:7:1 | MyIntPointer | +| dereference.rs:56:9:56:10 | a3 | | dereference.rs:5:1:7:1 | MyIntPointer | +| dereference.rs:56:14:56:42 | MyIntPointer {...} | | dereference.rs:5:1:7:1 | MyIntPointer | +| dereference.rs:56:36:56:40 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:57:17:57:18 | a3 | | dereference.rs:5:1:7:1 | MyIntPointer | +| dereference.rs:60:39:72:1 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:62:9:62:10 | c1 | | dereference.rs:18:1:20:1 | MySmartPointer | +| dereference.rs:62:14:62:42 | MySmartPointer {...} | | dereference.rs:18:1:20:1 | MySmartPointer | +| dereference.rs:62:38:62:40 | 'a' | | {EXTERNAL LOCATION} | char | +| dereference.rs:63:15:63:16 | c1 | | dereference.rs:18:1:20:1 | MySmartPointer | +| dereference.rs:66:9:66:10 | c2 | | dereference.rs:18:1:20:1 | MySmartPointer | +| dereference.rs:66:14:66:42 | MySmartPointer {...} | | dereference.rs:18:1:20:1 | MySmartPointer | +| dereference.rs:66:38:66:40 | 'a' | | {EXTERNAL LOCATION} | char | +| dereference.rs:67:16:67:17 | c2 | | dereference.rs:18:1:20:1 | MySmartPointer | +| dereference.rs:70:9:70:10 | c3 | | dereference.rs:18:1:20:1 | MySmartPointer | +| dereference.rs:70:14:70:44 | MySmartPointer {...} | | dereference.rs:18:1:20:1 | MySmartPointer | +| dereference.rs:70:38:70:42 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:71:17:71:18 | c3 | | dereference.rs:18:1:20:1 | MySmartPointer | +| dereference.rs:74:31:86:1 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:76:9:76:10 | e1 | | {EXTERNAL LOCATION} | & | +| dereference.rs:76:14:76:17 | &'a' | | {EXTERNAL LOCATION} | & | +| dereference.rs:76:15:76:17 | 'a' | | {EXTERNAL LOCATION} | char | +| dereference.rs:77:15:77:16 | e1 | | {EXTERNAL LOCATION} | & | +| dereference.rs:80:9:80:10 | e2 | | {EXTERNAL LOCATION} | & | +| dereference.rs:80:14:80:17 | &'a' | | {EXTERNAL LOCATION} | & | +| dereference.rs:80:15:80:17 | 'a' | | {EXTERNAL LOCATION} | char | +| dereference.rs:81:16:81:17 | e2 | | {EXTERNAL LOCATION} | & | +| dereference.rs:84:9:84:10 | e3 | | {EXTERNAL LOCATION} | & | +| dereference.rs:84:14:84:19 | &34i64 | | {EXTERNAL LOCATION} | & | +| dereference.rs:84:15:84:19 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:85:17:85:18 | e3 | | {EXTERNAL LOCATION} | & | +| dereference.rs:88:31:100:1 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:90:9:90:10 | g1 | | {EXTERNAL LOCATION} | Box | +| dereference.rs:90:9:90:10 | g1 | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:90:9:90:10 | g1 | T | {EXTERNAL LOCATION} | char | +| dereference.rs:90:25:90:37 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| dereference.rs:90:25:90:37 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:90:34:90:36 | 'a' | | {EXTERNAL LOCATION} | char | +| dereference.rs:91:15:91:16 | g1 | | {EXTERNAL LOCATION} | Box | +| dereference.rs:91:15:91:16 | g1 | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:91:15:91:16 | g1 | T | {EXTERNAL LOCATION} | char | +| dereference.rs:94:9:94:10 | g2 | | {EXTERNAL LOCATION} | Box | +| dereference.rs:94:9:94:10 | g2 | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:94:9:94:10 | g2 | T | {EXTERNAL LOCATION} | char | +| dereference.rs:94:25:94:37 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| dereference.rs:94:25:94:37 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:94:34:94:36 | 'a' | | {EXTERNAL LOCATION} | char | +| dereference.rs:95:16:95:17 | g2 | | {EXTERNAL LOCATION} | Box | +| dereference.rs:95:16:95:17 | g2 | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:95:16:95:17 | g2 | T | {EXTERNAL LOCATION} | char | +| dereference.rs:98:9:98:10 | g3 | | {EXTERNAL LOCATION} | Box | +| dereference.rs:98:9:98:10 | g3 | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:98:9:98:10 | g3 | T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:98:24:98:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| dereference.rs:98:24:98:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:98:33:98:37 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:99:17:99:18 | g3 | | {EXTERNAL LOCATION} | Box | +| dereference.rs:99:17:99:18 | g3 | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:99:17:99:18 | g3 | T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:102:27:117:1 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:104:9:104:9 | x | | dereference.rs:5:1:7:1 | MyIntPointer | +| dereference.rs:104:13:104:41 | MyIntPointer {...} | | dereference.rs:5:1:7:1 | MyIntPointer | +| dereference.rs:104:35:104:39 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:105:14:105:14 | x | | dereference.rs:5:1:7:1 | MyIntPointer | +| dereference.rs:108:9:108:9 | x | | dereference.rs:18:1:20:1 | MySmartPointer | +| dereference.rs:108:13:108:43 | MySmartPointer {...} | | dereference.rs:18:1:20:1 | MySmartPointer | +| dereference.rs:108:37:108:41 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:109:14:109:14 | x | | dereference.rs:18:1:20:1 | MySmartPointer | +| dereference.rs:111:9:111:9 | z | | dereference.rs:18:1:20:1 | MySmartPointer | +| dereference.rs:111:13:111:45 | MySmartPointer {...} | | dereference.rs:18:1:20:1 | MySmartPointer | +| dereference.rs:111:39:111:42 | 0i64 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:112:14:112:14 | z | | dereference.rs:18:1:20:1 | MySmartPointer | +| dereference.rs:114:9:114:9 | v | | {EXTERNAL LOCATION} | Vec | +| dereference.rs:114:9:114:9 | v | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:114:13:114:22 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | +| dereference.rs:114:13:114:22 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:115:13:115:13 | x | | dereference.rs:18:1:20:1 | MySmartPointer | +| dereference.rs:115:17:115:43 | MySmartPointer {...} | | dereference.rs:18:1:20:1 | MySmartPointer | +| dereference.rs:115:41:115:41 | v | | {EXTERNAL LOCATION} | Vec | +| dereference.rs:115:41:115:41 | v | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:116:5:116:5 | x | | dereference.rs:18:1:20:1 | MySmartPointer | +| dereference.rs:143:19:151:5 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:144:17:144:26 | key_to_key | | {EXTERNAL LOCATION} | HashMap | +| dereference.rs:144:17:144:26 | key_to_key | K | {EXTERNAL LOCATION} | & | +| dereference.rs:144:17:144:26 | key_to_key | K.TRef | dereference.rs:122:5:123:21 | Key | +| dereference.rs:144:17:144:26 | key_to_key | S | {EXTERNAL LOCATION} | RandomState | +| dereference.rs:144:17:144:26 | key_to_key | V | {EXTERNAL LOCATION} | & | +| dereference.rs:144:17:144:26 | key_to_key | V.TRef | dereference.rs:122:5:123:21 | Key | +| dereference.rs:144:30:144:57 | ...::new(...) | | {EXTERNAL LOCATION} | HashMap | +| dereference.rs:144:30:144:57 | ...::new(...) | K | {EXTERNAL LOCATION} | & | +| dereference.rs:144:30:144:57 | ...::new(...) | K.TRef | dereference.rs:122:5:123:21 | Key | +| dereference.rs:144:30:144:57 | ...::new(...) | S | {EXTERNAL LOCATION} | RandomState | +| dereference.rs:144:30:144:57 | ...::new(...) | V | {EXTERNAL LOCATION} | & | +| dereference.rs:144:30:144:57 | ...::new(...) | V.TRef | dereference.rs:122:5:123:21 | Key | +| dereference.rs:145:17:145:19 | key | | {EXTERNAL LOCATION} | & | +| dereference.rs:145:23:145:29 | &... | | {EXTERNAL LOCATION} | & | +| dereference.rs:145:24:145:29 | Key {...} | | dereference.rs:122:5:123:21 | Key | +| dereference.rs:146:9:149:9 | if ... {...} | | {EXTERNAL LOCATION} | () | +| dereference.rs:146:32:146:41 | key_to_key | | {EXTERNAL LOCATION} | HashMap | +| dereference.rs:146:32:146:41 | key_to_key | K | {EXTERNAL LOCATION} | & | +| dereference.rs:146:32:146:41 | key_to_key | K.TRef | dereference.rs:122:5:123:21 | Key | +| dereference.rs:146:32:146:41 | key_to_key | S | {EXTERNAL LOCATION} | RandomState | +| dereference.rs:146:32:146:41 | key_to_key | V | {EXTERNAL LOCATION} | & | +| dereference.rs:146:32:146:41 | key_to_key | V.TRef | dereference.rs:122:5:123:21 | Key | +| dereference.rs:146:47:146:49 | key | | {EXTERNAL LOCATION} | & | +| dereference.rs:146:52:149:9 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:148:13:148:15 | key | | {EXTERNAL LOCATION} | & | +| dereference.rs:150:9:150:18 | key_to_key | | {EXTERNAL LOCATION} | HashMap | +| dereference.rs:150:9:150:18 | key_to_key | K | {EXTERNAL LOCATION} | & | +| dereference.rs:150:9:150:18 | key_to_key | K.TRef | dereference.rs:122:5:123:21 | Key | +| dereference.rs:150:9:150:18 | key_to_key | S | {EXTERNAL LOCATION} | RandomState | +| dereference.rs:150:9:150:18 | key_to_key | V | {EXTERNAL LOCATION} | & | +| dereference.rs:150:9:150:18 | key_to_key | V.TRef | dereference.rs:122:5:123:21 | Key | +| dereference.rs:150:27:150:29 | key | | {EXTERNAL LOCATION} | & | +| dereference.rs:150:32:150:34 | key | | {EXTERNAL LOCATION} | & | +| dereference.rs:156:16:156:19 | SelfParam | | dereference.rs:155:5:157:5 | Self [trait MyTrait1] | +| dereference.rs:163:16:163:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| dereference.rs:163:16:163:19 | SelfParam | TRef | dereference.rs:159:5:159:13 | S | +| dereference.rs:163:27:165:9 | { ... } | | dereference.rs:159:5:159:13 | S | +| dereference.rs:170:16:170:19 | SelfParam | | {EXTERNAL LOCATION} | &mut | +| dereference.rs:170:16:170:19 | SelfParam | TRefMut | dereference.rs:159:5:159:13 | S | +| dereference.rs:170:29:172:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:176:16:176:19 | SelfParam | | dereference.rs:175:5:177:5 | Self [trait MyTrait2] | +| dereference.rs:176:22:176:24 | arg | | dereference.rs:175:20:175:21 | T1 | +| dereference.rs:181:16:181:19 | SelfParam | | dereference.rs:159:5:159:13 | S | +| dereference.rs:181:22:181:24 | arg | | {EXTERNAL LOCATION} | & | +| dereference.rs:181:22:181:24 | arg | TRef | dereference.rs:159:5:159:13 | S | +| dereference.rs:181:36:183:9 | { ... } | | dereference.rs:159:5:159:13 | S | +| dereference.rs:188:16:188:19 | SelfParam | | dereference.rs:159:5:159:13 | S | +| dereference.rs:188:22:188:24 | arg | | {EXTERNAL LOCATION} | &mut | +| dereference.rs:188:22:188:24 | arg | TRefMut | dereference.rs:159:5:159:13 | S | +| dereference.rs:188:42:190:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:193:19:200:5 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:194:17:194:20 | (...) | | {EXTERNAL LOCATION} | & | +| dereference.rs:194:18:194:19 | &S | | {EXTERNAL LOCATION} | & | +| dereference.rs:196:17:196:24 | (...) | | {EXTERNAL LOCATION} | &mut | +| dereference.rs:196:18:196:23 | &mut S | | {EXTERNAL LOCATION} | &mut | +| dereference.rs:198:23:198:24 | &S | | {EXTERNAL LOCATION} | & | +| dereference.rs:199:23:199:28 | &mut S | | {EXTERNAL LOCATION} | &mut | | dereference.rs:208:16:208:20 | SelfParam | | {EXTERNAL LOCATION} | & | -| dereference.rs:208:16:208:20 | SelfParam | TRef | dereference.rs:193:5:193:17 | Foo | -| dereference.rs:208:23:210:9 | { ... } | | {EXTERNAL LOCATION} | () | -| dereference.rs:209:22:209:37 | "In trait impl!\\n" | | {EXTERNAL LOCATION} | & | -| dereference.rs:209:22:209:37 | "In trait impl!\\n" | TRef | {EXTERNAL LOCATION} | str | -| dereference.rs:209:22:209:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| dereference.rs:209:22:209:37 | { ... } | | {EXTERNAL LOCATION} | () | -| dereference.rs:213:19:216:5 | { ... } | | {EXTERNAL LOCATION} | () | -| dereference.rs:214:17:214:17 | f | | dereference.rs:193:5:193:17 | Foo | -| dereference.rs:214:21:214:26 | Foo {...} | | dereference.rs:193:5:193:17 | Foo | -| dereference.rs:215:9:215:9 | f | | dereference.rs:193:5:193:17 | Foo | -| dereference.rs:219:15:228:1 | { ... } | | {EXTERNAL LOCATION} | () | -| dereference.rs:220:5:220:38 | explicit_monomorphic_dereference(...) | | {EXTERNAL LOCATION} | () | -| dereference.rs:221:5:221:38 | explicit_polymorphic_dereference(...) | | {EXTERNAL LOCATION} | () | -| dereference.rs:222:5:222:30 | explicit_ref_dereference(...) | | {EXTERNAL LOCATION} | () | -| dereference.rs:223:5:223:30 | explicit_box_dereference(...) | | {EXTERNAL LOCATION} | () | -| dereference.rs:224:5:224:26 | implicit_dereference(...) | | {EXTERNAL LOCATION} | () | -| dereference.rs:225:5:225:41 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| dereference.rs:226:5:226:26 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| dereference.rs:227:5:227:34 | ...::main(...) | | {EXTERNAL LOCATION} | () | +| dereference.rs:208:16:208:20 | SelfParam | TRef | dereference.rs:207:5:209:5 | Self [trait Bar] | +| dereference.rs:213:16:213:24 | SelfParam | | {EXTERNAL LOCATION} | &mut | +| dereference.rs:213:16:213:24 | SelfParam | TRefMut | dereference.rs:205:5:205:17 | Foo | +| dereference.rs:213:27:215:9 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:214:22:214:38 | "In struct impl!\\n" | | {EXTERNAL LOCATION} | & | +| dereference.rs:214:22:214:38 | "In struct impl!\\n" | TRef | {EXTERNAL LOCATION} | str | +| dereference.rs:214:22:214:38 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| dereference.rs:214:22:214:38 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:220:16:220:20 | SelfParam | | {EXTERNAL LOCATION} | & | +| dereference.rs:220:16:220:20 | SelfParam | TRef | dereference.rs:205:5:205:17 | Foo | +| dereference.rs:220:23:222:9 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:221:22:221:37 | "In trait impl!\\n" | | {EXTERNAL LOCATION} | & | +| dereference.rs:221:22:221:37 | "In trait impl!\\n" | TRef | {EXTERNAL LOCATION} | str | +| dereference.rs:221:22:221:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| dereference.rs:221:22:221:37 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:225:19:228:5 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:226:17:226:17 | f | | dereference.rs:205:5:205:17 | Foo | +| dereference.rs:226:21:226:26 | Foo {...} | | dereference.rs:205:5:205:17 | Foo | +| dereference.rs:227:9:227:9 | f | | dereference.rs:205:5:205:17 | Foo | +| dereference.rs:231:15:240:1 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:232:5:232:38 | explicit_monomorphic_dereference(...) | | {EXTERNAL LOCATION} | () | +| dereference.rs:233:5:233:38 | explicit_polymorphic_dereference(...) | | {EXTERNAL LOCATION} | () | +| dereference.rs:234:5:234:30 | explicit_ref_dereference(...) | | {EXTERNAL LOCATION} | () | +| dereference.rs:235:5:235:30 | explicit_box_dereference(...) | | {EXTERNAL LOCATION} | () | +| dereference.rs:236:5:236:26 | implicit_dereference(...) | | {EXTERNAL LOCATION} | () | +| dereference.rs:237:5:237:41 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| dereference.rs:238:5:238:26 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| dereference.rs:239:5:239:34 | ...::main(...) | | {EXTERNAL LOCATION} | () | | dyn_type.rs:7:10:7:14 | SelfParam | | {EXTERNAL LOCATION} | & | | dyn_type.rs:7:10:7:14 | SelfParam | TRef | dyn_type.rs:5:1:8:1 | Self [trait MyTrait1] | | dyn_type.rs:12:12:12:16 | SelfParam | | {EXTERNAL LOCATION} | & | @@ -5057,352 +5075,379 @@ inferType | closure.rs:74:41:74:41 | _ | | {EXTERNAL LOCATION} | i64 | | closure.rs:74:49:74:52 | true | | {EXTERNAL LOCATION} | bool | | closure.rs:74:56:74:56 | 3 | | {EXTERNAL LOCATION} | i32 | -| dereference.rs:12:14:12:18 | SelfParam | | {EXTERNAL LOCATION} | & | -| dereference.rs:12:14:12:18 | SelfParam | TRef | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:12:29:14:5 | { ... } | | {EXTERNAL LOCATION} | & | -| dereference.rs:12:29:14:5 | { ... } | TRef | {EXTERNAL LOCATION} | i64 | -| dereference.rs:13:9:13:19 | &... | | {EXTERNAL LOCATION} | & | -| dereference.rs:13:9:13:19 | &... | TRef | {EXTERNAL LOCATION} | i64 | -| dereference.rs:13:10:13:13 | self | | {EXTERNAL LOCATION} | & | -| dereference.rs:13:10:13:13 | self | TRef | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:13:10:13:19 | self.value | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:25:14:25:18 | SelfParam | | {EXTERNAL LOCATION} | & | -| dereference.rs:25:14:25:18 | SelfParam | TRef | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:25:14:25:18 | SelfParam | TRef.T | dereference.rs:21:6:21:6 | T | -| dereference.rs:25:27:27:5 | { ... } | | {EXTERNAL LOCATION} | & | -| dereference.rs:25:27:27:5 | { ... } | TRef | dereference.rs:21:6:21:6 | T | -| dereference.rs:26:9:26:19 | &... | | {EXTERNAL LOCATION} | & | -| dereference.rs:26:9:26:19 | &... | TRef | dereference.rs:21:6:21:6 | T | -| dereference.rs:26:10:26:13 | self | | {EXTERNAL LOCATION} | & | -| dereference.rs:26:10:26:13 | self | TRef | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:26:10:26:13 | self | TRef.T | dereference.rs:21:6:21:6 | T | -| dereference.rs:26:10:26:19 | self.value | | dereference.rs:21:6:21:6 | T | -| dereference.rs:33:12:33:16 | SelfParam | | {EXTERNAL LOCATION} | & | -| dereference.rs:33:12:33:16 | SelfParam | TRef | dereference.rs:30:1:30:15 | S | -| dereference.rs:33:12:33:16 | SelfParam | TRef.T | dereference.rs:32:6:32:6 | T | -| dereference.rs:33:25:35:5 | { ... } | | {EXTERNAL LOCATION} | & | -| dereference.rs:33:25:35:5 | { ... } | TRef | dereference.rs:32:6:32:6 | T | -| dereference.rs:34:9:34:15 | &... | | {EXTERNAL LOCATION} | & | -| dereference.rs:34:9:34:15 | &... | TRef | dereference.rs:32:6:32:6 | T | -| dereference.rs:34:10:34:13 | self | | {EXTERNAL LOCATION} | & | -| dereference.rs:34:10:34:13 | self | TRef | dereference.rs:30:1:30:15 | S | -| dereference.rs:34:10:34:13 | self | TRef.T | dereference.rs:32:6:32:6 | T | -| dereference.rs:34:10:34:15 | self.0 | | dereference.rs:32:6:32:6 | T | -| dereference.rs:38:39:50:1 | { ... } | | {EXTERNAL LOCATION} | () | -| dereference.rs:40:9:40:10 | a1 | | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:40:14:40:42 | MyIntPointer {...} | | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:40:36:40:40 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:41:9:41:11 | _b1 | | {EXTERNAL LOCATION} | & | -| dereference.rs:41:9:41:11 | _b1 | TRef | {EXTERNAL LOCATION} | i64 | -| dereference.rs:41:15:41:16 | a1 | | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:41:15:41:24 | a1.deref() | | {EXTERNAL LOCATION} | & | -| dereference.rs:41:15:41:24 | a1.deref() | TRef | {EXTERNAL LOCATION} | i64 | -| dereference.rs:44:9:44:10 | a2 | | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:44:14:44:42 | MyIntPointer {...} | | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:44:36:44:40 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:45:9:45:11 | _b2 | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:45:15:45:17 | * ... | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:45:16:45:17 | a2 | | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:48:9:48:10 | a3 | | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:48:14:48:42 | MyIntPointer {...} | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:13:14:13:18 | SelfParam | | {EXTERNAL LOCATION} | & | +| dereference.rs:13:14:13:18 | SelfParam | TRef | dereference.rs:5:1:7:1 | MyIntPointer | +| dereference.rs:13:29:15:5 | { ... } | | {EXTERNAL LOCATION} | & | +| dereference.rs:13:29:15:5 | { ... } | TRef | {EXTERNAL LOCATION} | i64 | +| dereference.rs:14:9:14:19 | &... | | {EXTERNAL LOCATION} | & | +| dereference.rs:14:9:14:19 | &... | TRef | {EXTERNAL LOCATION} | i64 | +| dereference.rs:14:10:14:13 | self | | {EXTERNAL LOCATION} | & | +| dereference.rs:14:10:14:13 | self | TRef | dereference.rs:5:1:7:1 | MyIntPointer | +| dereference.rs:14:10:14:19 | self.value | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:26:14:26:18 | SelfParam | | {EXTERNAL LOCATION} | & | +| dereference.rs:26:14:26:18 | SelfParam | TRef | dereference.rs:18:1:20:1 | MySmartPointer | +| dereference.rs:26:14:26:18 | SelfParam | TRef.T | dereference.rs:22:6:22:6 | T | +| dereference.rs:26:27:28:5 | { ... } | | {EXTERNAL LOCATION} | & | +| dereference.rs:26:27:28:5 | { ... } | TRef | dereference.rs:22:6:22:6 | T | +| dereference.rs:27:9:27:19 | &... | | {EXTERNAL LOCATION} | & | +| dereference.rs:27:9:27:19 | &... | TRef | dereference.rs:22:6:22:6 | T | +| dereference.rs:27:10:27:13 | self | | {EXTERNAL LOCATION} | & | +| dereference.rs:27:10:27:13 | self | TRef | dereference.rs:18:1:20:1 | MySmartPointer | +| dereference.rs:27:10:27:13 | self | TRef.T | dereference.rs:22:6:22:6 | T | +| dereference.rs:27:10:27:19 | self.value | | dereference.rs:22:6:22:6 | T | +| dereference.rs:33:18:33:26 | SelfParam | | {EXTERNAL LOCATION} | &mut | +| dereference.rs:33:18:33:26 | SelfParam | TRefMut | dereference.rs:18:1:20:1 | MySmartPointer | +| dereference.rs:33:18:33:26 | SelfParam | TRefMut.T | dereference.rs:31:6:31:6 | T | +| dereference.rs:33:39:35:5 | { ... } | | {EXTERNAL LOCATION} | &mut | +| dereference.rs:33:39:35:5 | { ... } | TRefMut | dereference.rs:31:6:31:6 | T | +| dereference.rs:34:9:34:23 | &mut ... | | {EXTERNAL LOCATION} | &mut | +| dereference.rs:34:9:34:23 | &mut ... | TRefMut | dereference.rs:31:6:31:6 | T | +| dereference.rs:34:14:34:17 | self | | {EXTERNAL LOCATION} | &mut | +| dereference.rs:34:14:34:17 | self | TRefMut | dereference.rs:18:1:20:1 | MySmartPointer | +| dereference.rs:34:14:34:17 | self | TRefMut.T | dereference.rs:31:6:31:6 | T | +| dereference.rs:34:14:34:23 | self.value | | dereference.rs:31:6:31:6 | T | +| dereference.rs:41:12:41:16 | SelfParam | | {EXTERNAL LOCATION} | & | +| dereference.rs:41:12:41:16 | SelfParam | TRef | dereference.rs:38:1:38:15 | S | +| dereference.rs:41:12:41:16 | SelfParam | TRef.T | dereference.rs:40:6:40:6 | T | +| dereference.rs:41:25:43:5 | { ... } | | {EXTERNAL LOCATION} | & | +| dereference.rs:41:25:43:5 | { ... } | TRef | dereference.rs:40:6:40:6 | T | +| dereference.rs:42:9:42:15 | &... | | {EXTERNAL LOCATION} | & | +| dereference.rs:42:9:42:15 | &... | TRef | dereference.rs:40:6:40:6 | T | +| dereference.rs:42:10:42:13 | self | | {EXTERNAL LOCATION} | & | +| dereference.rs:42:10:42:13 | self | TRef | dereference.rs:38:1:38:15 | S | +| dereference.rs:42:10:42:13 | self | TRef.T | dereference.rs:40:6:40:6 | T | +| dereference.rs:42:10:42:15 | self.0 | | dereference.rs:40:6:40:6 | T | +| dereference.rs:46:39:58:1 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:48:9:48:10 | a1 | | dereference.rs:5:1:7:1 | MyIntPointer | +| dereference.rs:48:14:48:42 | MyIntPointer {...} | | dereference.rs:5:1:7:1 | MyIntPointer | | dereference.rs:48:36:48:40 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:49:9:49:11 | _b3 | | {EXTERNAL LOCATION} | bool | -| dereference.rs:49:15:49:19 | (...) | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:49:15:49:33 | ... .is_positive() | | {EXTERNAL LOCATION} | bool | -| dereference.rs:49:16:49:18 | * ... | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:49:17:49:18 | a3 | | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:52:39:64:1 | { ... } | | {EXTERNAL LOCATION} | () | -| dereference.rs:54:9:54:10 | c1 | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:54:9:54:10 | c1 | T | {EXTERNAL LOCATION} | char | -| dereference.rs:54:14:54:42 | MySmartPointer {...} | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:54:14:54:42 | MySmartPointer {...} | T | {EXTERNAL LOCATION} | char | -| dereference.rs:54:38:54:40 | 'a' | | {EXTERNAL LOCATION} | char | -| dereference.rs:55:9:55:11 | _d1 | | {EXTERNAL LOCATION} | & | -| dereference.rs:55:9:55:11 | _d1 | TRef | {EXTERNAL LOCATION} | char | -| dereference.rs:55:15:55:16 | c1 | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:55:15:55:16 | c1 | T | {EXTERNAL LOCATION} | char | -| dereference.rs:55:15:55:24 | c1.deref() | | {EXTERNAL LOCATION} | & | -| dereference.rs:55:15:55:24 | c1.deref() | TRef | {EXTERNAL LOCATION} | char | -| dereference.rs:58:9:58:10 | c2 | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:58:9:58:10 | c2 | T | {EXTERNAL LOCATION} | char | -| dereference.rs:58:14:58:42 | MySmartPointer {...} | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:58:14:58:42 | MySmartPointer {...} | T | {EXTERNAL LOCATION} | char | -| dereference.rs:58:38:58:40 | 'a' | | {EXTERNAL LOCATION} | char | -| dereference.rs:59:9:59:11 | _d2 | | {EXTERNAL LOCATION} | char | -| dereference.rs:59:15:59:17 | * ... | | {EXTERNAL LOCATION} | char | -| dereference.rs:59:16:59:17 | c2 | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:59:16:59:17 | c2 | T | {EXTERNAL LOCATION} | char | -| dereference.rs:62:9:62:10 | c3 | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:62:9:62:10 | c3 | T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:62:14:62:44 | MySmartPointer {...} | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:62:14:62:44 | MySmartPointer {...} | T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:62:38:62:42 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:63:9:63:11 | _d3 | | {EXTERNAL LOCATION} | bool | -| dereference.rs:63:15:63:19 | (...) | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:63:15:63:33 | ... .is_positive() | | {EXTERNAL LOCATION} | bool | -| dereference.rs:63:16:63:18 | * ... | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:63:17:63:18 | c3 | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:63:17:63:18 | c3 | T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:66:31:78:1 | { ... } | | {EXTERNAL LOCATION} | () | -| dereference.rs:68:9:68:10 | e1 | | {EXTERNAL LOCATION} | & | -| dereference.rs:68:9:68:10 | e1 | TRef | {EXTERNAL LOCATION} | char | -| dereference.rs:68:14:68:17 | &'a' | | {EXTERNAL LOCATION} | & | -| dereference.rs:68:14:68:17 | &'a' | TRef | {EXTERNAL LOCATION} | char | -| dereference.rs:68:15:68:17 | 'a' | | {EXTERNAL LOCATION} | char | -| dereference.rs:69:9:69:11 | _f1 | | {EXTERNAL LOCATION} | & | -| dereference.rs:69:9:69:11 | _f1 | TRef | {EXTERNAL LOCATION} | char | -| dereference.rs:69:15:69:16 | e1 | | {EXTERNAL LOCATION} | & | -| dereference.rs:69:15:69:16 | e1 | TRef | {EXTERNAL LOCATION} | char | -| dereference.rs:69:15:69:24 | e1.deref() | | {EXTERNAL LOCATION} | & | -| dereference.rs:69:15:69:24 | e1.deref() | TRef | {EXTERNAL LOCATION} | char | -| dereference.rs:72:9:72:10 | e2 | | {EXTERNAL LOCATION} | & | -| dereference.rs:72:9:72:10 | e2 | TRef | {EXTERNAL LOCATION} | char | -| dereference.rs:72:14:72:17 | &'a' | | {EXTERNAL LOCATION} | & | -| dereference.rs:72:14:72:17 | &'a' | TRef | {EXTERNAL LOCATION} | char | -| dereference.rs:72:15:72:17 | 'a' | | {EXTERNAL LOCATION} | char | -| dereference.rs:73:9:73:11 | _f2 | | {EXTERNAL LOCATION} | char | -| dereference.rs:73:15:73:17 | * ... | | {EXTERNAL LOCATION} | char | -| dereference.rs:73:16:73:17 | e2 | | {EXTERNAL LOCATION} | & | -| dereference.rs:73:16:73:17 | e2 | TRef | {EXTERNAL LOCATION} | char | -| dereference.rs:76:9:76:10 | e3 | | {EXTERNAL LOCATION} | & | -| dereference.rs:76:9:76:10 | e3 | TRef | {EXTERNAL LOCATION} | i64 | -| dereference.rs:76:14:76:19 | &34i64 | | {EXTERNAL LOCATION} | & | -| dereference.rs:76:14:76:19 | &34i64 | TRef | {EXTERNAL LOCATION} | i64 | -| dereference.rs:76:15:76:19 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:77:9:77:11 | _f3 | | {EXTERNAL LOCATION} | bool | -| dereference.rs:77:15:77:19 | (...) | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:77:15:77:33 | ... .is_positive() | | {EXTERNAL LOCATION} | bool | -| dereference.rs:77:16:77:18 | * ... | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:77:17:77:18 | e3 | | {EXTERNAL LOCATION} | & | -| dereference.rs:77:17:77:18 | e3 | TRef | {EXTERNAL LOCATION} | i64 | -| dereference.rs:80:31:92:1 | { ... } | | {EXTERNAL LOCATION} | () | -| dereference.rs:82:9:82:10 | g1 | | {EXTERNAL LOCATION} | Box | -| dereference.rs:82:9:82:10 | g1 | A | {EXTERNAL LOCATION} | Global | -| dereference.rs:82:9:82:10 | g1 | T | {EXTERNAL LOCATION} | char | -| dereference.rs:82:25:82:37 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| dereference.rs:82:25:82:37 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| dereference.rs:82:25:82:37 | ...::new(...) | T | {EXTERNAL LOCATION} | char | -| dereference.rs:82:34:82:36 | 'a' | | {EXTERNAL LOCATION} | char | -| dereference.rs:83:9:83:11 | _h1 | | {EXTERNAL LOCATION} | & | -| dereference.rs:83:9:83:11 | _h1 | TRef | {EXTERNAL LOCATION} | char | -| dereference.rs:83:15:83:16 | g1 | | {EXTERNAL LOCATION} | Box | -| dereference.rs:83:15:83:16 | g1 | A | {EXTERNAL LOCATION} | Global | -| dereference.rs:83:15:83:16 | g1 | T | {EXTERNAL LOCATION} | char | -| dereference.rs:83:15:83:24 | g1.deref() | | {EXTERNAL LOCATION} | & | -| dereference.rs:83:15:83:24 | g1.deref() | TRef | {EXTERNAL LOCATION} | char | -| dereference.rs:86:9:86:10 | g2 | | {EXTERNAL LOCATION} | Box | -| dereference.rs:86:9:86:10 | g2 | A | {EXTERNAL LOCATION} | Global | -| dereference.rs:86:9:86:10 | g2 | T | {EXTERNAL LOCATION} | char | -| dereference.rs:86:25:86:37 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| dereference.rs:86:25:86:37 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| dereference.rs:86:25:86:37 | ...::new(...) | T | {EXTERNAL LOCATION} | char | -| dereference.rs:86:34:86:36 | 'a' | | {EXTERNAL LOCATION} | char | -| dereference.rs:87:9:87:11 | _h2 | | {EXTERNAL LOCATION} | char | -| dereference.rs:87:15:87:17 | * ... | | {EXTERNAL LOCATION} | char | -| dereference.rs:87:16:87:17 | g2 | | {EXTERNAL LOCATION} | Box | -| dereference.rs:87:16:87:17 | g2 | A | {EXTERNAL LOCATION} | Global | -| dereference.rs:87:16:87:17 | g2 | T | {EXTERNAL LOCATION} | char | -| dereference.rs:90:9:90:10 | g3 | | {EXTERNAL LOCATION} | Box | -| dereference.rs:90:9:90:10 | g3 | A | {EXTERNAL LOCATION} | Global | -| dereference.rs:90:9:90:10 | g3 | T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:90:24:90:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| dereference.rs:90:24:90:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| dereference.rs:90:24:90:38 | ...::new(...) | T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:90:33:90:37 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:91:9:91:11 | _h3 | | {EXTERNAL LOCATION} | bool | -| dereference.rs:91:15:91:19 | (...) | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:91:15:91:33 | ... .is_positive() | | {EXTERNAL LOCATION} | bool | -| dereference.rs:91:16:91:18 | * ... | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:91:17:91:18 | g3 | | {EXTERNAL LOCATION} | Box | -| dereference.rs:91:17:91:18 | g3 | A | {EXTERNAL LOCATION} | Global | -| dereference.rs:91:17:91:18 | g3 | T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:94:27:105:1 | { ... } | | {EXTERNAL LOCATION} | () | -| dereference.rs:96:9:96:9 | x | | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:96:13:96:41 | MyIntPointer {...} | | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:96:35:96:39 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:97:14:97:14 | x | | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:100:9:100:9 | x | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:100:9:100:9 | x | T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:100:13:100:43 | MySmartPointer {...} | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:100:13:100:43 | MySmartPointer {...} | T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:100:37:100:41 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:101:14:101:14 | x | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:101:14:101:14 | x | T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:103:9:103:9 | z | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:103:9:103:9 | z | T | dereference.rs:30:1:30:15 | S | -| dereference.rs:103:9:103:9 | z | T.T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:103:13:103:45 | MySmartPointer {...} | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:103:13:103:45 | MySmartPointer {...} | T | dereference.rs:30:1:30:15 | S | -| dereference.rs:103:13:103:45 | MySmartPointer {...} | T.T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:103:37:103:43 | S(...) | | dereference.rs:30:1:30:15 | S | -| dereference.rs:103:37:103:43 | S(...) | T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:103:39:103:42 | 0i64 | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:104:14:104:14 | z | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:104:14:104:14 | z | T | dereference.rs:30:1:30:15 | S | -| dereference.rs:104:14:104:14 | z | T.T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:131:19:139:5 | { ... } | | {EXTERNAL LOCATION} | () | -| dereference.rs:132:17:132:26 | key_to_key | | {EXTERNAL LOCATION} | HashMap | -| dereference.rs:132:17:132:26 | key_to_key | K | {EXTERNAL LOCATION} | & | -| dereference.rs:132:17:132:26 | key_to_key | K.TRef | dereference.rs:110:5:111:21 | Key | -| dereference.rs:132:17:132:26 | key_to_key | S | {EXTERNAL LOCATION} | RandomState | -| dereference.rs:132:17:132:26 | key_to_key | V | {EXTERNAL LOCATION} | & | -| dereference.rs:132:17:132:26 | key_to_key | V.TRef | dereference.rs:110:5:111:21 | Key | -| dereference.rs:132:30:132:57 | ...::new(...) | | {EXTERNAL LOCATION} | HashMap | -| dereference.rs:132:30:132:57 | ...::new(...) | K | {EXTERNAL LOCATION} | & | -| dereference.rs:132:30:132:57 | ...::new(...) | K.TRef | dereference.rs:110:5:111:21 | Key | -| dereference.rs:132:30:132:57 | ...::new(...) | S | {EXTERNAL LOCATION} | RandomState | -| dereference.rs:132:30:132:57 | ...::new(...) | V | {EXTERNAL LOCATION} | & | -| dereference.rs:132:30:132:57 | ...::new(...) | V.TRef | dereference.rs:110:5:111:21 | Key | -| dereference.rs:133:17:133:19 | key | | {EXTERNAL LOCATION} | & | -| dereference.rs:133:17:133:19 | key | TRef | dereference.rs:110:5:111:21 | Key | -| dereference.rs:133:17:133:19 | key | TRef | {EXTERNAL LOCATION} | & | -| dereference.rs:133:17:133:19 | key | TRef.TRef | dereference.rs:110:5:111:21 | Key | -| dereference.rs:133:23:133:29 | &... | | {EXTERNAL LOCATION} | & | -| dereference.rs:133:23:133:29 | &... | TRef | dereference.rs:110:5:111:21 | Key | -| dereference.rs:133:23:133:29 | &... | TRef | {EXTERNAL LOCATION} | & | -| dereference.rs:133:23:133:29 | &... | TRef.TRef | dereference.rs:110:5:111:21 | Key | -| dereference.rs:133:24:133:29 | Key {...} | | dereference.rs:110:5:111:21 | Key | -| dereference.rs:134:9:137:9 | if ... {...} | | {EXTERNAL LOCATION} | () | -| dereference.rs:134:16:134:28 | Some(...) | | {EXTERNAL LOCATION} | Option | -| dereference.rs:134:16:134:28 | Some(...) | T | {EXTERNAL LOCATION} | & | -| dereference.rs:134:16:134:28 | Some(...) | T.TRef | dereference.rs:110:5:111:21 | Key | -| dereference.rs:134:16:134:28 | Some(...) | T.TRef | {EXTERNAL LOCATION} | & | -| dereference.rs:134:16:134:28 | Some(...) | T.TRef.TRef | dereference.rs:110:5:111:21 | Key | -| dereference.rs:134:21:134:27 | ref_key | | {EXTERNAL LOCATION} | & | -| dereference.rs:134:21:134:27 | ref_key | TRef | dereference.rs:110:5:111:21 | Key | -| dereference.rs:134:21:134:27 | ref_key | TRef | {EXTERNAL LOCATION} | & | -| dereference.rs:134:21:134:27 | ref_key | TRef.TRef | dereference.rs:110:5:111:21 | Key | -| dereference.rs:134:32:134:41 | key_to_key | | {EXTERNAL LOCATION} | HashMap | -| dereference.rs:134:32:134:41 | key_to_key | K | {EXTERNAL LOCATION} | & | -| dereference.rs:134:32:134:41 | key_to_key | K.TRef | dereference.rs:110:5:111:21 | Key | -| dereference.rs:134:32:134:41 | key_to_key | S | {EXTERNAL LOCATION} | RandomState | -| dereference.rs:134:32:134:41 | key_to_key | V | {EXTERNAL LOCATION} | & | -| dereference.rs:134:32:134:41 | key_to_key | V.TRef | dereference.rs:110:5:111:21 | Key | -| dereference.rs:134:32:134:50 | key_to_key.get(...) | | {EXTERNAL LOCATION} | Option | -| dereference.rs:134:32:134:50 | key_to_key.get(...) | T | {EXTERNAL LOCATION} | & | -| dereference.rs:134:32:134:50 | key_to_key.get(...) | T.TRef | dereference.rs:110:5:111:21 | Key | -| dereference.rs:134:32:134:50 | key_to_key.get(...) | T.TRef | {EXTERNAL LOCATION} | & | -| dereference.rs:134:32:134:50 | key_to_key.get(...) | T.TRef.TRef | dereference.rs:110:5:111:21 | Key | -| dereference.rs:134:47:134:49 | key | | {EXTERNAL LOCATION} | & | -| dereference.rs:134:47:134:49 | key | TRef | dereference.rs:110:5:111:21 | Key | -| dereference.rs:134:47:134:49 | key | TRef | {EXTERNAL LOCATION} | & | -| dereference.rs:134:47:134:49 | key | TRef.TRef | dereference.rs:110:5:111:21 | Key | -| dereference.rs:134:52:137:9 | { ... } | | {EXTERNAL LOCATION} | () | -| dereference.rs:136:13:136:15 | key | | {EXTERNAL LOCATION} | & | -| dereference.rs:136:13:136:15 | key | TRef | dereference.rs:110:5:111:21 | Key | -| dereference.rs:136:13:136:15 | key | TRef | {EXTERNAL LOCATION} | & | -| dereference.rs:136:13:136:15 | key | TRef.TRef | dereference.rs:110:5:111:21 | Key | -| dereference.rs:136:13:136:25 | ... = ... | | {EXTERNAL LOCATION} | () | -| dereference.rs:136:19:136:25 | ref_key | | {EXTERNAL LOCATION} | & | -| dereference.rs:136:19:136:25 | ref_key | TRef | dereference.rs:110:5:111:21 | Key | -| dereference.rs:136:19:136:25 | ref_key | TRef | {EXTERNAL LOCATION} | & | -| dereference.rs:136:19:136:25 | ref_key | TRef.TRef | dereference.rs:110:5:111:21 | Key | -| dereference.rs:138:9:138:18 | key_to_key | | {EXTERNAL LOCATION} | HashMap | -| dereference.rs:138:9:138:18 | key_to_key | K | {EXTERNAL LOCATION} | & | -| dereference.rs:138:9:138:18 | key_to_key | K.TRef | dereference.rs:110:5:111:21 | Key | -| dereference.rs:138:9:138:18 | key_to_key | S | {EXTERNAL LOCATION} | RandomState | -| dereference.rs:138:9:138:18 | key_to_key | V | {EXTERNAL LOCATION} | & | -| dereference.rs:138:9:138:18 | key_to_key | V.TRef | dereference.rs:110:5:111:21 | Key | -| dereference.rs:138:9:138:35 | key_to_key.insert(...) | | {EXTERNAL LOCATION} | Option | -| dereference.rs:138:9:138:35 | key_to_key.insert(...) | T | {EXTERNAL LOCATION} | & | -| dereference.rs:138:9:138:35 | key_to_key.insert(...) | T.TRef | dereference.rs:110:5:111:21 | Key | -| dereference.rs:138:9:138:35 | key_to_key.insert(...) | T.TRef | {EXTERNAL LOCATION} | & | -| dereference.rs:138:9:138:35 | key_to_key.insert(...) | T.TRef.TRef | dereference.rs:110:5:111:21 | Key | -| dereference.rs:138:27:138:29 | key | | {EXTERNAL LOCATION} | & | -| dereference.rs:138:27:138:29 | key | TRef | dereference.rs:110:5:111:21 | Key | -| dereference.rs:138:27:138:29 | key | TRef | {EXTERNAL LOCATION} | & | -| dereference.rs:138:27:138:29 | key | TRef.TRef | dereference.rs:110:5:111:21 | Key | -| dereference.rs:138:32:138:34 | key | | {EXTERNAL LOCATION} | & | -| dereference.rs:138:32:138:34 | key | TRef | dereference.rs:110:5:111:21 | Key | -| dereference.rs:138:32:138:34 | key | TRef | {EXTERNAL LOCATION} | & | -| dereference.rs:138:32:138:34 | key | TRef.TRef | dereference.rs:110:5:111:21 | Key | -| dereference.rs:144:16:144:19 | SelfParam | | dereference.rs:143:5:145:5 | Self [trait MyTrait1] | -| dereference.rs:151:16:151:19 | SelfParam | | {EXTERNAL LOCATION} | & | -| dereference.rs:151:16:151:19 | SelfParam | TRef | dereference.rs:147:5:147:13 | S | -| dereference.rs:151:27:153:9 | { ... } | | dereference.rs:147:5:147:13 | S | -| dereference.rs:152:13:152:13 | S | | dereference.rs:147:5:147:13 | S | -| dereference.rs:158:16:158:19 | SelfParam | | {EXTERNAL LOCATION} | &mut | -| dereference.rs:158:16:158:19 | SelfParam | TRefMut | dereference.rs:147:5:147:13 | S | -| dereference.rs:158:29:160:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:159:13:159:14 | 42 | | {EXTERNAL LOCATION} | i32 | -| dereference.rs:159:13:159:14 | 42 | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:164:16:164:19 | SelfParam | | dereference.rs:163:5:165:5 | Self [trait MyTrait2] | -| dereference.rs:164:22:164:24 | arg | | dereference.rs:163:20:163:21 | T1 | -| dereference.rs:169:16:169:19 | SelfParam | | dereference.rs:147:5:147:13 | S | -| dereference.rs:169:22:169:24 | arg | | {EXTERNAL LOCATION} | & | -| dereference.rs:169:22:169:24 | arg | TRef | dereference.rs:147:5:147:13 | S | -| dereference.rs:169:36:171:9 | { ... } | | dereference.rs:147:5:147:13 | S | -| dereference.rs:170:13:170:13 | S | | dereference.rs:147:5:147:13 | S | -| dereference.rs:176:16:176:19 | SelfParam | | dereference.rs:147:5:147:13 | S | -| dereference.rs:176:22:176:24 | arg | | {EXTERNAL LOCATION} | &mut | -| dereference.rs:176:22:176:24 | arg | TRefMut | dereference.rs:147:5:147:13 | S | -| dereference.rs:176:42:178:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:177:13:177:14 | 42 | | {EXTERNAL LOCATION} | i32 | -| dereference.rs:177:13:177:14 | 42 | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:181:19:188:5 | { ... } | | {EXTERNAL LOCATION} | () | -| dereference.rs:182:13:182:13 | x | | dereference.rs:147:5:147:13 | S | -| dereference.rs:182:17:182:20 | (...) | | {EXTERNAL LOCATION} | & | -| dereference.rs:182:17:182:20 | (...) | TRef | dereference.rs:147:5:147:13 | S | -| dereference.rs:182:17:182:26 | ... .foo() | | dereference.rs:147:5:147:13 | S | -| dereference.rs:182:18:182:19 | &S | | {EXTERNAL LOCATION} | & | -| dereference.rs:182:18:182:19 | &S | TRef | dereference.rs:147:5:147:13 | S | -| dereference.rs:182:19:182:19 | S | | dereference.rs:147:5:147:13 | S | -| dereference.rs:183:13:183:13 | y | | dereference.rs:147:5:147:13 | S | -| dereference.rs:183:17:183:17 | S | | dereference.rs:147:5:147:13 | S | -| dereference.rs:183:17:183:23 | S.foo() | | dereference.rs:147:5:147:13 | S | -| dereference.rs:184:13:184:13 | z | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:184:17:184:24 | (...) | | {EXTERNAL LOCATION} | &mut | -| dereference.rs:184:17:184:24 | (...) | TRefMut | dereference.rs:147:5:147:13 | S | -| dereference.rs:184:17:184:30 | ... .foo() | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:184:18:184:23 | &mut S | | {EXTERNAL LOCATION} | &mut | -| dereference.rs:184:18:184:23 | &mut S | TRefMut | dereference.rs:147:5:147:13 | S | -| dereference.rs:184:23:184:23 | S | | dereference.rs:147:5:147:13 | S | -| dereference.rs:186:13:186:13 | x | | dereference.rs:147:5:147:13 | S | -| dereference.rs:186:17:186:17 | S | | dereference.rs:147:5:147:13 | S | -| dereference.rs:186:17:186:25 | S.bar(...) | | dereference.rs:147:5:147:13 | S | -| dereference.rs:186:23:186:24 | &S | | {EXTERNAL LOCATION} | & | -| dereference.rs:186:23:186:24 | &S | TRef | dereference.rs:147:5:147:13 | S | -| dereference.rs:186:24:186:24 | S | | dereference.rs:147:5:147:13 | S | -| dereference.rs:187:13:187:13 | y | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:187:17:187:17 | S | | dereference.rs:147:5:147:13 | S | -| dereference.rs:187:17:187:29 | S.bar(...) | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:187:23:187:28 | &mut S | | {EXTERNAL LOCATION} | &mut | -| dereference.rs:187:23:187:28 | &mut S | TRefMut | dereference.rs:147:5:147:13 | S | -| dereference.rs:187:28:187:28 | S | | dereference.rs:147:5:147:13 | S | -| dereference.rs:196:16:196:20 | SelfParam | | {EXTERNAL LOCATION} | & | -| dereference.rs:196:16:196:20 | SelfParam | TRef | dereference.rs:195:5:197:5 | Self [trait Bar] | -| dereference.rs:201:16:201:24 | SelfParam | | {EXTERNAL LOCATION} | &mut | -| dereference.rs:201:16:201:24 | SelfParam | TRefMut | dereference.rs:193:5:193:17 | Foo | -| dereference.rs:201:27:203:9 | { ... } | | {EXTERNAL LOCATION} | () | -| dereference.rs:202:13:202:39 | MacroExpr | | {EXTERNAL LOCATION} | () | -| dereference.rs:202:22:202:38 | "In struct impl!\\n" | | {EXTERNAL LOCATION} | & | -| dereference.rs:202:22:202:38 | "In struct impl!\\n" | TRef | {EXTERNAL LOCATION} | str | -| dereference.rs:202:22:202:38 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| dereference.rs:202:22:202:38 | MacroBlockExpr | | {EXTERNAL LOCATION} | () | -| dereference.rs:202:22:202:38 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:49:9:49:11 | _b1 | | {EXTERNAL LOCATION} | & | +| dereference.rs:49:9:49:11 | _b1 | TRef | {EXTERNAL LOCATION} | i64 | +| dereference.rs:49:15:49:16 | a1 | | dereference.rs:5:1:7:1 | MyIntPointer | +| dereference.rs:49:15:49:24 | a1.deref() | | {EXTERNAL LOCATION} | & | +| dereference.rs:49:15:49:24 | a1.deref() | TRef | {EXTERNAL LOCATION} | i64 | +| dereference.rs:52:9:52:10 | a2 | | dereference.rs:5:1:7:1 | MyIntPointer | +| dereference.rs:52:14:52:42 | MyIntPointer {...} | | dereference.rs:5:1:7:1 | MyIntPointer | +| dereference.rs:52:36:52:40 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:53:9:53:11 | _b2 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:53:15:53:17 | * ... | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:53:16:53:17 | a2 | | dereference.rs:5:1:7:1 | MyIntPointer | +| dereference.rs:56:9:56:10 | a3 | | dereference.rs:5:1:7:1 | MyIntPointer | +| dereference.rs:56:14:56:42 | MyIntPointer {...} | | dereference.rs:5:1:7:1 | MyIntPointer | +| dereference.rs:56:36:56:40 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:57:9:57:11 | _b3 | | {EXTERNAL LOCATION} | bool | +| dereference.rs:57:15:57:19 | (...) | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:57:15:57:33 | ... .is_positive() | | {EXTERNAL LOCATION} | bool | +| dereference.rs:57:16:57:18 | * ... | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:57:17:57:18 | a3 | | dereference.rs:5:1:7:1 | MyIntPointer | +| dereference.rs:60:39:72:1 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:62:9:62:10 | c1 | | dereference.rs:18:1:20:1 | MySmartPointer | +| dereference.rs:62:9:62:10 | c1 | T | {EXTERNAL LOCATION} | char | +| dereference.rs:62:14:62:42 | MySmartPointer {...} | | dereference.rs:18:1:20:1 | MySmartPointer | +| dereference.rs:62:14:62:42 | MySmartPointer {...} | T | {EXTERNAL LOCATION} | char | +| dereference.rs:62:38:62:40 | 'a' | | {EXTERNAL LOCATION} | char | +| dereference.rs:63:9:63:11 | _d1 | | {EXTERNAL LOCATION} | & | +| dereference.rs:63:9:63:11 | _d1 | TRef | {EXTERNAL LOCATION} | char | +| dereference.rs:63:15:63:16 | c1 | | dereference.rs:18:1:20:1 | MySmartPointer | +| dereference.rs:63:15:63:16 | c1 | T | {EXTERNAL LOCATION} | char | +| dereference.rs:63:15:63:24 | c1.deref() | | {EXTERNAL LOCATION} | & | +| dereference.rs:63:15:63:24 | c1.deref() | TRef | {EXTERNAL LOCATION} | char | +| dereference.rs:66:9:66:10 | c2 | | dereference.rs:18:1:20:1 | MySmartPointer | +| dereference.rs:66:9:66:10 | c2 | T | {EXTERNAL LOCATION} | char | +| dereference.rs:66:14:66:42 | MySmartPointer {...} | | dereference.rs:18:1:20:1 | MySmartPointer | +| dereference.rs:66:14:66:42 | MySmartPointer {...} | T | {EXTERNAL LOCATION} | char | +| dereference.rs:66:38:66:40 | 'a' | | {EXTERNAL LOCATION} | char | +| dereference.rs:67:9:67:11 | _d2 | | {EXTERNAL LOCATION} | char | +| dereference.rs:67:15:67:17 | * ... | | {EXTERNAL LOCATION} | char | +| dereference.rs:67:16:67:17 | c2 | | dereference.rs:18:1:20:1 | MySmartPointer | +| dereference.rs:67:16:67:17 | c2 | T | {EXTERNAL LOCATION} | char | +| dereference.rs:70:9:70:10 | c3 | | dereference.rs:18:1:20:1 | MySmartPointer | +| dereference.rs:70:9:70:10 | c3 | T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:70:14:70:44 | MySmartPointer {...} | | dereference.rs:18:1:20:1 | MySmartPointer | +| dereference.rs:70:14:70:44 | MySmartPointer {...} | T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:70:38:70:42 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:71:9:71:11 | _d3 | | {EXTERNAL LOCATION} | bool | +| dereference.rs:71:15:71:19 | (...) | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:71:15:71:33 | ... .is_positive() | | {EXTERNAL LOCATION} | bool | +| dereference.rs:71:16:71:18 | * ... | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:71:17:71:18 | c3 | | dereference.rs:18:1:20:1 | MySmartPointer | +| dereference.rs:71:17:71:18 | c3 | T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:74:31:86:1 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:76:9:76:10 | e1 | | {EXTERNAL LOCATION} | & | +| dereference.rs:76:9:76:10 | e1 | TRef | {EXTERNAL LOCATION} | char | +| dereference.rs:76:14:76:17 | &'a' | | {EXTERNAL LOCATION} | & | +| dereference.rs:76:14:76:17 | &'a' | TRef | {EXTERNAL LOCATION} | char | +| dereference.rs:76:15:76:17 | 'a' | | {EXTERNAL LOCATION} | char | +| dereference.rs:77:9:77:11 | _f1 | | {EXTERNAL LOCATION} | & | +| dereference.rs:77:9:77:11 | _f1 | TRef | {EXTERNAL LOCATION} | char | +| dereference.rs:77:15:77:16 | e1 | | {EXTERNAL LOCATION} | & | +| dereference.rs:77:15:77:16 | e1 | TRef | {EXTERNAL LOCATION} | char | +| dereference.rs:77:15:77:24 | e1.deref() | | {EXTERNAL LOCATION} | & | +| dereference.rs:77:15:77:24 | e1.deref() | TRef | {EXTERNAL LOCATION} | char | +| dereference.rs:80:9:80:10 | e2 | | {EXTERNAL LOCATION} | & | +| dereference.rs:80:9:80:10 | e2 | TRef | {EXTERNAL LOCATION} | char | +| dereference.rs:80:14:80:17 | &'a' | | {EXTERNAL LOCATION} | & | +| dereference.rs:80:14:80:17 | &'a' | TRef | {EXTERNAL LOCATION} | char | +| dereference.rs:80:15:80:17 | 'a' | | {EXTERNAL LOCATION} | char | +| dereference.rs:81:9:81:11 | _f2 | | {EXTERNAL LOCATION} | char | +| dereference.rs:81:15:81:17 | * ... | | {EXTERNAL LOCATION} | char | +| dereference.rs:81:16:81:17 | e2 | | {EXTERNAL LOCATION} | & | +| dereference.rs:81:16:81:17 | e2 | TRef | {EXTERNAL LOCATION} | char | +| dereference.rs:84:9:84:10 | e3 | | {EXTERNAL LOCATION} | & | +| dereference.rs:84:9:84:10 | e3 | TRef | {EXTERNAL LOCATION} | i64 | +| dereference.rs:84:14:84:19 | &34i64 | | {EXTERNAL LOCATION} | & | +| dereference.rs:84:14:84:19 | &34i64 | TRef | {EXTERNAL LOCATION} | i64 | +| dereference.rs:84:15:84:19 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:85:9:85:11 | _f3 | | {EXTERNAL LOCATION} | bool | +| dereference.rs:85:15:85:19 | (...) | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:85:15:85:33 | ... .is_positive() | | {EXTERNAL LOCATION} | bool | +| dereference.rs:85:16:85:18 | * ... | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:85:17:85:18 | e3 | | {EXTERNAL LOCATION} | & | +| dereference.rs:85:17:85:18 | e3 | TRef | {EXTERNAL LOCATION} | i64 | +| dereference.rs:88:31:100:1 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:90:9:90:10 | g1 | | {EXTERNAL LOCATION} | Box | +| dereference.rs:90:9:90:10 | g1 | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:90:9:90:10 | g1 | T | {EXTERNAL LOCATION} | char | +| dereference.rs:90:25:90:37 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| dereference.rs:90:25:90:37 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:90:25:90:37 | ...::new(...) | T | {EXTERNAL LOCATION} | char | +| dereference.rs:90:34:90:36 | 'a' | | {EXTERNAL LOCATION} | char | +| dereference.rs:91:9:91:11 | _h1 | | {EXTERNAL LOCATION} | & | +| dereference.rs:91:9:91:11 | _h1 | TRef | {EXTERNAL LOCATION} | char | +| dereference.rs:91:15:91:16 | g1 | | {EXTERNAL LOCATION} | Box | +| dereference.rs:91:15:91:16 | g1 | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:91:15:91:16 | g1 | T | {EXTERNAL LOCATION} | char | +| dereference.rs:91:15:91:24 | g1.deref() | | {EXTERNAL LOCATION} | & | +| dereference.rs:91:15:91:24 | g1.deref() | TRef | {EXTERNAL LOCATION} | char | +| dereference.rs:94:9:94:10 | g2 | | {EXTERNAL LOCATION} | Box | +| dereference.rs:94:9:94:10 | g2 | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:94:9:94:10 | g2 | T | {EXTERNAL LOCATION} | char | +| dereference.rs:94:25:94:37 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| dereference.rs:94:25:94:37 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:94:25:94:37 | ...::new(...) | T | {EXTERNAL LOCATION} | char | +| dereference.rs:94:34:94:36 | 'a' | | {EXTERNAL LOCATION} | char | +| dereference.rs:95:9:95:11 | _h2 | | {EXTERNAL LOCATION} | char | +| dereference.rs:95:15:95:17 | * ... | | {EXTERNAL LOCATION} | char | +| dereference.rs:95:16:95:17 | g2 | | {EXTERNAL LOCATION} | Box | +| dereference.rs:95:16:95:17 | g2 | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:95:16:95:17 | g2 | T | {EXTERNAL LOCATION} | char | +| dereference.rs:98:9:98:10 | g3 | | {EXTERNAL LOCATION} | Box | +| dereference.rs:98:9:98:10 | g3 | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:98:9:98:10 | g3 | T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:98:24:98:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| dereference.rs:98:24:98:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:98:24:98:38 | ...::new(...) | T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:98:33:98:37 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:99:9:99:11 | _h3 | | {EXTERNAL LOCATION} | bool | +| dereference.rs:99:15:99:19 | (...) | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:99:15:99:33 | ... .is_positive() | | {EXTERNAL LOCATION} | bool | +| dereference.rs:99:16:99:18 | * ... | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:99:17:99:18 | g3 | | {EXTERNAL LOCATION} | Box | +| dereference.rs:99:17:99:18 | g3 | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:99:17:99:18 | g3 | T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:102:27:117:1 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:104:9:104:9 | x | | dereference.rs:5:1:7:1 | MyIntPointer | +| dereference.rs:104:13:104:41 | MyIntPointer {...} | | dereference.rs:5:1:7:1 | MyIntPointer | +| dereference.rs:104:35:104:39 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:105:14:105:14 | x | | dereference.rs:5:1:7:1 | MyIntPointer | +| dereference.rs:108:9:108:9 | x | | dereference.rs:18:1:20:1 | MySmartPointer | +| dereference.rs:108:9:108:9 | x | T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:108:13:108:43 | MySmartPointer {...} | | dereference.rs:18:1:20:1 | MySmartPointer | +| dereference.rs:108:13:108:43 | MySmartPointer {...} | T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:108:37:108:41 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:109:14:109:14 | x | | dereference.rs:18:1:20:1 | MySmartPointer | +| dereference.rs:109:14:109:14 | x | T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:111:9:111:9 | z | | dereference.rs:18:1:20:1 | MySmartPointer | +| dereference.rs:111:9:111:9 | z | T | dereference.rs:38:1:38:15 | S | +| dereference.rs:111:9:111:9 | z | T.T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:111:13:111:45 | MySmartPointer {...} | | dereference.rs:18:1:20:1 | MySmartPointer | +| dereference.rs:111:13:111:45 | MySmartPointer {...} | T | dereference.rs:38:1:38:15 | S | +| dereference.rs:111:13:111:45 | MySmartPointer {...} | T.T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:111:37:111:43 | S(...) | | dereference.rs:38:1:38:15 | S | +| dereference.rs:111:37:111:43 | S(...) | T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:111:39:111:42 | 0i64 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:112:14:112:14 | z | | dereference.rs:18:1:20:1 | MySmartPointer | +| dereference.rs:112:14:112:14 | z | T | dereference.rs:38:1:38:15 | S | +| dereference.rs:112:14:112:14 | z | T.T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:114:9:114:9 | v | | {EXTERNAL LOCATION} | Vec | +| dereference.rs:114:9:114:9 | v | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:114:13:114:22 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | +| dereference.rs:114:13:114:22 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:115:13:115:13 | x | | dereference.rs:18:1:20:1 | MySmartPointer | +| dereference.rs:115:13:115:13 | x | T | {EXTERNAL LOCATION} | Vec | +| dereference.rs:115:13:115:13 | x | T.A | {EXTERNAL LOCATION} | Global | +| dereference.rs:115:17:115:43 | MySmartPointer {...} | | dereference.rs:18:1:20:1 | MySmartPointer | +| dereference.rs:115:17:115:43 | MySmartPointer {...} | T | {EXTERNAL LOCATION} | Vec | +| dereference.rs:115:17:115:43 | MySmartPointer {...} | T.A | {EXTERNAL LOCATION} | Global | +| dereference.rs:115:41:115:41 | v | | {EXTERNAL LOCATION} | Vec | +| dereference.rs:115:41:115:41 | v | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:116:5:116:5 | x | | dereference.rs:18:1:20:1 | MySmartPointer | +| dereference.rs:116:5:116:5 | x | T | {EXTERNAL LOCATION} | Vec | +| dereference.rs:116:5:116:5 | x | T.A | {EXTERNAL LOCATION} | Global | +| dereference.rs:116:12:116:12 | 0 | | {EXTERNAL LOCATION} | i32 | +| dereference.rs:143:19:151:5 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:144:17:144:26 | key_to_key | | {EXTERNAL LOCATION} | HashMap | +| dereference.rs:144:17:144:26 | key_to_key | K | {EXTERNAL LOCATION} | & | +| dereference.rs:144:17:144:26 | key_to_key | K.TRef | dereference.rs:122:5:123:21 | Key | +| dereference.rs:144:17:144:26 | key_to_key | S | {EXTERNAL LOCATION} | RandomState | +| dereference.rs:144:17:144:26 | key_to_key | V | {EXTERNAL LOCATION} | & | +| dereference.rs:144:17:144:26 | key_to_key | V.TRef | dereference.rs:122:5:123:21 | Key | +| dereference.rs:144:30:144:57 | ...::new(...) | | {EXTERNAL LOCATION} | HashMap | +| dereference.rs:144:30:144:57 | ...::new(...) | K | {EXTERNAL LOCATION} | & | +| dereference.rs:144:30:144:57 | ...::new(...) | K.TRef | dereference.rs:122:5:123:21 | Key | +| dereference.rs:144:30:144:57 | ...::new(...) | S | {EXTERNAL LOCATION} | RandomState | +| dereference.rs:144:30:144:57 | ...::new(...) | V | {EXTERNAL LOCATION} | & | +| dereference.rs:144:30:144:57 | ...::new(...) | V.TRef | dereference.rs:122:5:123:21 | Key | +| dereference.rs:145:17:145:19 | key | | {EXTERNAL LOCATION} | & | +| dereference.rs:145:17:145:19 | key | TRef | dereference.rs:122:5:123:21 | Key | +| dereference.rs:145:17:145:19 | key | TRef | {EXTERNAL LOCATION} | & | +| dereference.rs:145:17:145:19 | key | TRef.TRef | dereference.rs:122:5:123:21 | Key | +| dereference.rs:145:23:145:29 | &... | | {EXTERNAL LOCATION} | & | +| dereference.rs:145:23:145:29 | &... | TRef | dereference.rs:122:5:123:21 | Key | +| dereference.rs:145:23:145:29 | &... | TRef | {EXTERNAL LOCATION} | & | +| dereference.rs:145:23:145:29 | &... | TRef.TRef | dereference.rs:122:5:123:21 | Key | +| dereference.rs:145:24:145:29 | Key {...} | | dereference.rs:122:5:123:21 | Key | +| dereference.rs:146:9:149:9 | if ... {...} | | {EXTERNAL LOCATION} | () | +| dereference.rs:146:16:146:28 | Some(...) | | {EXTERNAL LOCATION} | Option | +| dereference.rs:146:16:146:28 | Some(...) | T | {EXTERNAL LOCATION} | & | +| dereference.rs:146:16:146:28 | Some(...) | T.TRef | dereference.rs:122:5:123:21 | Key | +| dereference.rs:146:16:146:28 | Some(...) | T.TRef | {EXTERNAL LOCATION} | & | +| dereference.rs:146:16:146:28 | Some(...) | T.TRef.TRef | dereference.rs:122:5:123:21 | Key | +| dereference.rs:146:21:146:27 | ref_key | | {EXTERNAL LOCATION} | & | +| dereference.rs:146:21:146:27 | ref_key | TRef | dereference.rs:122:5:123:21 | Key | +| dereference.rs:146:21:146:27 | ref_key | TRef | {EXTERNAL LOCATION} | & | +| dereference.rs:146:21:146:27 | ref_key | TRef.TRef | dereference.rs:122:5:123:21 | Key | +| dereference.rs:146:32:146:41 | key_to_key | | {EXTERNAL LOCATION} | HashMap | +| dereference.rs:146:32:146:41 | key_to_key | K | {EXTERNAL LOCATION} | & | +| dereference.rs:146:32:146:41 | key_to_key | K.TRef | dereference.rs:122:5:123:21 | Key | +| dereference.rs:146:32:146:41 | key_to_key | S | {EXTERNAL LOCATION} | RandomState | +| dereference.rs:146:32:146:41 | key_to_key | V | {EXTERNAL LOCATION} | & | +| dereference.rs:146:32:146:41 | key_to_key | V.TRef | dereference.rs:122:5:123:21 | Key | +| dereference.rs:146:32:146:50 | key_to_key.get(...) | | {EXTERNAL LOCATION} | Option | +| dereference.rs:146:32:146:50 | key_to_key.get(...) | T | {EXTERNAL LOCATION} | & | +| dereference.rs:146:32:146:50 | key_to_key.get(...) | T.TRef | dereference.rs:122:5:123:21 | Key | +| dereference.rs:146:32:146:50 | key_to_key.get(...) | T.TRef | {EXTERNAL LOCATION} | & | +| dereference.rs:146:32:146:50 | key_to_key.get(...) | T.TRef.TRef | dereference.rs:122:5:123:21 | Key | +| dereference.rs:146:47:146:49 | key | | {EXTERNAL LOCATION} | & | +| dereference.rs:146:47:146:49 | key | TRef | dereference.rs:122:5:123:21 | Key | +| dereference.rs:146:47:146:49 | key | TRef | {EXTERNAL LOCATION} | & | +| dereference.rs:146:47:146:49 | key | TRef.TRef | dereference.rs:122:5:123:21 | Key | +| dereference.rs:146:52:149:9 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:148:13:148:15 | key | | {EXTERNAL LOCATION} | & | +| dereference.rs:148:13:148:15 | key | TRef | dereference.rs:122:5:123:21 | Key | +| dereference.rs:148:13:148:15 | key | TRef | {EXTERNAL LOCATION} | & | +| dereference.rs:148:13:148:15 | key | TRef.TRef | dereference.rs:122:5:123:21 | Key | +| dereference.rs:148:13:148:25 | ... = ... | | {EXTERNAL LOCATION} | () | +| dereference.rs:148:19:148:25 | ref_key | | {EXTERNAL LOCATION} | & | +| dereference.rs:148:19:148:25 | ref_key | TRef | dereference.rs:122:5:123:21 | Key | +| dereference.rs:148:19:148:25 | ref_key | TRef | {EXTERNAL LOCATION} | & | +| dereference.rs:148:19:148:25 | ref_key | TRef.TRef | dereference.rs:122:5:123:21 | Key | +| dereference.rs:150:9:150:18 | key_to_key | | {EXTERNAL LOCATION} | HashMap | +| dereference.rs:150:9:150:18 | key_to_key | K | {EXTERNAL LOCATION} | & | +| dereference.rs:150:9:150:18 | key_to_key | K.TRef | dereference.rs:122:5:123:21 | Key | +| dereference.rs:150:9:150:18 | key_to_key | S | {EXTERNAL LOCATION} | RandomState | +| dereference.rs:150:9:150:18 | key_to_key | V | {EXTERNAL LOCATION} | & | +| dereference.rs:150:9:150:18 | key_to_key | V.TRef | dereference.rs:122:5:123:21 | Key | +| dereference.rs:150:9:150:35 | key_to_key.insert(...) | | {EXTERNAL LOCATION} | Option | +| dereference.rs:150:9:150:35 | key_to_key.insert(...) | T | {EXTERNAL LOCATION} | & | +| dereference.rs:150:9:150:35 | key_to_key.insert(...) | T.TRef | dereference.rs:122:5:123:21 | Key | +| dereference.rs:150:9:150:35 | key_to_key.insert(...) | T.TRef | {EXTERNAL LOCATION} | & | +| dereference.rs:150:9:150:35 | key_to_key.insert(...) | T.TRef.TRef | dereference.rs:122:5:123:21 | Key | +| dereference.rs:150:27:150:29 | key | | {EXTERNAL LOCATION} | & | +| dereference.rs:150:27:150:29 | key | TRef | dereference.rs:122:5:123:21 | Key | +| dereference.rs:150:27:150:29 | key | TRef | {EXTERNAL LOCATION} | & | +| dereference.rs:150:27:150:29 | key | TRef.TRef | dereference.rs:122:5:123:21 | Key | +| dereference.rs:150:32:150:34 | key | | {EXTERNAL LOCATION} | & | +| dereference.rs:150:32:150:34 | key | TRef | dereference.rs:122:5:123:21 | Key | +| dereference.rs:150:32:150:34 | key | TRef | {EXTERNAL LOCATION} | & | +| dereference.rs:150:32:150:34 | key | TRef.TRef | dereference.rs:122:5:123:21 | Key | +| dereference.rs:156:16:156:19 | SelfParam | | dereference.rs:155:5:157:5 | Self [trait MyTrait1] | +| dereference.rs:163:16:163:19 | SelfParam | | {EXTERNAL LOCATION} | & | +| dereference.rs:163:16:163:19 | SelfParam | TRef | dereference.rs:159:5:159:13 | S | +| dereference.rs:163:27:165:9 | { ... } | | dereference.rs:159:5:159:13 | S | +| dereference.rs:164:13:164:13 | S | | dereference.rs:159:5:159:13 | S | +| dereference.rs:170:16:170:19 | SelfParam | | {EXTERNAL LOCATION} | &mut | +| dereference.rs:170:16:170:19 | SelfParam | TRefMut | dereference.rs:159:5:159:13 | S | +| dereference.rs:170:29:172:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:171:13:171:14 | 42 | | {EXTERNAL LOCATION} | i32 | +| dereference.rs:171:13:171:14 | 42 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:176:16:176:19 | SelfParam | | dereference.rs:175:5:177:5 | Self [trait MyTrait2] | +| dereference.rs:176:22:176:24 | arg | | dereference.rs:175:20:175:21 | T1 | +| dereference.rs:181:16:181:19 | SelfParam | | dereference.rs:159:5:159:13 | S | +| dereference.rs:181:22:181:24 | arg | | {EXTERNAL LOCATION} | & | +| dereference.rs:181:22:181:24 | arg | TRef | dereference.rs:159:5:159:13 | S | +| dereference.rs:181:36:183:9 | { ... } | | dereference.rs:159:5:159:13 | S | +| dereference.rs:182:13:182:13 | S | | dereference.rs:159:5:159:13 | S | +| dereference.rs:188:16:188:19 | SelfParam | | dereference.rs:159:5:159:13 | S | +| dereference.rs:188:22:188:24 | arg | | {EXTERNAL LOCATION} | &mut | +| dereference.rs:188:22:188:24 | arg | TRefMut | dereference.rs:159:5:159:13 | S | +| dereference.rs:188:42:190:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:189:13:189:14 | 42 | | {EXTERNAL LOCATION} | i32 | +| dereference.rs:189:13:189:14 | 42 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:193:19:200:5 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:194:13:194:13 | x | | dereference.rs:159:5:159:13 | S | +| dereference.rs:194:17:194:20 | (...) | | {EXTERNAL LOCATION} | & | +| dereference.rs:194:17:194:20 | (...) | TRef | dereference.rs:159:5:159:13 | S | +| dereference.rs:194:17:194:26 | ... .foo() | | dereference.rs:159:5:159:13 | S | +| dereference.rs:194:18:194:19 | &S | | {EXTERNAL LOCATION} | & | +| dereference.rs:194:18:194:19 | &S | TRef | dereference.rs:159:5:159:13 | S | +| dereference.rs:194:19:194:19 | S | | dereference.rs:159:5:159:13 | S | +| dereference.rs:195:13:195:13 | y | | dereference.rs:159:5:159:13 | S | +| dereference.rs:195:17:195:17 | S | | dereference.rs:159:5:159:13 | S | +| dereference.rs:195:17:195:23 | S.foo() | | dereference.rs:159:5:159:13 | S | +| dereference.rs:196:13:196:13 | z | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:196:17:196:24 | (...) | | {EXTERNAL LOCATION} | &mut | +| dereference.rs:196:17:196:24 | (...) | TRefMut | dereference.rs:159:5:159:13 | S | +| dereference.rs:196:17:196:30 | ... .foo() | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:196:18:196:23 | &mut S | | {EXTERNAL LOCATION} | &mut | +| dereference.rs:196:18:196:23 | &mut S | TRefMut | dereference.rs:159:5:159:13 | S | +| dereference.rs:196:23:196:23 | S | | dereference.rs:159:5:159:13 | S | +| dereference.rs:198:13:198:13 | x | | dereference.rs:159:5:159:13 | S | +| dereference.rs:198:17:198:17 | S | | dereference.rs:159:5:159:13 | S | +| dereference.rs:198:17:198:25 | S.bar(...) | | dereference.rs:159:5:159:13 | S | +| dereference.rs:198:23:198:24 | &S | | {EXTERNAL LOCATION} | & | +| dereference.rs:198:23:198:24 | &S | TRef | dereference.rs:159:5:159:13 | S | +| dereference.rs:198:24:198:24 | S | | dereference.rs:159:5:159:13 | S | +| dereference.rs:199:13:199:13 | y | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:199:17:199:17 | S | | dereference.rs:159:5:159:13 | S | +| dereference.rs:199:17:199:29 | S.bar(...) | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:199:23:199:28 | &mut S | | {EXTERNAL LOCATION} | &mut | +| dereference.rs:199:23:199:28 | &mut S | TRefMut | dereference.rs:159:5:159:13 | S | +| dereference.rs:199:28:199:28 | S | | dereference.rs:159:5:159:13 | S | | dereference.rs:208:16:208:20 | SelfParam | | {EXTERNAL LOCATION} | & | -| dereference.rs:208:16:208:20 | SelfParam | TRef | dereference.rs:193:5:193:17 | Foo | -| dereference.rs:208:23:210:9 | { ... } | | {EXTERNAL LOCATION} | () | -| dereference.rs:209:13:209:38 | MacroExpr | | {EXTERNAL LOCATION} | () | -| dereference.rs:209:22:209:37 | "In trait impl!\\n" | | {EXTERNAL LOCATION} | & | -| dereference.rs:209:22:209:37 | "In trait impl!\\n" | TRef | {EXTERNAL LOCATION} | str | -| dereference.rs:209:22:209:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | -| dereference.rs:209:22:209:37 | MacroBlockExpr | | {EXTERNAL LOCATION} | () | -| dereference.rs:209:22:209:37 | { ... } | | {EXTERNAL LOCATION} | () | -| dereference.rs:213:19:216:5 | { ... } | | {EXTERNAL LOCATION} | () | -| dereference.rs:214:17:214:17 | f | | dereference.rs:193:5:193:17 | Foo | -| dereference.rs:214:21:214:26 | Foo {...} | | dereference.rs:193:5:193:17 | Foo | -| dereference.rs:215:9:215:9 | f | | dereference.rs:193:5:193:17 | Foo | -| dereference.rs:215:9:215:15 | f.bar() | | {EXTERNAL LOCATION} | () | -| dereference.rs:219:15:228:1 | { ... } | | {EXTERNAL LOCATION} | () | -| dereference.rs:220:5:220:38 | explicit_monomorphic_dereference(...) | | {EXTERNAL LOCATION} | () | -| dereference.rs:221:5:221:38 | explicit_polymorphic_dereference(...) | | {EXTERNAL LOCATION} | () | -| dereference.rs:222:5:222:30 | explicit_ref_dereference(...) | | {EXTERNAL LOCATION} | () | -| dereference.rs:223:5:223:30 | explicit_box_dereference(...) | | {EXTERNAL LOCATION} | () | -| dereference.rs:224:5:224:26 | implicit_dereference(...) | | {EXTERNAL LOCATION} | () | -| dereference.rs:225:5:225:41 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| dereference.rs:226:5:226:26 | ...::test(...) | | {EXTERNAL LOCATION} | () | -| dereference.rs:227:5:227:34 | ...::main(...) | | {EXTERNAL LOCATION} | () | +| dereference.rs:208:16:208:20 | SelfParam | TRef | dereference.rs:207:5:209:5 | Self [trait Bar] | +| dereference.rs:213:16:213:24 | SelfParam | | {EXTERNAL LOCATION} | &mut | +| dereference.rs:213:16:213:24 | SelfParam | TRefMut | dereference.rs:205:5:205:17 | Foo | +| dereference.rs:213:27:215:9 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:214:13:214:39 | MacroExpr | | {EXTERNAL LOCATION} | () | +| dereference.rs:214:22:214:38 | "In struct impl!\\n" | | {EXTERNAL LOCATION} | & | +| dereference.rs:214:22:214:38 | "In struct impl!\\n" | TRef | {EXTERNAL LOCATION} | str | +| dereference.rs:214:22:214:38 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| dereference.rs:214:22:214:38 | MacroBlockExpr | | {EXTERNAL LOCATION} | () | +| dereference.rs:214:22:214:38 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:220:16:220:20 | SelfParam | | {EXTERNAL LOCATION} | & | +| dereference.rs:220:16:220:20 | SelfParam | TRef | dereference.rs:205:5:205:17 | Foo | +| dereference.rs:220:23:222:9 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:221:13:221:38 | MacroExpr | | {EXTERNAL LOCATION} | () | +| dereference.rs:221:22:221:37 | "In trait impl!\\n" | | {EXTERNAL LOCATION} | & | +| dereference.rs:221:22:221:37 | "In trait impl!\\n" | TRef | {EXTERNAL LOCATION} | str | +| dereference.rs:221:22:221:37 | ...::_print(...) | | {EXTERNAL LOCATION} | () | +| dereference.rs:221:22:221:37 | MacroBlockExpr | | {EXTERNAL LOCATION} | () | +| dereference.rs:221:22:221:37 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:225:19:228:5 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:226:17:226:17 | f | | dereference.rs:205:5:205:17 | Foo | +| dereference.rs:226:21:226:26 | Foo {...} | | dereference.rs:205:5:205:17 | Foo | +| dereference.rs:227:9:227:9 | f | | dereference.rs:205:5:205:17 | Foo | +| dereference.rs:227:9:227:15 | f.bar() | | {EXTERNAL LOCATION} | () | +| dereference.rs:231:15:240:1 | { ... } | | {EXTERNAL LOCATION} | () | +| dereference.rs:232:5:232:38 | explicit_monomorphic_dereference(...) | | {EXTERNAL LOCATION} | () | +| dereference.rs:233:5:233:38 | explicit_polymorphic_dereference(...) | | {EXTERNAL LOCATION} | () | +| dereference.rs:234:5:234:30 | explicit_ref_dereference(...) | | {EXTERNAL LOCATION} | () | +| dereference.rs:235:5:235:30 | explicit_box_dereference(...) | | {EXTERNAL LOCATION} | () | +| dereference.rs:236:5:236:26 | implicit_dereference(...) | | {EXTERNAL LOCATION} | () | +| dereference.rs:237:5:237:41 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| dereference.rs:238:5:238:26 | ...::test(...) | | {EXTERNAL LOCATION} | () | +| dereference.rs:239:5:239:34 | ...::main(...) | | {EXTERNAL LOCATION} | () | | dyn_type.rs:7:10:7:14 | SelfParam | | {EXTERNAL LOCATION} | & | | dyn_type.rs:7:10:7:14 | SelfParam | TRef | dyn_type.rs:5:1:8:1 | Self [trait MyTrait1] | | dyn_type.rs:12:12:12:16 | SelfParam | | {EXTERNAL LOCATION} | & | From 4540662ab9585f436111a9b3824c3cef4bdc80ab Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Mon, 8 Dec 2025 13:22:36 +0100 Subject: [PATCH 30/63] Rust: Model `Deref` trait in type inference --- .../codeql/rust/internal/TypeInference.qll | 315 ++++++++++++------ .../internal/typeinference/DerefChain.qll | 82 +++++ .../dataflow/global/viableCallable.expected | 1 + .../dataflow/sources/file/InlineFlow.expected | 12 +- .../sources/file/TaintSources.expected | 3 + .../dataflow/sources/file/test.rs | 8 +- .../dataflow/sources/net/InlineFlow.expected | 255 ++++++++------ .../dataflow/sources/net/test.rs | 10 +- .../test/library-tests/sensitivedata/test.rs | 2 +- .../type-inference/blanket_impl.rs | 4 +- .../type-inference/dereference.rs | 10 +- .../test/library-tests/type-inference/main.rs | 4 +- .../type-inference/type-inference.expected | 32 ++ .../security/CWE-022/TaintedPath.expected | 75 +++-- .../query-tests/security/CWE-022/src/main.rs | 14 +- .../typeinference/internal/TypeInference.qll | 66 +++- 16 files changed, 627 insertions(+), 266 deletions(-) create mode 100644 rust/ql/lib/codeql/rust/internal/typeinference/DerefChain.qll diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index c994cab6bb2..de1b0a2660f 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -7,6 +7,7 @@ private import PathResolution private import Type private import Type as T private import TypeMention +private import typeinference.DerefChain private import typeinference.FunctionType private import typeinference.FunctionOverloading as FunctionOverloading private import typeinference.BlanketImplementation as BlanketImplementation @@ -1535,24 +1536,13 @@ private module MethodResolution { * Same as `getACandidateReceiverTypeAt`, but without borrows. */ pragma[nomagic] - private Type getACandidateReceiverTypeAtNoBorrow(string derefChain, TypePath path) { + Type getACandidateReceiverTypeAtNoBorrow(DerefChain derefChain, TypePath path) { result = this.getReceiverTypeAt(path) and derefChain = "" or - this.supportsAutoDerefAndBorrow() and - exists(TypePath path0, Type t0, string derefChain0 | - this.hasNoCompatibleTargetMutBorrow(derefChain0) and - t0 = this.getACandidateReceiverTypeAtNoBorrow(derefChain0, path0) - | - path0.isCons(getRefTypeParameter(_), path) and - result = t0 and - derefChain = derefChain0 + ".ref" - or - path0.isEmpty() and - path = path0 and - t0 = getStringStruct() and - result = getStrStruct() and - derefChain = derefChain0 + ".str" + exists(DerefImplItemNode impl, DerefChain suffix | + result = ImplicitDeref::getDereferencedCandidateReceiverType(this, impl, suffix, path) and + derefChain = DerefChain::cons(impl, suffix) ) } @@ -1566,7 +1556,7 @@ private module MethodResolution { */ pragma[nomagic] private predicate hasIncompatibleTarget( - ImplOrTraitItemNode i, string derefChain, BorrowKind borrow, Type root + ImplOrTraitItemNode i, DerefChain derefChain, BorrowKind borrow, Type root ) { exists(TypePath path | ReceiverIsInstantiationOfSelfParam::argIsNotInstantiationOf(MkMethodCallCand(this, @@ -1583,7 +1573,7 @@ private module MethodResolution { */ pragma[nomagic] private predicate hasIncompatibleBlanketLikeTarget( - ImplItemNode impl, string derefChain, BorrowKind borrow + ImplItemNode impl, DerefChain derefChain, BorrowKind borrow ) { ReceiverIsNotInstantiationOfBlanketLikeSelfParam::argIsNotInstantiationOf(MkMethodCallCand(this, derefChain, borrow), impl, _, _) @@ -1596,7 +1586,9 @@ private module MethodResolution { * Same as `getACandidateReceiverTypeAt`, but excludes pseudo types `!` and `unknown`. */ pragma[nomagic] - Type getANonPseudoCandidateReceiverTypeAt(string derefChain, BorrowKind borrow, TypePath path) { + Type getANonPseudoCandidateReceiverTypeAt( + DerefChain derefChain, BorrowKind borrow, TypePath path + ) { result = this.getACandidateReceiverTypeAt(derefChain, borrow, path) and result != TNeverType() and result != TUnknownType() @@ -1604,7 +1596,7 @@ private module MethodResolution { pragma[nomagic] private Type getComplexStrippedType( - string derefChain, BorrowKind borrow, TypePath strippedTypePath + DerefChain derefChain, BorrowKind borrow, TypePath strippedTypePath ) { result = this.getANonPseudoCandidateReceiverTypeAt(derefChain, borrow, strippedTypePath) and isComplexRootStripped(strippedTypePath, result) @@ -1612,7 +1604,7 @@ private module MethodResolution { bindingset[derefChain, borrow, strippedTypePath, strippedType] private predicate hasNoCompatibleNonBlanketLikeTargetCheck( - string derefChain, BorrowKind borrow, TypePath strippedTypePath, Type strippedType + DerefChain derefChain, BorrowKind borrow, TypePath strippedTypePath, Type strippedType ) { forall(ImplOrTraitItemNode i | methodCallNonBlanketCandidate(this, _, i, _, strippedTypePath, strippedType) @@ -1623,7 +1615,7 @@ private module MethodResolution { bindingset[derefChain, borrow, strippedTypePath, strippedType] private predicate hasNoCompatibleTargetCheck( - string derefChain, BorrowKind borrow, TypePath strippedTypePath, Type strippedType + DerefChain derefChain, BorrowKind borrow, TypePath strippedTypePath, Type strippedType ) { this.hasNoCompatibleNonBlanketLikeTargetCheck(derefChain, borrow, strippedTypePath, strippedType) and @@ -1634,7 +1626,7 @@ private module MethodResolution { bindingset[derefChain, borrow, strippedTypePath, strippedType] private predicate hasNoCompatibleNonBlanketTargetCheck( - string derefChain, BorrowKind borrow, TypePath strippedTypePath, Type strippedType + DerefChain derefChain, BorrowKind borrow, TypePath strippedTypePath, Type strippedType ) { this.hasNoCompatibleNonBlanketLikeTargetCheck(derefChain, borrow, strippedTypePath, strippedType) and @@ -1648,7 +1640,7 @@ private module MethodResolution { // forex using recursion pragma[nomagic] private predicate hasNoCompatibleTargetNoBorrowToIndex( - string derefChain, TypePath strippedTypePath, Type strippedType, int n + DerefChain derefChain, TypePath strippedTypePath, Type strippedType, int n ) { ( this.supportsAutoDerefAndBorrow() @@ -1671,7 +1663,7 @@ private module MethodResolution { * have a matching method target. */ pragma[nomagic] - predicate hasNoCompatibleTargetNoBorrow(string derefChain) { + predicate hasNoCompatibleTargetNoBorrow(DerefChain derefChain) { exists(Type strippedType | this.hasNoCompatibleTargetNoBorrowToIndex(derefChain, _, strippedType, getLastLookupTypeIndex(strippedType)) @@ -1681,7 +1673,7 @@ private module MethodResolution { // forex using recursion pragma[nomagic] private predicate hasNoCompatibleNonBlanketTargetNoBorrowToIndex( - string derefChain, TypePath strippedTypePath, Type strippedType, int n + DerefChain derefChain, TypePath strippedTypePath, Type strippedType, int n ) { ( this.supportsAutoDerefAndBorrow() @@ -1705,7 +1697,7 @@ private module MethodResolution { * a matching non-blanket method target. */ pragma[nomagic] - predicate hasNoCompatibleNonBlanketTargetNoBorrow(string derefChain) { + predicate hasNoCompatibleNonBlanketTargetNoBorrow(DerefChain derefChain) { exists(Type strippedType | this.hasNoCompatibleNonBlanketTargetNoBorrowToIndex(derefChain, _, strippedType, getLastLookupTypeIndex(strippedType)) @@ -1715,7 +1707,7 @@ private module MethodResolution { // forex using recursion pragma[nomagic] private predicate hasNoCompatibleTargetSharedBorrowToIndex( - string derefChain, TypePath strippedTypePath, Type strippedType, int n + DerefChain derefChain, TypePath strippedTypePath, Type strippedType, int n ) { this.hasNoCompatibleTargetNoBorrow(derefChain) and strippedType = @@ -1735,7 +1727,7 @@ private module MethodResolution { * by a shared borrow, does not have a matching method target. */ pragma[nomagic] - predicate hasNoCompatibleTargetSharedBorrow(string derefChain) { + predicate hasNoCompatibleTargetSharedBorrow(DerefChain derefChain) { exists(Type strippedType | this.hasNoCompatibleTargetSharedBorrowToIndex(derefChain, _, strippedType, getLastLookupTypeIndex(strippedType)) @@ -1745,7 +1737,7 @@ private module MethodResolution { // forex using recursion pragma[nomagic] private predicate hasNoCompatibleTargetMutBorrowToIndex( - string derefChain, TypePath strippedTypePath, Type strippedType, int n + DerefChain derefChain, TypePath strippedTypePath, Type strippedType, int n ) { this.hasNoCompatibleTargetSharedBorrow(derefChain) and strippedType = @@ -1764,7 +1756,7 @@ private module MethodResolution { * by a `mut` borrow, does not have a matching method target. */ pragma[nomagic] - predicate hasNoCompatibleTargetMutBorrow(string derefChain) { + predicate hasNoCompatibleTargetMutBorrow(DerefChain derefChain) { exists(Type strippedType | this.hasNoCompatibleTargetMutBorrowToIndex(derefChain, _, strippedType, getLastLookupTypeIndex(strippedType)) @@ -1774,7 +1766,7 @@ private module MethodResolution { // forex using recursion pragma[nomagic] private predicate hasNoCompatibleNonBlanketTargetSharedBorrowToIndex( - string derefChain, TypePath strippedTypePath, Type strippedType, int n + DerefChain derefChain, TypePath strippedTypePath, Type strippedType, int n ) { this.hasNoCompatibleTargetNoBorrow(derefChain) and strippedType = @@ -1794,7 +1786,7 @@ private module MethodResolution { * by a shared borrow, does not have a matching non-blanket method target. */ pragma[nomagic] - predicate hasNoCompatibleNonBlanketTargetSharedBorrow(string derefChain) { + predicate hasNoCompatibleNonBlanketTargetSharedBorrow(DerefChain derefChain) { exists(Type strippedType | this.hasNoCompatibleNonBlanketTargetSharedBorrowToIndex(derefChain, _, strippedType, getLastLookupTypeIndex(strippedType)) @@ -1804,7 +1796,7 @@ private module MethodResolution { // forex using recursion pragma[nomagic] private predicate hasNoCompatibleNonBlanketTargetMutBorrowToIndex( - string derefChain, TypePath strippedTypePath, Type strippedType, int n + DerefChain derefChain, TypePath strippedTypePath, Type strippedType, int n ) { this.hasNoCompatibleNonBlanketTargetSharedBorrow(derefChain) and strippedType = @@ -1824,7 +1816,7 @@ private module MethodResolution { * by a `mut` borrow, does not have a matching non-blanket method target. */ pragma[nomagic] - predicate hasNoCompatibleNonBlanketTargetMutBorrow(string derefChain) { + predicate hasNoCompatibleNonBlanketTargetMutBorrow(DerefChain derefChain) { exists(Type strippedType | this.hasNoCompatibleNonBlanketTargetMutBorrowToIndex(derefChain, _, strippedType, getLastLookupTypeIndex(strippedType)) @@ -1844,7 +1836,7 @@ private module MethodResolution { * [1]: https://doc.rust-lang.org/reference/expressions/method-call-expr.html#r-expr.method.candidate-receivers */ pragma[nomagic] - Type getACandidateReceiverTypeAt(string derefChain, BorrowKind borrow, TypePath path) { + Type getACandidateReceiverTypeAt(DerefChain derefChain, BorrowKind borrow, TypePath path) { result = this.getACandidateReceiverTypeAtNoBorrow(derefChain, path) and borrow.isNoBorrow() or @@ -1877,21 +1869,24 @@ private module MethodResolution { * `derefChain` and the enum `borrow`. */ pragma[nomagic] - Method resolveCallTarget(ImplOrTraitItemNode i, string derefChain, BorrowKind borrow) { + Method resolveCallTarget(ImplOrTraitItemNode i, DerefChain derefChain, BorrowKind borrow) { exists(MethodCallCand mcc | mcc = MkMethodCallCand(this, derefChain, borrow) and result = mcc.resolveCallTarget(i) ) } - predicate receiverHasImplicitDeref(AstNode receiver) { - exists(this.resolveCallTarget(_, ".ref", TNoBorrowKind())) and - receiver = this.getArg(any(ArgumentPosition pos | pos.isSelf())) - } - - predicate argumentHasImplicitBorrow(AstNode arg, boolean isMutable) { - exists(this.resolveCallTarget(_, "", TSomeBorrowKind(isMutable))) and - arg = this.getArg(any(ArgumentPosition pos | pos.isSelf())) + /** + * Holds if the argument `arg` of this call has been implicitly dereferenced + * and borrowed according to `derefChain` and `borrow`, in order to be able to + * resolve the call target. + */ + predicate argumentHasImplicitDerefChainBorrow( + AstNode arg, DerefChain derefChain, BorrowKind borrow + ) { + exists(this.resolveCallTarget(_, derefChain, borrow)) and + arg = this.getArg(any(ArgumentPosition pos | pos.isSelf())) and + not (derefChain.isEmpty() and borrow.isNoBorrow()) } } @@ -2029,10 +2024,14 @@ private module MethodResolution { result = inferType(this.getArg(pos), path) } - override predicate argumentHasImplicitBorrow(AstNode arg, boolean isMutable) { - exists(ArgumentPosition pos | + override predicate argumentHasImplicitDerefChainBorrow( + AstNode arg, DerefChain derefChain, BorrowKind borrow + ) { + exists(ArgumentPosition pos, boolean isMutable | this.implicitBorrowAt(pos, isMutable) and - arg = this.getArg(pos) + arg = this.getArg(pos) and + derefChain = DerefChain::nil() and + borrow = TSomeBorrowKind(isMutable) ) } @@ -2048,14 +2047,14 @@ private module MethodResolution { } private newtype TMethodCallCand = - MkMethodCallCand(MethodCall mc, string derefChain, BorrowKind borrow) { + MkMethodCallCand(MethodCall mc, DerefChain derefChain, BorrowKind borrow) { exists(mc.getACandidateReceiverTypeAt(derefChain, borrow, _)) } /** A method call with a dereference chain and a potential borrow. */ private class MethodCallCand extends MkMethodCallCand { MethodCall mc_; - string derefChain; + DerefChain derefChain; BorrowKind borrow; MethodCallCand() { this = MkMethodCallCand(mc_, derefChain, borrow) } @@ -2147,11 +2146,79 @@ private module MethodResolution { MethodArgsAreInstantiationsOf::argsAreInstantiationsOf(this, i, result) } - string toString() { result = mc_.toString() + " [" + derefChain + "; " + borrow + "]" } + string toString() { + result = mc_.toString() + " [" + derefChain.toString() + "; " + borrow + "]" + } Location getLocation() { result = mc_.getLocation() } } + /** + * Provides logic for resolving implicit `Deref::deref` calls. + */ + private module ImplicitDeref { + private newtype TMethodCallDerefCand = + MkMethodCallDerefCand(MethodCall mc, DerefChain derefChain) { + mc.supportsAutoDerefAndBorrow() and + mc.hasNoCompatibleTargetMutBorrow(derefChain) and + exists(mc.getACandidateReceiverTypeAtNoBorrow(derefChain, _)) + } + + /** A method call with a dereference chain. */ + private class MethodCallDerefCand extends MkMethodCallDerefCand { + MethodCall mc; + DerefChain derefChain; + + MethodCallDerefCand() { this = MkMethodCallDerefCand(mc, derefChain) } + + Type getTypeAt(TypePath path) { + result = substituteLookupTraits(mc.getACandidateReceiverTypeAtNoBorrow(derefChain, path)) and + result != TNeverType() and + result != TUnknownType() + } + + string toString() { result = mc.toString() + " [" + derefChain.toString() + "]" } + + Location getLocation() { result = mc.getLocation() } + } + + private module MethodCallSatisfiesDerefConstraintInput implements + SatisfiesConstraintInputSig + { + pragma[nomagic] + predicate relevantConstraint(MethodCallDerefCand mc, Type constraint) { + exists(mc) and + constraint.(TraitType).getTrait() instanceof DerefTrait + } + + predicate useUniversalConditions() { none() } + } + + private module MethodCallSatisfiesDerefConstraint = + SatisfiesConstraint; + + pragma[nomagic] + private AssociatedTypeTypeParameter getDerefTargetTypeParameter() { + result.getTypeAlias() = any(DerefTrait ft).getTargetType() + } + + /** + * Gets the type of the receiver of `mc` at `path` after applying the implicit + * dereference inside `impl`, following the existing dereference chain `derefChain`. + */ + pragma[nomagic] + Type getDereferencedCandidateReceiverType( + MethodCall mc, DerefImplItemNode impl, DerefChain derefChain, TypePath path + ) { + exists(MethodCallDerefCand mcc, TypePath exprPath | + mcc = MkMethodCallDerefCand(mc, derefChain) and + MethodCallSatisfiesDerefConstraint::satisfiesConstraintTypeThrough(mcc, impl, _, exprPath, + result) and + exprPath.isCons(getDerefTargetTypeParameter(), path) + ) + } + } + private module ReceiverSatisfiesBlanketLikeConstraintInput implements BlanketImplementation::SatisfiesBlanketConstraintInputSig { @@ -2378,10 +2445,21 @@ private module MethodCallMatchingInput implements MatchingWithEnvironmentInputSi class AccessEnvironment = string; bindingset[derefChain, borrow] - additional AccessEnvironment encodeDerefChainBorrow(string derefChain, BorrowKind borrow) { + private AccessEnvironment encodeDerefChainBorrow(DerefChain derefChain, BorrowKind borrow) { result = derefChain + ";" + borrow } + bindingset[derefChainBorrow] + additional predicate decodeDerefChainBorrow( + string derefChainBorrow, DerefChain derefChain, BorrowKind borrow + ) { + exists(string regexp | + regexp = "^(.*);(.*)$" and + derefChain = derefChainBorrow.regexpCapture(regexp, 1) and + borrow.toString() = derefChainBorrow.regexpCapture(regexp, 2) + ) + } + final private class MethodCallFinal = MethodResolution::MethodCall; class Access extends MethodCallFinal, ContextTyping::ContextTypedCallCand { @@ -2404,7 +2482,7 @@ private module MethodCallMatchingInput implements MatchingWithEnvironmentInputSi pragma[nomagic] private Type getInferredSelfType(AccessPosition apos, string derefChainBorrow, TypePath path) { - exists(string derefChain, BorrowKind borrow | + exists(DerefChain derefChain, BorrowKind borrow | result = this.getACandidateReceiverTypeAt(derefChain, borrow, path) and derefChainBorrow = encodeDerefChainBorrow(derefChain, borrow) and apos.isSelf() @@ -2440,7 +2518,7 @@ private module MethodCallMatchingInput implements MatchingWithEnvironmentInputSi } Method getTarget(ImplOrTraitItemNode i, string derefChainBorrow) { - exists(string derefChain, BorrowKind borrow | + exists(DerefChain derefChain, BorrowKind borrow | derefChainBorrow = encodeDerefChainBorrow(derefChain, borrow) and result = this.resolveCallTarget(i, derefChain, borrow) // mutual recursion; resolving method calls requires resolving types and vice versa ) @@ -2493,39 +2571,67 @@ private Type inferMethodCallType0( } pragma[nomagic] -private Type inferMethodCallType1(AstNode n, boolean isReturn, TypePath path) { - exists( - MethodCallMatchingInput::Access a, MethodCallMatchingInput::AccessPosition apos, - string derefChainBorrow, TypePath path0 - | - result = inferMethodCallType0(a, apos, n, derefChainBorrow, path0) and +private Type inferMethodCallTypeNonSelf(AstNode n, boolean isReturn, TypePath path) { + exists(MethodCallMatchingInput::AccessPosition apos | + result = inferMethodCallType0(_, apos, n, _, path) and + not apos.isSelf() and if apos.isReturn() then isReturn = true else isReturn = false - | - ( - not apos.isSelf() - or - derefChainBorrow = ";" - ) and - path = path0 - or - // adjust for implicit deref - apos.isSelf() and - derefChainBorrow = MethodCallMatchingInput::encodeDerefChainBorrow(".ref", TNoBorrowKind()) and - path = TypePath::cons(getRefTypeParameter(_), path0) - or - // adjust for implicit borrow - apos.isSelf() and - derefChainBorrow = MethodCallMatchingInput::encodeDerefChainBorrow("", TSomeBorrowKind(_)) and - path0.isCons(getRefTypeParameter(_), path) ) } +pragma[nomagic] +private Type inferMethodCallTypeSelf( + AstNode n, DerefChain derefChain, BorrowKind borrow, TypePath path +) { + exists(MethodCallMatchingInput::AccessPosition apos, string derefChainBorrow | + result = inferMethodCallType0(_, apos, n, derefChainBorrow, path) and + apos.isSelf() and + MethodCallMatchingInput::decodeDerefChainBorrow(derefChainBorrow, derefChain, borrow) + ) + or + // adjust for implicit borrow + exists(TypePath path0, BorrowKind borrow0 | + result = inferMethodCallTypeSelf(n, derefChain, borrow0, path0) and + path0.isCons(borrow0.getRefType().getPositionalTypeParameter(0), path) and + borrow.isNoBorrow() + ) + or + // adjust for implicit deref + exists( + DerefChain derefChain0, Type t0, TypePath path0, DerefImplItemNode impl, Type selfParamType, + TypePath selfPath + | + t0 = inferMethodCallTypeSelf(n, derefChain0, borrow, path0) and + derefChain0.isCons(impl, derefChain) and + borrow.isNoBorrow() and + selfParamType = impl.resolveSelfParamTypeStrippedAt(selfPath) + | + result = selfParamType and + path = selfPath and + not result instanceof TypeParameter + or + exists(TypeParameter tp, TypePath pathToTypeParam, TypePath suffix | + impl.returnTypeStrippedMentionsTypeParameterAt(tp, pathToTypeParam) and + path0 = pathToTypeParam.appendInverse(suffix) and + result = t0 and + path = selfPath.append(suffix) + ) + ) +} + +private Type inferMethodCallTypePreCheck(AstNode n, boolean isReturn, TypePath path) { + result = inferMethodCallTypeNonSelf(n, isReturn, path) + or + result = inferMethodCallTypeSelf(n, DerefChain::nil(), TNoBorrowKind(), path) and + isReturn = false +} + /** * Gets the type of `n` at `path`, where `n` is either a method call or an * argument/receiver of a method call. */ private predicate inferMethodCallType = - ContextTyping::CheckContextTyping::check/2; + ContextTyping::CheckContextTyping::check/2; /** * Provides logic for resolving calls to non-method items. This includes @@ -3127,19 +3233,28 @@ private predicate inferOperationType = ContextTyping::CheckContextTyping::check/2; pragma[nomagic] -private Type getFieldExprLookupType(FieldExpr fe, string name, boolean isDereferenced) { +private Type getFieldExprLookupType(FieldExpr fe, string name, DerefChain derefChain) { exists(TypePath path | result = inferType(fe.getContainer(), path) and name = fe.getIdentifier().getText() and - isComplexRootStripped(path, result) and - if path.isEmpty() then isDereferenced = false else isDereferenced = true + isComplexRootStripped(path, result) + | + // TODO: Support full derefence chains as for method calls + path.isEmpty() and + derefChain = DerefChain::nil() + or + exists(DerefImplItemNode impl, TypeParamTypeParameter tp | + tp = impl.getFirstSelfTypeParameter() and + path.getHead() = tp and + derefChain = DerefChain::singleton(impl) + ) ) } pragma[nomagic] -private Type getTupleFieldExprLookupType(FieldExpr fe, int pos, boolean isDereferenced) { +private Type getTupleFieldExprLookupType(FieldExpr fe, int pos, DerefChain derefChain) { exists(string name | - result = getFieldExprLookupType(fe, name, isDereferenced) and + result = getFieldExprLookupType(fe, name, derefChain) and pos = name.toInt() ) } @@ -3341,9 +3456,6 @@ private Type inferTryExprType(TryExpr te, TypePath path) { pragma[nomagic] private StructType getStrStruct() { result = TDataType(any(Builtins::Str s)) } -pragma[nomagic] -private StructType getStringStruct() { result = TDataType(any(StringStruct s)) } - pragma[nomagic] private Type inferLiteralType(LiteralExpr le, TypePath path, boolean certain) { path.isEmpty() and @@ -3800,20 +3912,27 @@ private module Cached { /** Holds if `n` is implicitly dereferenced. */ cached predicate implicitDeref(AstNode n) { - any(MethodResolution::MethodCall mc).receiverHasImplicitDeref(n) - or - n = - any(FieldExpr fe | - exists(resolveStructFieldExpr(fe, true)) - or - exists(resolveTupleFieldExpr(fe, true)) - ).getContainer() + exists(DerefChain derefChain, DerefImplItemNode impl | + impl.resolveSelfTyBuiltin() instanceof Builtins::RefType and + derefChain = DerefChain::singleton(impl) + | + any(MethodResolution::MethodCall mc) + .argumentHasImplicitDerefChainBorrow(n, derefChain, TNoBorrowKind()) + or + n = + any(FieldExpr fe | + exists(resolveStructFieldExpr(fe, derefChain)) + or + exists(resolveTupleFieldExpr(fe, derefChain)) + ).getContainer() + ) } /** Holds if `n` is implicitly borrowed. */ cached predicate implicitBorrow(AstNode n, boolean isMutable) { - any(MethodResolution::MethodCall mc).argumentHasImplicitBorrow(n, isMutable) + any(MethodResolution::MethodCall mc) + .argumentHasImplicitDerefChainBorrow(n, DerefChain::nil(), TSomeBorrowKind(isMutable)) } /** @@ -3843,9 +3962,9 @@ private module Cached { * Gets the struct field that the field expression `fe` resolves to, if any. */ cached - StructField resolveStructFieldExpr(FieldExpr fe, boolean isDereferenced) { + StructField resolveStructFieldExpr(FieldExpr fe, DerefChain derefChain) { exists(string name, DataType ty | - ty = getFieldExprLookupType(fe, pragma[only_bind_into](name), isDereferenced) + ty = getFieldExprLookupType(fe, pragma[only_bind_into](name), derefChain) | result = ty.(StructType).getTypeItem().getStructField(pragma[only_bind_into](name)) or result = ty.(UnionType).getTypeItem().getStructField(pragma[only_bind_into](name)) @@ -3856,10 +3975,10 @@ private module Cached { * Gets the tuple field that the field expression `fe` resolves to, if any. */ cached - TupleField resolveTupleFieldExpr(FieldExpr fe, boolean isDereferenced) { + TupleField resolveTupleFieldExpr(FieldExpr fe, DerefChain derefChain) { exists(int i | result = - getTupleFieldExprLookupType(fe, pragma[only_bind_into](i), isDereferenced) + getTupleFieldExprLookupType(fe, pragma[only_bind_into](i), derefChain) .(StructType) .getTypeItem() .getTupleField(pragma[only_bind_into](i)) diff --git a/rust/ql/lib/codeql/rust/internal/typeinference/DerefChain.qll b/rust/ql/lib/codeql/rust/internal/typeinference/DerefChain.qll new file mode 100644 index 00000000000..cca2a1b20e1 --- /dev/null +++ b/rust/ql/lib/codeql/rust/internal/typeinference/DerefChain.qll @@ -0,0 +1,82 @@ +/** Provides logic for representing chains of implicit dereferences. */ + +private import rust +private import codeql.rust.internal.PathResolution +private import codeql.rust.internal.Type +private import codeql.rust.internal.TypeInference +private import codeql.rust.internal.TypeMention +private import codeql.rust.frameworks.stdlib.Stdlib +private import codeql.rust.frameworks.stdlib.Builtins as Builtins +private import codeql.util.UnboundList as UnboundListImpl + +/** An `impl` block that implements the `Deref` trait. */ +class DerefImplItemNode extends ImplItemNode { + DerefImplItemNode() { this.resolveTraitTy() instanceof DerefTrait } + + /** Gets the `deref` function in this `Deref` impl block. */ + Function getDerefFunction() { result = this.getAssocItem("deref") } + + private SelfParam getSelfParam() { result = this.getDerefFunction().getSelfParam() } + + /** + * Resolves the type at `path` of the `self` parameter inside the `deref` function, + * stripped of the leading `&`. + */ + pragma[nomagic] + Type resolveSelfParamTypeStrippedAt(TypePath path) { + exists(TypePath path0 | + result = getSelfParamTypeMention(this.getSelfParam()).resolveTypeAt(path0) and + path0.isCons(getRefTypeParameter(false), path) + ) + } + + /** + * Holds if the return type at `path` of the `deref` function, stripped of the + * leading `&`, mentions type parameter `tp` at `path`. + */ + pragma[nomagic] + predicate returnTypeStrippedMentionsTypeParameterAt(TypeParameter tp, TypePath path) { + exists(TypePath path0 | + tp = getReturnTypeMention(this.getDerefFunction()).resolveTypeAt(path0) and + path0.isCons(getRefTypeParameter(false), path) + ) + } + + /** Gets the first type parameter of the type being implemented, if any. */ + pragma[nomagic] + TypeParamTypeParameter getFirstSelfTypeParameter() { + result.getTypeParam() = this.resolveSelfTy().getTypeParam(0) + } +} + +private module UnboundListInput implements UnboundListImpl::InputSig { + private import codeql.rust.elements.internal.generated.Raw + private import codeql.rust.elements.internal.generated.Synth + + private class DerefImplItemRaw extends Raw::Impl { + DerefImplItemRaw() { this = Synth::convertAstNodeToRaw(any(DerefImplItemNode i)) } + } + + private predicate id(DerefImplItemRaw x, DerefImplItemRaw y) { x = y } + + private predicate idOfRaw(DerefImplItemRaw x, int y) = equivalenceRelation(id/2)(x, y) + + class Element = DerefImplItemNode; + + int getId(Element e) { idOfRaw(Synth::convertAstNodeToRaw(e), result) } + + string getElementString(Element e) { result = e.resolveSelfTy().getName() } + + int getLengthLimit() { result = 5 } +} + +private import UnboundListImpl::Make + +/** + * A sequence of `Deref` impl blocks representing a chain of implicit dereferences, + * encoded as a string. + */ +class DerefChain = UnboundList; + +/** Provides predicates for constructing `DerefChain`s. */ +module DerefChain = UnboundList; diff --git a/rust/ql/test/library-tests/dataflow/global/viableCallable.expected b/rust/ql/test/library-tests/dataflow/global/viableCallable.expected index 4e5714fa2d9..49de4868d73 100644 --- a/rust/ql/test/library-tests/dataflow/global/viableCallable.expected +++ b/rust/ql/test/library-tests/dataflow/global/viableCallable.expected @@ -84,6 +84,7 @@ | main.rs:292:13:292:14 | * ... | main.rs:251:5:253:5 | fn deref | | main.rs:293:5:293:11 | sink(...) | main.rs:5:1:7:1 | fn sink | | main.rs:295:28:295:37 | source(...) | main.rs:1:1:3:1 | fn source | +| main.rs:296:13:296:23 | a.min(...) | {EXTERNAL LOCATION} | fn min | | main.rs:297:5:297:11 | sink(...) | main.rs:5:1:7:1 | fn sink | | main.rs:319:28:319:36 | source(...) | main.rs:1:1:3:1 | fn source | | main.rs:321:30:321:54 | ...::take_self(...) | main.rs:309:5:311:5 | fn take_self | diff --git a/rust/ql/test/library-tests/dataflow/sources/file/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/file/InlineFlow.expected index 6f012e837a9..cffdc6d395b 100644 --- a/rust/ql/test/library-tests/dataflow/sources/file/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/file/InlineFlow.expected @@ -35,7 +35,8 @@ models | 34 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_string; Argument[self].Reference; Argument[0].Reference; taint | | 35 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u8; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | | 36 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 37 | Summary: ::as_path; Argument[self].Reference; ReturnValue.Reference; value | +| 37 | Summary: ::canonicalize; Argument[self].Reference.OptionalBarrier[normalize-path]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 38 | Summary: ::as_path; Argument[self].Reference; ReturnValue.Reference; value | edges | test.rs:12:13:12:18 | buffer | test.rs:13:14:13:19 | buffer | provenance | | | test.rs:12:31:12:43 | ...::read | test.rs:12:31:12:55 | ...::read(...) [Ok] | provenance | Src:MaD:11 | @@ -51,12 +52,15 @@ edges | test.rs:22:22:22:52 | TryExpr | test.rs:22:13:22:18 | buffer | provenance | | | test.rs:29:13:29:16 | path | test.rs:30:14:30:17 | path | provenance | | | test.rs:29:13:29:16 | path | test.rs:31:14:31:17 | path | provenance | | +| test.rs:29:13:29:16 | path | test.rs:40:14:40:17 | path | provenance | | | test.rs:29:13:29:16 | path | test.rs:41:14:41:17 | path | provenance | | | test.rs:29:20:29:27 | e.path() | test.rs:29:13:29:16 | path | provenance | | | test.rs:29:22:29:25 | path | test.rs:29:20:29:27 | e.path() | provenance | Src:MaD:4 MaD:4 | | test.rs:30:14:30:17 | path | test.rs:30:14:30:25 | path.clone() | provenance | MaD:18 | | test.rs:31:14:31:17 | path | test.rs:31:14:31:25 | path.clone() | provenance | MaD:18 | -| test.rs:31:14:31:25 | path.clone() | test.rs:31:14:31:35 | ... .as_path() | provenance | MaD:37 | +| test.rs:31:14:31:25 | path.clone() | test.rs:31:14:31:35 | ... .as_path() | provenance | MaD:38 | +| test.rs:40:14:40:17 | path | test.rs:40:14:40:32 | path.canonicalize() [Ok] | provenance | MaD:37 | +| test.rs:40:14:40:32 | path.canonicalize() [Ok] | test.rs:40:14:40:41 | ... .unwrap() | provenance | MaD:36 | | test.rs:43:13:43:21 | file_name | test.rs:44:14:44:22 | file_name | provenance | | | test.rs:43:13:43:21 | file_name | test.rs:49:14:49:22 | file_name | provenance | | | test.rs:43:25:43:37 | e.file_name() | test.rs:43:13:43:21 | file_name | provenance | | @@ -273,6 +277,9 @@ nodes | test.rs:31:14:31:17 | path | semmle.label | path | | test.rs:31:14:31:25 | path.clone() | semmle.label | path.clone() | | test.rs:31:14:31:35 | ... .as_path() | semmle.label | ... .as_path() | +| test.rs:40:14:40:17 | path | semmle.label | path | +| test.rs:40:14:40:32 | path.canonicalize() [Ok] | semmle.label | path.canonicalize() [Ok] | +| test.rs:40:14:40:41 | ... .unwrap() | semmle.label | ... .unwrap() | | test.rs:41:14:41:17 | path | semmle.label | path | | test.rs:43:13:43:21 | file_name | semmle.label | file_name | | test.rs:43:25:43:37 | e.file_name() | semmle.label | e.file_name() | @@ -492,6 +499,7 @@ testFailures | test.rs:23:14:23:19 | buffer | test.rs:22:22:22:39 | ...::read_to_string | test.rs:23:14:23:19 | buffer | $@ | test.rs:22:22:22:39 | ...::read_to_string | ...::read_to_string | | test.rs:30:14:30:25 | path.clone() | test.rs:29:22:29:25 | path | test.rs:30:14:30:25 | path.clone() | $@ | test.rs:29:22:29:25 | path | path | | test.rs:31:14:31:35 | ... .as_path() | test.rs:29:22:29:25 | path | test.rs:31:14:31:35 | ... .as_path() | $@ | test.rs:29:22:29:25 | path | path | +| test.rs:40:14:40:41 | ... .unwrap() | test.rs:29:22:29:25 | path | test.rs:40:14:40:41 | ... .unwrap() | $@ | test.rs:29:22:29:25 | path | path | | test.rs:41:14:41:17 | path | test.rs:29:22:29:25 | path | test.rs:41:14:41:17 | path | $@ | test.rs:29:22:29:25 | path | path | | test.rs:44:14:44:30 | file_name.clone() | test.rs:43:27:43:35 | file_name | test.rs:44:14:44:30 | file_name.clone() | $@ | test.rs:43:27:43:35 | file_name | file_name | | test.rs:49:14:49:22 | file_name | test.rs:43:27:43:35 | file_name | test.rs:49:14:49:22 | file_name | $@ | test.rs:43:27:43:35 | file_name | file_name | diff --git a/rust/ql/test/library-tests/dataflow/sources/file/TaintSources.expected b/rust/ql/test/library-tests/dataflow/sources/file/TaintSources.expected index 0fb17232a39..dd1b94de717 100644 --- a/rust/ql/test/library-tests/dataflow/sources/file/TaintSources.expected +++ b/rust/ql/test/library-tests/dataflow/sources/file/TaintSources.expected @@ -7,6 +7,9 @@ | test.rs:51:52:51:59 | read_dir | Flow source 'FileSource' of type file (DEFAULT). | | test.rs:54:22:54:25 | path | Flow source 'FileSource' of type file (DEFAULT). | | test.rs:55:27:55:35 | file_name | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:57:56:57:63 | read_dir | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:60:22:60:25 | path | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:61:27:61:35 | file_name | Flow source 'FileSource' of type file (DEFAULT). | | test.rs:65:22:65:34 | ...::read_link | Flow source 'FileSource' of type file (DEFAULT). | | test.rs:74:31:74:45 | ...::read | Flow source 'FileSource' of type file (DEFAULT). | | test.rs:79:31:79:45 | ...::read | Flow source 'FileSource' of type file (DEFAULT). | diff --git a/rust/ql/test/library-tests/dataflow/sources/file/test.rs b/rust/ql/test/library-tests/dataflow/sources/file/test.rs index 0124d2a094e..4aa56a0dd74 100644 --- a/rust/ql/test/library-tests/dataflow/sources/file/test.rs +++ b/rust/ql/test/library-tests/dataflow/sources/file/test.rs @@ -37,7 +37,7 @@ fn test_fs() -> Result<(), Box> { sink(path.to_path_buf()); // $ MISSING: hasTaintFlow sink(path.file_name().unwrap()); // $ MISSING: hasTaintFlow sink(path.extension().unwrap()); // $ MISSING: hasTaintFlow - sink(path.canonicalize().unwrap()); // $ MISSING: hasTaintFlow + sink(path.canonicalize().unwrap()); // $ hasTaintFlow sink(path); // $ hasTaintFlow let file_name = e.file_name(); // $ Alert[rust/summary/taint-sources] @@ -54,11 +54,11 @@ fn test_fs() -> Result<(), Box> { let path = e.path(); // $ Alert[rust/summary/taint-sources] let file_name = e.file_name(); // $ Alert[rust/summary/taint-sources] } - for entry in std::path::PathBuf::from("directory").read_dir()? { + for entry in std::path::PathBuf::from("directory").read_dir()? { // $ Alert[rust/summary/taint-sources] let e = entry?; - let path = e.path(); // $ MISSING: Alert[rust/summary/taint-sources] - let file_name = e.file_name(); // $ MISSING: Alert[rust/summary/taint-sources] + let path = e.path(); // $ Alert[rust/summary/taint-sources] + let file_name = e.file_name(); // $ Alert[rust/summary/taint-sources] } { diff --git a/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected index 2b39cf16c42..a5a4846284e 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected @@ -1,93 +1,97 @@ models | 1 | Source: ::connect; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | | 2 | Source: ::send_request; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | -| 3 | Source: ::connect; ReturnValue.Field[core::result::Result::Ok(0)]; remote | -| 4 | Source: ::connect_timeout; ReturnValue.Field[core::result::Result::Ok(0)]; remote | -| 5 | Source: ::connect; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | -| 6 | Source: reqwest::blocking::get; ReturnValue.Field[core::result::Result::Ok(0)]; remote | -| 7 | Source: reqwest::get; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | -| 8 | Summary: <_ as core::ops::index::Index>::index; Argument[self].Reference.Element; ReturnValue.Reference; value | -| 9 | Summary: <_ as futures_io::if_std::AsyncBufRead>::poll_fill_buf; Argument[self].Reference; ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Ok(0)]; taint | -| 10 | Summary: <_ as futures_io::if_std::AsyncRead>::poll_read; Argument[self].Reference; Argument[1].Reference; taint | -| 11 | Summary: <_ as futures_util::io::AsyncBufReadExt>::fill_buf; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 12 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self].Reference; Argument[0].Reference; taint | -| 13 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self].Reference; Argument[1].Reference; taint | -| 14 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | -| 15 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | -| 16 | Summary: <_ as std::io::BufRead>::read_line; Argument[self].Reference; Argument[0].Reference; taint | -| 17 | Summary: <_ as std::io::Read>::read; Argument[self].Reference; Argument[0].Reference; taint | -| 18 | Summary: <_ as std::io::Read>::take; Argument[self]; ReturnValue; taint | -| 19 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | -| 20 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 21 | Summary: ::new; Argument[0].Reference; ReturnValue; value | -| 22 | Summary: ::new; Argument[0]; ReturnValue.Field[core::pin::Pin::pointer]; value | -| 23 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 24 | Summary: ::connect; Argument[1]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 25 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 26 | Summary: ::bytes; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 27 | Summary: ::chunk; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | -| 28 | Summary: ::text; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 29 | Summary: ::bytes; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 30 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 31 | Summary: ::text_with_charset; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 32 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 33 | Summary: ::peek; Argument[self].Reference; Argument[0].Reference; taint | -| 34 | Summary: ::try_read; Argument[self].Reference; Argument[0].Reference; taint | -| 35 | Summary: ::try_read_buf; Argument[self].Reference; Argument[0].Reference; taint | +| 3 | Source: ::new; ReturnValue.Field[core::result::Result::Ok(0)]; remote | +| 4 | Source: ::connect; ReturnValue.Field[core::result::Result::Ok(0)]; remote | +| 5 | Source: ::connect_timeout; ReturnValue.Field[core::result::Result::Ok(0)]; remote | +| 6 | Source: ::connect; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | +| 7 | Source: reqwest::blocking::get; ReturnValue.Field[core::result::Result::Ok(0)]; remote | +| 8 | Source: reqwest::get; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | +| 9 | Summary: <_ as core::ops::index::Index>::index; Argument[self].Reference.Element; ReturnValue.Reference; value | +| 10 | Summary: <_ as futures_io::if_std::AsyncBufRead>::poll_fill_buf; Argument[self].Reference; ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Ok(0)]; taint | +| 11 | Summary: <_ as futures_io::if_std::AsyncRead>::poll_read; Argument[self].Reference; Argument[1].Reference; taint | +| 12 | Summary: <_ as futures_util::io::AsyncBufReadExt>::fill_buf; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 13 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self].Reference; Argument[0].Reference; taint | +| 14 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self].Reference; Argument[1].Reference; taint | +| 15 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | +| 16 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | +| 17 | Summary: <_ as std::io::BufRead>::read_line; Argument[self].Reference; Argument[0].Reference; taint | +| 18 | Summary: <_ as std::io::Read>::read; Argument[self].Reference; Argument[0].Reference; taint | +| 19 | Summary: <_ as std::io::Read>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | +| 20 | Summary: <_ as std::io::Read>::read_to_string; Argument[self].Reference; Argument[0].Reference; taint | +| 21 | Summary: <_ as std::io::Read>::take; Argument[self]; ReturnValue; taint | +| 22 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | +| 23 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 24 | Summary: ::new; Argument[0].Reference; ReturnValue; value | +| 25 | Summary: ::new; Argument[0]; ReturnValue.Field[core::pin::Pin::pointer]; value | +| 26 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 27 | Summary: ::connect; Argument[1]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 28 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 29 | Summary: ::bytes; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 30 | Summary: ::chunk; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | +| 31 | Summary: ::text; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 32 | Summary: ::bytes; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 33 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 34 | Summary: ::text_with_charset; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 35 | Summary: ::reader; Argument[self]; ReturnValue; taint | +| 36 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 37 | Summary: ::peek; Argument[self].Reference; Argument[0].Reference; taint | +| 38 | Summary: ::try_read; Argument[self].Reference; Argument[0].Reference; taint | +| 39 | Summary: ::try_read_buf; Argument[self].Reference; Argument[0].Reference; taint | edges | test.rs:11:9:11:22 | remote_string1 | test.rs:12:10:12:23 | remote_string1 | provenance | | -| test.rs:11:26:11:47 | ...::get | test.rs:11:26:11:62 | ...::get(...) [Ok] | provenance | Src:MaD:6 | +| test.rs:11:26:11:47 | ...::get | test.rs:11:26:11:62 | ...::get(...) [Ok] | provenance | Src:MaD:7 | | test.rs:11:26:11:62 | ...::get(...) [Ok] | test.rs:11:26:11:63 | TryExpr | provenance | | -| test.rs:11:26:11:63 | TryExpr | test.rs:11:26:11:70 | ... .text() [Ok] | provenance | MaD:30 | +| test.rs:11:26:11:63 | TryExpr | test.rs:11:26:11:70 | ... .text() [Ok] | provenance | MaD:33 | | test.rs:11:26:11:70 | ... .text() [Ok] | test.rs:11:26:11:71 | TryExpr | provenance | | | test.rs:11:26:11:71 | TryExpr | test.rs:11:9:11:22 | remote_string1 | provenance | | | test.rs:14:9:14:22 | remote_string2 | test.rs:15:10:15:23 | remote_string2 | provenance | | -| test.rs:14:26:14:47 | ...::get | test.rs:14:26:14:62 | ...::get(...) [Ok] | provenance | Src:MaD:6 | -| test.rs:14:26:14:62 | ...::get(...) [Ok] | test.rs:14:26:14:71 | ... .unwrap() | provenance | MaD:23 | -| test.rs:14:26:14:71 | ... .unwrap() | test.rs:14:26:14:78 | ... .text() [Ok] | provenance | MaD:30 | -| test.rs:14:26:14:78 | ... .text() [Ok] | test.rs:14:26:14:87 | ... .unwrap() | provenance | MaD:23 | +| test.rs:14:26:14:47 | ...::get | test.rs:14:26:14:62 | ...::get(...) [Ok] | provenance | Src:MaD:7 | +| test.rs:14:26:14:62 | ...::get(...) [Ok] | test.rs:14:26:14:71 | ... .unwrap() | provenance | MaD:26 | +| test.rs:14:26:14:71 | ... .unwrap() | test.rs:14:26:14:78 | ... .text() [Ok] | provenance | MaD:33 | +| test.rs:14:26:14:78 | ... .text() [Ok] | test.rs:14:26:14:87 | ... .unwrap() | provenance | MaD:26 | | test.rs:14:26:14:87 | ... .unwrap() | test.rs:14:9:14:22 | remote_string2 | provenance | | | test.rs:17:9:17:22 | remote_string3 | test.rs:18:10:18:23 | remote_string3 | provenance | | -| test.rs:17:26:17:47 | ...::get | test.rs:17:26:17:62 | ...::get(...) [Ok] | provenance | Src:MaD:6 | -| test.rs:17:26:17:62 | ...::get(...) [Ok] | test.rs:17:26:17:71 | ... .unwrap() | provenance | MaD:23 | -| test.rs:17:26:17:71 | ... .unwrap() | test.rs:17:26:17:98 | ... .text_with_charset(...) [Ok] | provenance | MaD:31 | -| test.rs:17:26:17:98 | ... .text_with_charset(...) [Ok] | test.rs:17:26:17:107 | ... .unwrap() | provenance | MaD:23 | +| test.rs:17:26:17:47 | ...::get | test.rs:17:26:17:62 | ...::get(...) [Ok] | provenance | Src:MaD:7 | +| test.rs:17:26:17:62 | ...::get(...) [Ok] | test.rs:17:26:17:71 | ... .unwrap() | provenance | MaD:26 | +| test.rs:17:26:17:71 | ... .unwrap() | test.rs:17:26:17:98 | ... .text_with_charset(...) [Ok] | provenance | MaD:34 | +| test.rs:17:26:17:98 | ... .text_with_charset(...) [Ok] | test.rs:17:26:17:107 | ... .unwrap() | provenance | MaD:26 | | test.rs:17:26:17:107 | ... .unwrap() | test.rs:17:9:17:22 | remote_string3 | provenance | | | test.rs:20:9:20:22 | remote_string4 | test.rs:21:10:21:23 | remote_string4 | provenance | | -| test.rs:20:26:20:47 | ...::get | test.rs:20:26:20:62 | ...::get(...) [Ok] | provenance | Src:MaD:6 | -| test.rs:20:26:20:62 | ...::get(...) [Ok] | test.rs:20:26:20:71 | ... .unwrap() | provenance | MaD:23 | -| test.rs:20:26:20:71 | ... .unwrap() | test.rs:20:26:20:79 | ... .bytes() [Ok] | provenance | MaD:29 | -| test.rs:20:26:20:79 | ... .bytes() [Ok] | test.rs:20:26:20:88 | ... .unwrap() | provenance | MaD:23 | +| test.rs:20:26:20:47 | ...::get | test.rs:20:26:20:62 | ...::get(...) [Ok] | provenance | Src:MaD:7 | +| test.rs:20:26:20:62 | ...::get(...) [Ok] | test.rs:20:26:20:71 | ... .unwrap() | provenance | MaD:26 | +| test.rs:20:26:20:71 | ... .unwrap() | test.rs:20:26:20:79 | ... .bytes() [Ok] | provenance | MaD:32 | +| test.rs:20:26:20:79 | ... .bytes() [Ok] | test.rs:20:26:20:88 | ... .unwrap() | provenance | MaD:26 | | test.rs:20:26:20:88 | ... .unwrap() | test.rs:20:9:20:22 | remote_string4 | provenance | | | test.rs:23:9:23:22 | remote_string5 | test.rs:24:10:24:23 | remote_string5 | provenance | | -| test.rs:23:26:23:37 | ...::get | test.rs:23:26:23:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:7 | +| test.rs:23:26:23:37 | ...::get | test.rs:23:26:23:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:8 | | test.rs:23:26:23:52 | ...::get(...) [future, Ok] | test.rs:23:26:23:58 | await ... [Ok] | provenance | | | test.rs:23:26:23:58 | await ... [Ok] | test.rs:23:26:23:59 | TryExpr | provenance | | -| test.rs:23:26:23:59 | TryExpr | test.rs:23:26:23:66 | ... .text() [future, Ok] | provenance | MaD:28 | +| test.rs:23:26:23:59 | TryExpr | test.rs:23:26:23:66 | ... .text() [future, Ok] | provenance | MaD:31 | | test.rs:23:26:23:66 | ... .text() [future, Ok] | test.rs:23:26:23:72 | await ... [Ok] | provenance | | | test.rs:23:26:23:72 | await ... [Ok] | test.rs:23:26:23:73 | TryExpr | provenance | | | test.rs:23:26:23:73 | TryExpr | test.rs:23:9:23:22 | remote_string5 | provenance | | | test.rs:26:9:26:22 | remote_string6 | test.rs:27:10:27:23 | remote_string6 | provenance | | -| test.rs:26:26:26:37 | ...::get | test.rs:26:26:26:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:7 | +| test.rs:26:26:26:37 | ...::get | test.rs:26:26:26:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:8 | | test.rs:26:26:26:52 | ...::get(...) [future, Ok] | test.rs:26:26:26:58 | await ... [Ok] | provenance | | | test.rs:26:26:26:58 | await ... [Ok] | test.rs:26:26:26:59 | TryExpr | provenance | | -| test.rs:26:26:26:59 | TryExpr | test.rs:26:26:26:67 | ... .bytes() [future, Ok] | provenance | MaD:26 | +| test.rs:26:26:26:59 | TryExpr | test.rs:26:26:26:67 | ... .bytes() [future, Ok] | provenance | MaD:29 | | test.rs:26:26:26:67 | ... .bytes() [future, Ok] | test.rs:26:26:26:73 | await ... [Ok] | provenance | | | test.rs:26:26:26:73 | await ... [Ok] | test.rs:26:26:26:74 | TryExpr | provenance | | | test.rs:26:26:26:74 | TryExpr | test.rs:26:9:26:22 | remote_string6 | provenance | | | test.rs:29:9:29:20 | mut request1 | test.rs:30:10:30:17 | request1 | provenance | | | test.rs:29:9:29:20 | mut request1 | test.rs:31:29:31:36 | request1 | provenance | | -| test.rs:29:24:29:35 | ...::get | test.rs:29:24:29:50 | ...::get(...) [future, Ok] | provenance | Src:MaD:7 | +| test.rs:29:24:29:35 | ...::get | test.rs:29:24:29:50 | ...::get(...) [future, Ok] | provenance | Src:MaD:8 | | test.rs:29:24:29:50 | ...::get(...) [future, Ok] | test.rs:29:24:29:56 | await ... [Ok] | provenance | | | test.rs:29:24:29:56 | await ... [Ok] | test.rs:29:24:29:57 | TryExpr | provenance | | | test.rs:29:24:29:57 | TryExpr | test.rs:29:9:29:20 | mut request1 | provenance | | -| test.rs:30:10:30:17 | request1 | test.rs:30:10:30:25 | request1.chunk() [future, Ok, Some] | provenance | MaD:27 | +| test.rs:30:10:30:17 | request1 | test.rs:30:10:30:25 | request1.chunk() [future, Ok, Some] | provenance | MaD:30 | | test.rs:30:10:30:25 | request1.chunk() [future, Ok, Some] | test.rs:30:10:30:31 | await ... [Ok, Some] | provenance | | | test.rs:30:10:30:31 | await ... [Ok, Some] | test.rs:30:10:30:32 | TryExpr [Some] | provenance | | -| test.rs:30:10:30:32 | TryExpr [Some] | test.rs:30:10:30:41 | ... .unwrap() | provenance | MaD:20 | +| test.rs:30:10:30:32 | TryExpr [Some] | test.rs:30:10:30:41 | ... .unwrap() | provenance | MaD:23 | | test.rs:31:15:31:25 | Some(...) [Some] | test.rs:31:20:31:24 | chunk | provenance | | | test.rs:31:20:31:24 | chunk | test.rs:32:14:32:18 | chunk | provenance | | -| test.rs:31:29:31:36 | request1 | test.rs:31:29:31:44 | request1.chunk() [future, Ok, Some] | provenance | MaD:27 | +| test.rs:31:29:31:36 | request1 | test.rs:31:29:31:44 | request1.chunk() [future, Ok, Some] | provenance | MaD:30 | | test.rs:31:29:31:44 | request1.chunk() [future, Ok, Some] | test.rs:31:29:31:50 | await ... [Ok, Some] | provenance | | | test.rs:31:29:31:50 | await ... [Ok, Some] | test.rs:31:29:31:51 | TryExpr [Some] | provenance | | | test.rs:31:29:31:51 | TryExpr [Some] | test.rs:31:15:31:25 | Some(...) [Some] | provenance | | @@ -105,24 +109,24 @@ edges | test.rs:67:31:67:42 | send_request | test.rs:67:24:67:51 | sender.send_request(...) [future, Ok] | provenance | Src:MaD:2 | | test.rs:68:11:68:18 | response | test.rs:68:10:68:18 | &response | provenance | | | test.rs:155:13:155:22 | mut stream | test.rs:162:17:162:22 | stream | provenance | | -| test.rs:155:26:155:53 | ...::connect | test.rs:155:26:155:62 | ...::connect(...) [Ok] | provenance | Src:MaD:3 | +| test.rs:155:26:155:53 | ...::connect | test.rs:155:26:155:62 | ...::connect(...) [Ok] | provenance | Src:MaD:4 | | test.rs:155:26:155:62 | ...::connect(...) [Ok] | test.rs:155:26:155:63 | TryExpr | provenance | | | test.rs:155:26:155:63 | TryExpr | test.rs:155:13:155:22 | mut stream | provenance | | -| test.rs:162:17:162:22 | stream | test.rs:162:29:162:39 | [post] &mut buffer [&ref] | provenance | MaD:17 | +| test.rs:162:17:162:22 | stream | test.rs:162:29:162:39 | [post] &mut buffer [&ref] | provenance | MaD:18 | | test.rs:162:29:162:39 | [post] &mut buffer [&ref] | test.rs:162:34:162:39 | [post] buffer | provenance | | | test.rs:162:34:162:39 | [post] buffer | test.rs:165:15:165:20 | buffer | provenance | | | test.rs:162:34:162:39 | [post] buffer | test.rs:166:14:166:19 | buffer | provenance | | | test.rs:165:15:165:20 | buffer | test.rs:165:14:165:20 | &buffer | provenance | | -| test.rs:166:14:166:19 | buffer | test.rs:166:14:166:22 | buffer[0] | provenance | MaD:8 | +| test.rs:166:14:166:19 | buffer | test.rs:166:14:166:22 | buffer[0] | provenance | MaD:9 | | test.rs:174:13:174:22 | mut stream | test.rs:182:58:182:63 | stream | provenance | | -| test.rs:174:26:174:61 | ...::connect_timeout | test.rs:174:26:174:105 | ...::connect_timeout(...) [Ok] | provenance | Src:MaD:4 | +| test.rs:174:26:174:61 | ...::connect_timeout | test.rs:174:26:174:105 | ...::connect_timeout(...) [Ok] | provenance | Src:MaD:5 | | test.rs:174:26:174:105 | ...::connect_timeout(...) [Ok] | test.rs:174:26:174:106 | TryExpr | provenance | | | test.rs:174:26:174:106 | TryExpr | test.rs:174:13:174:22 | mut stream | provenance | | | test.rs:182:21:182:30 | mut reader | test.rs:185:27:185:32 | reader | provenance | | -| test.rs:182:34:182:64 | ...::new(...) | test.rs:182:34:182:74 | ... .take(...) | provenance | MaD:18 | +| test.rs:182:34:182:64 | ...::new(...) | test.rs:182:34:182:74 | ... .take(...) | provenance | MaD:21 | | test.rs:182:34:182:74 | ... .take(...) | test.rs:182:21:182:30 | mut reader | provenance | | -| test.rs:182:58:182:63 | stream | test.rs:182:34:182:64 | ...::new(...) | provenance | MaD:32 | -| test.rs:185:27:185:32 | reader | test.rs:185:44:185:52 | [post] &mut line [&ref] | provenance | MaD:16 | +| test.rs:182:58:182:63 | stream | test.rs:182:34:182:64 | ...::new(...) | provenance | MaD:36 | +| test.rs:185:27:185:32 | reader | test.rs:185:44:185:52 | [post] &mut line [&ref] | provenance | MaD:17 | | test.rs:185:44:185:52 | [post] &mut line [&ref] | test.rs:185:49:185:52 | [post] line | provenance | | | test.rs:185:49:185:52 | [post] line | test.rs:192:35:192:38 | line | provenance | | | test.rs:192:35:192:38 | line | test.rs:192:34:192:38 | &line | provenance | | @@ -130,30 +134,53 @@ edges | test.rs:224:9:224:24 | mut tokio_stream | test.rs:236:18:236:29 | tokio_stream | provenance | | | test.rs:224:9:224:24 | mut tokio_stream | test.rs:252:19:252:30 | tokio_stream | provenance | | | test.rs:224:9:224:24 | mut tokio_stream | test.rs:275:19:275:30 | tokio_stream | provenance | | -| test.rs:224:28:224:57 | ...::connect | test.rs:224:28:224:66 | ...::connect(...) [future, Ok] | provenance | Src:MaD:5 | +| test.rs:224:28:224:57 | ...::connect | test.rs:224:28:224:66 | ...::connect(...) [future, Ok] | provenance | Src:MaD:6 | | test.rs:224:28:224:66 | ...::connect(...) [future, Ok] | test.rs:224:28:224:72 | await ... [Ok] | provenance | | | test.rs:224:28:224:72 | await ... [Ok] | test.rs:224:28:224:73 | TryExpr | provenance | | | test.rs:224:28:224:73 | TryExpr | test.rs:224:9:224:24 | mut tokio_stream | provenance | | -| test.rs:232:17:232:28 | tokio_stream | test.rs:232:35:232:46 | [post] &mut buffer1 [&ref] | provenance | MaD:33 | +| test.rs:232:17:232:28 | tokio_stream | test.rs:232:35:232:46 | [post] &mut buffer1 [&ref] | provenance | MaD:37 | | test.rs:232:35:232:46 | [post] &mut buffer1 [&ref] | test.rs:232:40:232:46 | [post] buffer1 | provenance | | | test.rs:232:40:232:46 | [post] buffer1 | test.rs:239:15:239:21 | buffer1 | provenance | | | test.rs:232:40:232:46 | [post] buffer1 | test.rs:240:14:240:20 | buffer1 | provenance | | -| test.rs:236:18:236:29 | tokio_stream | test.rs:236:36:236:47 | [post] &mut buffer2 [&ref] | provenance | MaD:19 | +| test.rs:236:18:236:29 | tokio_stream | test.rs:236:36:236:47 | [post] &mut buffer2 [&ref] | provenance | MaD:22 | | test.rs:236:36:236:47 | [post] &mut buffer2 [&ref] | test.rs:236:41:236:47 | [post] buffer2 | provenance | | | test.rs:236:41:236:47 | [post] buffer2 | test.rs:243:15:243:21 | buffer2 | provenance | | | test.rs:236:41:236:47 | [post] buffer2 | test.rs:244:14:244:20 | buffer2 | provenance | | | test.rs:239:15:239:21 | buffer1 | test.rs:239:14:239:21 | &buffer1 | provenance | | -| test.rs:240:14:240:20 | buffer1 | test.rs:240:14:240:23 | buffer1[0] | provenance | MaD:8 | +| test.rs:240:14:240:20 | buffer1 | test.rs:240:14:240:23 | buffer1[0] | provenance | MaD:9 | | test.rs:243:15:243:21 | buffer2 | test.rs:243:14:243:21 | &buffer2 | provenance | | -| test.rs:244:14:244:20 | buffer2 | test.rs:244:14:244:23 | buffer2[0] | provenance | MaD:8 | -| test.rs:252:19:252:30 | tokio_stream | test.rs:252:41:252:51 | [post] &mut buffer [&ref] | provenance | MaD:34 | +| test.rs:244:14:244:20 | buffer2 | test.rs:244:14:244:23 | buffer2[0] | provenance | MaD:9 | +| test.rs:252:19:252:30 | tokio_stream | test.rs:252:41:252:51 | [post] &mut buffer [&ref] | provenance | MaD:38 | | test.rs:252:41:252:51 | [post] &mut buffer [&ref] | test.rs:252:46:252:51 | [post] buffer | provenance | | | test.rs:252:46:252:51 | [post] buffer | test.rs:259:27:259:32 | buffer | provenance | | | test.rs:259:27:259:32 | buffer | test.rs:259:26:259:32 | &buffer | provenance | | -| test.rs:275:19:275:30 | tokio_stream | test.rs:275:45:275:55 | [post] &mut buffer [&ref] | provenance | MaD:35 | +| test.rs:275:19:275:30 | tokio_stream | test.rs:275:45:275:55 | [post] &mut buffer [&ref] | provenance | MaD:39 | | test.rs:275:45:275:55 | [post] &mut buffer [&ref] | test.rs:275:50:275:55 | [post] buffer | provenance | | | test.rs:275:50:275:55 | [post] buffer | test.rs:282:27:282:32 | buffer | provenance | | | test.rs:282:27:282:32 | buffer | test.rs:282:26:282:32 | &buffer | provenance | | +| test.rs:332:9:332:18 | mut client | test.rs:333:22:333:27 | client | provenance | | +| test.rs:332:22:332:50 | ...::new | test.rs:332:22:332:75 | ...::new(...) [Ok] | provenance | Src:MaD:3 | +| test.rs:332:22:332:75 | ...::new(...) [Ok] | test.rs:332:22:332:84 | ... .unwrap() | provenance | MaD:26 | +| test.rs:332:22:332:84 | ... .unwrap() | test.rs:332:9:332:18 | mut client | provenance | | +| test.rs:333:9:333:18 | mut reader | test.rs:334:11:334:16 | reader | provenance | | +| test.rs:333:9:333:18 | mut reader | test.rs:338:22:338:27 | reader | provenance | | +| test.rs:333:9:333:18 | mut reader | test.rs:344:22:344:27 | reader | provenance | | +| test.rs:333:9:333:18 | mut reader | test.rs:350:22:350:27 | reader | provenance | | +| test.rs:333:22:333:27 | client | test.rs:333:22:333:36 | client.reader() | provenance | MaD:35 | +| test.rs:333:22:333:36 | client.reader() | test.rs:333:9:333:18 | mut reader | provenance | | +| test.rs:334:11:334:16 | reader | test.rs:334:10:334:16 | &reader | provenance | | +| test.rs:338:22:338:27 | reader | test.rs:338:34:338:44 | [post] &mut buffer [&ref] | provenance | MaD:18 | +| test.rs:338:34:338:44 | [post] &mut buffer [&ref] | test.rs:338:39:338:44 | [post] buffer | provenance | | +| test.rs:338:39:338:44 | [post] buffer | test.rs:339:15:339:20 | buffer | provenance | | +| test.rs:339:15:339:20 | buffer | test.rs:339:14:339:20 | &buffer | provenance | | +| test.rs:344:22:344:27 | reader | test.rs:344:41:344:51 | [post] &mut buffer [&ref] | provenance | MaD:19 | +| test.rs:344:41:344:51 | [post] &mut buffer [&ref] | test.rs:344:46:344:51 | [post] buffer | provenance | | +| test.rs:344:46:344:51 | [post] buffer | test.rs:345:15:345:20 | buffer | provenance | | +| test.rs:345:15:345:20 | buffer | test.rs:345:14:345:20 | &buffer | provenance | | +| test.rs:350:22:350:27 | reader | test.rs:350:44:350:54 | [post] &mut buffer [&ref] | provenance | MaD:20 | +| test.rs:350:44:350:54 | [post] &mut buffer [&ref] | test.rs:350:49:350:54 | [post] buffer | provenance | | +| test.rs:350:49:350:54 | [post] buffer | test.rs:351:15:351:20 | buffer | provenance | | +| test.rs:351:15:351:20 | buffer | test.rs:351:14:351:20 | &buffer | provenance | | | test.rs:373:13:373:15 | tcp | test.rs:374:15:374:17 | tcp | provenance | | | test.rs:373:13:373:15 | tcp | test.rs:380:57:380:59 | tcp | provenance | | | test.rs:373:19:373:36 | ...::connect | test.rs:373:19:373:41 | ...::connect(...) [future, Ok] | provenance | Src:MaD:1 | @@ -169,38 +196,38 @@ edges | test.rs:380:26:380:60 | connector.connect(...) [future, Ok] | test.rs:380:26:380:66 | await ... [Ok] | provenance | | | test.rs:380:26:380:66 | await ... [Ok] | test.rs:380:26:380:67 | TryExpr | provenance | | | test.rs:380:26:380:67 | TryExpr | test.rs:380:13:380:22 | mut reader | provenance | | -| test.rs:380:57:380:59 | tcp | test.rs:380:26:380:60 | connector.connect(...) [future, Ok] | provenance | MaD:24 | +| test.rs:380:57:380:59 | tcp | test.rs:380:26:380:60 | connector.connect(...) [future, Ok] | provenance | MaD:27 | | test.rs:381:15:381:20 | reader | test.rs:381:14:381:20 | &reader | provenance | | | test.rs:386:17:386:26 | mut pinned | test.rs:387:19:387:24 | pinned | provenance | | | test.rs:386:17:386:26 | mut pinned | test.rs:389:30:389:35 | pinned | provenance | | | test.rs:386:17:386:26 | mut pinned [Pin, &ref] | test.rs:387:19:387:24 | pinned [Pin, &ref] | provenance | | | test.rs:386:30:386:50 | ...::new(...) | test.rs:386:17:386:26 | mut pinned | provenance | | | test.rs:386:30:386:50 | ...::new(...) [Pin, &ref] | test.rs:386:17:386:26 | mut pinned [Pin, &ref] | provenance | | -| test.rs:386:39:386:49 | &mut reader [&ref] | test.rs:386:30:386:50 | ...::new(...) | provenance | MaD:21 | -| test.rs:386:39:386:49 | &mut reader [&ref] | test.rs:386:30:386:50 | ...::new(...) [Pin, &ref] | provenance | MaD:22 | +| test.rs:386:39:386:49 | &mut reader [&ref] | test.rs:386:30:386:50 | ...::new(...) | provenance | MaD:24 | +| test.rs:386:39:386:49 | &mut reader [&ref] | test.rs:386:30:386:50 | ...::new(...) [Pin, &ref] | provenance | MaD:25 | | test.rs:386:44:386:49 | reader | test.rs:386:39:386:49 | &mut reader [&ref] | provenance | | | test.rs:387:19:387:24 | pinned | test.rs:387:18:387:24 | &pinned | provenance | | | test.rs:387:19:387:24 | pinned [Pin, &ref] | test.rs:387:18:387:24 | &pinned | provenance | | -| test.rs:389:30:389:35 | pinned | test.rs:389:56:389:66 | [post] &mut buffer [&ref] | provenance | MaD:10 | +| test.rs:389:30:389:35 | pinned | test.rs:389:56:389:66 | [post] &mut buffer [&ref] | provenance | MaD:11 | | test.rs:389:56:389:66 | [post] &mut buffer [&ref] | test.rs:389:61:389:66 | [post] buffer | provenance | | | test.rs:389:61:389:66 | [post] buffer | test.rs:391:23:391:28 | buffer | provenance | | | test.rs:389:61:389:66 | [post] buffer | test.rs:392:23:392:28 | buffer | provenance | | | test.rs:389:61:389:66 | [post] buffer | test.rs:392:23:392:33 | buffer[...] | provenance | | | test.rs:391:23:391:28 | buffer | test.rs:391:22:391:28 | &buffer | provenance | | -| test.rs:392:23:392:28 | buffer | test.rs:392:23:392:33 | buffer[...] | provenance | MaD:8 | +| test.rs:392:23:392:28 | buffer | test.rs:392:23:392:33 | buffer[...] | provenance | MaD:9 | | test.rs:392:23:392:33 | buffer[...] | test.rs:392:22:392:33 | &... | provenance | | -| test.rs:399:63:399:73 | &mut reader [&ref] | test.rs:399:76:399:87 | [post] &mut buffer1 [&ref] | provenance | MaD:14 | +| test.rs:399:63:399:73 | &mut reader [&ref] | test.rs:399:76:399:87 | [post] &mut buffer1 [&ref] | provenance | MaD:15 | | test.rs:399:68:399:73 | reader | test.rs:399:63:399:73 | &mut reader [&ref] | provenance | | | test.rs:399:76:399:87 | [post] &mut buffer1 [&ref] | test.rs:399:81:399:87 | [post] buffer1 | provenance | | | test.rs:399:81:399:87 | [post] buffer1 | test.rs:400:19:400:25 | buffer1 | provenance | | | test.rs:399:81:399:87 | [post] buffer1 | test.rs:400:19:400:40 | buffer1[...] | provenance | | -| test.rs:400:19:400:25 | buffer1 | test.rs:400:19:400:40 | buffer1[...] | provenance | MaD:8 | +| test.rs:400:19:400:25 | buffer1 | test.rs:400:19:400:40 | buffer1[...] | provenance | MaD:9 | | test.rs:400:19:400:40 | buffer1[...] | test.rs:400:18:400:40 | &... | provenance | | -| test.rs:403:31:403:36 | reader | test.rs:403:43:403:54 | [post] &mut buffer2 [&ref] | provenance | MaD:14 | +| test.rs:403:31:403:36 | reader | test.rs:403:43:403:54 | [post] &mut buffer2 [&ref] | provenance | MaD:15 | | test.rs:403:43:403:54 | [post] &mut buffer2 [&ref] | test.rs:403:48:403:54 | [post] buffer2 | provenance | | | test.rs:403:48:403:54 | [post] buffer2 | test.rs:405:19:405:25 | buffer2 | provenance | | | test.rs:403:48:403:54 | [post] buffer2 | test.rs:405:19:405:40 | buffer2[...] | provenance | | -| test.rs:405:19:405:25 | buffer2 | test.rs:405:19:405:40 | buffer2[...] | provenance | MaD:8 | +| test.rs:405:19:405:25 | buffer2 | test.rs:405:19:405:40 | buffer2[...] | provenance | MaD:9 | | test.rs:405:19:405:40 | buffer2[...] | test.rs:405:18:405:40 | &... | provenance | | | test.rs:408:13:408:23 | mut reader2 | test.rs:409:15:409:21 | reader2 | provenance | | | test.rs:408:13:408:23 | mut reader2 | test.rs:413:44:413:50 | reader2 | provenance | | @@ -215,30 +242,30 @@ edges | test.rs:408:13:408:23 | mut reader2 | test.rs:493:31:493:37 | reader2 | provenance | | | test.rs:408:13:408:23 | mut reader2 | test.rs:500:31:500:37 | reader2 | provenance | | | test.rs:408:27:408:61 | ...::new(...) | test.rs:408:13:408:23 | mut reader2 | provenance | | -| test.rs:408:55:408:60 | reader | test.rs:408:27:408:61 | ...::new(...) | provenance | MaD:25 | +| test.rs:408:55:408:60 | reader | test.rs:408:27:408:61 | ...::new(...) | provenance | MaD:28 | | test.rs:409:15:409:21 | reader2 | test.rs:409:14:409:21 | &reader2 | provenance | | | test.rs:413:17:413:26 | mut pinned | test.rs:414:19:414:24 | pinned | provenance | | | test.rs:413:17:413:26 | mut pinned | test.rs:416:26:416:31 | pinned | provenance | | | test.rs:413:17:413:26 | mut pinned [Pin, &ref] | test.rs:414:19:414:24 | pinned [Pin, &ref] | provenance | | | test.rs:413:30:413:51 | ...::new(...) | test.rs:413:17:413:26 | mut pinned | provenance | | | test.rs:413:30:413:51 | ...::new(...) [Pin, &ref] | test.rs:413:17:413:26 | mut pinned [Pin, &ref] | provenance | | -| test.rs:413:39:413:50 | &mut reader2 [&ref] | test.rs:413:30:413:51 | ...::new(...) | provenance | MaD:21 | -| test.rs:413:39:413:50 | &mut reader2 [&ref] | test.rs:413:30:413:51 | ...::new(...) [Pin, &ref] | provenance | MaD:22 | +| test.rs:413:39:413:50 | &mut reader2 [&ref] | test.rs:413:30:413:51 | ...::new(...) | provenance | MaD:24 | +| test.rs:413:39:413:50 | &mut reader2 [&ref] | test.rs:413:30:413:51 | ...::new(...) [Pin, &ref] | provenance | MaD:25 | | test.rs:413:44:413:50 | reader2 | test.rs:413:39:413:50 | &mut reader2 [&ref] | provenance | | | test.rs:414:19:414:24 | pinned | test.rs:414:18:414:24 | &pinned | provenance | | | test.rs:414:19:414:24 | pinned [Pin, &ref] | test.rs:414:18:414:24 | &pinned | provenance | | | test.rs:416:17:416:22 | buffer [Ready, Ok] | test.rs:417:20:417:39 | ...::Ready(...) [Ready, Ok] | provenance | | | test.rs:416:17:416:22 | buffer [Ready, Ok] | test.rs:418:23:418:28 | buffer [Ready, Ok] | provenance | | -| test.rs:416:26:416:31 | pinned | test.rs:416:26:416:54 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:9 | +| test.rs:416:26:416:31 | pinned | test.rs:416:26:416:54 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:10 | | test.rs:416:26:416:54 | pinned.poll_fill_buf(...) [Ready, Ok] | test.rs:416:17:416:22 | buffer [Ready, Ok] | provenance | | | test.rs:417:20:417:39 | ...::Ready(...) [Ready, Ok] | test.rs:417:32:417:38 | Ok(...) [Ok] | provenance | | | test.rs:417:32:417:38 | Ok(...) [Ok] | test.rs:417:35:417:37 | buf | provenance | | | test.rs:417:35:417:37 | buf | test.rs:419:22:419:24 | buf | provenance | | | test.rs:418:23:418:28 | buffer [Ready, Ok] | test.rs:418:22:418:28 | &buffer | provenance | | | test.rs:423:17:423:23 | buffer2 [Ready, Ok] | test.rs:424:20:424:26 | buffer2 [Ready, Ok] | provenance | | -| test.rs:423:27:423:48 | ...::new(...) | test.rs:423:27:423:71 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:9 | +| test.rs:423:27:423:48 | ...::new(...) | test.rs:423:27:423:71 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:10 | | test.rs:423:27:423:71 | ... .poll_fill_buf(...) [Ready, Ok] | test.rs:423:17:423:23 | buffer2 [Ready, Ok] | provenance | | -| test.rs:423:36:423:47 | &mut reader2 [&ref] | test.rs:423:27:423:48 | ...::new(...) | provenance | MaD:21 | +| test.rs:423:36:423:47 | &mut reader2 [&ref] | test.rs:423:27:423:48 | ...::new(...) | provenance | MaD:24 | | test.rs:423:41:423:47 | reader2 | test.rs:423:36:423:47 | &mut reader2 [&ref] | provenance | | | test.rs:424:20:424:26 | buffer2 [Ready, Ok] | test.rs:425:17:425:36 | ...::Ready(...) [Ready, Ok] | provenance | | | test.rs:424:20:424:26 | buffer2 [Ready, Ok] | test.rs:426:27:426:33 | buffer2 [Ready, Ok] | provenance | | @@ -247,7 +274,7 @@ edges | test.rs:425:32:425:34 | buf | test.rs:427:26:427:28 | buf | provenance | | | test.rs:426:27:426:33 | buffer2 [Ready, Ok] | test.rs:426:26:426:33 | &buffer2 | provenance | | | test.rs:437:17:437:22 | buffer | test.rs:438:18:438:23 | buffer | provenance | | -| test.rs:437:26:437:32 | reader2 | test.rs:437:26:437:43 | reader2.fill_buf() [future, Ok] | provenance | MaD:11 | +| test.rs:437:26:437:32 | reader2 | test.rs:437:26:437:43 | reader2.fill_buf() [future, Ok] | provenance | MaD:12 | | test.rs:437:26:437:43 | reader2.fill_buf() [future, Ok] | test.rs:437:26:437:49 | await ... [Ok] | provenance | | | test.rs:437:26:437:49 | await ... [Ok] | test.rs:437:26:437:50 | TryExpr | provenance | | | test.rs:437:26:437:50 | TryExpr | test.rs:437:17:437:22 | buffer | provenance | | @@ -256,64 +283,64 @@ edges | test.rs:444:17:444:26 | mut pinned [Pin, &ref] | test.rs:445:19:445:24 | pinned [Pin, &ref] | provenance | | | test.rs:444:30:444:51 | ...::new(...) | test.rs:444:17:444:26 | mut pinned | provenance | | | test.rs:444:30:444:51 | ...::new(...) [Pin, &ref] | test.rs:444:17:444:26 | mut pinned [Pin, &ref] | provenance | | -| test.rs:444:39:444:50 | &mut reader2 [&ref] | test.rs:444:30:444:51 | ...::new(...) | provenance | MaD:21 | -| test.rs:444:39:444:50 | &mut reader2 [&ref] | test.rs:444:30:444:51 | ...::new(...) [Pin, &ref] | provenance | MaD:22 | +| test.rs:444:39:444:50 | &mut reader2 [&ref] | test.rs:444:30:444:51 | ...::new(...) | provenance | MaD:24 | +| test.rs:444:39:444:50 | &mut reader2 [&ref] | test.rs:444:30:444:51 | ...::new(...) [Pin, &ref] | provenance | MaD:25 | | test.rs:444:44:444:50 | reader2 | test.rs:444:39:444:50 | &mut reader2 [&ref] | provenance | | | test.rs:445:19:445:24 | pinned | test.rs:445:18:445:24 | &pinned | provenance | | | test.rs:445:19:445:24 | pinned [Pin, &ref] | test.rs:445:18:445:24 | &pinned | provenance | | -| test.rs:447:30:447:35 | pinned | test.rs:447:56:447:66 | [post] &mut buffer [&ref] | provenance | MaD:10 | +| test.rs:447:30:447:35 | pinned | test.rs:447:56:447:66 | [post] &mut buffer [&ref] | provenance | MaD:11 | | test.rs:447:56:447:66 | [post] &mut buffer [&ref] | test.rs:447:61:447:66 | [post] buffer | provenance | | | test.rs:447:61:447:66 | [post] buffer | test.rs:448:19:448:24 | buffer | provenance | | | test.rs:447:61:447:66 | [post] buffer | test.rs:450:23:450:28 | buffer | provenance | | | test.rs:447:61:447:66 | [post] buffer | test.rs:450:23:450:33 | buffer[...] | provenance | | | test.rs:448:19:448:24 | buffer | test.rs:448:18:448:24 | &buffer | provenance | | -| test.rs:450:23:450:28 | buffer | test.rs:450:23:450:33 | buffer[...] | provenance | MaD:8 | +| test.rs:450:23:450:28 | buffer | test.rs:450:23:450:33 | buffer[...] | provenance | MaD:9 | | test.rs:450:23:450:33 | buffer[...] | test.rs:450:22:450:33 | &... | provenance | | -| test.rs:457:63:457:74 | &mut reader2 [&ref] | test.rs:457:77:457:88 | [post] &mut buffer1 [&ref] | provenance | MaD:14 | +| test.rs:457:63:457:74 | &mut reader2 [&ref] | test.rs:457:77:457:88 | [post] &mut buffer1 [&ref] | provenance | MaD:15 | | test.rs:457:68:457:74 | reader2 | test.rs:457:63:457:74 | &mut reader2 [&ref] | provenance | | | test.rs:457:77:457:88 | [post] &mut buffer1 [&ref] | test.rs:457:82:457:88 | [post] buffer1 | provenance | | | test.rs:457:82:457:88 | [post] buffer1 | test.rs:458:19:458:25 | buffer1 | provenance | | | test.rs:457:82:457:88 | [post] buffer1 | test.rs:458:19:458:40 | buffer1[...] | provenance | | -| test.rs:458:19:458:25 | buffer1 | test.rs:458:19:458:40 | buffer1[...] | provenance | MaD:8 | +| test.rs:458:19:458:25 | buffer1 | test.rs:458:19:458:40 | buffer1[...] | provenance | MaD:9 | | test.rs:458:19:458:40 | buffer1[...] | test.rs:458:18:458:40 | &... | provenance | | -| test.rs:461:31:461:37 | reader2 | test.rs:461:44:461:55 | [post] &mut buffer2 [&ref] | provenance | MaD:14 | +| test.rs:461:31:461:37 | reader2 | test.rs:461:44:461:55 | [post] &mut buffer2 [&ref] | provenance | MaD:15 | | test.rs:461:44:461:55 | [post] &mut buffer2 [&ref] | test.rs:461:49:461:55 | [post] buffer2 | provenance | | | test.rs:461:49:461:55 | [post] buffer2 | test.rs:462:19:462:25 | buffer2 | provenance | | | test.rs:461:49:461:55 | [post] buffer2 | test.rs:462:19:462:40 | buffer2[...] | provenance | | -| test.rs:462:19:462:25 | buffer2 | test.rs:462:19:462:40 | buffer2[...] | provenance | MaD:8 | +| test.rs:462:19:462:25 | buffer2 | test.rs:462:19:462:40 | buffer2[...] | provenance | MaD:9 | | test.rs:462:19:462:40 | buffer2[...] | test.rs:462:18:462:40 | &... | provenance | | | test.rs:467:17:467:26 | mut pinned | test.rs:468:19:468:24 | pinned | provenance | | | test.rs:467:17:467:26 | mut pinned | test.rs:470:26:470:31 | pinned | provenance | | | test.rs:467:17:467:26 | mut pinned [Pin, &ref] | test.rs:468:19:468:24 | pinned [Pin, &ref] | provenance | | | test.rs:467:30:467:51 | ...::new(...) | test.rs:467:17:467:26 | mut pinned | provenance | | | test.rs:467:30:467:51 | ...::new(...) [Pin, &ref] | test.rs:467:17:467:26 | mut pinned [Pin, &ref] | provenance | | -| test.rs:467:39:467:50 | &mut reader2 [&ref] | test.rs:467:30:467:51 | ...::new(...) | provenance | MaD:21 | -| test.rs:467:39:467:50 | &mut reader2 [&ref] | test.rs:467:30:467:51 | ...::new(...) [Pin, &ref] | provenance | MaD:22 | +| test.rs:467:39:467:50 | &mut reader2 [&ref] | test.rs:467:30:467:51 | ...::new(...) | provenance | MaD:24 | +| test.rs:467:39:467:50 | &mut reader2 [&ref] | test.rs:467:30:467:51 | ...::new(...) [Pin, &ref] | provenance | MaD:25 | | test.rs:467:44:467:50 | reader2 | test.rs:467:39:467:50 | &mut reader2 [&ref] | provenance | | | test.rs:468:19:468:24 | pinned | test.rs:468:18:468:24 | &pinned | provenance | | | test.rs:468:19:468:24 | pinned [Pin, &ref] | test.rs:468:18:468:24 | &pinned | provenance | | | test.rs:470:17:470:22 | buffer [Ready, Ok] | test.rs:471:19:471:24 | buffer [Ready, Ok] | provenance | | | test.rs:470:17:470:22 | buffer [Ready, Ok] | test.rs:472:20:472:39 | ...::Ready(...) [Ready, Ok] | provenance | | -| test.rs:470:26:470:31 | pinned | test.rs:470:26:470:54 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:9 | +| test.rs:470:26:470:31 | pinned | test.rs:470:26:470:54 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:10 | | test.rs:470:26:470:54 | pinned.poll_fill_buf(...) [Ready, Ok] | test.rs:470:17:470:22 | buffer [Ready, Ok] | provenance | | | test.rs:471:19:471:24 | buffer [Ready, Ok] | test.rs:471:18:471:24 | &buffer | provenance | | | test.rs:472:20:472:39 | ...::Ready(...) [Ready, Ok] | test.rs:472:32:472:38 | Ok(...) [Ok] | provenance | | | test.rs:472:32:472:38 | Ok(...) [Ok] | test.rs:472:35:472:37 | buf | provenance | | | test.rs:472:35:472:37 | buf | test.rs:473:22:473:24 | buf | provenance | | | test.rs:479:17:479:22 | buffer | test.rs:480:18:480:23 | buffer | provenance | | -| test.rs:479:26:479:32 | reader2 | test.rs:479:26:479:43 | reader2.fill_buf() [future, Ok] | provenance | MaD:11 | +| test.rs:479:26:479:32 | reader2 | test.rs:479:26:479:43 | reader2.fill_buf() [future, Ok] | provenance | MaD:12 | | test.rs:479:26:479:43 | reader2.fill_buf() [future, Ok] | test.rs:479:26:479:49 | await ... [Ok] | provenance | | | test.rs:479:26:479:49 | await ... [Ok] | test.rs:479:26:479:50 | TryExpr | provenance | | | test.rs:479:26:479:50 | TryExpr | test.rs:479:17:479:22 | buffer | provenance | | -| test.rs:486:31:486:37 | reader2 | test.rs:486:57:486:65 | [post] &mut line [&ref] | provenance | MaD:13 | +| test.rs:486:31:486:37 | reader2 | test.rs:486:57:486:65 | [post] &mut line [&ref] | provenance | MaD:14 | | test.rs:486:57:486:65 | [post] &mut line [&ref] | test.rs:486:62:486:65 | [post] line | provenance | | | test.rs:486:62:486:65 | [post] line | test.rs:487:19:487:22 | line | provenance | | | test.rs:487:19:487:22 | line | test.rs:487:18:487:22 | &line | provenance | | -| test.rs:493:31:493:37 | reader2 | test.rs:493:49:493:57 | [post] &mut line [&ref] | provenance | MaD:12 | +| test.rs:493:31:493:37 | reader2 | test.rs:493:49:493:57 | [post] &mut line [&ref] | provenance | MaD:13 | | test.rs:493:49:493:57 | [post] &mut line [&ref] | test.rs:493:54:493:57 | [post] line | provenance | | | test.rs:493:54:493:57 | [post] line | test.rs:494:19:494:22 | line | provenance | | | test.rs:494:19:494:22 | line | test.rs:494:18:494:22 | &line | provenance | | -| test.rs:500:31:500:37 | reader2 | test.rs:500:51:500:61 | [post] &mut buffer [&ref] | provenance | MaD:15 | +| test.rs:500:31:500:37 | reader2 | test.rs:500:51:500:61 | [post] &mut buffer [&ref] | provenance | MaD:16 | | test.rs:500:51:500:61 | [post] &mut buffer [&ref] | test.rs:500:56:500:61 | [post] buffer | provenance | | | test.rs:500:56:500:61 | [post] buffer | test.rs:501:19:501:24 | buffer | provenance | | | test.rs:501:19:501:24 | buffer | test.rs:501:18:501:24 | &buffer | provenance | | @@ -449,6 +476,30 @@ nodes | test.rs:275:50:275:55 | [post] buffer | semmle.label | [post] buffer | | test.rs:282:26:282:32 | &buffer | semmle.label | &buffer | | test.rs:282:27:282:32 | buffer | semmle.label | buffer | +| test.rs:332:9:332:18 | mut client | semmle.label | mut client | +| test.rs:332:22:332:50 | ...::new | semmle.label | ...::new | +| test.rs:332:22:332:75 | ...::new(...) [Ok] | semmle.label | ...::new(...) [Ok] | +| test.rs:332:22:332:84 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:333:9:333:18 | mut reader | semmle.label | mut reader | +| test.rs:333:22:333:27 | client | semmle.label | client | +| test.rs:333:22:333:36 | client.reader() | semmle.label | client.reader() | +| test.rs:334:10:334:16 | &reader | semmle.label | &reader | +| test.rs:334:11:334:16 | reader | semmle.label | reader | +| test.rs:338:22:338:27 | reader | semmle.label | reader | +| test.rs:338:34:338:44 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:338:39:338:44 | [post] buffer | semmle.label | [post] buffer | +| test.rs:339:14:339:20 | &buffer | semmle.label | &buffer | +| test.rs:339:15:339:20 | buffer | semmle.label | buffer | +| test.rs:344:22:344:27 | reader | semmle.label | reader | +| test.rs:344:41:344:51 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:344:46:344:51 | [post] buffer | semmle.label | [post] buffer | +| test.rs:345:14:345:20 | &buffer | semmle.label | &buffer | +| test.rs:345:15:345:20 | buffer | semmle.label | buffer | +| test.rs:350:22:350:27 | reader | semmle.label | reader | +| test.rs:350:44:350:54 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:350:49:350:54 | [post] buffer | semmle.label | [post] buffer | +| test.rs:351:14:351:20 | &buffer | semmle.label | &buffer | +| test.rs:351:15:351:20 | buffer | semmle.label | buffer | | test.rs:373:13:373:15 | tcp | semmle.label | tcp | | test.rs:373:19:373:36 | ...::connect | semmle.label | ...::connect | | test.rs:373:19:373:41 | ...::connect(...) [future, Ok] | semmle.label | ...::connect(...) [future, Ok] | @@ -626,6 +677,10 @@ testFailures | test.rs:244:14:244:23 | buffer2[0] | test.rs:224:28:224:57 | ...::connect | test.rs:244:14:244:23 | buffer2[0] | $@ | test.rs:224:28:224:57 | ...::connect | ...::connect | | test.rs:259:26:259:32 | &buffer | test.rs:224:28:224:57 | ...::connect | test.rs:259:26:259:32 | &buffer | $@ | test.rs:224:28:224:57 | ...::connect | ...::connect | | test.rs:282:26:282:32 | &buffer | test.rs:224:28:224:57 | ...::connect | test.rs:282:26:282:32 | &buffer | $@ | test.rs:224:28:224:57 | ...::connect | ...::connect | +| test.rs:334:10:334:16 | &reader | test.rs:332:22:332:50 | ...::new | test.rs:334:10:334:16 | &reader | $@ | test.rs:332:22:332:50 | ...::new | ...::new | +| test.rs:339:14:339:20 | &buffer | test.rs:332:22:332:50 | ...::new | test.rs:339:14:339:20 | &buffer | $@ | test.rs:332:22:332:50 | ...::new | ...::new | +| test.rs:345:14:345:20 | &buffer | test.rs:332:22:332:50 | ...::new | test.rs:345:14:345:20 | &buffer | $@ | test.rs:332:22:332:50 | ...::new | ...::new | +| test.rs:351:14:351:20 | &buffer | test.rs:332:22:332:50 | ...::new | test.rs:351:14:351:20 | &buffer | $@ | test.rs:332:22:332:50 | ...::new | ...::new | | test.rs:374:14:374:17 | &tcp | test.rs:373:19:373:36 | ...::connect | test.rs:374:14:374:17 | &tcp | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | | test.rs:381:14:381:20 | &reader | test.rs:373:19:373:36 | ...::connect | test.rs:381:14:381:20 | &reader | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | | test.rs:387:18:387:24 | &pinned | test.rs:373:19:373:36 | ...::connect | test.rs:387:18:387:24 | &pinned | $@ | test.rs:373:19:373:36 | ...::connect | ...::connect | diff --git a/rust/ql/test/library-tests/dataflow/sources/net/test.rs b/rust/ql/test/library-tests/dataflow/sources/net/test.rs index 178f539dc6e..f029ac53805 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/test.rs +++ b/rust/ql/test/library-tests/dataflow/sources/net/test.rs @@ -330,25 +330,25 @@ fn test_rustls() -> std::io::Result<()> { let server_name = rustls::pki_types::ServerName::try_from("www.example.com").unwrap(); let config_arc = std::sync::Arc::new(config); let mut client = rustls::ClientConnection::new(config_arc, server_name).unwrap(); // $ Alert[rust/summary/taint-sources] - let mut reader = client.reader(); // We cannot resolve the `reader` call because it comes from `Deref`: https://docs.rs/rustls/latest/rustls/client/struct.ClientConnection.html#deref-methods-ConnectionCommon%3CClientConnectionData%3E - sink(&reader); // $ MISSING: hasTaintFlow=config_arc + let mut reader = client.reader(); + sink(&reader); // $ hasTaintFlow=config_arc { let mut buffer = [0u8; 100]; let _bytes = reader.read(&mut buffer)?; - sink(&buffer); // $ MISSING: hasTaintFlow=config_arc + sink(&buffer); // $ hasTaintFlow=config_arc } { let mut buffer = Vec::::new(); let _bytes = reader.read_to_end(&mut buffer)?; - sink(&buffer); // $ MISSING: hasTaintFlow=config_arc + sink(&buffer); // $ hasTaintFlow=config_arc } { let mut buffer = String::new(); let _bytes = reader.read_to_string(&mut buffer)?; - sink(&buffer); // $ MISSING: hasTaintFlow=config_arc + sink(&buffer); // $ hasTaintFlow=config_arc } Ok(()) diff --git a/rust/ql/test/library-tests/sensitivedata/test.rs b/rust/ql/test/library-tests/sensitivedata/test.rs index 0f4965ce285..f8d850beeb8 100644 --- a/rust/ql/test/library-tests/sensitivedata/test.rs +++ b/rust/ql/test/library-tests/sensitivedata/test.rs @@ -287,7 +287,7 @@ fn test_private_info( sink(&info.medical_notes); // $ sensitive=private sink(info.medical_notes[0].as_str()); // $ sensitive=private for n in info.medical_notes.iter() { - sink(n.as_str()); // $ MISSING: sensitive=private + sink(n.as_str()); // $ sensitive=private } sink(info.confidentialMessage.as_str()); // $ sensitive=secret sink(info.confidentialMessage.to_lowercase()); // $ sensitive=secret diff --git a/rust/ql/test/library-tests/type-inference/blanket_impl.rs b/rust/ql/test/library-tests/type-inference/blanket_impl.rs index c139af01c42..b25a0f8cf77 100644 --- a/rust/ql/test/library-tests/type-inference/blanket_impl.rs +++ b/rust/ql/test/library-tests/type-inference/blanket_impl.rs @@ -53,9 +53,9 @@ mod basic_blanket_impl { println!("{x4:?}"); let x5 = S1::duplicate(&S1); // $ target=Clone1duplicate println!("{x5:?}"); - let x6 = S2.duplicate(); // $ MISSING: target=Clone1duplicate + let x6 = S2.duplicate(); // $ target=Clone1duplicate println!("{x6:?}"); - let x7 = (&S2).duplicate(); // $ MISSING: target=Clone1duplicate + let x7 = (&S2).duplicate(); // $ target=Clone1duplicate println!("{x7:?}"); } } diff --git a/rust/ql/test/library-tests/type-inference/dereference.rs b/rust/ql/test/library-tests/type-inference/dereference.rs index 6e803d7eca6..4767e07576f 100644 --- a/rust/ql/test/library-tests/type-inference/dereference.rs +++ b/rust/ql/test/library-tests/type-inference/dereference.rs @@ -102,18 +102,18 @@ fn explicit_box_dereference() { fn implicit_dereference() { // Call method on implicitly dereferenced value let x = MyIntPointer { value: 34i64 }; - let _y = x.is_positive(); // $ MISSING: target=is_positive type=_y:bool + let _y = x.is_positive(); // $ target=is_positive type=_y:bool // Call method on implicitly dereferenced value let x = MySmartPointer { value: 34i64 }; - let _y = x.is_positive(); // $ MISSING: target=is_positive type=_y:bool + let _y = x.is_positive(); // $ target=is_positive type=_y:bool let z = MySmartPointer { value: S(0i64) }; - let z_ = z.foo(); // $ MISSING: target=foo type=z_:TRef.i64 + let z_ = z.foo(); // $ target=foo type=z_:TRef.i64 - let v = Vec::new(); // $ target=new $ MISSING: type=v:T.i32 + let v = Vec::new(); // $ target=new type=v:T.i32 let mut x = MySmartPointer { value: v }; - x.push(0); // $ MISSING: target=push + x.push(0); // $ target=push } mod implicit_deref_coercion_cycle { diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index d367525c7b8..840e17b52ef 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -2902,8 +2902,8 @@ pub mod path_buf { let path3 = path2.unwrap(); // $ target=unwrap type=path3:PathBuf let pathbuf1 = PathBuf::new(); // $ target=new certainType=pathbuf1:PathBuf - let pathbuf2 = pathbuf1.canonicalize(); // $ MISSING: target=canonicalize - let pathbuf3 = pathbuf2.unwrap(); // $ MISSING: target=unwrap type=pathbuf3:PathBuf + let pathbuf2 = pathbuf1.canonicalize(); // $ target=canonicalize + let pathbuf3 = pathbuf2.unwrap(); // $ target=unwrap type=pathbuf3:PathBuf } } diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index 19a00442499..a9328488156 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -4608,13 +4608,18 @@ inferType | blanket_impl.rs:55:18:55:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:55:18:55:25 | { ... } | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:55:20:55:21 | x5 | | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:56:13:56:14 | x6 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:56:18:56:19 | S2 | | blanket_impl.rs:9:5:10:14 | S2 | +| blanket_impl.rs:56:18:56:31 | S2.duplicate() | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:57:18:57:25 | "{x6:?}\\n" | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:57:18:57:25 | "{x6:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | blanket_impl.rs:57:18:57:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:57:18:57:25 | { ... } | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:57:20:57:21 | x6 | | blanket_impl.rs:6:5:7:14 | S1 | +| blanket_impl.rs:58:13:58:14 | x7 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:58:18:58:22 | (...) | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:58:18:58:22 | (...) | TRef | blanket_impl.rs:9:5:10:14 | S2 | +| blanket_impl.rs:58:18:58:34 | ... .duplicate() | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:58:19:58:21 | &S2 | | {EXTERNAL LOCATION} | & | | blanket_impl.rs:58:19:58:21 | &S2 | TRef | blanket_impl.rs:9:5:10:14 | S2 | | blanket_impl.rs:58:20:58:21 | S2 | | blanket_impl.rs:9:5:10:14 | S2 | @@ -4622,6 +4627,7 @@ inferType | blanket_impl.rs:59:18:59:25 | "{x7:?}\\n" | TRef | {EXTERNAL LOCATION} | str | | blanket_impl.rs:59:18:59:25 | ...::_print(...) | | {EXTERNAL LOCATION} | () | | blanket_impl.rs:59:18:59:25 | { ... } | | {EXTERNAL LOCATION} | () | +| blanket_impl.rs:59:20:59:21 | x7 | | blanket_impl.rs:6:5:7:14 | S1 | | blanket_impl.rs:68:24:68:24 | x | | {EXTERNAL LOCATION} | i64 | | blanket_impl.rs:68:32:68:32 | y | | blanket_impl.rs:67:5:69:5 | Self [trait Trait1] | | blanket_impl.rs:72:24:72:24 | x | | {EXTERNAL LOCATION} | i64 | @@ -5249,14 +5255,18 @@ inferType | dereference.rs:104:9:104:9 | x | | dereference.rs:5:1:7:1 | MyIntPointer | | dereference.rs:104:13:104:41 | MyIntPointer {...} | | dereference.rs:5:1:7:1 | MyIntPointer | | dereference.rs:104:35:104:39 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:105:9:105:10 | _y | | {EXTERNAL LOCATION} | bool | | dereference.rs:105:14:105:14 | x | | dereference.rs:5:1:7:1 | MyIntPointer | +| dereference.rs:105:14:105:28 | x.is_positive() | | {EXTERNAL LOCATION} | bool | | dereference.rs:108:9:108:9 | x | | dereference.rs:18:1:20:1 | MySmartPointer | | dereference.rs:108:9:108:9 | x | T | {EXTERNAL LOCATION} | i64 | | dereference.rs:108:13:108:43 | MySmartPointer {...} | | dereference.rs:18:1:20:1 | MySmartPointer | | dereference.rs:108:13:108:43 | MySmartPointer {...} | T | {EXTERNAL LOCATION} | i64 | | dereference.rs:108:37:108:41 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:109:9:109:10 | _y | | {EXTERNAL LOCATION} | bool | | dereference.rs:109:14:109:14 | x | | dereference.rs:18:1:20:1 | MySmartPointer | | dereference.rs:109:14:109:14 | x | T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:109:14:109:28 | x.is_positive() | | {EXTERNAL LOCATION} | bool | | dereference.rs:111:9:111:9 | z | | dereference.rs:18:1:20:1 | MySmartPointer | | dereference.rs:111:9:111:9 | z | T | dereference.rs:38:1:38:15 | S | | dereference.rs:111:9:111:9 | z | T.T | {EXTERNAL LOCATION} | i64 | @@ -5266,24 +5276,35 @@ inferType | dereference.rs:111:37:111:43 | S(...) | | dereference.rs:38:1:38:15 | S | | dereference.rs:111:37:111:43 | S(...) | T | {EXTERNAL LOCATION} | i64 | | dereference.rs:111:39:111:42 | 0i64 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:112:9:112:10 | z_ | | {EXTERNAL LOCATION} | & | +| dereference.rs:112:9:112:10 | z_ | TRef | {EXTERNAL LOCATION} | i64 | | dereference.rs:112:14:112:14 | z | | dereference.rs:18:1:20:1 | MySmartPointer | | dereference.rs:112:14:112:14 | z | T | dereference.rs:38:1:38:15 | S | | dereference.rs:112:14:112:14 | z | T.T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:112:14:112:20 | z.foo() | | {EXTERNAL LOCATION} | & | +| dereference.rs:112:14:112:20 | z.foo() | TRef | {EXTERNAL LOCATION} | i64 | | dereference.rs:114:9:114:9 | v | | {EXTERNAL LOCATION} | Vec | | dereference.rs:114:9:114:9 | v | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:114:9:114:9 | v | T | {EXTERNAL LOCATION} | i32 | | dereference.rs:114:13:114:22 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | | dereference.rs:114:13:114:22 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:114:13:114:22 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | | dereference.rs:115:13:115:13 | x | | dereference.rs:18:1:20:1 | MySmartPointer | | dereference.rs:115:13:115:13 | x | T | {EXTERNAL LOCATION} | Vec | | dereference.rs:115:13:115:13 | x | T.A | {EXTERNAL LOCATION} | Global | +| dereference.rs:115:13:115:13 | x | T.T | {EXTERNAL LOCATION} | i32 | | dereference.rs:115:17:115:43 | MySmartPointer {...} | | dereference.rs:18:1:20:1 | MySmartPointer | | dereference.rs:115:17:115:43 | MySmartPointer {...} | T | {EXTERNAL LOCATION} | Vec | | dereference.rs:115:17:115:43 | MySmartPointer {...} | T.A | {EXTERNAL LOCATION} | Global | +| dereference.rs:115:17:115:43 | MySmartPointer {...} | T.T | {EXTERNAL LOCATION} | i32 | | dereference.rs:115:41:115:41 | v | | {EXTERNAL LOCATION} | Vec | | dereference.rs:115:41:115:41 | v | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:115:41:115:41 | v | T | {EXTERNAL LOCATION} | i32 | | dereference.rs:116:5:116:5 | x | | dereference.rs:18:1:20:1 | MySmartPointer | | dereference.rs:116:5:116:5 | x | T | {EXTERNAL LOCATION} | Vec | | dereference.rs:116:5:116:5 | x | T.A | {EXTERNAL LOCATION} | Global | +| dereference.rs:116:5:116:5 | x | T.T | {EXTERNAL LOCATION} | i32 | +| dereference.rs:116:5:116:13 | x.push(...) | | {EXTERNAL LOCATION} | () | | dereference.rs:116:12:116:12 | 0 | | {EXTERNAL LOCATION} | i32 | | dereference.rs:143:19:151:5 | { ... } | | {EXTERNAL LOCATION} | () | | dereference.rs:144:17:144:26 | key_to_key | | {EXTERNAL LOCATION} | HashMap | @@ -10781,7 +10802,18 @@ inferType | main.rs:2902:21:2902:34 | path2.unwrap() | | main.rs:2879:5:2879:25 | PathBuf | | main.rs:2904:13:2904:20 | pathbuf1 | | main.rs:2879:5:2879:25 | PathBuf | | main.rs:2904:24:2904:37 | ...::new(...) | | main.rs:2879:5:2879:25 | PathBuf | +| main.rs:2905:13:2905:20 | pathbuf2 | | {EXTERNAL LOCATION} | Result | +| main.rs:2905:13:2905:20 | pathbuf2 | E | {EXTERNAL LOCATION} | () | +| main.rs:2905:13:2905:20 | pathbuf2 | T | main.rs:2879:5:2879:25 | PathBuf | | main.rs:2905:24:2905:31 | pathbuf1 | | main.rs:2879:5:2879:25 | PathBuf | +| main.rs:2905:24:2905:46 | pathbuf1.canonicalize() | | {EXTERNAL LOCATION} | Result | +| main.rs:2905:24:2905:46 | pathbuf1.canonicalize() | E | {EXTERNAL LOCATION} | () | +| main.rs:2905:24:2905:46 | pathbuf1.canonicalize() | T | main.rs:2879:5:2879:25 | PathBuf | +| main.rs:2906:13:2906:20 | pathbuf3 | | main.rs:2879:5:2879:25 | PathBuf | +| main.rs:2906:24:2906:31 | pathbuf2 | | {EXTERNAL LOCATION} | Result | +| main.rs:2906:24:2906:31 | pathbuf2 | E | {EXTERNAL LOCATION} | () | +| main.rs:2906:24:2906:31 | pathbuf2 | T | main.rs:2879:5:2879:25 | PathBuf | +| main.rs:2906:24:2906:40 | pathbuf2.unwrap() | | main.rs:2879:5:2879:25 | PathBuf | | main.rs:2912:14:2912:18 | SelfParam | | {EXTERNAL LOCATION} | & | | main.rs:2912:14:2912:18 | SelfParam | TRef | main.rs:2911:5:2913:5 | Self [trait MyTrait] | | main.rs:2919:14:2919:18 | SelfParam | | {EXTERNAL LOCATION} | & | diff --git a/rust/ql/test/query-tests/security/CWE-022/TaintedPath.expected b/rust/ql/test/query-tests/security/CWE-022/TaintedPath.expected index df7070c966a..2e98dadccfb 100644 --- a/rust/ql/test/query-tests/security/CWE-022/TaintedPath.expected +++ b/rust/ql/test/query-tests/security/CWE-022/TaintedPath.expected @@ -1,7 +1,8 @@ #select | src/main.rs:11:5:11:22 | ...::read_to_string | src/main.rs:7:11:7:19 | file_name | src/main.rs:11:5:11:22 | ...::read_to_string | This path depends on a $@. | src/main.rs:7:11:7:19 | file_name | user-provided value | -| src/main.rs:58:5:58:22 | ...::read_to_string | src/main.rs:50:51:50:59 | file_path | src/main.rs:58:5:58:22 | ...::read_to_string | This path depends on a $@. | src/main.rs:50:51:50:59 | file_path | user-provided value | +| src/main.rs:46:5:46:22 | ...::read_to_string | src/main.rs:38:11:38:19 | file_path | src/main.rs:46:5:46:22 | ...::read_to_string | This path depends on a $@. | src/main.rs:38:11:38:19 | file_path | user-provided value | | src/main.rs:71:5:71:22 | ...::read_to_string | src/main.rs:63:11:63:19 | file_path | src/main.rs:71:5:71:22 | ...::read_to_string | This path depends on a $@. | src/main.rs:63:11:63:19 | file_path | user-provided value | +| src/main.rs:85:5:85:22 | ...::read_to_string | src/main.rs:76:11:76:19 | file_path | src/main.rs:85:5:85:22 | ...::read_to_string | This path depends on a $@. | src/main.rs:76:11:76:19 | file_path | user-provided value | | src/main.rs:99:5:99:22 | ...::read_to_string | src/main.rs:90:11:90:19 | file_path | src/main.rs:99:5:99:22 | ...::read_to_string | This path depends on a $@. | src/main.rs:90:11:90:19 | file_path | user-provided value | | src/main.rs:104:13:104:31 | ...::open | src/main.rs:103:17:103:30 | ...::args | src/main.rs:104:13:104:31 | ...::open | This path depends on a $@. | src/main.rs:103:17:103:30 | ...::args | user-provided value | | src/main.rs:107:13:107:31 | ...::open | src/main.rs:103:17:103:30 | ...::args | src/main.rs:107:13:107:31 | ...::open | This path depends on a $@. | src/main.rs:103:17:103:30 | ...::args | user-provided value | @@ -19,28 +20,36 @@ edges | src/main.rs:9:9:9:17 | file_path | src/main.rs:11:24:11:32 | file_path | provenance | | | src/main.rs:9:21:9:44 | ...::from(...) | src/main.rs:9:9:9:17 | file_path | provenance | | | src/main.rs:9:35:9:43 | file_name | src/main.rs:9:21:9:44 | ...::from(...) | provenance | MaD:9 | -| src/main.rs:9:35:9:43 | file_name | src/main.rs:9:21:9:44 | ...::from(...) | provenance | MaD:14 | +| src/main.rs:9:35:9:43 | file_name | src/main.rs:9:21:9:44 | ...::from(...) | provenance | MaD:15 | | src/main.rs:11:24:11:32 | file_path | src/main.rs:11:5:11:22 | ...::read_to_string | provenance | MaD:6 Sink:MaD:6 | -| src/main.rs:50:51:50:59 | file_path | src/main.rs:52:32:52:40 | file_path | provenance | | -| src/main.rs:52:9:52:17 | file_path [&ref] | src/main.rs:53:21:53:29 | file_path [&ref] | provenance | | -| src/main.rs:52:21:52:41 | ...::new(...) [&ref] | src/main.rs:52:9:52:17 | file_path [&ref] | provenance | | -| src/main.rs:52:31:52:40 | &file_path [&ref] | src/main.rs:52:21:52:41 | ...::new(...) [&ref] | provenance | MaD:13 | -| src/main.rs:52:32:52:40 | file_path | src/main.rs:52:31:52:40 | &file_path [&ref] | provenance | | -| src/main.rs:53:9:53:17 | file_path | src/main.rs:58:24:58:32 | file_path | provenance | | -| src/main.rs:53:21:53:29 | file_path [&ref] | src/main.rs:53:21:53:44 | file_path.canonicalize() [Ok] | provenance | Config | -| src/main.rs:53:21:53:44 | file_path.canonicalize() [Ok] | src/main.rs:53:21:53:53 | ... .unwrap() | provenance | MaD:12 | -| src/main.rs:53:21:53:53 | ... .unwrap() | src/main.rs:53:9:53:17 | file_path | provenance | | -| src/main.rs:58:24:58:32 | file_path | src/main.rs:58:5:58:22 | ...::read_to_string | provenance | MaD:6 Sink:MaD:6 | +| src/main.rs:38:11:38:19 | file_path | src/main.rs:41:52:41:60 | file_path | provenance | | +| src/main.rs:41:9:41:17 | file_path | src/main.rs:46:24:46:32 | file_path | provenance | | +| src/main.rs:41:21:41:62 | public_path.join(...) | src/main.rs:41:9:41:17 | file_path | provenance | | +| src/main.rs:41:38:41:61 | ...::from(...) | src/main.rs:41:21:41:62 | public_path.join(...) | provenance | MaD:13 | +| src/main.rs:41:52:41:60 | file_path | src/main.rs:41:38:41:61 | ...::from(...) | provenance | MaD:9 | +| src/main.rs:41:52:41:60 | file_path | src/main.rs:41:38:41:61 | ...::from(...) | provenance | MaD:15 | +| src/main.rs:46:24:46:32 | file_path | src/main.rs:46:5:46:22 | ...::read_to_string | provenance | MaD:6 Sink:MaD:6 | | src/main.rs:63:11:63:19 | file_path | src/main.rs:66:32:66:40 | file_path | provenance | | | src/main.rs:66:9:66:17 | file_path [&ref] | src/main.rs:71:24:71:32 | file_path [&ref] | provenance | | | src/main.rs:66:21:66:41 | ...::new(...) [&ref] | src/main.rs:66:9:66:17 | file_path [&ref] | provenance | | -| src/main.rs:66:31:66:40 | &file_path [&ref] | src/main.rs:66:21:66:41 | ...::new(...) [&ref] | provenance | MaD:13 | +| src/main.rs:66:31:66:40 | &file_path [&ref] | src/main.rs:66:21:66:41 | ...::new(...) [&ref] | provenance | MaD:14 | | src/main.rs:66:32:66:40 | file_path | src/main.rs:66:31:66:40 | &file_path [&ref] | provenance | | | src/main.rs:71:24:71:32 | file_path [&ref] | src/main.rs:71:5:71:22 | ...::read_to_string | provenance | MaD:6 Sink:MaD:6 | +| src/main.rs:76:11:76:19 | file_path | src/main.rs:79:52:79:60 | file_path | provenance | | +| src/main.rs:79:9:79:17 | file_path | src/main.rs:80:21:80:29 | file_path | provenance | | +| src/main.rs:79:21:79:62 | public_path.join(...) | src/main.rs:79:9:79:17 | file_path | provenance | | +| src/main.rs:79:38:79:61 | ...::from(...) | src/main.rs:79:21:79:62 | public_path.join(...) | provenance | MaD:13 | +| src/main.rs:79:52:79:60 | file_path | src/main.rs:79:38:79:61 | ...::from(...) | provenance | MaD:9 | +| src/main.rs:79:52:79:60 | file_path | src/main.rs:79:38:79:61 | ...::from(...) | provenance | MaD:15 | +| src/main.rs:80:9:80:17 | file_path | src/main.rs:85:24:85:32 | file_path | provenance | | +| src/main.rs:80:21:80:29 | file_path | src/main.rs:80:21:80:44 | file_path.canonicalize() [Ok] | provenance | Config | +| src/main.rs:80:21:80:44 | file_path.canonicalize() [Ok] | src/main.rs:80:21:80:53 | ... .unwrap() | provenance | MaD:12 | +| src/main.rs:80:21:80:53 | ... .unwrap() | src/main.rs:80:9:80:17 | file_path | provenance | | +| src/main.rs:85:24:85:32 | file_path | src/main.rs:85:5:85:22 | ...::read_to_string | provenance | MaD:6 Sink:MaD:6 | | src/main.rs:90:11:90:19 | file_path | src/main.rs:93:32:93:40 | file_path | provenance | | | src/main.rs:93:9:93:17 | file_path [&ref] | src/main.rs:98:21:98:29 | file_path [&ref] | provenance | | | src/main.rs:93:21:93:41 | ...::new(...) [&ref] | src/main.rs:93:9:93:17 | file_path [&ref] | provenance | | -| src/main.rs:93:31:93:40 | &file_path [&ref] | src/main.rs:93:21:93:41 | ...::new(...) [&ref] | provenance | MaD:13 | +| src/main.rs:93:31:93:40 | &file_path [&ref] | src/main.rs:93:21:93:41 | ...::new(...) [&ref] | provenance | MaD:14 | | src/main.rs:93:32:93:40 | file_path | src/main.rs:93:31:93:40 | &file_path [&ref] | provenance | | | src/main.rs:98:9:98:17 | file_path | src/main.rs:99:24:99:32 | file_path | provenance | | | src/main.rs:98:21:98:29 | file_path [&ref] | src/main.rs:98:21:98:44 | file_path.canonicalize() [Ok] | provenance | Config | @@ -82,7 +91,7 @@ edges | src/main.rs:113:39:113:43 | path4 | src/main.rs:113:13:113:37 | ...::open | provenance | MaD:1 Sink:MaD:1 | | src/main.rs:115:9:115:13 | path5 [&ref] | src/main.rs:116:33:116:37 | path5 [&ref] | provenance | | | src/main.rs:115:17:115:44 | ...::new(...) [&ref] | src/main.rs:115:9:115:13 | path5 [&ref] | provenance | | -| src/main.rs:115:38:115:43 | &path1 [&ref] | src/main.rs:115:17:115:44 | ...::new(...) [&ref] | provenance | MaD:13 | +| src/main.rs:115:38:115:43 | &path1 [&ref] | src/main.rs:115:17:115:44 | ...::new(...) [&ref] | provenance | MaD:14 | | src/main.rs:115:39:115:43 | path1 | src/main.rs:115:38:115:43 | &path1 [&ref] | provenance | | | src/main.rs:116:33:116:37 | path5 [&ref] | src/main.rs:116:13:116:31 | ...::open | provenance | MaD:2 Sink:MaD:2 | | src/main.rs:116:33:116:37 | path5 [&ref] | src/main.rs:118:17:118:21 | path5 [&ref] | provenance | | @@ -99,7 +108,7 @@ edges | src/main.rs:170:16:170:29 | ...: ... [&ref] | src/main.rs:174:36:174:43 | path_str [&ref] | provenance | | | src/main.rs:172:9:172:12 | path [&ref] | src/main.rs:173:8:173:11 | path [&ref] | provenance | | | src/main.rs:172:16:172:34 | ...::new(...) [&ref] | src/main.rs:172:9:172:12 | path [&ref] | provenance | | -| src/main.rs:172:26:172:33 | path_str [&ref] | src/main.rs:172:16:172:34 | ...::new(...) [&ref] | provenance | MaD:13 | +| src/main.rs:172:26:172:33 | path_str [&ref] | src/main.rs:172:16:172:34 | ...::new(...) [&ref] | provenance | MaD:14 | | src/main.rs:173:8:173:11 | path [&ref] | src/main.rs:173:13:173:18 | exists | provenance | MaD:3 Sink:MaD:3 | | src/main.rs:173:8:173:11 | path [&ref] | src/main.rs:177:36:177:39 | path [&ref] | provenance | | | src/main.rs:174:36:174:43 | path_str [&ref] | src/main.rs:174:25:174:34 | ...::open | provenance | MaD:2 Sink:MaD:2 | @@ -124,8 +133,9 @@ models | 10 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Reference.Element; ReturnValue.Field[core::option::Option::Some(0)]; value | | 11 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | | 12 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 13 | Summary: ::new; Argument[0].Reference; ReturnValue.Reference; value | -| 14 | Summary: ::from; Argument[0]; ReturnValue; taint | +| 13 | Summary: ::join; Argument[0]; ReturnValue; taint | +| 14 | Summary: ::new; Argument[0].Reference; ReturnValue.Reference; value | +| 15 | Summary: ::from; Argument[0]; ReturnValue; taint | nodes | src/main.rs:7:11:7:19 | file_name | semmle.label | file_name | | src/main.rs:9:9:9:17 | file_path | semmle.label | file_path | @@ -133,17 +143,13 @@ nodes | src/main.rs:9:35:9:43 | file_name | semmle.label | file_name | | src/main.rs:11:5:11:22 | ...::read_to_string | semmle.label | ...::read_to_string | | src/main.rs:11:24:11:32 | file_path | semmle.label | file_path | -| src/main.rs:50:51:50:59 | file_path | semmle.label | file_path | -| src/main.rs:52:9:52:17 | file_path [&ref] | semmle.label | file_path [&ref] | -| src/main.rs:52:21:52:41 | ...::new(...) [&ref] | semmle.label | ...::new(...) [&ref] | -| src/main.rs:52:31:52:40 | &file_path [&ref] | semmle.label | &file_path [&ref] | -| src/main.rs:52:32:52:40 | file_path | semmle.label | file_path | -| src/main.rs:53:9:53:17 | file_path | semmle.label | file_path | -| src/main.rs:53:21:53:29 | file_path [&ref] | semmle.label | file_path [&ref] | -| src/main.rs:53:21:53:44 | file_path.canonicalize() [Ok] | semmle.label | file_path.canonicalize() [Ok] | -| src/main.rs:53:21:53:53 | ... .unwrap() | semmle.label | ... .unwrap() | -| src/main.rs:58:5:58:22 | ...::read_to_string | semmle.label | ...::read_to_string | -| src/main.rs:58:24:58:32 | file_path | semmle.label | file_path | +| src/main.rs:38:11:38:19 | file_path | semmle.label | file_path | +| src/main.rs:41:9:41:17 | file_path | semmle.label | file_path | +| src/main.rs:41:21:41:62 | public_path.join(...) | semmle.label | public_path.join(...) | +| src/main.rs:41:38:41:61 | ...::from(...) | semmle.label | ...::from(...) | +| src/main.rs:41:52:41:60 | file_path | semmle.label | file_path | +| src/main.rs:46:5:46:22 | ...::read_to_string | semmle.label | ...::read_to_string | +| src/main.rs:46:24:46:32 | file_path | semmle.label | file_path | | src/main.rs:63:11:63:19 | file_path | semmle.label | file_path | | src/main.rs:66:9:66:17 | file_path [&ref] | semmle.label | file_path [&ref] | | src/main.rs:66:21:66:41 | ...::new(...) [&ref] | semmle.label | ...::new(...) [&ref] | @@ -151,6 +157,17 @@ nodes | src/main.rs:66:32:66:40 | file_path | semmle.label | file_path | | src/main.rs:71:5:71:22 | ...::read_to_string | semmle.label | ...::read_to_string | | src/main.rs:71:24:71:32 | file_path [&ref] | semmle.label | file_path [&ref] | +| src/main.rs:76:11:76:19 | file_path | semmle.label | file_path | +| src/main.rs:79:9:79:17 | file_path | semmle.label | file_path | +| src/main.rs:79:21:79:62 | public_path.join(...) | semmle.label | public_path.join(...) | +| src/main.rs:79:38:79:61 | ...::from(...) | semmle.label | ...::from(...) | +| src/main.rs:79:52:79:60 | file_path | semmle.label | file_path | +| src/main.rs:80:9:80:17 | file_path | semmle.label | file_path | +| src/main.rs:80:21:80:29 | file_path | semmle.label | file_path | +| src/main.rs:80:21:80:44 | file_path.canonicalize() [Ok] | semmle.label | file_path.canonicalize() [Ok] | +| src/main.rs:80:21:80:53 | ... .unwrap() | semmle.label | ... .unwrap() | +| src/main.rs:85:5:85:22 | ...::read_to_string | semmle.label | ...::read_to_string | +| src/main.rs:85:24:85:32 | file_path | semmle.label | file_path | | src/main.rs:90:11:90:19 | file_path | semmle.label | file_path | | src/main.rs:93:9:93:17 | file_path [&ref] | semmle.label | file_path [&ref] | | src/main.rs:93:21:93:41 | ...::new(...) [&ref] | semmle.label | ...::new(...) [&ref] | diff --git a/rust/ql/test/query-tests/security/CWE-022/src/main.rs b/rust/ql/test/query-tests/security/CWE-022/src/main.rs index 7acf036bb6b..f686fdf1d95 100644 --- a/rust/ql/test/query-tests/security/CWE-022/src/main.rs +++ b/rust/ql/test/query-tests/security/CWE-022/src/main.rs @@ -30,12 +30,12 @@ fn tainted_path_handler_folder_good(Query(file_path): Query) -> Result, // $ MISSING: Source=remote2 + Query(file_path): Query, // $ Source=remote2 ) -> Result { let public_path = PathBuf::from("/var/www/public_html"); let file_path = public_path.join(PathBuf::from(file_path)); @@ -43,11 +43,11 @@ fn tainted_path_handler_folder_almost_good1( if !file_path.starts_with(public_path) { return Err(Error::from_status(StatusCode::BAD_REQUEST)); } - fs::read_to_string(file_path).map_err(InternalServerError) // $ path-injection-sink MISSING: path-injection-checked Alert[rust/path-injection]=remote2 -- we cannot resolve the `join` call above, because it needs a `PathBuf -> Path` `Deref` + fs::read_to_string(file_path).map_err(InternalServerError) // $ path-injection-sink path-injection-checked Alert[rust/path-injection]=remote2 } //#[handler] -fn tainted_path_handler_folder_good_simpler(Query(file_path): Query) -> Result { // $ Source=remote6 +fn tainted_path_handler_folder_good_simpler(Query(file_path): Query) -> Result { let public_path = "/var/www/public_html"; let file_path = Path::new(&file_path); let file_path = file_path.canonicalize().unwrap(); @@ -55,7 +55,7 @@ fn tainted_path_handler_folder_good_simpler(Query(file_path): Query) -> if !file_path.starts_with(public_path) { return Err(Error::from_status(StatusCode::BAD_REQUEST)); } - fs::read_to_string(file_path).map_err(InternalServerError) // $ path-injection-sink MISSING: path-injection-checked SPURIOUS: Alert[rust/path-injection]=remote6 + fs::read_to_string(file_path).map_err(InternalServerError) // $ path-injection-sink path-injection-checked } //#[handler] @@ -73,7 +73,7 @@ fn tainted_path_handler_folder_almost_good1_simpler( //#[handler] fn tainted_path_handler_folder_almost_good2( - Query(file_path): Query, // $ MISSING: Source=remote4 + Query(file_path): Query, // $ Source=remote4 ) -> Result { let public_path = PathBuf::from("/var/www/public_html"); let file_path = public_path.join(PathBuf::from(file_path)); @@ -82,7 +82,7 @@ fn tainted_path_handler_folder_almost_good2( if file_path.starts_with(public_path) { return Err(Error::from_status(StatusCode::BAD_REQUEST)); } - fs::read_to_string(file_path).map_err(InternalServerError) // $ path-injection-sink MISSING: path-injection-checked Alert[rust/path-injection]=remote4 -- we cannot resolve the `join` call above, because it needs a `PathBuf -> Path` `Deref` + fs::read_to_string(file_path).map_err(InternalServerError) // $ path-injection-sink Alert[rust/path-injection]=remote4 $ MISSING: path-injection-checked } //#[handler] diff --git a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll index f53f15b5a6a..f38be739028 100644 --- a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll +++ b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll @@ -857,10 +857,16 @@ module Make1 Input1> { { private import Input + pragma[nomagic] + private Type getTypeAt(HasTypeTree term, TypePath path) { + relevantConstraint(term, _) and + result = term.getTypeAt(path) + } + /** Holds if the type tree has the type `type` and should satisfy `constraint`. */ pragma[nomagic] private predicate hasTypeConstraint(HasTypeTree term, Type type, Type constraint) { - type = term.getTypeAt(TypePath::nil()) and + type = getTypeAt(term, TypePath::nil()) and relevantConstraint(term, constraint) } @@ -967,36 +973,74 @@ module Make1 Input1> { ) } - pragma[nomagic] - private predicate satisfiesConstraintTypeMention1( - HasTypeTree tt, Type constraint, TypePath path, TypePath pathToTypeParamInSub + pragma[inline] + private predicate satisfiesConstraintTypeMention1Inline( + HasTypeTree tt, TypeAbstraction abs, Type constraint, TypePath path, + TypePath pathToTypeParamInSub ) { - exists(TypeAbstraction abs, TypeMention sub, TypeParameter tp | + exists(TypeMention sub, TypeParameter tp | satisfiesConstraintTypeMention0(tt, constraint, abs, sub, path, tp) and tp = abs.getATypeParameter() and sub.resolveTypeAt(pathToTypeParamInSub) = tp ) } + pragma[nomagic] + private predicate satisfiesConstraintTypeMention1( + HasTypeTree tt, Type constraint, TypePath path, TypePath pathToTypeParamInSub + ) { + satisfiesConstraintTypeMention1Inline(tt, _, constraint, path, pathToTypeParamInSub) + } + + pragma[nomagic] + private predicate satisfiesConstraintTypeMention1Through( + HasTypeTree tt, TypeAbstraction abs, Type constraint, TypePath path, + TypePath pathToTypeParamInSub + ) { + satisfiesConstraintTypeMention1Inline(tt, abs, constraint, path, pathToTypeParamInSub) + } + + pragma[inline] + private predicate satisfiesConstraintTypeNonTypeParamInline( + HasTypeTree tt, TypeAbstraction abs, Type constraint, TypePath path, Type t + ) { + satisfiesConstraintTypeMention0(tt, constraint, abs, _, path, t) and + not t = abs.getATypeParameter() + } + /** * Holds if the type tree at `tt` satisfies the constraint `constraint` * with the type `t` at `path`. */ pragma[nomagic] predicate satisfiesConstraintType(HasTypeTree tt, Type constraint, TypePath path, Type t) { - exists(TypeAbstraction abs | - satisfiesConstraintTypeMention0(tt, constraint, abs, _, path, t) and - not t = abs.getATypeParameter() - ) + satisfiesConstraintTypeNonTypeParamInline(tt, _, constraint, path, t) or exists(TypePath prefix0, TypePath pathToTypeParamInSub, TypePath suffix | satisfiesConstraintTypeMention1(tt, constraint, prefix0, pathToTypeParamInSub) and - tt.getTypeAt(pathToTypeParamInSub.appendInverse(suffix)) = t and + getTypeAt(tt, pathToTypeParamInSub.appendInverse(suffix)) = t and path = prefix0.append(suffix) ) or hasTypeConstraint(tt, constraint, constraint) and - t = tt.getTypeAt(path) + t = getTypeAt(tt, path) + } + + /** + * Holds if the type tree at `tt` satisfies the constraint `constraint` + * through `abs` with the type `t` at `path`. + */ + pragma[nomagic] + predicate satisfiesConstraintTypeThrough( + HasTypeTree tt, TypeAbstraction abs, Type constraint, TypePath path, Type t + ) { + satisfiesConstraintTypeNonTypeParamInline(tt, abs, constraint, path, t) + or + exists(TypePath prefix0, TypePath pathToTypeParamInSub, TypePath suffix | + satisfiesConstraintTypeMention1Through(tt, abs, constraint, prefix0, pathToTypeParamInSub) and + getTypeAt(tt, pathToTypeParamInSub.appendInverse(suffix)) = t and + path = prefix0.append(suffix) + ) } /** From 0c7aeb4bceb4dcd53de8cfebfad44fa0a6b72684 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Fri, 19 Dec 2025 13:05:04 +0100 Subject: [PATCH 31/63] Rust: Update data flow test to use implicit borrow --- .../dataflow/global/inline-flow.expected | 16 +++++++--------- .../test/library-tests/dataflow/global/main.rs | 2 +- .../dataflow/global/viableCallable.expected | 4 ++-- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/rust/ql/test/library-tests/dataflow/global/inline-flow.expected b/rust/ql/test/library-tests/dataflow/global/inline-flow.expected index 343a33146d2..af31673e15b 100644 --- a/rust/ql/test/library-tests/dataflow/global/inline-flow.expected +++ b/rust/ql/test/library-tests/dataflow/global/inline-flow.expected @@ -13,10 +13,9 @@ edges | main.rs:30:17:30:21 | SelfParam [&ref, MyStruct] | main.rs:31:9:31:12 | self [&ref, MyStruct] | provenance | | | main.rs:31:9:31:12 | self [&ref, MyStruct] | main.rs:31:9:31:17 | self.data | provenance | | | main.rs:31:9:31:17 | self.data | main.rs:30:31:32:5 | { ... } | provenance | | -| main.rs:38:6:38:11 | [post] &mut a [&ref, MyStruct] | main.rs:38:11:38:11 | [post] a [MyStruct] | provenance | | -| main.rs:38:11:38:11 | [post] a [MyStruct] | main.rs:39:10:39:10 | a [MyStruct] | provenance | | -| main.rs:38:23:38:31 | source(...) | main.rs:26:28:26:33 | ...: i64 | provenance | | -| main.rs:38:23:38:31 | source(...) | main.rs:38:6:38:11 | [post] &mut a [&ref, MyStruct] | provenance | | +| main.rs:38:5:38:5 | [post] a [MyStruct] | main.rs:39:10:39:10 | a [MyStruct] | provenance | | +| main.rs:38:16:38:24 | source(...) | main.rs:26:28:26:33 | ...: i64 | provenance | | +| main.rs:38:16:38:24 | source(...) | main.rs:38:5:38:5 | [post] a [MyStruct] | provenance | | | main.rs:39:10:39:10 | a [MyStruct] | main.rs:30:17:30:21 | SelfParam [&ref, MyStruct] | provenance | | | main.rs:39:10:39:10 | a [MyStruct] | main.rs:39:10:39:21 | a.get_data() | provenance | | | main.rs:46:9:46:14 | [post] &mut a [&ref, MyStruct] | main.rs:46:14:46:14 | [post] a [MyStruct] | provenance | | @@ -233,9 +232,8 @@ nodes | main.rs:30:31:32:5 | { ... } | semmle.label | { ... } | | main.rs:31:9:31:12 | self [&ref, MyStruct] | semmle.label | self [&ref, MyStruct] | | main.rs:31:9:31:17 | self.data | semmle.label | self.data | -| main.rs:38:6:38:11 | [post] &mut a [&ref, MyStruct] | semmle.label | [post] &mut a [&ref, MyStruct] | -| main.rs:38:11:38:11 | [post] a [MyStruct] | semmle.label | [post] a [MyStruct] | -| main.rs:38:23:38:31 | source(...) | semmle.label | source(...) | +| main.rs:38:5:38:5 | [post] a [MyStruct] | semmle.label | [post] a [MyStruct] | +| main.rs:38:16:38:24 | source(...) | semmle.label | source(...) | | main.rs:39:10:39:10 | a [MyStruct] | semmle.label | a [MyStruct] | | main.rs:39:10:39:21 | a.get_data() | semmle.label | a.get_data() | | main.rs:46:9:46:14 | [post] &mut a [&ref, MyStruct] | semmle.label | [post] &mut a [&ref, MyStruct] | @@ -459,7 +457,7 @@ nodes | main.rs:418:18:418:41 | ...::get_default(...) | semmle.label | ...::get_default(...) | | main.rs:419:14:419:15 | n5 | semmle.label | n5 | subpaths -| main.rs:38:23:38:31 | source(...) | main.rs:26:28:26:33 | ...: i64 | main.rs:26:17:26:25 | SelfParam [Return] [&ref, MyStruct] | main.rs:38:6:38:11 | [post] &mut a [&ref, MyStruct] | +| main.rs:38:16:38:24 | source(...) | main.rs:26:28:26:33 | ...: i64 | main.rs:26:17:26:25 | SelfParam [Return] [&ref, MyStruct] | main.rs:38:5:38:5 | [post] a [MyStruct] | | main.rs:39:10:39:10 | a [MyStruct] | main.rs:30:17:30:21 | SelfParam [&ref, MyStruct] | main.rs:30:31:32:5 | { ... } | main.rs:39:10:39:21 | a.get_data() | | main.rs:48:15:48:23 | source(...) | main.rs:26:28:26:33 | ...: i64 | main.rs:26:17:26:25 | SelfParam [Return] [&ref, MyStruct] | main.rs:46:9:46:14 | [post] &mut a [&ref, MyStruct] | | main.rs:49:10:49:10 | a [MyStruct] | main.rs:30:17:30:21 | SelfParam [&ref, MyStruct] | main.rs:30:31:32:5 | { ... } | main.rs:49:10:49:21 | a.get_data() | @@ -482,7 +480,7 @@ subpaths testFailures #select | main.rs:18:10:18:10 | a | main.rs:13:5:13:13 | source(...) | main.rs:18:10:18:10 | a | $@ | main.rs:13:5:13:13 | source(...) | source(...) | -| main.rs:39:10:39:21 | a.get_data() | main.rs:38:23:38:31 | source(...) | main.rs:39:10:39:21 | a.get_data() | $@ | main.rs:38:23:38:31 | source(...) | source(...) | +| main.rs:39:10:39:21 | a.get_data() | main.rs:38:16:38:24 | source(...) | main.rs:39:10:39:21 | a.get_data() | $@ | main.rs:38:16:38:24 | source(...) | source(...) | | main.rs:49:10:49:21 | a.get_data() | main.rs:48:15:48:23 | source(...) | main.rs:49:10:49:21 | a.get_data() | $@ | main.rs:48:15:48:23 | source(...) | source(...) | | main.rs:53:10:53:10 | n | main.rs:57:13:57:21 | source(...) | main.rs:53:10:53:10 | n | $@ | main.rs:57:13:57:21 | source(...) | source(...) | | main.rs:68:10:68:10 | b | main.rs:66:13:66:21 | source(...) | main.rs:68:10:68:10 | b | $@ | main.rs:66:13:66:21 | source(...) | source(...) | diff --git a/rust/ql/test/library-tests/dataflow/global/main.rs b/rust/ql/test/library-tests/dataflow/global/main.rs index bd910c03b42..1ee7ed43e15 100644 --- a/rust/ql/test/library-tests/dataflow/global/main.rs +++ b/rust/ql/test/library-tests/dataflow/global/main.rs @@ -35,7 +35,7 @@ impl MyStruct { fn data_out_of_call_side_effect1() { let mut a = MyStruct { data: 0 }; sink(a.get_data()); - (&mut a).set_data(source(8)); + a.set_data(source(8)); sink(a.get_data()); // $ hasValueFlow=8 } diff --git a/rust/ql/test/library-tests/dataflow/global/viableCallable.expected b/rust/ql/test/library-tests/dataflow/global/viableCallable.expected index 49de4868d73..5f07dbca450 100644 --- a/rust/ql/test/library-tests/dataflow/global/viableCallable.expected +++ b/rust/ql/test/library-tests/dataflow/global/viableCallable.expected @@ -4,8 +4,8 @@ | main.rs:18:5:18:11 | sink(...) | main.rs:5:1:7:1 | fn sink | | main.rs:37:5:37:22 | sink(...) | main.rs:5:1:7:1 | fn sink | | main.rs:37:10:37:21 | a.get_data() | main.rs:30:5:32:5 | fn get_data | -| main.rs:38:5:38:32 | ... .set_data(...) | main.rs:26:5:28:5 | fn set_data | -| main.rs:38:23:38:31 | source(...) | main.rs:1:1:3:1 | fn source | +| main.rs:38:5:38:25 | a.set_data(...) | main.rs:26:5:28:5 | fn set_data | +| main.rs:38:16:38:24 | source(...) | main.rs:1:1:3:1 | fn source | | main.rs:39:5:39:22 | sink(...) | main.rs:5:1:7:1 | fn sink | | main.rs:39:10:39:21 | a.get_data() | main.rs:30:5:32:5 | fn get_data | | main.rs:44:5:48:24 | ... .set_data(...) | main.rs:26:5:28:5 | fn set_data | From dce21e595e96fd8f29ce97762e73b3cf0147ad09 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Fri, 19 Dec 2025 13:04:59 +0100 Subject: [PATCH 32/63] Rust: Model implicit `Deref` trait calls in data flow --- .../codeql/rust/dataflow/internal/Content.qll | 70 +++++- .../rust/dataflow/internal/DataFlowImpl.qll | 73 +++++- .../codeql/rust/dataflow/internal/Node.qll | 236 +++++++++++++++--- .../codeql/rust/frameworks/rustls.model.yml | 2 +- .../rust/frameworks/stdlib/core.model.yml | 9 +- .../codeql/rust/internal/TypeInference.qll | 36 ++- .../internal/typeinference/DerefChain.qll | 19 +- .../dataflow/collections/inline-flow.expected | 4 +- .../dataflow/global/inline-flow.expected | 28 ++- .../library-tests/dataflow/global/main.rs | 2 +- .../dataflow/global/viableCallable.expected | 6 +- .../dataflow/local/DataFlowStep.expected | 99 ++++---- .../dataflow/local/inline-flow.expected | 81 +++--- .../dataflow/modeled/inline-flow.expected | 4 +- .../dataflow/pointers/inline-flow.expected | 8 +- .../dataflow/sources/env/InlineFlow.expected | 38 +-- .../dataflow/sources/file/InlineFlow.expected | 94 +++---- .../dataflow/sources/net/InlineFlow.expected | 170 ++++++------- .../dataflow/taint/TaintFlowStep.expected | 12 +- .../security/CWE-022/TaintedPath.expected | 47 ++-- .../UncontrolledAllocationSize.expected | 163 ++++++------ shared/util/codeql/util/UnboundList.qll | 2 +- 22 files changed, 761 insertions(+), 442 deletions(-) diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/Content.qll b/rust/ql/lib/codeql/rust/dataflow/internal/Content.qll index e7afd607b7b..7c18fbb4db0 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/Content.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/Content.qll @@ -35,6 +35,9 @@ class TupleFieldContent extends FieldContent, TTupleFieldContent { not field = any(TupleType tt).getATupleField() } + /** Gets the tuple field. */ + TupleField getField() { result = field } + /** Holds if this field belongs to an enum variant. */ predicate isVariantField(Variant v, int pos) { field.isVariantField(v, pos) } @@ -68,6 +71,9 @@ class StructFieldContent extends FieldContent, TStructFieldContent { StructFieldContent() { this = TStructFieldContent(field) } + /** Gets the struct field. */ + StructField getField() { result = field } + /** Holds if this field belongs to an enum variant. */ predicate isVariantField(Variant v, string name) { field.isVariantField(v, name) } @@ -253,10 +259,32 @@ final class OptionalBarrier extends ContentSet, TOptionalBarrier { private import codeql.rust.internal.CachedStages +string tupleFieldApprox(TupleField field) { + exists(Name name | + name = any(Variant v | field.isVariantField(v, _)).getName() + or + name = any(Struct s | field.isStructField(s, _)).getName() + | + result = name.getText().charAt(0) + ) +} + +string structFieldApprox(StructField field) { + exists(string name | + field.isVariantField(_, name) or + field.isStructField(_, name) + | + result = name.charAt(0) + ) +} + cached newtype TContent = - TTupleFieldContent(TupleField field) { Stages::DataFlowStage::ref() } or - TStructFieldContent(StructField field) or + TTupleFieldContent(TupleField field) { + Stages::DataFlowStage::ref() and + exists(tupleFieldApprox(field)) + } or + TStructFieldContent(StructField field) { exists(structFieldApprox(field)) } or TElementContent() or TFutureContent() or TTuplePositionContent(int pos) { @@ -272,3 +300,41 @@ newtype TContent = } or TCapturedVariableContent(VariableCapture::CapturedVariable v) or TReferenceContent() + +cached +newtype TContentApprox = + TTupleFieldContentApprox(string s) { Stages::DataFlowStage::ref() and s = tupleFieldApprox(_) } or + TStructFieldContentApprox(string s) { s = structFieldApprox(_) } or + TElementContentApprox() or + TFutureContentApprox() or + TTuplePositionContentApprox() or + TFunctionCallReturnContentApprox() or + TFunctionCallArgumentContentApprox() or + TCapturedVariableContentApprox() or + TReferenceContentApprox() + +final class ContentApprox extends TContentApprox { + /** Gets a textual representation of this element. */ + string toString() { + exists(string s | + this = TTupleFieldContentApprox(s) or + this = TStructFieldContentApprox(s) + | + result = s + ) + or + this = TElementContentApprox() and result = "element" + or + this = TFutureContentApprox() and result = "future" + or + this = TTuplePositionContentApprox() and result = "tuple.position" + or + this = TFunctionCallReturnContentApprox() and result = "function.return" + or + this = TFunctionCallArgumentContentApprox() and result = "function.argument" + or + this = TCapturedVariableContentApprox() and result = "captured.variable" + or + this = TReferenceContentApprox() and result = "&ref" + } +} diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll index ecbc24359b4..c21c053b173 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll @@ -15,6 +15,8 @@ private import codeql.rust.internal.PathResolution private import codeql.rust.controlflow.ControlFlowGraph private import codeql.rust.dataflow.Ssa private import codeql.rust.dataflow.FlowSummary +private import codeql.rust.internal.TypeInference as TypeInference +private import codeql.rust.internal.typeinference.DerefChain private import Node private import Content private import FlowSummaryImpl as FlowSummaryImpl @@ -60,6 +62,10 @@ final class DataFlowCall extends TDataFlowCall { /** Gets the underlying call, if any. */ Call asCall() { this = TCall(result) } + predicate isImplicitDerefCall(AstNode n, DerefChain derefChain, int i, Function target) { + this = TImplicitDerefCall(n, derefChain, i, target) + } + predicate isSummaryCall( FlowSummaryImpl::Public::SummarizedCallable c, FlowSummaryImpl::Private::SummaryNode receiver ) { @@ -69,12 +75,20 @@ final class DataFlowCall extends TDataFlowCall { DataFlowCallable getEnclosingCallable() { result.asCfgScope() = this.asCall().getEnclosingCfgScope() or + result.asCfgScope() = + any(AstNode n | this.isImplicitDerefCall(n, _, _, _)).getEnclosingCfgScope() + or this.isSummaryCall(result.asSummarizedCallable(), _) } string toString() { result = this.asCall().toString() or + exists(AstNode n, DerefChain derefChain, int i | + this.isImplicitDerefCall(n, derefChain, i, _) and + result = "[implicit deref call " + i + " in " + derefChain.toString() + "] " + n + ) + or exists( FlowSummaryImpl::Public::SummarizedCallable c, FlowSummaryImpl::Private::SummaryNode receiver | @@ -83,7 +97,11 @@ final class DataFlowCall extends TDataFlowCall { ) } - Location getLocation() { result = this.asCall().getLocation() } + Location getLocation() { + result = this.asCall().getLocation() + or + result = any(AstNode n | this.isImplicitDerefCall(n, _, _, _)).getLocation() + } } /** @@ -257,6 +275,8 @@ private module Aliases { class ContentAlias = Content; + class ContentApproxAlias = ContentApprox; + class ContentSetAlias = ContentSet; class LambdaCallKindAlias = LambdaCallKind; @@ -383,7 +403,8 @@ module RustDataFlow implements InputSig { node.(FlowSummaryNode).getSummaryNode().isHidden() or node instanceof CaptureNode or node instanceof ClosureParameterNode or - node instanceof DerefBorrowNode or + node instanceof ImplicitDerefNode or + node instanceof ImplicitBorrowNode or node instanceof DerefOutNode or node instanceof IndexOutNode or node.asExpr() instanceof ParenExpr or @@ -445,6 +466,12 @@ module RustDataFlow implements InputSig { or result.asSummarizedCallable() = getStaticTargetExt(c) ) + or + exists(Function f | call = TImplicitDerefCall(_, _, _, f) | + result.asCfgScope() = f + or + result.asSummarizedCallable() = f + ) } /** @@ -471,9 +498,27 @@ module RustDataFlow implements InputSig { predicate forceHighPrecision(Content c) { none() } - final class ContentApprox = Content; // TODO: Implement if needed + class ContentApprox = ContentApproxAlias; - ContentApprox getContentApprox(Content c) { result = c } + ContentApprox getContentApprox(Content c) { + result = TTupleFieldContentApprox(tupleFieldApprox(c.(TupleFieldContent).getField())) + or + result = TStructFieldContentApprox(structFieldApprox(c.(StructFieldContent).getField())) + or + result = TElementContentApprox() and c instanceof ElementContent + or + result = TFutureContentApprox() and c instanceof FutureContent + or + result = TTuplePositionContentApprox() and c instanceof TuplePositionContent + or + result = TFunctionCallArgumentContentApprox() and c instanceof FunctionCallArgumentContent + or + result = TFunctionCallReturnContentApprox() and c instanceof FunctionCallReturnContent + or + result = TCapturedVariableContentApprox() and c instanceof CapturedVariableContent + or + result = TReferenceContentApprox() and c instanceof ReferenceContent + } /** * Holds if the parameter position `ppos` matches the argument position @@ -499,6 +544,8 @@ module RustDataFlow implements InputSig { not FlowSummaryImpl::Private::Steps::prohibitsUseUseFlow(nodeFrom, _) ) or + nodeFrom = nodeTo.(ImplicitDerefNode).getLocalInputNode() + or VariableCapture::localFlowStep(nodeFrom, nodeTo) ) and model = "" @@ -524,16 +571,14 @@ module RustDataFlow implements InputSig { } pragma[nomagic] - private predicate implicitDeref(Node node1, DerefBorrowNode node2, ReferenceContent c) { - not node2.isBorrow() and - node1.asExpr() = node2.getNode() and + private predicate implicitDeref(ImplicitDerefNode node1, Node node2, ReferenceContent c) { + node2 = node1.getDerefOutputNode() and exists(c) } pragma[nomagic] - private predicate implicitBorrow(Node node1, DerefBorrowNode node2, ReferenceContent c) { - node2.isBorrow() and - node1.asExpr() = node2.getNode() and + private predicate implicitBorrow(Node node1, ImplicitDerefBorrowNode node2, ReferenceContent c) { + node1 = node2.getBorrowInputNode() and exists(c) } @@ -545,10 +590,10 @@ module RustDataFlow implements InputSig { private Node getFieldExprContainerNode(FieldExpr fe) { exists(Expr container | container = fe.getContainer() | - not any(DerefBorrowNode n).getNode() = container and + not TypeInference::implicitDerefChainBorrow(container, _, _) and result.asExpr() = container or - result.(DerefBorrowNode).getNode() = container + result.(ImplicitDerefNode).isLast(container) ) } @@ -1037,6 +1082,10 @@ private module Cached { Stages::DataFlowStage::ref() and call.hasEnclosingCfgScope() } or + TImplicitDerefCall(AstNode n, DerefChain derefChain, int i, Function target) { + TypeInference::implicitDerefChainBorrow(n, derefChain, _) and + target = derefChain.getElement(i).getDerefFunction() + } or TSummaryCall( FlowSummaryImpl::Public::SummarizedCallable c, FlowSummaryImpl::Private::SummaryNode receiver ) { diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/Node.qll b/rust/ql/lib/codeql/rust/dataflow/internal/Node.qll index f2f6fa1b0d8..b8bfddf8adb 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/Node.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/Node.qll @@ -15,6 +15,7 @@ private import codeql.rust.controlflow.CfgNodes private import codeql.rust.dataflow.Ssa private import codeql.rust.dataflow.FlowSummary private import codeql.rust.internal.TypeInference as TypeInference +private import codeql.rust.internal.typeinference.DerefChain private import Node as Node private import DataFlowImpl private import FlowSummaryImpl as FlowSummaryImpl @@ -229,8 +230,7 @@ final class ExprArgumentNode extends ArgumentNode, ExprNode { ExprArgumentNode() { isArgumentForCall(n, call_, pos_) and - not TypeInference::implicitDeref(n) and - not TypeInference::implicitBorrow(n, _) + not TypeInference::implicitDerefChainBorrow(n, _, _) } override predicate isArgumentOf(DataFlowCall call, RustDataFlow::ArgumentPosition pos) { @@ -238,38 +238,179 @@ final class ExprArgumentNode extends ArgumentNode, ExprNode { } } +private newtype TImplicitDerefNodeState = + TImplicitDerefNodeAfterBorrowState() or + TImplicitDerefNodeBeforeDerefState() or + TImplicitDerefNodeAfterDerefState() + /** - * A node that represents the value of an expression _after_ implicit dereferencing - * or borrowing. + * A state used to represent the flow steps involved in implicit dereferencing. + * + * For example, if there is an implicit dereference in a call like `x.m()`, + * then that desugars into `(*Deref::deref(&x)).m()`, and + * + * - `TImplicitDerefNodeAfterBorrowState` represents the `&x` part, + * - `TImplicitDerefNodeBeforeDerefState` represents the `Deref::deref(&x)` part, and + * - `TImplicitDerefNodeAfterDerefState` represents the entire `*Deref::deref(&x)` part. + * + * When the targeted `deref` function is from `impl Deref for &(mut) T`, we optimize + * away the call, skipping the `TImplicitDerefNodeAfterBorrowState` state, and instead + * add a local step directly from `x` to the `TImplicitDerefNodeBeforeDerefState` state. */ -class DerefBorrowNode extends Node, TDerefBorrowNode { - AstNode n; - boolean isBorrow; - - DerefBorrowNode() { this = TDerefBorrowNode(n, isBorrow, false) } - - AstNode getNode() { result = n } - - predicate isBorrow() { isBorrow = true } - - override CfgScope getCfgScope() { result = n.getEnclosingCfgScope() } - - override Location getLocation() { result = n.getLocation() } - - override string toString() { - if isBorrow = true then result = n + " [borrowed]" else result = n + " [dereferenced]" +class ImplicitDerefNodeState extends TImplicitDerefNodeState { + string toString() { + this = TImplicitDerefNodeAfterBorrowState() and result = "after borrow" + or + this = TImplicitDerefNodeBeforeDerefState() and result = "before deref" + or + this = TImplicitDerefNodeAfterDerefState() and result = "after deref" } } /** - * A node that represents the value of an argument of a call _after_ implicit - * dereferencing or borrowing. + * A node used to represent implicit dereferencing or borrowing. */ -final class DerefBorrowArgNode extends DerefBorrowNode, ArgumentNode { +abstract class ImplicitDerefBorrowNode extends Node { + /** + * Gets the node that should be the predecessor in a reference store-step into this + * node, if any. + */ + abstract Node getBorrowInputNode(); + + abstract AstNode getUnderlyingAstNode(); + + override CfgScope getCfgScope() { result = this.getUnderlyingAstNode().getEnclosingCfgScope() } + + override Location getLocation() { result = this.getUnderlyingAstNode().getLocation() } +} + +/** + * A node used to represent implicit dereferencing. + * + * Each node is tagged with its position in a `DerefChain` and the + * `ImplicitDerefNodeState` state that the corresponding implicit deference + * is in. + */ +class ImplicitDerefNode extends ImplicitDerefBorrowNode, TImplicitDerefNode { + AstNode n; + DerefChain derefChain; + ImplicitDerefNodeState state; + int i; + + ImplicitDerefNode() { this = TImplicitDerefNode(n, derefChain, state, i, false) } + + override AstNode getUnderlyingAstNode() { result = n } + + private predicate isBuiltinDeref() { derefChain.isBuiltinDeref(i) } + + private Node getInputNode() { + // The first implicit deref has the underlying AST node as input + i = 0 and + result.(AstNodeNode).getAstNode() = n + or + // Subsequent implicit derefs have the previous implicit deref as input + result = TImplicitDerefNode(n, derefChain, TImplicitDerefNodeAfterDerefState(), i - 1, false) + } + + /** + * Gets the node that should be the predecessor in a local flow step into this + * node, if any. + */ + Node getLocalInputNode() { + this.isBuiltinDeref() and + state = TImplicitDerefNodeBeforeDerefState() and + result = this.getInputNode() + } + + override Node getBorrowInputNode() { + not this.isBuiltinDeref() and + state = TImplicitDerefNodeAfterBorrowState() and + result = this.getInputNode() + } + + /** + * Gets the node that should be the successor in a reference read-step out of this + * node, if any. + */ + Node getDerefOutputNode() { + state = TImplicitDerefNodeBeforeDerefState() and + result = TImplicitDerefNode(n, derefChain, TImplicitDerefNodeAfterDerefState(), i, false) + } + + /** + * Holds if this node represents the last implicit deref in the underlying chain. + */ + predicate isLast(AstNode node) { + node = n and + state = TImplicitDerefNodeAfterDerefState() and + i = derefChain.length() - 1 + } + + override string toString() { result = n + " [implicit deref " + i + " in state " + state + "]" } +} + +final class ImplicitDerefArgNode extends ImplicitDerefNode, ArgumentNode { private DataFlowCall call_; private RustDataFlow::ArgumentPosition pos_; - DerefBorrowArgNode() { isArgumentForCall(n, call_.asCall(), pos_) } + ImplicitDerefArgNode() { + not derefChain.isBuiltinDeref(i) and + state = TImplicitDerefNodeAfterBorrowState() and + call_.isImplicitDerefCall(n, derefChain, i, _) and + pos_.isSelf() + or + this.isLast(_) and + TypeInference::implicitDerefChainBorrow(n, derefChain, false) and + isArgumentForCall(n, call_.asCall(), pos_) + } + + override predicate isArgumentOf(DataFlowCall call, RustDataFlow::ArgumentPosition pos) { + call = call_ and pos = pos_ + } +} + +private class ImplicitDerefOutNode extends ImplicitDerefNode, OutNode { + private DataFlowCall call; + + ImplicitDerefOutNode() { + not derefChain.isBuiltinDeref(i) and + state = TImplicitDerefNodeBeforeDerefState() + } + + override DataFlowCall getCall(ReturnKind kind) { + result.isImplicitDerefCall(n, derefChain, i, _) and + kind = TNormalReturnKind() + } +} + +/** + * A node that represents the value of an expression _after_ implicit borrowing. + */ +class ImplicitBorrowNode extends ImplicitDerefBorrowNode, TImplicitBorrowNode { + AstNode n; + DerefChain derefChain; + + ImplicitBorrowNode() { this = TImplicitBorrowNode(n, derefChain, false) } + + override AstNode getUnderlyingAstNode() { result = n } + + override Node getBorrowInputNode() { + result = + TImplicitDerefNode(n, derefChain, TImplicitDerefNodeAfterDerefState(), + derefChain.length() - 1, false) + or + derefChain.isEmpty() and + result.(AstNodeNode).getAstNode() = n + } + + override string toString() { result = n + " [implicit borrow]" } +} + +final class ImplicitBorrowArgNode extends ImplicitBorrowNode, ArgumentNode { + private DataFlowCall call_; + private RustDataFlow::ArgumentPosition pos_; + + ImplicitBorrowArgNode() { isArgumentForCall(n, call_.asCall(), pos_) } override predicate isArgumentOf(DataFlowCall call, RustDataFlow::ArgumentPosition pos) { call = call_ and pos = pos_ @@ -478,17 +619,36 @@ final class ExprPostUpdateNode extends PostUpdateNode, TExprPostUpdateNode { override Location getLocation() { result = e.getLocation() } } -final class DerefBorrowPostUpdateNode extends PostUpdateNode, TDerefBorrowNode { - private Expr arg; - private boolean isBorrow; +final class ImplicitDerefPostUpdateNode extends PostUpdateNode, TImplicitDerefNode { + AstNode n; + DerefChain derefChain; + ImplicitDerefNodeState state; + int i; - DerefBorrowPostUpdateNode() { this = TDerefBorrowNode(arg, isBorrow, true) } + ImplicitDerefPostUpdateNode() { this = TImplicitDerefNode(n, derefChain, state, i, true) } - override DerefBorrowNode getPreUpdateNode() { result = TDerefBorrowNode(arg, isBorrow, false) } + override ImplicitDerefNode getPreUpdateNode() { + result = TImplicitDerefNode(n, derefChain, state, i, false) + } - override CfgScope getCfgScope() { result = arg.getEnclosingCfgScope() } + override CfgScope getCfgScope() { result = n.getEnclosingCfgScope() } - override Location getLocation() { result = arg.getLocation() } + override Location getLocation() { result = n.getLocation() } +} + +final class ImplicitBorrowPostUpdateNode extends PostUpdateNode, TImplicitBorrowNode { + AstNode n; + DerefChain derefChain; + + ImplicitBorrowPostUpdateNode() { this = TImplicitBorrowNode(n, derefChain, true) } + + override ImplicitBorrowNode getPreUpdateNode() { + result = TImplicitBorrowNode(n, derefChain, false) + } + + override CfgScope getCfgScope() { result = n.getEnclosingCfgScope() } + + override Location getLocation() { result = n.getLocation() } } class DerefOutPostUpdateNode extends PostUpdateNode, TDerefOutNode { @@ -575,12 +735,14 @@ newtype TNode = ] ) } or - TDerefBorrowNode(AstNode n, boolean borrow, Boolean isPost) { - TypeInference::implicitDeref(n) and - borrow = false - or - TypeInference::implicitBorrow(n, _) and - borrow = true + TImplicitDerefNode( + AstNode n, DerefChain derefChain, ImplicitDerefNodeState state, int i, Boolean isPost + ) { + TypeInference::implicitDerefChainBorrow(n, derefChain, _) and + i in [0 .. derefChain.length() - 1] + } or + TImplicitBorrowNode(AstNode n, DerefChain derefChain, Boolean isPost) { + TypeInference::implicitDerefChainBorrow(n, derefChain, true) } or TDerefOutNode(DerefExpr de, Boolean isPost) or TIndexOutNode(IndexExpr ie, Boolean isPost) or diff --git a/rust/ql/lib/codeql/rust/frameworks/rustls.model.yml b/rust/ql/lib/codeql/rust/frameworks/rustls.model.yml index b1fea8ac538..7711d1aa846 100644 --- a/rust/ql/lib/codeql/rust/frameworks/rustls.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/rustls.model.yml @@ -9,4 +9,4 @@ extensions: extensible: summaryModel data: - ["::connect", "Argument[1]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - - ["::reader", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["::reader", "Argument[self].Reference", "ReturnValue", "taint", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml index afcc3c42c8d..b60ae623d96 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml @@ -6,6 +6,7 @@ extensions: # Builtin deref - ["<& as core::ops::deref::Deref>::deref", "Argument[self].Reference", "ReturnValue", "value", "manual"] - ["<&mut as core::ops::deref::Deref>::deref", "Argument[self].Reference", "ReturnValue", "value", "manual"] + - ["<_ as core::ops::deref::Deref>::deref", "Argument[self].Reference", "ReturnValue.Reference", "taint", "manual"] # Index - ["<_ as core::ops::index::Index>::index", "Argument[self].Reference.Element", "ReturnValue.Reference", "value", "manual"] - ["<_ as core::ops::index::IndexMut>::index_mut", "Argument[self].Reference.Element", "ReturnValue.Reference", "value", "manual"] @@ -114,10 +115,10 @@ extensions: - ["::deref", "Argument[self].Reference.Field[core::pin::Pin::pointer].Field[alloc::boxed::Box(0)]", "ReturnValue.Reference", "value", "manual"] # Str - ["::as_str", "Argument[self]", "ReturnValue", "value", "manual"] - - ["::as_bytes", "Argument[self]", "ReturnValue", "value", "manual"] - - ["::parse", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - - ["::trim", "Argument[self]", "ReturnValue.Reference", "taint", "manual"] - - ["::to_string", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["::as_bytes", "Argument[self].Reference", "ReturnValue.Reference", "taint", "manual"] + - ["::parse", "Argument[self].Reference", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["::trim", "Argument[self].Reference", "ReturnValue.Reference", "taint", "manual"] + - ["::to_string", "Argument[self].Reference", "ReturnValue", "taint", "manual"] # Ord - ["<_ as core::cmp::Ord>::min", "Argument[self,0]", "ReturnValue", "value", "manual"] - ["<_ as core::cmp::Ord>::max", "Argument[self,0]", "ReturnValue", "value", "manual"] diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index de1b0a2660f..e07d3cba083 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -3909,30 +3909,22 @@ private Type inferCastExprType(CastExpr ce, TypePath path) { cached private module Cached { - /** Holds if `n` is implicitly dereferenced. */ + /** Holds if `n` is implicitly dereferenced and/or borrowed. */ cached - predicate implicitDeref(AstNode n) { - exists(DerefChain derefChain, DerefImplItemNode impl | - impl.resolveSelfTyBuiltin() instanceof Builtins::RefType and - derefChain = DerefChain::singleton(impl) - | - any(MethodResolution::MethodCall mc) - .argumentHasImplicitDerefChainBorrow(n, derefChain, TNoBorrowKind()) - or - n = - any(FieldExpr fe | - exists(resolveStructFieldExpr(fe, derefChain)) - or - exists(resolveTupleFieldExpr(fe, derefChain)) - ).getContainer() + predicate implicitDerefChainBorrow(AstNode n, DerefChain derefChain, boolean borrow) { + exists(BorrowKind bk | + any(MethodResolution::MethodCall mc).argumentHasImplicitDerefChainBorrow(n, derefChain, bk) and + if bk.isNoBorrow() then borrow = false else borrow = true ) - } - - /** Holds if `n` is implicitly borrowed. */ - cached - predicate implicitBorrow(AstNode n, boolean isMutable) { - any(MethodResolution::MethodCall mc) - .argumentHasImplicitDerefChainBorrow(n, DerefChain::nil(), TSomeBorrowKind(isMutable)) + or + n = + any(FieldExpr fe | + exists(resolveStructFieldExpr(fe, derefChain)) + or + exists(resolveTupleFieldExpr(fe, derefChain)) + ).getContainer() and + not derefChain.isEmpty() and + borrow = false } /** diff --git a/rust/ql/lib/codeql/rust/internal/typeinference/DerefChain.qll b/rust/ql/lib/codeql/rust/internal/typeinference/DerefChain.qll index cca2a1b20e1..e655b8446e7 100644 --- a/rust/ql/lib/codeql/rust/internal/typeinference/DerefChain.qll +++ b/rust/ql/lib/codeql/rust/internal/typeinference/DerefChain.qll @@ -47,6 +47,17 @@ class DerefImplItemNode extends ImplItemNode { TypeParamTypeParameter getFirstSelfTypeParameter() { result.getTypeParam() = this.resolveSelfTy().getTypeParam(0) } + + /** + * Holds if this `Deref` implementation is either + * + * [`impl Deref for &T`](https://doc.rust-lang.org/std/ops/trait.Deref.html#impl-Deref-for-%26T) + * + * or + * + * [`impl Deref for &mut T`](https://doc.rust-lang.org/std/ops/trait.Deref.html#impl-Deref-for-%26mut+T). + */ + predicate isBuiltinDeref() { this.resolveSelfTyBuiltin() instanceof Builtins::RefType } } private module UnboundListInput implements UnboundListImpl::InputSig { @@ -76,7 +87,13 @@ private import UnboundListImpl::Make * A sequence of `Deref` impl blocks representing a chain of implicit dereferences, * encoded as a string. */ -class DerefChain = UnboundList; +class DerefChain extends UnboundList { + bindingset[this] + DerefChain() { exists(this) } + + bindingset[this] + predicate isBuiltinDeref(int i) { this.getElement(i).isBuiltinDeref() } +} /** Provides predicates for constructing `DerefChain`s. */ module DerefChain = UnboundList; diff --git a/rust/ql/test/library-tests/dataflow/collections/inline-flow.expected b/rust/ql/test/library-tests/dataflow/collections/inline-flow.expected index 24f24f6efc7..c0e096f98f0 100644 --- a/rust/ql/test/library-tests/dataflow/collections/inline-flow.expected +++ b/rust/ql/test/library-tests/dataflow/collections/inline-flow.expected @@ -37,8 +37,7 @@ edges | main.rs:47:14:47:16 | arr | main.rs:47:14:47:19 | arr[0] | provenance | MaD:4 | | main.rs:63:18:63:22 | SelfParam [&ref, S] | main.rs:63:56:65:9 | { ... } [&ref, S] | provenance | | | main.rs:76:34:76:44 | ...: Self [S] | main.rs:77:23:77:27 | other [S] | provenance | | -| main.rs:77:13:77:16 | [post] self [&ref, S] | main.rs:76:23:76:31 | SelfParam [Return] [&ref, S] | provenance | | -| main.rs:77:13:77:18 | [post] self.0 | main.rs:77:13:77:16 | [post] self [&ref, S] | provenance | | +| main.rs:77:13:77:18 | [post] self.0 | main.rs:76:23:76:31 | SelfParam [Return] [&ref, S] | provenance | | | main.rs:77:23:77:27 | other [S] | main.rs:77:23:77:29 | other.0 | provenance | | | main.rs:77:23:77:29 | other.0 | main.rs:77:13:77:18 | [post] self.0 | provenance | MaD:2 | | main.rs:77:23:77:29 | other.0 | main.rs:77:13:77:18 | [post] self.0 | provenance | MaD:3 | @@ -134,7 +133,6 @@ nodes | main.rs:63:56:65:9 | { ... } [&ref, S] | semmle.label | { ... } [&ref, S] | | main.rs:76:23:76:31 | SelfParam [Return] [&ref, S] | semmle.label | SelfParam [Return] [&ref, S] | | main.rs:76:34:76:44 | ...: Self [S] | semmle.label | ...: Self [S] | -| main.rs:77:13:77:16 | [post] self [&ref, S] | semmle.label | [post] self [&ref, S] | | main.rs:77:13:77:18 | [post] self.0 | semmle.label | [post] self.0 | | main.rs:77:23:77:27 | other [S] | semmle.label | other [S] | | main.rs:77:23:77:29 | other.0 | semmle.label | other.0 | diff --git a/rust/ql/test/library-tests/dataflow/global/inline-flow.expected b/rust/ql/test/library-tests/dataflow/global/inline-flow.expected index af31673e15b..f4db2939653 100644 --- a/rust/ql/test/library-tests/dataflow/global/inline-flow.expected +++ b/rust/ql/test/library-tests/dataflow/global/inline-flow.expected @@ -8,10 +8,8 @@ edges | main.rs:17:9:17:9 | a | main.rs:18:10:18:10 | a | provenance | | | main.rs:17:13:17:23 | get_data(...) | main.rs:17:9:17:9 | a | provenance | | | main.rs:26:28:26:33 | ...: i64 | main.rs:27:21:27:21 | n | provenance | | -| main.rs:27:9:27:12 | [post] self [&ref, MyStruct] | main.rs:26:17:26:25 | SelfParam [Return] [&ref, MyStruct] | provenance | | -| main.rs:27:21:27:21 | n | main.rs:27:9:27:12 | [post] self [&ref, MyStruct] | provenance | | -| main.rs:30:17:30:21 | SelfParam [&ref, MyStruct] | main.rs:31:9:31:12 | self [&ref, MyStruct] | provenance | | -| main.rs:31:9:31:12 | self [&ref, MyStruct] | main.rs:31:9:31:17 | self.data | provenance | | +| main.rs:27:21:27:21 | n | main.rs:26:17:26:25 | SelfParam [Return] [&ref, MyStruct] | provenance | | +| main.rs:30:17:30:21 | SelfParam [&ref, MyStruct] | main.rs:31:9:31:17 | self.data | provenance | | | main.rs:31:9:31:17 | self.data | main.rs:30:31:32:5 | { ... } | provenance | | | main.rs:38:5:38:5 | [post] a [MyStruct] | main.rs:39:10:39:10 | a [MyStruct] | provenance | | | main.rs:38:16:38:24 | source(...) | main.rs:26:28:26:33 | ...: i64 | provenance | | @@ -112,9 +110,8 @@ edges | main.rs:238:24:238:27 | self [MyInt] | main.rs:238:24:238:33 | self.value | provenance | | | main.rs:238:24:238:33 | self.value | main.rs:238:9:238:35 | MyInt {...} [MyInt] | provenance | | | main.rs:243:30:243:39 | ...: MyInt [MyInt] | main.rs:244:22:244:24 | rhs [MyInt] | provenance | | -| main.rs:244:9:244:12 | [post] self [&ref, MyInt] | main.rs:243:19:243:27 | SelfParam [Return] [&ref, MyInt] | provenance | | | main.rs:244:22:244:24 | rhs [MyInt] | main.rs:244:22:244:30 | rhs.value | provenance | | -| main.rs:244:22:244:30 | rhs.value | main.rs:244:9:244:12 | [post] self [&ref, MyInt] | provenance | | +| main.rs:244:22:244:30 | rhs.value | main.rs:243:19:243:27 | SelfParam [Return] [&ref, MyInt] | provenance | | | main.rs:251:14:251:18 | SelfParam [&ref, MyInt] | main.rs:252:12:252:15 | self [&ref, MyInt] | provenance | | | main.rs:252:9:252:22 | &... [&ref] | main.rs:251:38:253:5 | { ... } [&ref] | provenance | | | main.rs:252:10:252:22 | ... .value | main.rs:252:9:252:22 | &... [&ref] | provenance | | @@ -166,6 +163,13 @@ edges | main.rs:292:13:292:14 | * ... | main.rs:292:9:292:9 | c | provenance | | | main.rs:292:14:292:14 | a [MyInt] | main.rs:251:14:251:18 | SelfParam [&ref, MyInt] | provenance | | | main.rs:292:14:292:14 | a [MyInt] | main.rs:292:13:292:14 | * ... | provenance | MaD:1 | +| main.rs:295:9:295:9 | a [MyInt] | main.rs:296:13:296:13 | a [MyInt] | provenance | | +| main.rs:295:13:295:39 | MyInt {...} [MyInt] | main.rs:295:9:295:9 | a [MyInt] | provenance | | +| main.rs:295:28:295:37 | source(...) | main.rs:295:13:295:39 | MyInt {...} [MyInt] | provenance | | +| main.rs:296:9:296:9 | c | main.rs:297:10:297:10 | c | provenance | | +| main.rs:296:13:296:13 | a [MyInt] | main.rs:251:14:251:18 | SelfParam [&ref, MyInt] | provenance | | +| main.rs:296:13:296:13 | a [MyInt] | main.rs:296:13:296:23 | a.min(...) | provenance | MaD:1 | +| main.rs:296:13:296:23 | a.min(...) | main.rs:296:9:296:9 | c | provenance | | | main.rs:309:18:309:21 | SelfParam [MyInt] | main.rs:309:48:311:5 | { ... } [MyInt] | provenance | | | main.rs:313:26:313:37 | ...: MyInt [MyInt] | main.rs:313:49:315:5 | { ... } [MyInt] | provenance | | | main.rs:319:9:319:9 | a [MyInt] | main.rs:321:50:321:50 | a [MyInt] | provenance | | @@ -226,11 +230,9 @@ nodes | main.rs:18:10:18:10 | a | semmle.label | a | | main.rs:26:17:26:25 | SelfParam [Return] [&ref, MyStruct] | semmle.label | SelfParam [Return] [&ref, MyStruct] | | main.rs:26:28:26:33 | ...: i64 | semmle.label | ...: i64 | -| main.rs:27:9:27:12 | [post] self [&ref, MyStruct] | semmle.label | [post] self [&ref, MyStruct] | | main.rs:27:21:27:21 | n | semmle.label | n | | main.rs:30:17:30:21 | SelfParam [&ref, MyStruct] | semmle.label | SelfParam [&ref, MyStruct] | | main.rs:30:31:32:5 | { ... } | semmle.label | { ... } | -| main.rs:31:9:31:12 | self [&ref, MyStruct] | semmle.label | self [&ref, MyStruct] | | main.rs:31:9:31:17 | self.data | semmle.label | self.data | | main.rs:38:5:38:5 | [post] a [MyStruct] | semmle.label | [post] a [MyStruct] | | main.rs:38:16:38:24 | source(...) | semmle.label | source(...) | @@ -341,7 +343,6 @@ nodes | main.rs:238:24:238:33 | self.value | semmle.label | self.value | | main.rs:243:19:243:27 | SelfParam [Return] [&ref, MyInt] | semmle.label | SelfParam [Return] [&ref, MyInt] | | main.rs:243:30:243:39 | ...: MyInt [MyInt] | semmle.label | ...: MyInt [MyInt] | -| main.rs:244:9:244:12 | [post] self [&ref, MyInt] | semmle.label | [post] self [&ref, MyInt] | | main.rs:244:22:244:24 | rhs [MyInt] | semmle.label | rhs [MyInt] | | main.rs:244:22:244:30 | rhs.value | semmle.label | rhs.value | | main.rs:251:14:251:18 | SelfParam [&ref, MyInt] | semmle.label | SelfParam [&ref, MyInt] | @@ -396,6 +397,13 @@ nodes | main.rs:292:13:292:14 | * ... | semmle.label | * ... | | main.rs:292:14:292:14 | a [MyInt] | semmle.label | a [MyInt] | | main.rs:293:10:293:10 | c | semmle.label | c | +| main.rs:295:9:295:9 | a [MyInt] | semmle.label | a [MyInt] | +| main.rs:295:13:295:39 | MyInt {...} [MyInt] | semmle.label | MyInt {...} [MyInt] | +| main.rs:295:28:295:37 | source(...) | semmle.label | source(...) | +| main.rs:296:9:296:9 | c | semmle.label | c | +| main.rs:296:13:296:13 | a [MyInt] | semmle.label | a [MyInt] | +| main.rs:296:13:296:23 | a.min(...) | semmle.label | a.min(...) | +| main.rs:297:10:297:10 | c | semmle.label | c | | main.rs:309:18:309:21 | SelfParam [MyInt] | semmle.label | SelfParam [MyInt] | | main.rs:309:48:311:5 | { ... } [MyInt] | semmle.label | { ... } [MyInt] | | main.rs:313:26:313:37 | ...: MyInt [MyInt] | semmle.label | ...: MyInt [MyInt] | @@ -475,6 +483,7 @@ subpaths | main.rs:282:10:282:10 | b [MyInt] | main.rs:243:30:243:39 | ...: MyInt [MyInt] | main.rs:243:19:243:27 | SelfParam [Return] [&ref, MyInt] | main.rs:283:10:283:10 | a [MyInt] | | main.rs:288:27:288:28 | &a [&ref, MyInt] | main.rs:251:14:251:18 | SelfParam [&ref, MyInt] | main.rs:251:38:253:5 | { ... } [&ref] | main.rs:288:14:288:29 | ...::deref(...) [&ref] | | main.rs:292:14:292:14 | a [MyInt] | main.rs:251:14:251:18 | SelfParam [&ref, MyInt] | main.rs:251:38:253:5 | { ... } [&ref] | main.rs:292:13:292:14 | * ... | +| main.rs:296:13:296:13 | a [MyInt] | main.rs:251:14:251:18 | SelfParam [&ref, MyInt] | main.rs:251:38:253:5 | { ... } [&ref] | main.rs:296:13:296:23 | a.min(...) | | main.rs:321:50:321:50 | a [MyInt] | main.rs:309:18:309:21 | SelfParam [MyInt] | main.rs:309:48:311:5 | { ... } [MyInt] | main.rs:321:30:321:54 | ...::take_self(...) [MyInt] | | main.rs:326:55:326:55 | b [MyInt] | main.rs:313:26:313:37 | ...: MyInt [MyInt] | main.rs:313:49:315:5 | { ... } [MyInt] | main.rs:326:30:326:56 | ...::take_second(...) [MyInt] | testFailures @@ -504,6 +513,7 @@ testFailures | main.rs:283:10:283:16 | a.value | main.rs:281:28:281:37 | source(...) | main.rs:283:10:283:16 | a.value | $@ | main.rs:281:28:281:37 | source(...) | source(...) | | main.rs:289:10:289:10 | c | main.rs:286:28:286:37 | source(...) | main.rs:289:10:289:10 | c | $@ | main.rs:286:28:286:37 | source(...) | source(...) | | main.rs:293:10:293:10 | c | main.rs:291:28:291:37 | source(...) | main.rs:293:10:293:10 | c | $@ | main.rs:291:28:291:37 | source(...) | source(...) | +| main.rs:297:10:297:10 | c | main.rs:295:28:295:37 | source(...) | main.rs:297:10:297:10 | c | $@ | main.rs:295:28:295:37 | source(...) | source(...) | | main.rs:322:10:322:10 | c | main.rs:319:28:319:36 | source(...) | main.rs:322:10:322:10 | c | $@ | main.rs:319:28:319:36 | source(...) | source(...) | | main.rs:327:10:327:10 | c | main.rs:325:28:325:37 | source(...) | main.rs:327:10:327:10 | c | $@ | main.rs:325:28:325:37 | source(...) | source(...) | | main.rs:337:10:337:10 | a | main.rs:336:13:336:21 | source(...) | main.rs:337:10:337:10 | a | $@ | main.rs:336:13:336:21 | source(...) | source(...) | diff --git a/rust/ql/test/library-tests/dataflow/global/main.rs b/rust/ql/test/library-tests/dataflow/global/main.rs index 1ee7ed43e15..ac737570771 100644 --- a/rust/ql/test/library-tests/dataflow/global/main.rs +++ b/rust/ql/test/library-tests/dataflow/global/main.rs @@ -294,7 +294,7 @@ fn test_operator_overloading() { let a = MyInt { value: source(29) }; let c = a.min(1042); - sink(c); // $ MISSING: hasValueFlow=29 + sink(c); // $ hasValueFlow=29 } trait MyTrait2 { diff --git a/rust/ql/test/library-tests/dataflow/global/viableCallable.expected b/rust/ql/test/library-tests/dataflow/global/viableCallable.expected index 5f07dbca450..26db4dc3962 100644 --- a/rust/ql/test/library-tests/dataflow/global/viableCallable.expected +++ b/rust/ql/test/library-tests/dataflow/global/viableCallable.expected @@ -2,6 +2,8 @@ | main.rs:13:5:13:13 | source(...) | main.rs:1:1:3:1 | fn source | | main.rs:17:13:17:23 | get_data(...) | main.rs:12:1:14:1 | fn get_data | | main.rs:18:5:18:11 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:27:9:27:12 | [implicit deref call 0 in RefMut] self | {EXTERNAL LOCATION} | [summarized] fn deref | +| main.rs:31:9:31:12 | [implicit deref call 0 in Ref] self | {EXTERNAL LOCATION} | [summarized] fn deref | | main.rs:37:5:37:22 | sink(...) | main.rs:5:1:7:1 | fn sink | | main.rs:37:10:37:21 | a.get_data() | main.rs:30:5:32:5 | fn get_data | | main.rs:38:5:38:25 | a.set_data(...) | main.rs:26:5:28:5 | fn set_data | @@ -60,6 +62,7 @@ | main.rs:228:13:228:34 | ...::new(...) | main.rs:221:5:224:5 | fn new | | main.rs:228:24:228:33 | source(...) | main.rs:1:1:3:1 | fn source | | main.rs:230:5:230:11 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:244:9:244:12 | [implicit deref call 0 in RefMut] self | {EXTERNAL LOCATION} | [summarized] fn deref | | main.rs:252:11:252:15 | * ... | {EXTERNAL LOCATION} | [summarized] fn deref | | main.rs:258:28:258:36 | source(...) | main.rs:1:1:3:1 | fn source | | main.rs:260:13:260:17 | ... + ... | main.rs:236:5:239:5 | fn add | @@ -84,7 +87,8 @@ | main.rs:292:13:292:14 | * ... | main.rs:251:5:253:5 | fn deref | | main.rs:293:5:293:11 | sink(...) | main.rs:5:1:7:1 | fn sink | | main.rs:295:28:295:37 | source(...) | main.rs:1:1:3:1 | fn source | -| main.rs:296:13:296:23 | a.min(...) | {EXTERNAL LOCATION} | fn min | +| main.rs:296:13:296:13 | [implicit deref call 0 in MyInt] a | main.rs:251:5:253:5 | fn deref | +| main.rs:296:13:296:23 | a.min(...) | {EXTERNAL LOCATION} | [summarized] fn min | | main.rs:297:5:297:11 | sink(...) | main.rs:5:1:7:1 | fn sink | | main.rs:319:28:319:36 | source(...) | main.rs:1:1:3:1 | fn source | | main.rs:321:30:321:54 | ...::take_self(...) | main.rs:309:5:311:5 | fn take_self | diff --git a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected index 9a7798fbc00..8c205afe569 100644 --- a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected +++ b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected @@ -826,7 +826,7 @@ localStep readStep | main.rs:50:9:50:15 | Some(...) | {EXTERNAL LOCATION} | Some | main.rs:50:14:50:14 | _ | | main.rs:116:10:116:11 | * ... [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:116:10:116:11 | * ... | -| main.rs:116:11:116:11 | [post] i [borrowed] | file://:0:0:0:0 | &ref | main.rs:116:11:116:11 | [post] i | +| main.rs:116:11:116:11 | [post] i [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:116:11:116:11 | [post] i | | main.rs:124:10:124:10 | a | file://:0:0:0:0 | tuple.0 | main.rs:124:10:124:12 | a.0 | | main.rs:125:10:125:10 | a | file://:0:0:0:0 | tuple.1 | main.rs:125:10:125:12 | a.1 | | main.rs:130:9:130:20 | TuplePat | file://:0:0:0:0 | tuple.0 | main.rs:130:10:130:11 | a0 | @@ -902,62 +902,71 @@ readStep | main.rs:418:28:418:43 | D {...} | main.rs:385:9:385:20 | D | main.rs:418:41:418:41 | n | | main.rs:421:9:421:24 | C {...} | main.rs:384:9:384:20 | C | main.rs:421:22:421:22 | n | | main.rs:422:9:422:24 | D {...} | main.rs:385:9:385:20 | D | main.rs:422:22:422:22 | n | -| main.rs:431:14:431:17 | [post] arr1 [borrowed] | file://:0:0:0:0 | &ref | main.rs:431:14:431:17 | [post] arr1 | +| main.rs:431:14:431:17 | [post] arr1 [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:431:14:431:17 | [post] arr1 | | main.rs:431:14:431:20 | arr1[2] [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:431:14:431:20 | arr1[2] | -| main.rs:435:14:435:17 | [post] arr2 [borrowed] | file://:0:0:0:0 | &ref | main.rs:435:14:435:17 | [post] arr2 | +| main.rs:435:14:435:17 | [post] arr2 [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:435:14:435:17 | [post] arr2 | | main.rs:435:14:435:20 | arr2[4] [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:435:14:435:20 | arr2[4] | -| main.rs:439:14:439:17 | [post] arr3 [borrowed] | file://:0:0:0:0 | &ref | main.rs:439:14:439:17 | [post] arr3 | +| main.rs:439:14:439:17 | [post] arr3 [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:439:14:439:17 | [post] arr3 | | main.rs:439:14:439:20 | arr3[2] [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:439:14:439:20 | arr3[2] | | main.rs:445:15:445:18 | arr1 | file://:0:0:0:0 | element | main.rs:445:9:445:10 | n1 | | main.rs:450:15:450:18 | arr2 | file://:0:0:0:0 | element | main.rs:450:9:450:10 | n2 | | main.rs:458:9:458:17 | SlicePat | file://:0:0:0:0 | element | main.rs:458:10:458:10 | a | | main.rs:458:9:458:17 | SlicePat | file://:0:0:0:0 | element | main.rs:458:13:458:13 | b | | main.rs:458:9:458:17 | SlicePat | file://:0:0:0:0 | element | main.rs:458:16:458:16 | c | -| main.rs:468:10:468:16 | [post] mut_arr [borrowed] | file://:0:0:0:0 | &ref | main.rs:468:10:468:16 | [post] mut_arr | +| main.rs:468:10:468:16 | [post] mut_arr [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:468:10:468:16 | [post] mut_arr | | main.rs:468:10:468:19 | mut_arr[1] [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:468:10:468:19 | mut_arr[1] | -| main.rs:470:5:470:11 | [post] mut_arr [borrowed] | file://:0:0:0:0 | &ref | main.rs:470:5:470:11 | [post] mut_arr | +| main.rs:470:5:470:11 | [post] mut_arr [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:470:5:470:11 | [post] mut_arr | | main.rs:470:5:470:14 | mut_arr[1] [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:470:5:470:14 | mut_arr[1] | -| main.rs:471:13:471:19 | [post] mut_arr [borrowed] | file://:0:0:0:0 | &ref | main.rs:471:13:471:19 | [post] mut_arr | +| main.rs:471:13:471:19 | [post] mut_arr [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:471:13:471:19 | [post] mut_arr | | main.rs:471:13:471:22 | mut_arr[1] [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:471:13:471:22 | mut_arr[1] | -| main.rs:473:10:473:16 | [post] mut_arr [borrowed] | file://:0:0:0:0 | &ref | main.rs:473:10:473:16 | [post] mut_arr | +| main.rs:473:10:473:16 | [post] mut_arr [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:473:10:473:16 | [post] mut_arr | | main.rs:473:10:473:19 | mut_arr[0] [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:473:10:473:19 | mut_arr[0] | -| main.rs:479:24:479:33 | [post] source(...) [borrowed] | file://:0:0:0:0 | &ref | main.rs:479:24:479:33 | [post] source(...) | +| main.rs:479:24:479:33 | [post] source(...) [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:479:24:479:33 | [post] source(...) | | main.rs:480:9:480:20 | TuplePat | file://:0:0:0:0 | tuple.0 | main.rs:480:10:480:13 | cond | | main.rs:480:9:480:20 | TuplePat | file://:0:0:0:0 | tuple.1 | main.rs:480:16:480:19 | name | | main.rs:480:25:480:29 | names | file://:0:0:0:0 | element | main.rs:480:9:480:20 | TuplePat | | main.rs:482:41:482:67 | [post] \|...\| ... | main.rs:479:9:479:20 | captured default_name | main.rs:482:41:482:67 | [post] default_name | -| main.rs:482:44:482:55 | [post] default_name [borrowed] | file://:0:0:0:0 | &ref | main.rs:482:44:482:55 | [post] default_name | +| main.rs:482:44:482:55 | [post] default_name [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:482:44:482:55 | [post] default_name | +| main.rs:482:44:482:55 | [post] default_name [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:482:44:482:55 | [post] default_name [implicit deref 0 in state after deref] | +| main.rs:482:44:482:55 | [post] default_name [implicit deref 0 in state after borrow] | file://:0:0:0:0 | &ref | main.rs:482:44:482:55 | [post] default_name | +| main.rs:482:44:482:55 | default_name [implicit deref 0 in state before deref] | file://:0:0:0:0 | &ref | main.rs:482:44:482:55 | default_name [implicit deref 0 in state after deref] | | main.rs:482:44:482:55 | this | main.rs:479:9:479:20 | captured default_name | main.rs:482:44:482:55 | default_name | -| main.rs:483:18:483:18 | [post] n [borrowed] | file://:0:0:0:0 | &ref | main.rs:483:18:483:18 | [post] n | -| main.rs:506:13:506:13 | [post] a [borrowed] | file://:0:0:0:0 | &ref | main.rs:506:13:506:13 | [post] a | -| main.rs:519:10:519:11 | [post] vs [borrowed] | file://:0:0:0:0 | &ref | main.rs:519:10:519:11 | [post] vs | +| main.rs:483:18:483:18 | [post] n [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:483:18:483:18 | [post] n | +| main.rs:506:13:506:13 | [post] a [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:506:13:506:13 | [post] a | +| main.rs:507:13:507:13 | [post] b [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:507:13:507:13 | [post] b [implicit deref 0 in state after deref] | +| main.rs:507:13:507:13 | [post] b [implicit deref 0 in state after borrow] | file://:0:0:0:0 | &ref | main.rs:507:13:507:13 | [post] b | +| main.rs:507:13:507:13 | b [implicit deref 0 in state before deref] | file://:0:0:0:0 | &ref | main.rs:507:13:507:13 | b [implicit deref 0 in state after deref] | +| main.rs:508:18:508:18 | [post] b [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:508:18:508:18 | [post] b [implicit deref 0 in state after deref] | +| main.rs:508:18:508:18 | [post] b [implicit deref 0 in state after borrow] | file://:0:0:0:0 | &ref | main.rs:508:18:508:18 | [post] b | +| main.rs:508:18:508:18 | b [implicit deref 0 in state before deref] | file://:0:0:0:0 | &ref | main.rs:508:18:508:18 | b [implicit deref 0 in state after deref] | +| main.rs:519:10:519:11 | [post] vs [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:519:10:519:11 | [post] vs | | main.rs:519:10:519:14 | vs[0] [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:519:10:519:14 | vs[0] | | main.rs:520:10:520:35 | * ... [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:520:10:520:35 | * ... | -| main.rs:520:11:520:35 | [post] ... .unwrap() [borrowed] | file://:0:0:0:0 | &ref | main.rs:520:11:520:35 | [post] ... .unwrap() | +| main.rs:520:11:520:35 | [post] ... .unwrap() [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:520:11:520:35 | [post] ... .unwrap() | | main.rs:521:10:521:35 | * ... [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:521:10:521:35 | * ... | -| main.rs:521:11:521:35 | [post] ... .unwrap() [borrowed] | file://:0:0:0:0 | &ref | main.rs:521:11:521:35 | [post] ... .unwrap() | +| main.rs:521:11:521:35 | [post] ... .unwrap() [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:521:11:521:35 | [post] ... .unwrap() | | main.rs:523:14:523:15 | vs | file://:0:0:0:0 | element | main.rs:523:9:523:9 | v | | main.rs:526:9:526:10 | &... | file://:0:0:0:0 | &ref | main.rs:526:10:526:10 | v | | main.rs:526:15:526:23 | vs.iter() | file://:0:0:0:0 | element | main.rs:526:9:526:10 | &... | | main.rs:531:9:531:10 | &... | file://:0:0:0:0 | &ref | main.rs:531:10:531:10 | v | | main.rs:531:15:531:17 | vs2 | file://:0:0:0:0 | element | main.rs:531:9:531:10 | &... | | main.rs:535:28:535:29 | * ... [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:535:28:535:29 | * ... | -| main.rs:535:29:535:29 | [post] x [borrowed] | file://:0:0:0:0 | &ref | main.rs:535:29:535:29 | [post] x | +| main.rs:535:29:535:29 | [post] x [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:535:29:535:29 | [post] x | | main.rs:536:33:536:34 | * ... [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:536:33:536:34 | * ... | -| main.rs:536:34:536:34 | [post] x [borrowed] | file://:0:0:0:0 | &ref | main.rs:536:34:536:34 | [post] x | +| main.rs:536:34:536:34 | [post] x [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:536:34:536:34 | [post] x | | main.rs:538:14:538:27 | vs.into_iter() | file://:0:0:0:0 | element | main.rs:538:9:538:9 | v | -| main.rs:544:10:544:15 | [post] vs_mut [borrowed] | file://:0:0:0:0 | &ref | main.rs:544:10:544:15 | [post] vs_mut | +| main.rs:544:10:544:15 | [post] vs_mut [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:544:10:544:15 | [post] vs_mut | | main.rs:544:10:544:18 | vs_mut[0] [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:544:10:544:18 | vs_mut[0] | | main.rs:545:10:545:39 | * ... [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:545:10:545:39 | * ... | -| main.rs:545:11:545:39 | [post] ... .unwrap() [borrowed] | file://:0:0:0:0 | &ref | main.rs:545:11:545:39 | [post] ... .unwrap() | +| main.rs:545:11:545:39 | [post] ... .unwrap() [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:545:11:545:39 | [post] ... .unwrap() | | main.rs:546:10:546:39 | * ... [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:546:10:546:39 | * ... | -| main.rs:546:11:546:39 | [post] ... .unwrap() [borrowed] | file://:0:0:0:0 | &ref | main.rs:546:11:546:39 | [post] ... .unwrap() | +| main.rs:546:11:546:39 | [post] ... .unwrap() [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:546:11:546:39 | [post] ... .unwrap() | | main.rs:548:9:548:14 | &mut ... | file://:0:0:0:0 | &ref | main.rs:548:14:548:14 | v | | main.rs:548:19:548:35 | vs_mut.iter_mut() | file://:0:0:0:0 | element | main.rs:548:9:548:14 | &mut ... | | main.rs:562:10:562:15 | * ... [pre-dereferenced] | file://:0:0:0:0 | &ref | main.rs:562:10:562:15 | * ... | -| main.rs:562:11:562:15 | [post] c_ref [borrowed] | file://:0:0:0:0 | &ref | main.rs:562:11:562:15 | [post] c_ref | +| main.rs:562:11:562:15 | [post] c_ref [implicit borrow] | file://:0:0:0:0 | &ref | main.rs:562:11:562:15 | [post] c_ref | storeStep -| main.rs:116:11:116:11 | i | file://:0:0:0:0 | &ref | main.rs:116:11:116:11 | i [borrowed] | +| main.rs:116:11:116:11 | i | file://:0:0:0:0 | &ref | main.rs:116:11:116:11 | i [implicit borrow] | | main.rs:123:14:123:22 | source(...) | file://:0:0:0:0 | tuple.0 | main.rs:123:13:123:26 | TupleExpr | | main.rs:123:25:123:25 | 2 | file://:0:0:0:0 | tuple.1 | main.rs:123:13:123:26 | TupleExpr | | main.rs:129:14:129:14 | 2 | file://:0:0:0:0 | tuple.0 | main.rs:129:13:129:30 | TupleExpr | @@ -1019,13 +1028,13 @@ storeStep | main.rs:430:17:430:17 | 1 | file://:0:0:0:0 | element | main.rs:430:16:430:33 | [...] | | main.rs:430:20:430:20 | 2 | file://:0:0:0:0 | element | main.rs:430:16:430:33 | [...] | | main.rs:430:23:430:32 | source(...) | file://:0:0:0:0 | element | main.rs:430:16:430:33 | [...] | -| main.rs:431:14:431:17 | arr1 | file://:0:0:0:0 | &ref | main.rs:431:14:431:17 | arr1 [borrowed] | +| main.rs:431:14:431:17 | arr1 | file://:0:0:0:0 | &ref | main.rs:431:14:431:17 | arr1 [implicit borrow] | | main.rs:434:17:434:26 | source(...) | file://:0:0:0:0 | element | main.rs:434:16:434:31 | [...; 10] | -| main.rs:435:14:435:17 | arr2 | file://:0:0:0:0 | &ref | main.rs:435:14:435:17 | arr2 [borrowed] | +| main.rs:435:14:435:17 | arr2 | file://:0:0:0:0 | &ref | main.rs:435:14:435:17 | arr2 [implicit borrow] | | main.rs:438:17:438:17 | 1 | file://:0:0:0:0 | element | main.rs:438:16:438:24 | [...] | | main.rs:438:20:438:20 | 2 | file://:0:0:0:0 | element | main.rs:438:16:438:24 | [...] | | main.rs:438:23:438:23 | 3 | file://:0:0:0:0 | element | main.rs:438:16:438:24 | [...] | -| main.rs:439:14:439:17 | arr3 | file://:0:0:0:0 | &ref | main.rs:439:14:439:17 | arr3 [borrowed] | +| main.rs:439:14:439:17 | arr3 | file://:0:0:0:0 | &ref | main.rs:439:14:439:17 | arr3 [implicit borrow] | | main.rs:444:17:444:17 | 1 | file://:0:0:0:0 | element | main.rs:444:16:444:33 | [...] | | main.rs:444:20:444:20 | 2 | file://:0:0:0:0 | element | main.rs:444:16:444:33 | [...] | | main.rs:444:23:444:32 | source(...) | file://:0:0:0:0 | element | main.rs:444:16:444:33 | [...] | @@ -1038,34 +1047,40 @@ storeStep | main.rs:467:24:467:24 | 1 | file://:0:0:0:0 | element | main.rs:467:23:467:31 | [...] | | main.rs:467:27:467:27 | 2 | file://:0:0:0:0 | element | main.rs:467:23:467:31 | [...] | | main.rs:467:30:467:30 | 3 | file://:0:0:0:0 | element | main.rs:467:23:467:31 | [...] | -| main.rs:468:10:468:16 | mut_arr | file://:0:0:0:0 | &ref | main.rs:468:10:468:16 | mut_arr [borrowed] | -| main.rs:470:5:470:11 | mut_arr | file://:0:0:0:0 | &ref | main.rs:470:5:470:11 | mut_arr [borrowed] | +| main.rs:468:10:468:16 | mut_arr | file://:0:0:0:0 | &ref | main.rs:468:10:468:16 | mut_arr [implicit borrow] | +| main.rs:470:5:470:11 | mut_arr | file://:0:0:0:0 | &ref | main.rs:470:5:470:11 | mut_arr [implicit borrow] | | main.rs:470:18:470:27 | source(...) | file://:0:0:0:0 | &ref | main.rs:470:5:470:14 | [post] mut_arr[1] [pre-dereferenced] | | main.rs:470:18:470:27 | source(...) | file://:0:0:0:0 | element | main.rs:470:5:470:11 | [post] mut_arr | -| main.rs:471:13:471:19 | mut_arr | file://:0:0:0:0 | &ref | main.rs:471:13:471:19 | mut_arr [borrowed] | -| main.rs:473:10:473:16 | mut_arr | file://:0:0:0:0 | &ref | main.rs:473:10:473:16 | mut_arr [borrowed] | -| main.rs:479:24:479:33 | source(...) | file://:0:0:0:0 | &ref | main.rs:479:24:479:33 | source(...) [borrowed] | +| main.rs:471:13:471:19 | mut_arr | file://:0:0:0:0 | &ref | main.rs:471:13:471:19 | mut_arr [implicit borrow] | +| main.rs:473:10:473:16 | mut_arr | file://:0:0:0:0 | &ref | main.rs:473:10:473:16 | mut_arr [implicit borrow] | +| main.rs:479:24:479:33 | source(...) | file://:0:0:0:0 | &ref | main.rs:479:24:479:33 | source(...) [implicit borrow] | | main.rs:482:41:482:67 | default_name | main.rs:479:9:479:20 | captured default_name | main.rs:482:41:482:67 | \|...\| ... | -| main.rs:482:44:482:55 | default_name | file://:0:0:0:0 | &ref | main.rs:482:44:482:55 | default_name [borrowed] | -| main.rs:483:18:483:18 | n | file://:0:0:0:0 | &ref | main.rs:483:18:483:18 | n [borrowed] | -| main.rs:506:13:506:13 | a | file://:0:0:0:0 | &ref | main.rs:506:13:506:13 | a [borrowed] | +| main.rs:482:44:482:55 | default_name | file://:0:0:0:0 | &ref | main.rs:482:44:482:55 | default_name [implicit borrow] | +| main.rs:482:44:482:55 | default_name | file://:0:0:0:0 | &ref | main.rs:482:44:482:55 | default_name [implicit deref 0 in state after borrow] | +| main.rs:482:44:482:55 | default_name [implicit deref 0 in state after deref] | file://:0:0:0:0 | &ref | main.rs:482:44:482:55 | default_name [implicit borrow] | +| main.rs:483:18:483:18 | n | file://:0:0:0:0 | &ref | main.rs:483:18:483:18 | n [implicit borrow] | +| main.rs:506:13:506:13 | a | file://:0:0:0:0 | &ref | main.rs:506:13:506:13 | a [implicit borrow] | +| main.rs:507:13:507:13 | b | file://:0:0:0:0 | &ref | main.rs:507:13:507:13 | b [implicit deref 0 in state after borrow] | +| main.rs:507:13:507:13 | b [implicit deref 0 in state after deref] | file://:0:0:0:0 | &ref | main.rs:507:13:507:13 | b [implicit borrow] | +| main.rs:508:18:508:18 | b | file://:0:0:0:0 | &ref | main.rs:508:18:508:18 | b [implicit deref 0 in state after borrow] | +| main.rs:508:18:508:18 | b [implicit deref 0 in state after deref] | file://:0:0:0:0 | &ref | main.rs:508:18:508:18 | b [implicit borrow] | | main.rs:517:15:517:24 | source(...) | file://:0:0:0:0 | element | main.rs:517:14:517:34 | [...] | | main.rs:517:27:517:27 | 2 | file://:0:0:0:0 | element | main.rs:517:14:517:34 | [...] | | main.rs:517:30:517:30 | 3 | file://:0:0:0:0 | element | main.rs:517:14:517:34 | [...] | | main.rs:517:33:517:33 | 4 | file://:0:0:0:0 | element | main.rs:517:14:517:34 | [...] | -| main.rs:519:10:519:11 | vs | file://:0:0:0:0 | &ref | main.rs:519:10:519:11 | vs [borrowed] | -| main.rs:520:11:520:35 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:520:11:520:35 | ... .unwrap() [borrowed] | -| main.rs:521:11:521:35 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:521:11:521:35 | ... .unwrap() [borrowed] | -| main.rs:535:29:535:29 | x | file://:0:0:0:0 | &ref | main.rs:535:29:535:29 | x [borrowed] | -| main.rs:536:34:536:34 | x | file://:0:0:0:0 | &ref | main.rs:536:34:536:34 | x [borrowed] | +| main.rs:519:10:519:11 | vs | file://:0:0:0:0 | &ref | main.rs:519:10:519:11 | vs [implicit borrow] | +| main.rs:520:11:520:35 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:520:11:520:35 | ... .unwrap() [implicit borrow] | +| main.rs:521:11:521:35 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:521:11:521:35 | ... .unwrap() [implicit borrow] | +| main.rs:535:29:535:29 | x | file://:0:0:0:0 | &ref | main.rs:535:29:535:29 | x [implicit borrow] | +| main.rs:536:34:536:34 | x | file://:0:0:0:0 | &ref | main.rs:536:34:536:34 | x [implicit borrow] | | main.rs:542:23:542:32 | source(...) | file://:0:0:0:0 | element | main.rs:542:22:542:42 | [...] | | main.rs:542:35:542:35 | 2 | file://:0:0:0:0 | element | main.rs:542:22:542:42 | [...] | | main.rs:542:38:542:38 | 3 | file://:0:0:0:0 | element | main.rs:542:22:542:42 | [...] | | main.rs:542:41:542:41 | 4 | file://:0:0:0:0 | element | main.rs:542:22:542:42 | [...] | -| main.rs:544:10:544:15 | vs_mut | file://:0:0:0:0 | &ref | main.rs:544:10:544:15 | vs_mut [borrowed] | -| main.rs:545:11:545:39 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:545:11:545:39 | ... .unwrap() [borrowed] | -| main.rs:546:11:546:39 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:546:11:546:39 | ... .unwrap() [borrowed] | +| main.rs:544:10:544:15 | vs_mut | file://:0:0:0:0 | &ref | main.rs:544:10:544:15 | vs_mut [implicit borrow] | +| main.rs:545:11:545:39 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:545:11:545:39 | ... .unwrap() [implicit borrow] | +| main.rs:546:11:546:39 | ... .unwrap() | file://:0:0:0:0 | &ref | main.rs:546:11:546:39 | ... .unwrap() [implicit borrow] | | main.rs:557:18:557:18 | c | file://:0:0:0:0 | &ref | main.rs:557:17:557:18 | &c | | main.rs:560:15:560:15 | b | file://:0:0:0:0 | &ref | main.rs:560:14:560:15 | &b | -| main.rs:562:11:562:15 | c_ref | file://:0:0:0:0 | &ref | main.rs:562:11:562:15 | c_ref [borrowed] | +| main.rs:562:11:562:15 | c_ref | file://:0:0:0:0 | &ref | main.rs:562:11:562:15 | c_ref [implicit borrow] | | main.rs:583:27:583:27 | 0 | {EXTERNAL LOCATION} | Some | main.rs:583:22:583:28 | Some(...) | diff --git a/rust/ql/test/library-tests/dataflow/local/inline-flow.expected b/rust/ql/test/library-tests/dataflow/local/inline-flow.expected index 61c4771068b..27a4192867f 100644 --- a/rust/ql/test/library-tests/dataflow/local/inline-flow.expected +++ b/rust/ql/test/library-tests/dataflow/local/inline-flow.expected @@ -2,21 +2,22 @@ models | 1 | Summary: <& as core::ops::deref::Deref>::deref; Argument[self].Reference; ReturnValue; value | | 2 | Summary: <_ as alloc::string::ToString>::to_string; Argument[self].Reference; ReturnValue; taint | | 3 | Summary: <_ as core::convert::From>::from; Argument[0]; ReturnValue; taint | -| 4 | Summary: <_ as core::ops::index::Index>::index; Argument[self].Reference.Element; ReturnValue.Reference; value | -| 5 | Summary: ::deref; Argument[self].Reference.Field[alloc::boxed::Box(0)]; ReturnValue.Reference; value | -| 6 | Summary: ::new; Argument[0]; ReturnValue.Field[alloc::boxed::Box(0)]; value | -| 7 | Summary: ::from; Argument[0]; ReturnValue; taint | -| 8 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 9 | Summary: ::unwrap_or; Argument[0]; ReturnValue; value | -| 10 | Summary: ::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 11 | Summary: ::unwrap_or_else; Argument[0].ReturnValue; ReturnValue; value | -| 12 | Summary: ::unwrap_or_else; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 13 | Summary: ::err; Argument[self].Field[core::result::Result::Err(0)]; ReturnValue.Field[core::option::Option::Some(0)]; value | -| 14 | Summary: ::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 15 | Summary: ::expect_err; Argument[self].Field[core::result::Result::Err(0)]; ReturnValue; value | -| 16 | Summary: ::ok; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue.Field[core::option::Option::Some(0)]; value | -| 17 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 18 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 4 | Summary: <_ as core::ops::deref::Deref>::deref; Argument[self].Reference; ReturnValue.Reference; taint | +| 5 | Summary: <_ as core::ops::index::Index>::index; Argument[self].Reference.Element; ReturnValue.Reference; value | +| 6 | Summary: ::deref; Argument[self].Reference.Field[alloc::boxed::Box(0)]; ReturnValue.Reference; value | +| 7 | Summary: ::new; Argument[0]; ReturnValue.Field[alloc::boxed::Box(0)]; value | +| 8 | Summary: ::deref; Argument[self]; ReturnValue; value | +| 9 | Summary: ::from; Argument[0]; ReturnValue; taint | +| 10 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 11 | Summary: ::unwrap_or; Argument[0]; ReturnValue; value | +| 12 | Summary: ::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 13 | Summary: ::unwrap_or_else; Argument[0].ReturnValue; ReturnValue; value | +| 14 | Summary: ::unwrap_or_else; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 15 | Summary: ::err; Argument[self].Field[core::result::Result::Err(0)]; ReturnValue.Field[core::option::Option::Some(0)]; value | +| 16 | Summary: ::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 17 | Summary: ::expect_err; Argument[self].Field[core::result::Result::Err(0)]; ReturnValue; value | +| 18 | Summary: ::ok; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue.Field[core::option::Option::Some(0)]; value | +| 19 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | edges | main.rs:23:9:23:9 | s | main.rs:24:10:24:10 | s | provenance | | | main.rs:23:9:23:9 | s | main.rs:26:12:26:12 | x | provenance | | @@ -44,8 +45,8 @@ edges | main.rs:82:5:82:5 | l | main.rs:83:10:83:10 | l | provenance | | | main.rs:115:9:115:9 | i [Box(0)] | main.rs:116:11:116:11 | i [Box(0)] | provenance | | | main.rs:115:13:115:31 | ...::new(...) [Box(0)] | main.rs:115:9:115:9 | i [Box(0)] | provenance | | -| main.rs:115:22:115:30 | source(...) | main.rs:115:13:115:31 | ...::new(...) [Box(0)] | provenance | MaD:6 | -| main.rs:116:11:116:11 | i [Box(0)] | main.rs:116:10:116:11 | * ... | provenance | MaD:5 | +| main.rs:115:22:115:30 | source(...) | main.rs:115:13:115:31 | ...::new(...) [Box(0)] | provenance | MaD:7 | +| main.rs:116:11:116:11 | i [Box(0)] | main.rs:116:10:116:11 | * ... | provenance | MaD:6 | | main.rs:123:9:123:9 | a [tuple.0] | main.rs:124:10:124:10 | a [tuple.0] | provenance | | | main.rs:123:13:123:26 | TupleExpr [tuple.0] | main.rs:123:9:123:9 | a [tuple.0] | provenance | | | main.rs:123:14:123:22 | source(...) | main.rs:123:13:123:26 | TupleExpr [tuple.0] | provenance | | @@ -128,17 +129,17 @@ edges | main.rs:278:9:278:10 | s1 [Some] | main.rs:279:10:279:11 | s1 [Some] | provenance | | | main.rs:278:14:278:29 | Some(...) [Some] | main.rs:278:9:278:10 | s1 [Some] | provenance | | | main.rs:278:19:278:28 | source(...) | main.rs:278:14:278:29 | Some(...) [Some] | provenance | | -| main.rs:279:10:279:11 | s1 [Some] | main.rs:279:10:279:20 | s1.unwrap() | provenance | MaD:8 | +| main.rs:279:10:279:11 | s1 [Some] | main.rs:279:10:279:20 | s1.unwrap() | provenance | MaD:10 | | main.rs:283:9:283:10 | s1 [Some] | main.rs:284:10:284:11 | s1 [Some] | provenance | | | main.rs:283:14:283:29 | Some(...) [Some] | main.rs:283:9:283:10 | s1 [Some] | provenance | | | main.rs:283:19:283:28 | source(...) | main.rs:283:14:283:29 | Some(...) [Some] | provenance | | -| main.rs:284:10:284:11 | s1 [Some] | main.rs:284:10:284:24 | s1.unwrap_or(...) | provenance | MaD:10 | -| main.rs:287:23:287:32 | source(...) | main.rs:287:10:287:33 | s2.unwrap_or(...) | provenance | MaD:9 | +| main.rs:284:10:284:11 | s1 [Some] | main.rs:284:10:284:24 | s1.unwrap_or(...) | provenance | MaD:12 | +| main.rs:287:23:287:32 | source(...) | main.rs:287:10:287:33 | s2.unwrap_or(...) | provenance | MaD:11 | | main.rs:291:9:291:10 | s1 [Some] | main.rs:292:10:292:11 | s1 [Some] | provenance | | | main.rs:291:14:291:29 | Some(...) [Some] | main.rs:291:9:291:10 | s1 [Some] | provenance | | | main.rs:291:19:291:28 | source(...) | main.rs:291:14:291:29 | Some(...) [Some] | provenance | | -| main.rs:292:10:292:11 | s1 [Some] | main.rs:292:10:292:32 | s1.unwrap_or_else(...) | provenance | MaD:12 | -| main.rs:295:31:295:40 | source(...) | main.rs:295:10:295:41 | s2.unwrap_or_else(...) | provenance | MaD:11 | +| main.rs:292:10:292:11 | s1 [Some] | main.rs:292:10:292:32 | s1.unwrap_or_else(...) | provenance | MaD:14 | +| main.rs:295:31:295:40 | source(...) | main.rs:295:10:295:41 | s2.unwrap_or_else(...) | provenance | MaD:13 | | main.rs:299:9:299:10 | s1 [Some] | main.rs:301:14:301:15 | s1 [Some] | provenance | | | main.rs:299:14:299:29 | Some(...) [Some] | main.rs:299:9:299:10 | s1 [Some] | provenance | | | main.rs:299:19:299:28 | source(...) | main.rs:299:14:299:29 | Some(...) [Some] | provenance | | @@ -149,16 +150,16 @@ edges | main.rs:308:32:308:45 | Ok(...) [Ok] | main.rs:308:9:308:10 | r1 [Ok] | provenance | | | main.rs:308:35:308:44 | source(...) | main.rs:308:32:308:45 | Ok(...) [Ok] | provenance | | | main.rs:309:9:309:11 | o1a [Some] | main.rs:311:10:311:12 | o1a [Some] | provenance | | -| main.rs:309:28:309:29 | r1 [Ok] | main.rs:309:28:309:34 | r1.ok() [Some] | provenance | MaD:16 | +| main.rs:309:28:309:29 | r1 [Ok] | main.rs:309:28:309:34 | r1.ok() [Some] | provenance | MaD:18 | | main.rs:309:28:309:34 | r1.ok() [Some] | main.rs:309:9:309:11 | o1a [Some] | provenance | | -| main.rs:311:10:311:12 | o1a [Some] | main.rs:311:10:311:21 | o1a.unwrap() | provenance | MaD:8 | +| main.rs:311:10:311:12 | o1a [Some] | main.rs:311:10:311:21 | o1a.unwrap() | provenance | MaD:10 | | main.rs:314:9:314:10 | r2 [Err] | main.rs:316:28:316:29 | r2 [Err] | provenance | | | main.rs:314:32:314:46 | Err(...) [Err] | main.rs:314:9:314:10 | r2 [Err] | provenance | | | main.rs:314:36:314:45 | source(...) | main.rs:314:32:314:46 | Err(...) [Err] | provenance | | | main.rs:316:9:316:11 | o2b [Some] | main.rs:318:10:318:12 | o2b [Some] | provenance | | -| main.rs:316:28:316:29 | r2 [Err] | main.rs:316:28:316:35 | r2.err() [Some] | provenance | MaD:13 | +| main.rs:316:28:316:29 | r2 [Err] | main.rs:316:28:316:35 | r2.err() [Some] | provenance | MaD:15 | | main.rs:316:28:316:35 | r2.err() [Some] | main.rs:316:9:316:11 | o2b [Some] | provenance | | -| main.rs:318:10:318:12 | o2b [Some] | main.rs:318:10:318:21 | o2b.unwrap() | provenance | MaD:8 | +| main.rs:318:10:318:12 | o2b [Some] | main.rs:318:10:318:21 | o2b.unwrap() | provenance | MaD:10 | | main.rs:322:9:322:10 | s1 [Ok] | main.rs:325:14:325:15 | s1 [Ok] | provenance | | | main.rs:322:32:322:45 | Ok(...) [Ok] | main.rs:322:9:322:10 | s1 [Ok] | provenance | | | main.rs:322:35:322:44 | source(...) | main.rs:322:32:322:45 | Ok(...) [Ok] | provenance | | @@ -168,11 +169,11 @@ edges | main.rs:335:9:335:10 | s1 [Ok] | main.rs:336:10:336:11 | s1 [Ok] | provenance | | | main.rs:335:32:335:45 | Ok(...) [Ok] | main.rs:335:9:335:10 | s1 [Ok] | provenance | | | main.rs:335:35:335:44 | source(...) | main.rs:335:32:335:45 | Ok(...) [Ok] | provenance | | -| main.rs:336:10:336:11 | s1 [Ok] | main.rs:336:10:336:22 | s1.expect(...) | provenance | MaD:14 | +| main.rs:336:10:336:11 | s1 [Ok] | main.rs:336:10:336:22 | s1.expect(...) | provenance | MaD:16 | | main.rs:339:9:339:10 | s2 [Err] | main.rs:341:10:341:11 | s2 [Err] | provenance | | | main.rs:339:32:339:46 | Err(...) [Err] | main.rs:339:9:339:10 | s2 [Err] | provenance | | | main.rs:339:36:339:45 | source(...) | main.rs:339:32:339:46 | Err(...) [Err] | provenance | | -| main.rs:341:10:341:11 | s2 [Err] | main.rs:341:10:341:26 | s2.expect_err(...) | provenance | MaD:15 | +| main.rs:341:10:341:11 | s2 [Err] | main.rs:341:10:341:26 | s2.expect_err(...) | provenance | MaD:17 | | main.rs:350:9:350:10 | s1 [A] | main.rs:352:11:352:12 | s1 [A] | provenance | | | main.rs:350:14:350:39 | ...::A(...) [A] | main.rs:350:9:350:10 | s1 [A] | provenance | | | main.rs:350:29:350:38 | source(...) | main.rs:350:14:350:39 | ...::A(...) [A] | provenance | | @@ -221,13 +222,13 @@ edges | main.rs:430:16:430:33 | [...] [element] | main.rs:430:9:430:12 | arr1 [element] | provenance | | | main.rs:430:23:430:32 | source(...) | main.rs:430:16:430:33 | [...] [element] | provenance | | | main.rs:431:9:431:10 | n1 | main.rs:432:10:432:11 | n1 | provenance | | -| main.rs:431:14:431:17 | arr1 [element] | main.rs:431:14:431:20 | arr1[2] | provenance | MaD:4 | +| main.rs:431:14:431:17 | arr1 [element] | main.rs:431:14:431:20 | arr1[2] | provenance | MaD:5 | | main.rs:431:14:431:20 | arr1[2] | main.rs:431:9:431:10 | n1 | provenance | | | main.rs:434:9:434:12 | arr2 [element] | main.rs:435:14:435:17 | arr2 [element] | provenance | | | main.rs:434:16:434:31 | [...; 10] [element] | main.rs:434:9:434:12 | arr2 [element] | provenance | | | main.rs:434:17:434:26 | source(...) | main.rs:434:16:434:31 | [...; 10] [element] | provenance | | | main.rs:435:9:435:10 | n2 | main.rs:436:10:436:11 | n2 | provenance | | -| main.rs:435:14:435:17 | arr2 [element] | main.rs:435:14:435:20 | arr2[4] | provenance | MaD:4 | +| main.rs:435:14:435:17 | arr2 [element] | main.rs:435:14:435:20 | arr2[4] | provenance | MaD:5 | | main.rs:435:14:435:20 | arr2[4] | main.rs:435:9:435:10 | n2 | provenance | | | main.rs:444:9:444:12 | arr1 [element] | main.rs:445:15:445:18 | arr1 [element] | provenance | | | main.rs:444:16:444:33 | [...] [element] | main.rs:444:9:444:12 | arr1 [element] | provenance | | @@ -248,9 +249,9 @@ edges | main.rs:470:5:470:11 | [post] mut_arr [element] | main.rs:473:10:473:16 | mut_arr [element] | provenance | | | main.rs:470:18:470:27 | source(...) | main.rs:470:5:470:11 | [post] mut_arr [element] | provenance | | | main.rs:471:9:471:9 | d | main.rs:472:10:472:10 | d | provenance | | -| main.rs:471:13:471:19 | mut_arr [element] | main.rs:471:13:471:22 | mut_arr[1] | provenance | MaD:4 | +| main.rs:471:13:471:19 | mut_arr [element] | main.rs:471:13:471:22 | mut_arr[1] | provenance | MaD:5 | | main.rs:471:13:471:22 | mut_arr[1] | main.rs:471:9:471:9 | d | provenance | | -| main.rs:473:10:473:16 | mut_arr [element] | main.rs:473:10:473:19 | mut_arr[0] | provenance | MaD:4 | +| main.rs:473:10:473:16 | mut_arr [element] | main.rs:473:10:473:19 | mut_arr[0] | provenance | MaD:5 | | main.rs:496:9:496:9 | s | main.rs:497:10:497:10 | s | provenance | | | main.rs:496:25:496:26 | source(...) | main.rs:496:9:496:9 | s | provenance | | | main.rs:505:9:505:9 | a | main.rs:506:13:506:13 | a | provenance | | @@ -262,24 +263,26 @@ edges | main.rs:506:13:506:13 | a | main.rs:506:13:506:25 | a.to_string() | provenance | MaD:2 | | main.rs:506:13:506:25 | a.to_string() | main.rs:506:9:506:9 | b | provenance | | | main.rs:507:9:507:9 | c | main.rs:512:10:512:10 | c | provenance | | -| main.rs:507:13:507:13 | b | main.rs:507:13:507:28 | b.parse() [Ok] | provenance | MaD:18 | -| main.rs:507:13:507:28 | b.parse() [Ok] | main.rs:507:13:507:37 | ... .unwrap() | provenance | MaD:17 | +| main.rs:507:13:507:13 | b | main.rs:507:13:507:28 | b.parse() [Ok] | provenance | MaD:4 | +| main.rs:507:13:507:13 | b | main.rs:507:13:507:28 | b.parse() [Ok] | provenance | MaD:8 | +| main.rs:507:13:507:28 | b.parse() [Ok] | main.rs:507:13:507:37 | ... .unwrap() | provenance | MaD:19 | | main.rs:507:13:507:37 | ... .unwrap() | main.rs:507:9:507:9 | c | provenance | | | main.rs:508:9:508:9 | d | main.rs:513:10:513:10 | d | provenance | | -| main.rs:508:18:508:18 | b | main.rs:508:18:508:26 | b.parse() [Ok] | provenance | MaD:18 | -| main.rs:508:18:508:26 | b.parse() [Ok] | main.rs:508:18:508:35 | ... .unwrap() | provenance | MaD:17 | +| main.rs:508:18:508:18 | b | main.rs:508:18:508:26 | b.parse() [Ok] | provenance | MaD:4 | +| main.rs:508:18:508:18 | b | main.rs:508:18:508:26 | b.parse() [Ok] | provenance | MaD:8 | +| main.rs:508:18:508:26 | b.parse() [Ok] | main.rs:508:18:508:35 | ... .unwrap() | provenance | MaD:19 | | main.rs:508:18:508:35 | ... .unwrap() | main.rs:508:9:508:9 | d | provenance | | | main.rs:517:9:517:10 | vs [element] | main.rs:519:10:519:11 | vs [element] | provenance | | | main.rs:517:9:517:10 | vs [element] | main.rs:523:14:523:15 | vs [element] | provenance | | | main.rs:517:14:517:34 | [...] [element] | main.rs:517:9:517:10 | vs [element] | provenance | | | main.rs:517:15:517:24 | source(...) | main.rs:517:14:517:34 | [...] [element] | provenance | | -| main.rs:519:10:519:11 | vs [element] | main.rs:519:10:519:14 | vs[0] | provenance | MaD:4 | +| main.rs:519:10:519:11 | vs [element] | main.rs:519:10:519:14 | vs[0] | provenance | MaD:5 | | main.rs:523:9:523:9 | v | main.rs:524:14:524:14 | v | provenance | | | main.rs:523:14:523:15 | vs [element] | main.rs:523:9:523:9 | v | provenance | | | main.rs:542:9:542:18 | mut vs_mut [element] | main.rs:544:10:544:15 | vs_mut [element] | provenance | | | main.rs:542:22:542:42 | [...] [element] | main.rs:542:9:542:18 | mut vs_mut [element] | provenance | | | main.rs:542:23:542:32 | source(...) | main.rs:542:22:542:42 | [...] [element] | provenance | | -| main.rs:544:10:544:15 | vs_mut [element] | main.rs:544:10:544:18 | vs_mut[0] | provenance | MaD:4 | +| main.rs:544:10:544:15 | vs_mut [element] | main.rs:544:10:544:18 | vs_mut[0] | provenance | MaD:5 | | main.rs:554:9:554:9 | a | main.rs:559:10:559:10 | a | provenance | | | main.rs:554:13:554:22 | source(...) | main.rs:554:9:554:9 | a | provenance | | | main.rs:555:9:555:9 | b | main.rs:560:15:560:15 | b | provenance | | @@ -298,7 +301,7 @@ edges | main.rs:572:9:572:9 | b | main.rs:576:20:576:20 | b | provenance | | | main.rs:572:18:572:27 | source(...) | main.rs:572:9:572:9 | b | provenance | | | main.rs:576:20:576:20 | b | main.rs:576:10:576:21 | ...::from(...) | provenance | MaD:3 | -| main.rs:576:20:576:20 | b | main.rs:576:10:576:21 | ...::from(...) | provenance | MaD:7 | +| main.rs:576:20:576:20 | b | main.rs:576:10:576:21 | ...::from(...) | provenance | MaD:9 | nodes | main.rs:19:10:19:18 | source(...) | semmle.label | source(...) | | main.rs:23:9:23:9 | s | semmle.label | s | diff --git a/rust/ql/test/library-tests/dataflow/modeled/inline-flow.expected b/rust/ql/test/library-tests/dataflow/modeled/inline-flow.expected index 043809e6339..c2672a6823a 100644 --- a/rust/ql/test/library-tests/dataflow/modeled/inline-flow.expected +++ b/rust/ql/test/library-tests/dataflow/modeled/inline-flow.expected @@ -48,9 +48,8 @@ edges | main.rs:28:13:28:13 | a | main.rs:28:13:28:21 | a.clone() | provenance | MaD:2 | | main.rs:28:13:28:13 | a | main.rs:28:13:28:21 | a.clone() | provenance | MaD:11 | | main.rs:28:13:28:21 | a.clone() | main.rs:28:9:28:9 | b | provenance | | -| main.rs:43:18:43:22 | SelfParam [&ref, Wrapper] | main.rs:44:26:44:29 | self [&ref, Wrapper] | provenance | | +| main.rs:43:18:43:22 | SelfParam [&ref, Wrapper] | main.rs:44:26:44:31 | self.n | provenance | | | main.rs:44:13:44:33 | Wrapper {...} [Wrapper] | main.rs:43:33:45:9 | { ... } [Wrapper] | provenance | | -| main.rs:44:26:44:29 | self [&ref, Wrapper] | main.rs:44:26:44:31 | self.n | provenance | | | main.rs:44:26:44:31 | self.n | main.rs:44:13:44:33 | Wrapper {...} [Wrapper] | provenance | | | main.rs:49:13:49:13 | w [Wrapper] | main.rs:50:15:50:15 | w [Wrapper] | provenance | | | main.rs:49:17:49:41 | Wrapper {...} [Wrapper] | main.rs:49:13:49:13 | w [Wrapper] | provenance | | @@ -191,7 +190,6 @@ nodes | main.rs:43:18:43:22 | SelfParam [&ref, Wrapper] | semmle.label | SelfParam [&ref, Wrapper] | | main.rs:43:33:45:9 | { ... } [Wrapper] | semmle.label | { ... } [Wrapper] | | main.rs:44:13:44:33 | Wrapper {...} [Wrapper] | semmle.label | Wrapper {...} [Wrapper] | -| main.rs:44:26:44:29 | self [&ref, Wrapper] | semmle.label | self [&ref, Wrapper] | | main.rs:44:26:44:31 | self.n | semmle.label | self.n | | main.rs:49:13:49:13 | w [Wrapper] | semmle.label | w [Wrapper] | | main.rs:49:17:49:41 | Wrapper {...} [Wrapper] | semmle.label | Wrapper {...} [Wrapper] | diff --git a/rust/ql/test/library-tests/dataflow/pointers/inline-flow.expected b/rust/ql/test/library-tests/dataflow/pointers/inline-flow.expected index 55b07f9efcc..61b9bf4a608 100644 --- a/rust/ql/test/library-tests/dataflow/pointers/inline-flow.expected +++ b/rust/ql/test/library-tests/dataflow/pointers/inline-flow.expected @@ -81,12 +81,11 @@ edges | main.rs:184:44:184:53 | source(...) | main.rs:184:25:184:54 | ...::MyNumber(...) [MyNumber] | provenance | | | main.rs:186:14:186:22 | my_number [MyNumber] | main.rs:162:12:162:16 | SelfParam [&ref, MyNumber] | provenance | | | main.rs:186:14:186:22 | my_number [MyNumber] | main.rs:186:14:186:28 | my_number.get() | provenance | | -| main.rs:190:13:190:21 | my_number [&ref, MyNumber] | main.rs:192:14:192:22 | my_number [&ref, MyNumber] | provenance | | +| main.rs:190:13:190:21 | my_number [&ref, MyNumber] | main.rs:156:18:156:21 | SelfParam [MyNumber] | provenance | | +| main.rs:190:13:190:21 | my_number [&ref, MyNumber] | main.rs:192:14:192:34 | my_number.to_number() | provenance | | | main.rs:190:25:190:55 | &... [&ref, MyNumber] | main.rs:190:13:190:21 | my_number [&ref, MyNumber] | provenance | | | main.rs:190:26:190:55 | ...::MyNumber(...) [MyNumber] | main.rs:190:25:190:55 | &... [&ref, MyNumber] | provenance | | | main.rs:190:45:190:54 | source(...) | main.rs:190:26:190:55 | ...::MyNumber(...) [MyNumber] | provenance | | -| main.rs:192:14:192:22 | my_number [&ref, MyNumber] | main.rs:156:18:156:21 | SelfParam [MyNumber] | provenance | | -| main.rs:192:14:192:22 | my_number [&ref, MyNumber] | main.rs:192:14:192:34 | my_number.to_number() | provenance | | | main.rs:200:29:200:38 | ...: i64 | main.rs:201:14:201:18 | value | provenance | | | main.rs:201:10:201:10 | [post] n [&ref] | main.rs:200:16:200:26 | ...: ... [Return] [&ref] | provenance | | | main.rs:201:14:201:18 | value | main.rs:201:10:201:10 | [post] n [&ref] | provenance | | @@ -228,7 +227,6 @@ nodes | main.rs:190:25:190:55 | &... [&ref, MyNumber] | semmle.label | &... [&ref, MyNumber] | | main.rs:190:26:190:55 | ...::MyNumber(...) [MyNumber] | semmle.label | ...::MyNumber(...) [MyNumber] | | main.rs:190:45:190:54 | source(...) | semmle.label | source(...) | -| main.rs:192:14:192:22 | my_number [&ref, MyNumber] | semmle.label | my_number [&ref, MyNumber] | | main.rs:192:14:192:34 | my_number.to_number() | semmle.label | my_number.to_number() | | main.rs:200:16:200:26 | ...: ... [Return] [&ref] | semmle.label | ...: ... [Return] [&ref] | | main.rs:200:29:200:38 | ...: i64 | semmle.label | ...: i64 | @@ -276,7 +274,7 @@ subpaths | main.rs:175:14:175:22 | my_number [MyNumber] | main.rs:156:18:156:21 | SelfParam [MyNumber] | main.rs:156:31:160:5 | { ... } | main.rs:175:14:175:34 | my_number.to_number() | | main.rs:180:15:180:24 | &my_number [&ref, MyNumber] | main.rs:162:12:162:16 | SelfParam [&ref, MyNumber] | main.rs:162:26:166:5 | { ... } | main.rs:180:14:180:31 | ... .get() | | main.rs:186:14:186:22 | my_number [MyNumber] | main.rs:162:12:162:16 | SelfParam [&ref, MyNumber] | main.rs:162:26:166:5 | { ... } | main.rs:186:14:186:28 | my_number.get() | -| main.rs:192:14:192:22 | my_number [&ref, MyNumber] | main.rs:156:18:156:21 | SelfParam [MyNumber] | main.rs:156:31:160:5 | { ... } | main.rs:192:14:192:34 | my_number.to_number() | +| main.rs:190:13:190:21 | my_number [&ref, MyNumber] | main.rs:156:18:156:21 | SelfParam [MyNumber] | main.rs:156:31:160:5 | { ... } | main.rs:192:14:192:34 | my_number.to_number() | | main.rs:210:20:210:29 | source(...) | main.rs:200:29:200:38 | ...: i64 | main.rs:200:16:200:26 | ...: ... [Return] [&ref] | main.rs:210:17:210:17 | [post] p [&ref] | | main.rs:218:25:218:34 | source(...) | main.rs:200:29:200:38 | ...: i64 | main.rs:200:16:200:26 | ...: ... [Return] [&ref] | main.rs:218:17:218:22 | [post] &mut n [&ref] | | main.rs:234:36:234:45 | source(...) | main.rs:228:37:228:47 | ...: i64 | main.rs:228:19:228:34 | ...: ... [Return] [&ref, MyNumber] | main.rs:234:20:234:33 | [post] &mut my_number [&ref, MyNumber] | diff --git a/rust/ql/test/library-tests/dataflow/sources/env/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/env/InlineFlow.expected index ac8b8c8c334..7456dda7e63 100644 --- a/rust/ql/test/library-tests/dataflow/sources/env/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/env/InlineFlow.expected @@ -10,22 +10,23 @@ models | 9 | Source: std::env::vars_os; ReturnValue.Element; environment | | 10 | Summary: <_ as core::iter::traits::iterator::Iterator>::collect; Argument[self].Element; ReturnValue.Element; value | | 11 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Reference.Element; ReturnValue.Field[core::option::Option::Some(0)]; value | -| 12 | Summary: <_ as core::ops::index::Index>::index; Argument[self].Reference.Element; ReturnValue.Reference; value | -| 13 | Summary: ::expect; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 14 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 15 | Summary: ::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 16 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 17 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 12 | Summary: <_ as core::ops::deref::Deref>::deref; Argument[self].Reference; ReturnValue.Reference; taint | +| 13 | Summary: <_ as core::ops::index::Index>::index; Argument[self].Reference.Element; ReturnValue.Reference; value | +| 14 | Summary: ::deref; Argument[self]; ReturnValue; value | +| 15 | Summary: ::expect; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 16 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 17 | Summary: ::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 18 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | edges | test.rs:6:10:6:22 | ...::var | test.rs:6:10:6:30 | ...::var(...) | provenance | Src:MaD:6 | | test.rs:7:10:7:25 | ...::var_os | test.rs:7:10:7:33 | ...::var_os(...) | provenance | Src:MaD:7 | | test.rs:9:9:9:12 | var1 | test.rs:12:10:12:13 | var1 | provenance | | | test.rs:9:16:9:28 | ...::var | test.rs:9:16:9:36 | ...::var(...) [Ok] | provenance | Src:MaD:6 | -| test.rs:9:16:9:36 | ...::var(...) [Ok] | test.rs:9:16:9:59 | ... .expect(...) | provenance | MaD:15 | +| test.rs:9:16:9:36 | ...::var(...) [Ok] | test.rs:9:16:9:59 | ... .expect(...) | provenance | MaD:17 | | test.rs:9:16:9:59 | ... .expect(...) | test.rs:9:9:9:12 | var1 | provenance | | | test.rs:10:9:10:12 | var2 | test.rs:13:10:13:13 | var2 | provenance | | | test.rs:10:16:10:31 | ...::var_os | test.rs:10:16:10:39 | ...::var_os(...) [Some] | provenance | Src:MaD:7 | -| test.rs:10:16:10:39 | ...::var_os(...) [Some] | test.rs:10:16:10:48 | ... .unwrap() | provenance | MaD:14 | +| test.rs:10:16:10:39 | ...::var_os(...) [Some] | test.rs:10:16:10:48 | ... .unwrap() | provenance | MaD:16 | | test.rs:10:16:10:48 | ... .unwrap() | test.rs:10:9:10:12 | var2 | provenance | | | test.rs:15:9:15:20 | TuplePat | test.rs:16:14:16:16 | key | provenance | | | test.rs:15:9:15:20 | TuplePat | test.rs:17:14:17:18 | value | provenance | | @@ -42,28 +43,29 @@ edges | test.rs:27:29:27:54 | ... .collect() [element] | test.rs:27:9:27:12 | args [element] | provenance | | | test.rs:28:9:28:15 | my_path [&ref] | test.rs:34:10:34:16 | my_path | provenance | | | test.rs:28:19:28:26 | &... [&ref] | test.rs:28:9:28:15 | my_path [&ref] | provenance | | -| test.rs:28:20:28:23 | args [element] | test.rs:28:20:28:26 | args[0] | provenance | MaD:12 | +| test.rs:28:20:28:23 | args [element] | test.rs:28:20:28:26 | args[0] | provenance | MaD:13 | | test.rs:28:20:28:26 | args[0] | test.rs:28:19:28:26 | &... [&ref] | provenance | | | test.rs:29:9:29:12 | arg1 [&ref] | test.rs:35:10:35:13 | arg1 | provenance | | | test.rs:29:16:29:23 | &... [&ref] | test.rs:29:9:29:12 | arg1 [&ref] | provenance | | -| test.rs:29:17:29:20 | args [element] | test.rs:29:17:29:23 | args[1] | provenance | MaD:12 | +| test.rs:29:17:29:20 | args [element] | test.rs:29:17:29:23 | args[1] | provenance | MaD:13 | | test.rs:29:17:29:23 | args[1] | test.rs:29:16:29:23 | &... [&ref] | provenance | | | test.rs:30:9:30:12 | arg2 | test.rs:36:10:36:13 | arg2 | provenance | | | test.rs:30:16:30:29 | ...::args | test.rs:30:16:30:31 | ...::args(...) [element] | provenance | Src:MaD:1 | | test.rs:30:16:30:31 | ...::args(...) [element] | test.rs:30:16:30:38 | ... .nth(...) [Some] | provenance | MaD:11 | -| test.rs:30:16:30:38 | ... .nth(...) [Some] | test.rs:30:16:30:47 | ... .unwrap() | provenance | MaD:14 | +| test.rs:30:16:30:38 | ... .nth(...) [Some] | test.rs:30:16:30:47 | ... .unwrap() | provenance | MaD:16 | | test.rs:30:16:30:47 | ... .unwrap() | test.rs:30:9:30:12 | arg2 | provenance | | | test.rs:31:9:31:12 | arg3 | test.rs:37:10:37:13 | arg3 | provenance | | | test.rs:31:16:31:32 | ...::args_os | test.rs:31:16:31:34 | ...::args_os(...) [element] | provenance | Src:MaD:2 | | test.rs:31:16:31:34 | ...::args_os(...) [element] | test.rs:31:16:31:41 | ... .nth(...) [Some] | provenance | MaD:11 | -| test.rs:31:16:31:41 | ... .nth(...) [Some] | test.rs:31:16:31:50 | ... .unwrap() | provenance | MaD:14 | +| test.rs:31:16:31:41 | ... .nth(...) [Some] | test.rs:31:16:31:50 | ... .unwrap() | provenance | MaD:16 | | test.rs:31:16:31:50 | ... .unwrap() | test.rs:31:9:31:12 | arg3 | provenance | | | test.rs:32:9:32:12 | arg4 | test.rs:38:10:38:13 | arg4 | provenance | | | test.rs:32:16:32:29 | ...::args | test.rs:32:16:32:31 | ...::args(...) [element] | provenance | Src:MaD:1 | | test.rs:32:16:32:31 | ...::args(...) [element] | test.rs:32:16:32:38 | ... .nth(...) [Some] | provenance | MaD:11 | -| test.rs:32:16:32:38 | ... .nth(...) [Some] | test.rs:32:16:32:47 | ... .unwrap() | provenance | MaD:14 | -| test.rs:32:16:32:47 | ... .unwrap() | test.rs:32:16:32:64 | ... .parse() [Ok] | provenance | MaD:17 | -| test.rs:32:16:32:64 | ... .parse() [Ok] | test.rs:32:16:32:73 | ... .unwrap() | provenance | MaD:16 | +| test.rs:32:16:32:38 | ... .nth(...) [Some] | test.rs:32:16:32:47 | ... .unwrap() | provenance | MaD:16 | +| test.rs:32:16:32:47 | ... .unwrap() | test.rs:32:16:32:64 | ... .parse() [Ok] | provenance | MaD:12 | +| test.rs:32:16:32:47 | ... .unwrap() | test.rs:32:16:32:64 | ... .parse() [Ok] | provenance | MaD:14 | +| test.rs:32:16:32:64 | ... .parse() [Ok] | test.rs:32:16:32:73 | ... .unwrap() | provenance | MaD:18 | | test.rs:32:16:32:73 | ... .unwrap() | test.rs:32:9:32:12 | arg4 | provenance | | | test.rs:40:9:40:11 | arg | test.rs:41:14:41:16 | arg | provenance | | | test.rs:40:16:40:29 | ...::args | test.rs:40:16:40:31 | ...::args(...) [element] | provenance | Src:MaD:1 | @@ -73,15 +75,15 @@ edges | test.rs:44:16:44:34 | ...::args_os(...) [element] | test.rs:44:9:44:11 | arg | provenance | | | test.rs:50:9:50:11 | dir | test.rs:54:10:54:12 | dir | provenance | | | test.rs:50:15:50:35 | ...::current_dir | test.rs:50:15:50:37 | ...::current_dir(...) [Ok] | provenance | Src:MaD:3 | -| test.rs:50:15:50:37 | ...::current_dir(...) [Ok] | test.rs:50:15:50:54 | ... .expect(...) | provenance | MaD:15 | +| test.rs:50:15:50:37 | ...::current_dir(...) [Ok] | test.rs:50:15:50:54 | ... .expect(...) | provenance | MaD:17 | | test.rs:50:15:50:54 | ... .expect(...) | test.rs:50:9:50:11 | dir | provenance | | | test.rs:51:9:51:11 | exe | test.rs:55:10:55:12 | exe | provenance | | | test.rs:51:15:51:35 | ...::current_exe | test.rs:51:15:51:37 | ...::current_exe(...) [Ok] | provenance | Src:MaD:4 | -| test.rs:51:15:51:37 | ...::current_exe(...) [Ok] | test.rs:51:15:51:54 | ... .expect(...) | provenance | MaD:15 | +| test.rs:51:15:51:37 | ...::current_exe(...) [Ok] | test.rs:51:15:51:54 | ... .expect(...) | provenance | MaD:17 | | test.rs:51:15:51:54 | ... .expect(...) | test.rs:51:9:51:11 | exe | provenance | | | test.rs:52:9:52:12 | home | test.rs:56:10:56:13 | home | provenance | | | test.rs:52:16:52:33 | ...::home_dir | test.rs:52:16:52:35 | ...::home_dir(...) [Some] | provenance | Src:MaD:5 | -| test.rs:52:16:52:35 | ...::home_dir(...) [Some] | test.rs:52:16:52:52 | ... .expect(...) | provenance | MaD:13 | +| test.rs:52:16:52:35 | ...::home_dir(...) [Some] | test.rs:52:16:52:52 | ... .expect(...) | provenance | MaD:15 | | test.rs:52:16:52:52 | ... .expect(...) | test.rs:52:9:52:12 | home | provenance | | nodes | test.rs:6:10:6:22 | ...::var | semmle.label | ...::var | diff --git a/rust/ql/test/library-tests/dataflow/sources/file/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/file/InlineFlow.expected index cffdc6d395b..8eeac807a44 100644 --- a/rust/ql/test/library-tests/dataflow/sources/file/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/file/InlineFlow.expected @@ -17,25 +17,25 @@ models | 16 | Source: tokio::fs::read_to_string::read_to_string; ReturnValue.Future.Field[core::result::Result::Ok(0)]; file | | 17 | Summary: <_ as async_std::io::read::ReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | | 18 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value | -| 19 | Summary: <_ as std::io::Read>::bytes; Argument[self]; ReturnValue; taint | -| 20 | Summary: <_ as std::io::Read>::chain; Argument[0]; ReturnValue; taint | -| 21 | Summary: <_ as std::io::Read>::chain; Argument[self]; ReturnValue; taint | -| 22 | Summary: <_ as std::io::Read>::read; Argument[self].Reference; Argument[0].Reference; taint | -| 23 | Summary: <_ as std::io::Read>::read_exact; Argument[self].Reference; Argument[0].Reference; taint | -| 24 | Summary: <_ as std::io::Read>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | -| 25 | Summary: <_ as std::io::Read>::read_to_string; Argument[self].Reference; Argument[0].Reference; taint | -| 26 | Summary: <_ as std::io::Read>::take; Argument[self]; ReturnValue; taint | -| 27 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | -| 28 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_buf; Argument[self].Reference; Argument[0].Reference; taint | -| 29 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_exact; Argument[self].Reference; Argument[0].Reference; taint | -| 30 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f32; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 31 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i16; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 32 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i64_le; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 33 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | -| 34 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_string; Argument[self].Reference; Argument[0].Reference; taint | -| 35 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u8; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 36 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 37 | Summary: ::canonicalize; Argument[self].Reference.OptionalBarrier[normalize-path]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 19 | Summary: <_ as core::ops::deref::Deref>::deref; Argument[self].Reference; ReturnValue.Reference; taint | +| 20 | Summary: <_ as std::io::Read>::bytes; Argument[self]; ReturnValue; taint | +| 21 | Summary: <_ as std::io::Read>::chain; Argument[0]; ReturnValue; taint | +| 22 | Summary: <_ as std::io::Read>::chain; Argument[self]; ReturnValue; taint | +| 23 | Summary: <_ as std::io::Read>::read; Argument[self].Reference; Argument[0].Reference; taint | +| 24 | Summary: <_ as std::io::Read>::read_exact; Argument[self].Reference; Argument[0].Reference; taint | +| 25 | Summary: <_ as std::io::Read>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | +| 26 | Summary: <_ as std::io::Read>::read_to_string; Argument[self].Reference; Argument[0].Reference; taint | +| 27 | Summary: <_ as std::io::Read>::take; Argument[self]; ReturnValue; taint | +| 28 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | +| 29 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_buf; Argument[self].Reference; Argument[0].Reference; taint | +| 30 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_exact; Argument[self].Reference; Argument[0].Reference; taint | +| 31 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f32; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 32 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i16; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 33 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i64_le; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 34 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | +| 35 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_string; Argument[self].Reference; Argument[0].Reference; taint | +| 36 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u8; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 37 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | | 38 | Summary: ::as_path; Argument[self].Reference; ReturnValue.Reference; value | edges | test.rs:12:13:12:18 | buffer | test.rs:13:14:13:19 | buffer | provenance | | @@ -59,8 +59,8 @@ edges | test.rs:30:14:30:17 | path | test.rs:30:14:30:25 | path.clone() | provenance | MaD:18 | | test.rs:31:14:31:17 | path | test.rs:31:14:31:25 | path.clone() | provenance | MaD:18 | | test.rs:31:14:31:25 | path.clone() | test.rs:31:14:31:35 | ... .as_path() | provenance | MaD:38 | -| test.rs:40:14:40:17 | path | test.rs:40:14:40:32 | path.canonicalize() [Ok] | provenance | MaD:37 | -| test.rs:40:14:40:32 | path.canonicalize() [Ok] | test.rs:40:14:40:41 | ... .unwrap() | provenance | MaD:36 | +| test.rs:40:14:40:17 | path | test.rs:40:14:40:32 | path.canonicalize() [Ok] | provenance | MaD:19 | +| test.rs:40:14:40:32 | path.canonicalize() [Ok] | test.rs:40:14:40:41 | ... .unwrap() | provenance | MaD:37 | | test.rs:43:13:43:21 | file_name | test.rs:44:14:44:22 | file_name | provenance | | | test.rs:43:13:43:21 | file_name | test.rs:49:14:49:22 | file_name | provenance | | | test.rs:43:25:43:37 | e.file_name() | test.rs:43:13:43:21 | file_name | provenance | | @@ -104,45 +104,45 @@ edges | test.rs:107:20:107:38 | ...::open | test.rs:107:20:107:50 | ...::open(...) [Ok] | provenance | Src:MaD:5 | | test.rs:107:20:107:50 | ...::open(...) [Ok] | test.rs:107:20:107:51 | TryExpr | provenance | | | test.rs:107:20:107:51 | TryExpr | test.rs:107:9:107:16 | mut file | provenance | | -| test.rs:111:22:111:25 | file | test.rs:111:32:111:42 | [post] &mut buffer [&ref] | provenance | MaD:22 | +| test.rs:111:22:111:25 | file | test.rs:111:32:111:42 | [post] &mut buffer [&ref] | provenance | MaD:23 | | test.rs:111:32:111:42 | [post] &mut buffer [&ref] | test.rs:111:37:111:42 | [post] buffer | provenance | | | test.rs:111:37:111:42 | [post] buffer | test.rs:112:15:112:20 | buffer | provenance | | | test.rs:112:15:112:20 | buffer | test.rs:112:14:112:20 | &buffer | provenance | | -| test.rs:117:22:117:25 | file | test.rs:117:39:117:49 | [post] &mut buffer [&ref] | provenance | MaD:24 | +| test.rs:117:22:117:25 | file | test.rs:117:39:117:49 | [post] &mut buffer [&ref] | provenance | MaD:25 | | test.rs:117:39:117:49 | [post] &mut buffer [&ref] | test.rs:117:44:117:49 | [post] buffer | provenance | | | test.rs:117:44:117:49 | [post] buffer | test.rs:118:15:118:20 | buffer | provenance | | | test.rs:118:15:118:20 | buffer | test.rs:118:14:118:20 | &buffer | provenance | | -| test.rs:123:22:123:25 | file | test.rs:123:42:123:52 | [post] &mut buffer [&ref] | provenance | MaD:25 | +| test.rs:123:22:123:25 | file | test.rs:123:42:123:52 | [post] &mut buffer [&ref] | provenance | MaD:26 | | test.rs:123:42:123:52 | [post] &mut buffer [&ref] | test.rs:123:47:123:52 | [post] buffer | provenance | | | test.rs:123:47:123:52 | [post] buffer | test.rs:124:15:124:20 | buffer | provenance | | | test.rs:124:15:124:20 | buffer | test.rs:124:14:124:20 | &buffer | provenance | | -| test.rs:129:9:129:12 | file | test.rs:129:25:129:35 | [post] &mut buffer [&ref] | provenance | MaD:23 | +| test.rs:129:9:129:12 | file | test.rs:129:25:129:35 | [post] &mut buffer [&ref] | provenance | MaD:24 | | test.rs:129:25:129:35 | [post] &mut buffer [&ref] | test.rs:129:30:129:35 | [post] buffer | provenance | | | test.rs:129:30:129:35 | [post] buffer | test.rs:130:15:130:20 | buffer | provenance | | | test.rs:130:15:130:20 | buffer | test.rs:130:14:130:20 | &buffer | provenance | | -| test.rs:133:17:133:20 | file | test.rs:133:17:133:28 | file.bytes() | provenance | MaD:19 | +| test.rs:133:17:133:20 | file | test.rs:133:17:133:28 | file.bytes() | provenance | MaD:20 | | test.rs:133:17:133:28 | file.bytes() | test.rs:134:14:134:17 | byte | provenance | | | test.rs:140:13:140:18 | mut f1 | test.rs:142:22:142:23 | f1 | provenance | | -| test.rs:140:22:140:63 | ... .open(...) [Ok] | test.rs:140:22:140:72 | ... .unwrap() | provenance | MaD:36 | +| test.rs:140:22:140:63 | ... .open(...) [Ok] | test.rs:140:22:140:72 | ... .unwrap() | provenance | MaD:37 | | test.rs:140:22:140:72 | ... .unwrap() | test.rs:140:13:140:18 | mut f1 | provenance | | | test.rs:140:50:140:53 | open | test.rs:140:22:140:63 | ... .open(...) [Ok] | provenance | Src:MaD:6 | -| test.rs:142:22:142:23 | f1 | test.rs:142:30:142:40 | [post] &mut buffer [&ref] | provenance | MaD:22 | +| test.rs:142:22:142:23 | f1 | test.rs:142:30:142:40 | [post] &mut buffer [&ref] | provenance | MaD:23 | | test.rs:142:30:142:40 | [post] &mut buffer [&ref] | test.rs:142:35:142:40 | [post] buffer | provenance | | | test.rs:142:35:142:40 | [post] buffer | test.rs:143:15:143:20 | buffer | provenance | | | test.rs:143:15:143:20 | buffer | test.rs:143:14:143:20 | &buffer | provenance | | | test.rs:147:13:147:18 | mut f2 | test.rs:149:22:149:23 | f2 | provenance | | -| test.rs:147:22:147:80 | ... .open(...) [Ok] | test.rs:147:22:147:89 | ... .unwrap() | provenance | MaD:36 | +| test.rs:147:22:147:80 | ... .open(...) [Ok] | test.rs:147:22:147:89 | ... .unwrap() | provenance | MaD:37 | | test.rs:147:22:147:89 | ... .unwrap() | test.rs:147:13:147:18 | mut f2 | provenance | | | test.rs:147:67:147:70 | open | test.rs:147:22:147:80 | ... .open(...) [Ok] | provenance | Src:MaD:6 | -| test.rs:149:22:149:23 | f2 | test.rs:149:30:149:40 | [post] &mut buffer [&ref] | provenance | MaD:22 | +| test.rs:149:22:149:23 | f2 | test.rs:149:30:149:40 | [post] &mut buffer [&ref] | provenance | MaD:23 | | test.rs:149:30:149:40 | [post] &mut buffer [&ref] | test.rs:149:35:149:40 | [post] buffer | provenance | | | test.rs:149:35:149:40 | [post] buffer | test.rs:150:15:150:20 | buffer | provenance | | | test.rs:150:15:150:20 | buffer | test.rs:150:14:150:20 | &buffer | provenance | | | test.rs:154:13:154:18 | mut f3 | test.rs:156:22:156:23 | f3 | provenance | | -| test.rs:154:22:154:114 | ... .open(...) [Ok] | test.rs:154:22:154:123 | ... .unwrap() | provenance | MaD:36 | +| test.rs:154:22:154:114 | ... .open(...) [Ok] | test.rs:154:22:154:123 | ... .unwrap() | provenance | MaD:37 | | test.rs:154:22:154:123 | ... .unwrap() | test.rs:154:13:154:18 | mut f3 | provenance | | | test.rs:154:101:154:104 | open | test.rs:154:22:154:114 | ... .open(...) [Ok] | provenance | Src:MaD:6 | -| test.rs:156:22:156:23 | f3 | test.rs:156:30:156:40 | [post] &mut buffer [&ref] | provenance | MaD:22 | +| test.rs:156:22:156:23 | f3 | test.rs:156:30:156:40 | [post] &mut buffer [&ref] | provenance | MaD:23 | | test.rs:156:30:156:40 | [post] &mut buffer [&ref] | test.rs:156:35:156:40 | [post] buffer | provenance | | | test.rs:156:35:156:40 | [post] buffer | test.rs:157:15:157:20 | buffer | provenance | | | test.rs:157:15:157:20 | buffer | test.rs:157:14:157:20 | &buffer | provenance | | @@ -155,10 +155,10 @@ edges | test.rs:165:21:165:59 | ...::open(...) [Ok] | test.rs:165:21:165:60 | TryExpr | provenance | | | test.rs:165:21:165:60 | TryExpr | test.rs:165:13:165:17 | file2 | provenance | | | test.rs:166:13:166:22 | mut reader | test.rs:167:9:167:14 | reader | provenance | | -| test.rs:166:26:166:30 | file1 | test.rs:166:26:166:43 | file1.chain(...) | provenance | MaD:21 | +| test.rs:166:26:166:30 | file1 | test.rs:166:26:166:43 | file1.chain(...) | provenance | MaD:22 | | test.rs:166:26:166:43 | file1.chain(...) | test.rs:166:13:166:22 | mut reader | provenance | | -| test.rs:166:38:166:42 | file2 | test.rs:166:26:166:43 | file1.chain(...) | provenance | MaD:20 | -| test.rs:167:9:167:14 | reader | test.rs:167:31:167:41 | [post] &mut buffer [&ref] | provenance | MaD:25 | +| test.rs:166:38:166:42 | file2 | test.rs:166:26:166:43 | file1.chain(...) | provenance | MaD:21 | +| test.rs:167:9:167:14 | reader | test.rs:167:31:167:41 | [post] &mut buffer [&ref] | provenance | MaD:26 | | test.rs:167:31:167:41 | [post] &mut buffer [&ref] | test.rs:167:36:167:41 | [post] buffer | provenance | | | test.rs:167:36:167:41 | [post] buffer | test.rs:168:15:168:20 | buffer | provenance | | | test.rs:168:15:168:20 | buffer | test.rs:168:14:168:20 | &buffer | provenance | | @@ -167,9 +167,9 @@ edges | test.rs:173:21:173:51 | ...::open(...) [Ok] | test.rs:173:21:173:52 | TryExpr | provenance | | | test.rs:173:21:173:52 | TryExpr | test.rs:173:13:173:17 | file1 | provenance | | | test.rs:174:13:174:22 | mut reader | test.rs:175:9:175:14 | reader | provenance | | -| test.rs:174:26:174:30 | file1 | test.rs:174:26:174:40 | file1.take(...) | provenance | MaD:26 | +| test.rs:174:26:174:30 | file1 | test.rs:174:26:174:40 | file1.take(...) | provenance | MaD:27 | | test.rs:174:26:174:40 | file1.take(...) | test.rs:174:13:174:22 | mut reader | provenance | | -| test.rs:175:9:175:14 | reader | test.rs:175:31:175:41 | [post] &mut buffer [&ref] | provenance | MaD:25 | +| test.rs:175:9:175:14 | reader | test.rs:175:31:175:41 | [post] &mut buffer [&ref] | provenance | MaD:26 | | test.rs:175:31:175:41 | [post] &mut buffer [&ref] | test.rs:175:36:175:41 | [post] buffer | provenance | | | test.rs:175:36:175:41 | [post] buffer | test.rs:176:15:176:20 | buffer | provenance | | | test.rs:176:15:176:20 | buffer | test.rs:176:14:176:20 | &buffer | provenance | | @@ -186,43 +186,43 @@ edges | test.rs:185:20:185:52 | ...::open(...) [future, Ok] | test.rs:185:20:185:58 | await ... [Ok] | provenance | | | test.rs:185:20:185:58 | await ... [Ok] | test.rs:185:20:185:59 | TryExpr | provenance | | | test.rs:185:20:185:59 | TryExpr | test.rs:185:9:185:16 | mut file | provenance | | -| test.rs:189:22:189:25 | file | test.rs:189:32:189:42 | [post] &mut buffer [&ref] | provenance | MaD:27 | +| test.rs:189:22:189:25 | file | test.rs:189:32:189:42 | [post] &mut buffer [&ref] | provenance | MaD:28 | | test.rs:189:32:189:42 | [post] &mut buffer [&ref] | test.rs:189:37:189:42 | [post] buffer | provenance | | | test.rs:189:37:189:42 | [post] buffer | test.rs:190:15:190:20 | buffer | provenance | | | test.rs:190:15:190:20 | buffer | test.rs:190:14:190:20 | &buffer | provenance | | -| test.rs:195:22:195:25 | file | test.rs:195:39:195:49 | [post] &mut buffer [&ref] | provenance | MaD:33 | +| test.rs:195:22:195:25 | file | test.rs:195:39:195:49 | [post] &mut buffer [&ref] | provenance | MaD:34 | | test.rs:195:39:195:49 | [post] &mut buffer [&ref] | test.rs:195:44:195:49 | [post] buffer | provenance | | | test.rs:195:44:195:49 | [post] buffer | test.rs:196:15:196:20 | buffer | provenance | | | test.rs:196:15:196:20 | buffer | test.rs:196:14:196:20 | &buffer | provenance | | -| test.rs:201:22:201:25 | file | test.rs:201:42:201:52 | [post] &mut buffer [&ref] | provenance | MaD:34 | +| test.rs:201:22:201:25 | file | test.rs:201:42:201:52 | [post] &mut buffer [&ref] | provenance | MaD:35 | | test.rs:201:42:201:52 | [post] &mut buffer [&ref] | test.rs:201:47:201:52 | [post] buffer | provenance | | | test.rs:201:47:201:52 | [post] buffer | test.rs:202:15:202:20 | buffer | provenance | | | test.rs:202:15:202:20 | buffer | test.rs:202:14:202:20 | &buffer | provenance | | -| test.rs:207:9:207:12 | file | test.rs:207:25:207:35 | [post] &mut buffer [&ref] | provenance | MaD:29 | +| test.rs:207:9:207:12 | file | test.rs:207:25:207:35 | [post] &mut buffer [&ref] | provenance | MaD:30 | | test.rs:207:25:207:35 | [post] &mut buffer [&ref] | test.rs:207:30:207:35 | [post] buffer | provenance | | | test.rs:207:30:207:35 | [post] buffer | test.rs:208:15:208:20 | buffer | provenance | | | test.rs:208:15:208:20 | buffer | test.rs:208:14:208:20 | &buffer | provenance | | | test.rs:212:13:212:14 | v1 | test.rs:216:14:216:15 | v1 | provenance | | -| test.rs:212:18:212:21 | file | test.rs:212:18:212:31 | file.read_u8() [future, Ok] | provenance | MaD:35 | +| test.rs:212:18:212:21 | file | test.rs:212:18:212:31 | file.read_u8() [future, Ok] | provenance | MaD:36 | | test.rs:212:18:212:31 | file.read_u8() [future, Ok] | test.rs:212:18:212:37 | await ... [Ok] | provenance | | | test.rs:212:18:212:37 | await ... [Ok] | test.rs:212:18:212:38 | TryExpr | provenance | | | test.rs:212:18:212:38 | TryExpr | test.rs:212:13:212:14 | v1 | provenance | | | test.rs:213:13:213:14 | v2 | test.rs:217:14:217:15 | v2 | provenance | | -| test.rs:213:18:213:21 | file | test.rs:213:18:213:32 | file.read_i16() [future, Ok] | provenance | MaD:31 | +| test.rs:213:18:213:21 | file | test.rs:213:18:213:32 | file.read_i16() [future, Ok] | provenance | MaD:32 | | test.rs:213:18:213:32 | file.read_i16() [future, Ok] | test.rs:213:18:213:38 | await ... [Ok] | provenance | | | test.rs:213:18:213:38 | await ... [Ok] | test.rs:213:18:213:39 | TryExpr | provenance | | | test.rs:213:18:213:39 | TryExpr | test.rs:213:13:213:14 | v2 | provenance | | | test.rs:214:13:214:14 | v3 | test.rs:218:14:218:15 | v3 | provenance | | -| test.rs:214:18:214:21 | file | test.rs:214:18:214:32 | file.read_f32() [future, Ok] | provenance | MaD:30 | +| test.rs:214:18:214:21 | file | test.rs:214:18:214:32 | file.read_f32() [future, Ok] | provenance | MaD:31 | | test.rs:214:18:214:32 | file.read_f32() [future, Ok] | test.rs:214:18:214:38 | await ... [Ok] | provenance | | | test.rs:214:18:214:38 | await ... [Ok] | test.rs:214:18:214:39 | TryExpr | provenance | | | test.rs:214:18:214:39 | TryExpr | test.rs:214:13:214:14 | v3 | provenance | | | test.rs:215:13:215:14 | v4 | test.rs:219:14:219:15 | v4 | provenance | | -| test.rs:215:18:215:21 | file | test.rs:215:18:215:35 | file.read_i64_le() [future, Ok] | provenance | MaD:32 | +| test.rs:215:18:215:21 | file | test.rs:215:18:215:35 | file.read_i64_le() [future, Ok] | provenance | MaD:33 | | test.rs:215:18:215:35 | file.read_i64_le() [future, Ok] | test.rs:215:18:215:41 | await ... [Ok] | provenance | | | test.rs:215:18:215:41 | await ... [Ok] | test.rs:215:18:215:42 | TryExpr | provenance | | | test.rs:215:18:215:42 | TryExpr | test.rs:215:13:215:14 | v4 | provenance | | -| test.rs:224:9:224:12 | file | test.rs:224:23:224:33 | [post] &mut buffer [&ref] | provenance | MaD:28 | +| test.rs:224:9:224:12 | file | test.rs:224:23:224:33 | [post] &mut buffer [&ref] | provenance | MaD:29 | | test.rs:224:23:224:33 | [post] &mut buffer [&ref] | test.rs:224:28:224:33 | [post] buffer | provenance | | | test.rs:224:28:224:33 | [post] buffer | test.rs:225:15:225:20 | buffer | provenance | | | test.rs:225:15:225:20 | buffer | test.rs:225:14:225:20 | &buffer | provenance | | @@ -231,7 +231,7 @@ edges | test.rs:231:22:231:71 | await ... [Ok] | test.rs:231:22:231:72 | TryExpr | provenance | | | test.rs:231:22:231:72 | TryExpr | test.rs:231:13:231:18 | mut f1 | provenance | | | test.rs:231:52:231:55 | open | test.rs:231:22:231:65 | ... .open(...) [future, Ok] | provenance | Src:MaD:8 | -| test.rs:233:22:233:23 | f1 | test.rs:233:30:233:40 | [post] &mut buffer [&ref] | provenance | MaD:27 | +| test.rs:233:22:233:23 | f1 | test.rs:233:30:233:40 | [post] &mut buffer [&ref] | provenance | MaD:28 | | test.rs:233:30:233:40 | [post] &mut buffer [&ref] | test.rs:233:35:233:40 | [post] buffer | provenance | | | test.rs:233:35:233:40 | [post] buffer | test.rs:234:15:234:20 | buffer | provenance | | | test.rs:234:15:234:20 | buffer | test.rs:234:14:234:20 | &buffer | provenance | | diff --git a/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected index a5a4846284e..d9f811bd341 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected @@ -7,33 +7,33 @@ models | 6 | Source: ::connect; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | | 7 | Source: reqwest::blocking::get; ReturnValue.Field[core::result::Result::Ok(0)]; remote | | 8 | Source: reqwest::get; ReturnValue.Future.Field[core::result::Result::Ok(0)]; remote | -| 9 | Summary: <_ as core::ops::index::Index>::index; Argument[self].Reference.Element; ReturnValue.Reference; value | -| 10 | Summary: <_ as futures_io::if_std::AsyncBufRead>::poll_fill_buf; Argument[self].Reference; ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Ok(0)]; taint | -| 11 | Summary: <_ as futures_io::if_std::AsyncRead>::poll_read; Argument[self].Reference; Argument[1].Reference; taint | -| 12 | Summary: <_ as futures_util::io::AsyncBufReadExt>::fill_buf; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 13 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self].Reference; Argument[0].Reference; taint | -| 14 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self].Reference; Argument[1].Reference; taint | -| 15 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | -| 16 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | -| 17 | Summary: <_ as std::io::BufRead>::read_line; Argument[self].Reference; Argument[0].Reference; taint | -| 18 | Summary: <_ as std::io::Read>::read; Argument[self].Reference; Argument[0].Reference; taint | -| 19 | Summary: <_ as std::io::Read>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | -| 20 | Summary: <_ as std::io::Read>::read_to_string; Argument[self].Reference; Argument[0].Reference; taint | -| 21 | Summary: <_ as std::io::Read>::take; Argument[self]; ReturnValue; taint | -| 22 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | -| 23 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 24 | Summary: ::new; Argument[0].Reference; ReturnValue; value | -| 25 | Summary: ::new; Argument[0]; ReturnValue.Field[core::pin::Pin::pointer]; value | -| 26 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 27 | Summary: ::connect; Argument[1]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 28 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 29 | Summary: ::bytes; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 30 | Summary: ::chunk; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | -| 31 | Summary: ::text; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 32 | Summary: ::bytes; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 33 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 34 | Summary: ::text_with_charset; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 35 | Summary: ::reader; Argument[self]; ReturnValue; taint | +| 9 | Summary: <_ as core::ops::deref::Deref>::deref; Argument[self].Reference; ReturnValue.Reference; taint | +| 10 | Summary: <_ as core::ops::index::Index>::index; Argument[self].Reference.Element; ReturnValue.Reference; value | +| 11 | Summary: <_ as futures_io::if_std::AsyncBufRead>::poll_fill_buf; Argument[self].Reference; ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Ok(0)]; taint | +| 12 | Summary: <_ as futures_io::if_std::AsyncRead>::poll_read; Argument[self].Reference; Argument[1].Reference; taint | +| 13 | Summary: <_ as futures_util::io::AsyncBufReadExt>::fill_buf; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 14 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_line; Argument[self].Reference; Argument[0].Reference; taint | +| 15 | Summary: <_ as futures_util::io::AsyncBufReadExt>::read_until; Argument[self].Reference; Argument[1].Reference; taint | +| 16 | Summary: <_ as futures_util::io::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | +| 17 | Summary: <_ as futures_util::io::AsyncReadExt>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | +| 18 | Summary: <_ as std::io::BufRead>::read_line; Argument[self].Reference; Argument[0].Reference; taint | +| 19 | Summary: <_ as std::io::Read>::read; Argument[self].Reference; Argument[0].Reference; taint | +| 20 | Summary: <_ as std::io::Read>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | +| 21 | Summary: <_ as std::io::Read>::read_to_string; Argument[self].Reference; Argument[0].Reference; taint | +| 22 | Summary: <_ as std::io::Read>::take; Argument[self]; ReturnValue; taint | +| 23 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | +| 24 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 25 | Summary: ::new; Argument[0].Reference; ReturnValue; value | +| 26 | Summary: ::new; Argument[0]; ReturnValue.Field[core::pin::Pin::pointer]; value | +| 27 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 28 | Summary: ::connect; Argument[1]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 29 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 30 | Summary: ::bytes; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 31 | Summary: ::chunk; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | +| 32 | Summary: ::text; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 33 | Summary: ::bytes; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 34 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 35 | Summary: ::text_with_charset; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | | 36 | Summary: ::new; Argument[0]; ReturnValue; taint | | 37 | Summary: ::peek; Argument[self].Reference; Argument[0].Reference; taint | | 38 | Summary: ::try_read; Argument[self].Reference; Argument[0].Reference; taint | @@ -42,32 +42,32 @@ edges | test.rs:11:9:11:22 | remote_string1 | test.rs:12:10:12:23 | remote_string1 | provenance | | | test.rs:11:26:11:47 | ...::get | test.rs:11:26:11:62 | ...::get(...) [Ok] | provenance | Src:MaD:7 | | test.rs:11:26:11:62 | ...::get(...) [Ok] | test.rs:11:26:11:63 | TryExpr | provenance | | -| test.rs:11:26:11:63 | TryExpr | test.rs:11:26:11:70 | ... .text() [Ok] | provenance | MaD:33 | +| test.rs:11:26:11:63 | TryExpr | test.rs:11:26:11:70 | ... .text() [Ok] | provenance | MaD:34 | | test.rs:11:26:11:70 | ... .text() [Ok] | test.rs:11:26:11:71 | TryExpr | provenance | | | test.rs:11:26:11:71 | TryExpr | test.rs:11:9:11:22 | remote_string1 | provenance | | | test.rs:14:9:14:22 | remote_string2 | test.rs:15:10:15:23 | remote_string2 | provenance | | | test.rs:14:26:14:47 | ...::get | test.rs:14:26:14:62 | ...::get(...) [Ok] | provenance | Src:MaD:7 | -| test.rs:14:26:14:62 | ...::get(...) [Ok] | test.rs:14:26:14:71 | ... .unwrap() | provenance | MaD:26 | -| test.rs:14:26:14:71 | ... .unwrap() | test.rs:14:26:14:78 | ... .text() [Ok] | provenance | MaD:33 | -| test.rs:14:26:14:78 | ... .text() [Ok] | test.rs:14:26:14:87 | ... .unwrap() | provenance | MaD:26 | +| test.rs:14:26:14:62 | ...::get(...) [Ok] | test.rs:14:26:14:71 | ... .unwrap() | provenance | MaD:27 | +| test.rs:14:26:14:71 | ... .unwrap() | test.rs:14:26:14:78 | ... .text() [Ok] | provenance | MaD:34 | +| test.rs:14:26:14:78 | ... .text() [Ok] | test.rs:14:26:14:87 | ... .unwrap() | provenance | MaD:27 | | test.rs:14:26:14:87 | ... .unwrap() | test.rs:14:9:14:22 | remote_string2 | provenance | | | test.rs:17:9:17:22 | remote_string3 | test.rs:18:10:18:23 | remote_string3 | provenance | | | test.rs:17:26:17:47 | ...::get | test.rs:17:26:17:62 | ...::get(...) [Ok] | provenance | Src:MaD:7 | -| test.rs:17:26:17:62 | ...::get(...) [Ok] | test.rs:17:26:17:71 | ... .unwrap() | provenance | MaD:26 | -| test.rs:17:26:17:71 | ... .unwrap() | test.rs:17:26:17:98 | ... .text_with_charset(...) [Ok] | provenance | MaD:34 | -| test.rs:17:26:17:98 | ... .text_with_charset(...) [Ok] | test.rs:17:26:17:107 | ... .unwrap() | provenance | MaD:26 | +| test.rs:17:26:17:62 | ...::get(...) [Ok] | test.rs:17:26:17:71 | ... .unwrap() | provenance | MaD:27 | +| test.rs:17:26:17:71 | ... .unwrap() | test.rs:17:26:17:98 | ... .text_with_charset(...) [Ok] | provenance | MaD:35 | +| test.rs:17:26:17:98 | ... .text_with_charset(...) [Ok] | test.rs:17:26:17:107 | ... .unwrap() | provenance | MaD:27 | | test.rs:17:26:17:107 | ... .unwrap() | test.rs:17:9:17:22 | remote_string3 | provenance | | | test.rs:20:9:20:22 | remote_string4 | test.rs:21:10:21:23 | remote_string4 | provenance | | | test.rs:20:26:20:47 | ...::get | test.rs:20:26:20:62 | ...::get(...) [Ok] | provenance | Src:MaD:7 | -| test.rs:20:26:20:62 | ...::get(...) [Ok] | test.rs:20:26:20:71 | ... .unwrap() | provenance | MaD:26 | -| test.rs:20:26:20:71 | ... .unwrap() | test.rs:20:26:20:79 | ... .bytes() [Ok] | provenance | MaD:32 | -| test.rs:20:26:20:79 | ... .bytes() [Ok] | test.rs:20:26:20:88 | ... .unwrap() | provenance | MaD:26 | +| test.rs:20:26:20:62 | ...::get(...) [Ok] | test.rs:20:26:20:71 | ... .unwrap() | provenance | MaD:27 | +| test.rs:20:26:20:71 | ... .unwrap() | test.rs:20:26:20:79 | ... .bytes() [Ok] | provenance | MaD:33 | +| test.rs:20:26:20:79 | ... .bytes() [Ok] | test.rs:20:26:20:88 | ... .unwrap() | provenance | MaD:27 | | test.rs:20:26:20:88 | ... .unwrap() | test.rs:20:9:20:22 | remote_string4 | provenance | | | test.rs:23:9:23:22 | remote_string5 | test.rs:24:10:24:23 | remote_string5 | provenance | | | test.rs:23:26:23:37 | ...::get | test.rs:23:26:23:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:8 | | test.rs:23:26:23:52 | ...::get(...) [future, Ok] | test.rs:23:26:23:58 | await ... [Ok] | provenance | | | test.rs:23:26:23:58 | await ... [Ok] | test.rs:23:26:23:59 | TryExpr | provenance | | -| test.rs:23:26:23:59 | TryExpr | test.rs:23:26:23:66 | ... .text() [future, Ok] | provenance | MaD:31 | +| test.rs:23:26:23:59 | TryExpr | test.rs:23:26:23:66 | ... .text() [future, Ok] | provenance | MaD:32 | | test.rs:23:26:23:66 | ... .text() [future, Ok] | test.rs:23:26:23:72 | await ... [Ok] | provenance | | | test.rs:23:26:23:72 | await ... [Ok] | test.rs:23:26:23:73 | TryExpr | provenance | | | test.rs:23:26:23:73 | TryExpr | test.rs:23:9:23:22 | remote_string5 | provenance | | @@ -75,7 +75,7 @@ edges | test.rs:26:26:26:37 | ...::get | test.rs:26:26:26:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:8 | | test.rs:26:26:26:52 | ...::get(...) [future, Ok] | test.rs:26:26:26:58 | await ... [Ok] | provenance | | | test.rs:26:26:26:58 | await ... [Ok] | test.rs:26:26:26:59 | TryExpr | provenance | | -| test.rs:26:26:26:59 | TryExpr | test.rs:26:26:26:67 | ... .bytes() [future, Ok] | provenance | MaD:29 | +| test.rs:26:26:26:59 | TryExpr | test.rs:26:26:26:67 | ... .bytes() [future, Ok] | provenance | MaD:30 | | test.rs:26:26:26:67 | ... .bytes() [future, Ok] | test.rs:26:26:26:73 | await ... [Ok] | provenance | | | test.rs:26:26:26:73 | await ... [Ok] | test.rs:26:26:26:74 | TryExpr | provenance | | | test.rs:26:26:26:74 | TryExpr | test.rs:26:9:26:22 | remote_string6 | provenance | | @@ -85,13 +85,13 @@ edges | test.rs:29:24:29:50 | ...::get(...) [future, Ok] | test.rs:29:24:29:56 | await ... [Ok] | provenance | | | test.rs:29:24:29:56 | await ... [Ok] | test.rs:29:24:29:57 | TryExpr | provenance | | | test.rs:29:24:29:57 | TryExpr | test.rs:29:9:29:20 | mut request1 | provenance | | -| test.rs:30:10:30:17 | request1 | test.rs:30:10:30:25 | request1.chunk() [future, Ok, Some] | provenance | MaD:30 | +| test.rs:30:10:30:17 | request1 | test.rs:30:10:30:25 | request1.chunk() [future, Ok, Some] | provenance | MaD:31 | | test.rs:30:10:30:25 | request1.chunk() [future, Ok, Some] | test.rs:30:10:30:31 | await ... [Ok, Some] | provenance | | | test.rs:30:10:30:31 | await ... [Ok, Some] | test.rs:30:10:30:32 | TryExpr [Some] | provenance | | -| test.rs:30:10:30:32 | TryExpr [Some] | test.rs:30:10:30:41 | ... .unwrap() | provenance | MaD:23 | +| test.rs:30:10:30:32 | TryExpr [Some] | test.rs:30:10:30:41 | ... .unwrap() | provenance | MaD:24 | | test.rs:31:15:31:25 | Some(...) [Some] | test.rs:31:20:31:24 | chunk | provenance | | | test.rs:31:20:31:24 | chunk | test.rs:32:14:32:18 | chunk | provenance | | -| test.rs:31:29:31:36 | request1 | test.rs:31:29:31:44 | request1.chunk() [future, Ok, Some] | provenance | MaD:30 | +| test.rs:31:29:31:36 | request1 | test.rs:31:29:31:44 | request1.chunk() [future, Ok, Some] | provenance | MaD:31 | | test.rs:31:29:31:44 | request1.chunk() [future, Ok, Some] | test.rs:31:29:31:50 | await ... [Ok, Some] | provenance | | | test.rs:31:29:31:50 | await ... [Ok, Some] | test.rs:31:29:31:51 | TryExpr [Some] | provenance | | | test.rs:31:29:31:51 | TryExpr [Some] | test.rs:31:15:31:25 | Some(...) [Some] | provenance | | @@ -112,21 +112,21 @@ edges | test.rs:155:26:155:53 | ...::connect | test.rs:155:26:155:62 | ...::connect(...) [Ok] | provenance | Src:MaD:4 | | test.rs:155:26:155:62 | ...::connect(...) [Ok] | test.rs:155:26:155:63 | TryExpr | provenance | | | test.rs:155:26:155:63 | TryExpr | test.rs:155:13:155:22 | mut stream | provenance | | -| test.rs:162:17:162:22 | stream | test.rs:162:29:162:39 | [post] &mut buffer [&ref] | provenance | MaD:18 | +| test.rs:162:17:162:22 | stream | test.rs:162:29:162:39 | [post] &mut buffer [&ref] | provenance | MaD:19 | | test.rs:162:29:162:39 | [post] &mut buffer [&ref] | test.rs:162:34:162:39 | [post] buffer | provenance | | | test.rs:162:34:162:39 | [post] buffer | test.rs:165:15:165:20 | buffer | provenance | | | test.rs:162:34:162:39 | [post] buffer | test.rs:166:14:166:19 | buffer | provenance | | | test.rs:165:15:165:20 | buffer | test.rs:165:14:165:20 | &buffer | provenance | | -| test.rs:166:14:166:19 | buffer | test.rs:166:14:166:22 | buffer[0] | provenance | MaD:9 | +| test.rs:166:14:166:19 | buffer | test.rs:166:14:166:22 | buffer[0] | provenance | MaD:10 | | test.rs:174:13:174:22 | mut stream | test.rs:182:58:182:63 | stream | provenance | | | test.rs:174:26:174:61 | ...::connect_timeout | test.rs:174:26:174:105 | ...::connect_timeout(...) [Ok] | provenance | Src:MaD:5 | | test.rs:174:26:174:105 | ...::connect_timeout(...) [Ok] | test.rs:174:26:174:106 | TryExpr | provenance | | | test.rs:174:26:174:106 | TryExpr | test.rs:174:13:174:22 | mut stream | provenance | | | test.rs:182:21:182:30 | mut reader | test.rs:185:27:185:32 | reader | provenance | | -| test.rs:182:34:182:64 | ...::new(...) | test.rs:182:34:182:74 | ... .take(...) | provenance | MaD:21 | +| test.rs:182:34:182:64 | ...::new(...) | test.rs:182:34:182:74 | ... .take(...) | provenance | MaD:22 | | test.rs:182:34:182:74 | ... .take(...) | test.rs:182:21:182:30 | mut reader | provenance | | | test.rs:182:58:182:63 | stream | test.rs:182:34:182:64 | ...::new(...) | provenance | MaD:36 | -| test.rs:185:27:185:32 | reader | test.rs:185:44:185:52 | [post] &mut line [&ref] | provenance | MaD:17 | +| test.rs:185:27:185:32 | reader | test.rs:185:44:185:52 | [post] &mut line [&ref] | provenance | MaD:18 | | test.rs:185:44:185:52 | [post] &mut line [&ref] | test.rs:185:49:185:52 | [post] line | provenance | | | test.rs:185:49:185:52 | [post] line | test.rs:192:35:192:38 | line | provenance | | | test.rs:192:35:192:38 | line | test.rs:192:34:192:38 | &line | provenance | | @@ -142,14 +142,14 @@ edges | test.rs:232:35:232:46 | [post] &mut buffer1 [&ref] | test.rs:232:40:232:46 | [post] buffer1 | provenance | | | test.rs:232:40:232:46 | [post] buffer1 | test.rs:239:15:239:21 | buffer1 | provenance | | | test.rs:232:40:232:46 | [post] buffer1 | test.rs:240:14:240:20 | buffer1 | provenance | | -| test.rs:236:18:236:29 | tokio_stream | test.rs:236:36:236:47 | [post] &mut buffer2 [&ref] | provenance | MaD:22 | +| test.rs:236:18:236:29 | tokio_stream | test.rs:236:36:236:47 | [post] &mut buffer2 [&ref] | provenance | MaD:23 | | test.rs:236:36:236:47 | [post] &mut buffer2 [&ref] | test.rs:236:41:236:47 | [post] buffer2 | provenance | | | test.rs:236:41:236:47 | [post] buffer2 | test.rs:243:15:243:21 | buffer2 | provenance | | | test.rs:236:41:236:47 | [post] buffer2 | test.rs:244:14:244:20 | buffer2 | provenance | | | test.rs:239:15:239:21 | buffer1 | test.rs:239:14:239:21 | &buffer1 | provenance | | -| test.rs:240:14:240:20 | buffer1 | test.rs:240:14:240:23 | buffer1[0] | provenance | MaD:9 | +| test.rs:240:14:240:20 | buffer1 | test.rs:240:14:240:23 | buffer1[0] | provenance | MaD:10 | | test.rs:243:15:243:21 | buffer2 | test.rs:243:14:243:21 | &buffer2 | provenance | | -| test.rs:244:14:244:20 | buffer2 | test.rs:244:14:244:23 | buffer2[0] | provenance | MaD:9 | +| test.rs:244:14:244:20 | buffer2 | test.rs:244:14:244:23 | buffer2[0] | provenance | MaD:10 | | test.rs:252:19:252:30 | tokio_stream | test.rs:252:41:252:51 | [post] &mut buffer [&ref] | provenance | MaD:38 | | test.rs:252:41:252:51 | [post] &mut buffer [&ref] | test.rs:252:46:252:51 | [post] buffer | provenance | | | test.rs:252:46:252:51 | [post] buffer | test.rs:259:27:259:32 | buffer | provenance | | @@ -160,24 +160,24 @@ edges | test.rs:282:27:282:32 | buffer | test.rs:282:26:282:32 | &buffer | provenance | | | test.rs:332:9:332:18 | mut client | test.rs:333:22:333:27 | client | provenance | | | test.rs:332:22:332:50 | ...::new | test.rs:332:22:332:75 | ...::new(...) [Ok] | provenance | Src:MaD:3 | -| test.rs:332:22:332:75 | ...::new(...) [Ok] | test.rs:332:22:332:84 | ... .unwrap() | provenance | MaD:26 | +| test.rs:332:22:332:75 | ...::new(...) [Ok] | test.rs:332:22:332:84 | ... .unwrap() | provenance | MaD:27 | | test.rs:332:22:332:84 | ... .unwrap() | test.rs:332:9:332:18 | mut client | provenance | | | test.rs:333:9:333:18 | mut reader | test.rs:334:11:334:16 | reader | provenance | | | test.rs:333:9:333:18 | mut reader | test.rs:338:22:338:27 | reader | provenance | | | test.rs:333:9:333:18 | mut reader | test.rs:344:22:344:27 | reader | provenance | | | test.rs:333:9:333:18 | mut reader | test.rs:350:22:350:27 | reader | provenance | | -| test.rs:333:22:333:27 | client | test.rs:333:22:333:36 | client.reader() | provenance | MaD:35 | +| test.rs:333:22:333:27 | client | test.rs:333:22:333:36 | client.reader() | provenance | MaD:9 | | test.rs:333:22:333:36 | client.reader() | test.rs:333:9:333:18 | mut reader | provenance | | | test.rs:334:11:334:16 | reader | test.rs:334:10:334:16 | &reader | provenance | | -| test.rs:338:22:338:27 | reader | test.rs:338:34:338:44 | [post] &mut buffer [&ref] | provenance | MaD:18 | +| test.rs:338:22:338:27 | reader | test.rs:338:34:338:44 | [post] &mut buffer [&ref] | provenance | MaD:19 | | test.rs:338:34:338:44 | [post] &mut buffer [&ref] | test.rs:338:39:338:44 | [post] buffer | provenance | | | test.rs:338:39:338:44 | [post] buffer | test.rs:339:15:339:20 | buffer | provenance | | | test.rs:339:15:339:20 | buffer | test.rs:339:14:339:20 | &buffer | provenance | | -| test.rs:344:22:344:27 | reader | test.rs:344:41:344:51 | [post] &mut buffer [&ref] | provenance | MaD:19 | +| test.rs:344:22:344:27 | reader | test.rs:344:41:344:51 | [post] &mut buffer [&ref] | provenance | MaD:20 | | test.rs:344:41:344:51 | [post] &mut buffer [&ref] | test.rs:344:46:344:51 | [post] buffer | provenance | | | test.rs:344:46:344:51 | [post] buffer | test.rs:345:15:345:20 | buffer | provenance | | | test.rs:345:15:345:20 | buffer | test.rs:345:14:345:20 | &buffer | provenance | | -| test.rs:350:22:350:27 | reader | test.rs:350:44:350:54 | [post] &mut buffer [&ref] | provenance | MaD:20 | +| test.rs:350:22:350:27 | reader | test.rs:350:44:350:54 | [post] &mut buffer [&ref] | provenance | MaD:21 | | test.rs:350:44:350:54 | [post] &mut buffer [&ref] | test.rs:350:49:350:54 | [post] buffer | provenance | | | test.rs:350:49:350:54 | [post] buffer | test.rs:351:15:351:20 | buffer | provenance | | | test.rs:351:15:351:20 | buffer | test.rs:351:14:351:20 | &buffer | provenance | | @@ -196,38 +196,38 @@ edges | test.rs:380:26:380:60 | connector.connect(...) [future, Ok] | test.rs:380:26:380:66 | await ... [Ok] | provenance | | | test.rs:380:26:380:66 | await ... [Ok] | test.rs:380:26:380:67 | TryExpr | provenance | | | test.rs:380:26:380:67 | TryExpr | test.rs:380:13:380:22 | mut reader | provenance | | -| test.rs:380:57:380:59 | tcp | test.rs:380:26:380:60 | connector.connect(...) [future, Ok] | provenance | MaD:27 | +| test.rs:380:57:380:59 | tcp | test.rs:380:26:380:60 | connector.connect(...) [future, Ok] | provenance | MaD:28 | | test.rs:381:15:381:20 | reader | test.rs:381:14:381:20 | &reader | provenance | | | test.rs:386:17:386:26 | mut pinned | test.rs:387:19:387:24 | pinned | provenance | | | test.rs:386:17:386:26 | mut pinned | test.rs:389:30:389:35 | pinned | provenance | | | test.rs:386:17:386:26 | mut pinned [Pin, &ref] | test.rs:387:19:387:24 | pinned [Pin, &ref] | provenance | | | test.rs:386:30:386:50 | ...::new(...) | test.rs:386:17:386:26 | mut pinned | provenance | | | test.rs:386:30:386:50 | ...::new(...) [Pin, &ref] | test.rs:386:17:386:26 | mut pinned [Pin, &ref] | provenance | | -| test.rs:386:39:386:49 | &mut reader [&ref] | test.rs:386:30:386:50 | ...::new(...) | provenance | MaD:24 | -| test.rs:386:39:386:49 | &mut reader [&ref] | test.rs:386:30:386:50 | ...::new(...) [Pin, &ref] | provenance | MaD:25 | +| test.rs:386:39:386:49 | &mut reader [&ref] | test.rs:386:30:386:50 | ...::new(...) | provenance | MaD:25 | +| test.rs:386:39:386:49 | &mut reader [&ref] | test.rs:386:30:386:50 | ...::new(...) [Pin, &ref] | provenance | MaD:26 | | test.rs:386:44:386:49 | reader | test.rs:386:39:386:49 | &mut reader [&ref] | provenance | | | test.rs:387:19:387:24 | pinned | test.rs:387:18:387:24 | &pinned | provenance | | | test.rs:387:19:387:24 | pinned [Pin, &ref] | test.rs:387:18:387:24 | &pinned | provenance | | -| test.rs:389:30:389:35 | pinned | test.rs:389:56:389:66 | [post] &mut buffer [&ref] | provenance | MaD:11 | +| test.rs:389:30:389:35 | pinned | test.rs:389:56:389:66 | [post] &mut buffer [&ref] | provenance | MaD:12 | | test.rs:389:56:389:66 | [post] &mut buffer [&ref] | test.rs:389:61:389:66 | [post] buffer | provenance | | | test.rs:389:61:389:66 | [post] buffer | test.rs:391:23:391:28 | buffer | provenance | | | test.rs:389:61:389:66 | [post] buffer | test.rs:392:23:392:28 | buffer | provenance | | | test.rs:389:61:389:66 | [post] buffer | test.rs:392:23:392:33 | buffer[...] | provenance | | | test.rs:391:23:391:28 | buffer | test.rs:391:22:391:28 | &buffer | provenance | | -| test.rs:392:23:392:28 | buffer | test.rs:392:23:392:33 | buffer[...] | provenance | MaD:9 | +| test.rs:392:23:392:28 | buffer | test.rs:392:23:392:33 | buffer[...] | provenance | MaD:10 | | test.rs:392:23:392:33 | buffer[...] | test.rs:392:22:392:33 | &... | provenance | | -| test.rs:399:63:399:73 | &mut reader [&ref] | test.rs:399:76:399:87 | [post] &mut buffer1 [&ref] | provenance | MaD:15 | +| test.rs:399:63:399:73 | &mut reader [&ref] | test.rs:399:76:399:87 | [post] &mut buffer1 [&ref] | provenance | MaD:16 | | test.rs:399:68:399:73 | reader | test.rs:399:63:399:73 | &mut reader [&ref] | provenance | | | test.rs:399:76:399:87 | [post] &mut buffer1 [&ref] | test.rs:399:81:399:87 | [post] buffer1 | provenance | | | test.rs:399:81:399:87 | [post] buffer1 | test.rs:400:19:400:25 | buffer1 | provenance | | | test.rs:399:81:399:87 | [post] buffer1 | test.rs:400:19:400:40 | buffer1[...] | provenance | | -| test.rs:400:19:400:25 | buffer1 | test.rs:400:19:400:40 | buffer1[...] | provenance | MaD:9 | +| test.rs:400:19:400:25 | buffer1 | test.rs:400:19:400:40 | buffer1[...] | provenance | MaD:10 | | test.rs:400:19:400:40 | buffer1[...] | test.rs:400:18:400:40 | &... | provenance | | -| test.rs:403:31:403:36 | reader | test.rs:403:43:403:54 | [post] &mut buffer2 [&ref] | provenance | MaD:15 | +| test.rs:403:31:403:36 | reader | test.rs:403:43:403:54 | [post] &mut buffer2 [&ref] | provenance | MaD:16 | | test.rs:403:43:403:54 | [post] &mut buffer2 [&ref] | test.rs:403:48:403:54 | [post] buffer2 | provenance | | | test.rs:403:48:403:54 | [post] buffer2 | test.rs:405:19:405:25 | buffer2 | provenance | | | test.rs:403:48:403:54 | [post] buffer2 | test.rs:405:19:405:40 | buffer2[...] | provenance | | -| test.rs:405:19:405:25 | buffer2 | test.rs:405:19:405:40 | buffer2[...] | provenance | MaD:9 | +| test.rs:405:19:405:25 | buffer2 | test.rs:405:19:405:40 | buffer2[...] | provenance | MaD:10 | | test.rs:405:19:405:40 | buffer2[...] | test.rs:405:18:405:40 | &... | provenance | | | test.rs:408:13:408:23 | mut reader2 | test.rs:409:15:409:21 | reader2 | provenance | | | test.rs:408:13:408:23 | mut reader2 | test.rs:413:44:413:50 | reader2 | provenance | | @@ -242,30 +242,30 @@ edges | test.rs:408:13:408:23 | mut reader2 | test.rs:493:31:493:37 | reader2 | provenance | | | test.rs:408:13:408:23 | mut reader2 | test.rs:500:31:500:37 | reader2 | provenance | | | test.rs:408:27:408:61 | ...::new(...) | test.rs:408:13:408:23 | mut reader2 | provenance | | -| test.rs:408:55:408:60 | reader | test.rs:408:27:408:61 | ...::new(...) | provenance | MaD:28 | +| test.rs:408:55:408:60 | reader | test.rs:408:27:408:61 | ...::new(...) | provenance | MaD:29 | | test.rs:409:15:409:21 | reader2 | test.rs:409:14:409:21 | &reader2 | provenance | | | test.rs:413:17:413:26 | mut pinned | test.rs:414:19:414:24 | pinned | provenance | | | test.rs:413:17:413:26 | mut pinned | test.rs:416:26:416:31 | pinned | provenance | | | test.rs:413:17:413:26 | mut pinned [Pin, &ref] | test.rs:414:19:414:24 | pinned [Pin, &ref] | provenance | | | test.rs:413:30:413:51 | ...::new(...) | test.rs:413:17:413:26 | mut pinned | provenance | | | test.rs:413:30:413:51 | ...::new(...) [Pin, &ref] | test.rs:413:17:413:26 | mut pinned [Pin, &ref] | provenance | | -| test.rs:413:39:413:50 | &mut reader2 [&ref] | test.rs:413:30:413:51 | ...::new(...) | provenance | MaD:24 | -| test.rs:413:39:413:50 | &mut reader2 [&ref] | test.rs:413:30:413:51 | ...::new(...) [Pin, &ref] | provenance | MaD:25 | +| test.rs:413:39:413:50 | &mut reader2 [&ref] | test.rs:413:30:413:51 | ...::new(...) | provenance | MaD:25 | +| test.rs:413:39:413:50 | &mut reader2 [&ref] | test.rs:413:30:413:51 | ...::new(...) [Pin, &ref] | provenance | MaD:26 | | test.rs:413:44:413:50 | reader2 | test.rs:413:39:413:50 | &mut reader2 [&ref] | provenance | | | test.rs:414:19:414:24 | pinned | test.rs:414:18:414:24 | &pinned | provenance | | | test.rs:414:19:414:24 | pinned [Pin, &ref] | test.rs:414:18:414:24 | &pinned | provenance | | | test.rs:416:17:416:22 | buffer [Ready, Ok] | test.rs:417:20:417:39 | ...::Ready(...) [Ready, Ok] | provenance | | | test.rs:416:17:416:22 | buffer [Ready, Ok] | test.rs:418:23:418:28 | buffer [Ready, Ok] | provenance | | -| test.rs:416:26:416:31 | pinned | test.rs:416:26:416:54 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:10 | +| test.rs:416:26:416:31 | pinned | test.rs:416:26:416:54 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:11 | | test.rs:416:26:416:54 | pinned.poll_fill_buf(...) [Ready, Ok] | test.rs:416:17:416:22 | buffer [Ready, Ok] | provenance | | | test.rs:417:20:417:39 | ...::Ready(...) [Ready, Ok] | test.rs:417:32:417:38 | Ok(...) [Ok] | provenance | | | test.rs:417:32:417:38 | Ok(...) [Ok] | test.rs:417:35:417:37 | buf | provenance | | | test.rs:417:35:417:37 | buf | test.rs:419:22:419:24 | buf | provenance | | | test.rs:418:23:418:28 | buffer [Ready, Ok] | test.rs:418:22:418:28 | &buffer | provenance | | | test.rs:423:17:423:23 | buffer2 [Ready, Ok] | test.rs:424:20:424:26 | buffer2 [Ready, Ok] | provenance | | -| test.rs:423:27:423:48 | ...::new(...) | test.rs:423:27:423:71 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:10 | +| test.rs:423:27:423:48 | ...::new(...) | test.rs:423:27:423:71 | ... .poll_fill_buf(...) [Ready, Ok] | provenance | MaD:11 | | test.rs:423:27:423:71 | ... .poll_fill_buf(...) [Ready, Ok] | test.rs:423:17:423:23 | buffer2 [Ready, Ok] | provenance | | -| test.rs:423:36:423:47 | &mut reader2 [&ref] | test.rs:423:27:423:48 | ...::new(...) | provenance | MaD:24 | +| test.rs:423:36:423:47 | &mut reader2 [&ref] | test.rs:423:27:423:48 | ...::new(...) | provenance | MaD:25 | | test.rs:423:41:423:47 | reader2 | test.rs:423:36:423:47 | &mut reader2 [&ref] | provenance | | | test.rs:424:20:424:26 | buffer2 [Ready, Ok] | test.rs:425:17:425:36 | ...::Ready(...) [Ready, Ok] | provenance | | | test.rs:424:20:424:26 | buffer2 [Ready, Ok] | test.rs:426:27:426:33 | buffer2 [Ready, Ok] | provenance | | @@ -274,7 +274,7 @@ edges | test.rs:425:32:425:34 | buf | test.rs:427:26:427:28 | buf | provenance | | | test.rs:426:27:426:33 | buffer2 [Ready, Ok] | test.rs:426:26:426:33 | &buffer2 | provenance | | | test.rs:437:17:437:22 | buffer | test.rs:438:18:438:23 | buffer | provenance | | -| test.rs:437:26:437:32 | reader2 | test.rs:437:26:437:43 | reader2.fill_buf() [future, Ok] | provenance | MaD:12 | +| test.rs:437:26:437:32 | reader2 | test.rs:437:26:437:43 | reader2.fill_buf() [future, Ok] | provenance | MaD:13 | | test.rs:437:26:437:43 | reader2.fill_buf() [future, Ok] | test.rs:437:26:437:49 | await ... [Ok] | provenance | | | test.rs:437:26:437:49 | await ... [Ok] | test.rs:437:26:437:50 | TryExpr | provenance | | | test.rs:437:26:437:50 | TryExpr | test.rs:437:17:437:22 | buffer | provenance | | @@ -283,64 +283,64 @@ edges | test.rs:444:17:444:26 | mut pinned [Pin, &ref] | test.rs:445:19:445:24 | pinned [Pin, &ref] | provenance | | | test.rs:444:30:444:51 | ...::new(...) | test.rs:444:17:444:26 | mut pinned | provenance | | | test.rs:444:30:444:51 | ...::new(...) [Pin, &ref] | test.rs:444:17:444:26 | mut pinned [Pin, &ref] | provenance | | -| test.rs:444:39:444:50 | &mut reader2 [&ref] | test.rs:444:30:444:51 | ...::new(...) | provenance | MaD:24 | -| test.rs:444:39:444:50 | &mut reader2 [&ref] | test.rs:444:30:444:51 | ...::new(...) [Pin, &ref] | provenance | MaD:25 | +| test.rs:444:39:444:50 | &mut reader2 [&ref] | test.rs:444:30:444:51 | ...::new(...) | provenance | MaD:25 | +| test.rs:444:39:444:50 | &mut reader2 [&ref] | test.rs:444:30:444:51 | ...::new(...) [Pin, &ref] | provenance | MaD:26 | | test.rs:444:44:444:50 | reader2 | test.rs:444:39:444:50 | &mut reader2 [&ref] | provenance | | | test.rs:445:19:445:24 | pinned | test.rs:445:18:445:24 | &pinned | provenance | | | test.rs:445:19:445:24 | pinned [Pin, &ref] | test.rs:445:18:445:24 | &pinned | provenance | | -| test.rs:447:30:447:35 | pinned | test.rs:447:56:447:66 | [post] &mut buffer [&ref] | provenance | MaD:11 | +| test.rs:447:30:447:35 | pinned | test.rs:447:56:447:66 | [post] &mut buffer [&ref] | provenance | MaD:12 | | test.rs:447:56:447:66 | [post] &mut buffer [&ref] | test.rs:447:61:447:66 | [post] buffer | provenance | | | test.rs:447:61:447:66 | [post] buffer | test.rs:448:19:448:24 | buffer | provenance | | | test.rs:447:61:447:66 | [post] buffer | test.rs:450:23:450:28 | buffer | provenance | | | test.rs:447:61:447:66 | [post] buffer | test.rs:450:23:450:33 | buffer[...] | provenance | | | test.rs:448:19:448:24 | buffer | test.rs:448:18:448:24 | &buffer | provenance | | -| test.rs:450:23:450:28 | buffer | test.rs:450:23:450:33 | buffer[...] | provenance | MaD:9 | +| test.rs:450:23:450:28 | buffer | test.rs:450:23:450:33 | buffer[...] | provenance | MaD:10 | | test.rs:450:23:450:33 | buffer[...] | test.rs:450:22:450:33 | &... | provenance | | -| test.rs:457:63:457:74 | &mut reader2 [&ref] | test.rs:457:77:457:88 | [post] &mut buffer1 [&ref] | provenance | MaD:15 | +| test.rs:457:63:457:74 | &mut reader2 [&ref] | test.rs:457:77:457:88 | [post] &mut buffer1 [&ref] | provenance | MaD:16 | | test.rs:457:68:457:74 | reader2 | test.rs:457:63:457:74 | &mut reader2 [&ref] | provenance | | | test.rs:457:77:457:88 | [post] &mut buffer1 [&ref] | test.rs:457:82:457:88 | [post] buffer1 | provenance | | | test.rs:457:82:457:88 | [post] buffer1 | test.rs:458:19:458:25 | buffer1 | provenance | | | test.rs:457:82:457:88 | [post] buffer1 | test.rs:458:19:458:40 | buffer1[...] | provenance | | -| test.rs:458:19:458:25 | buffer1 | test.rs:458:19:458:40 | buffer1[...] | provenance | MaD:9 | +| test.rs:458:19:458:25 | buffer1 | test.rs:458:19:458:40 | buffer1[...] | provenance | MaD:10 | | test.rs:458:19:458:40 | buffer1[...] | test.rs:458:18:458:40 | &... | provenance | | -| test.rs:461:31:461:37 | reader2 | test.rs:461:44:461:55 | [post] &mut buffer2 [&ref] | provenance | MaD:15 | +| test.rs:461:31:461:37 | reader2 | test.rs:461:44:461:55 | [post] &mut buffer2 [&ref] | provenance | MaD:16 | | test.rs:461:44:461:55 | [post] &mut buffer2 [&ref] | test.rs:461:49:461:55 | [post] buffer2 | provenance | | | test.rs:461:49:461:55 | [post] buffer2 | test.rs:462:19:462:25 | buffer2 | provenance | | | test.rs:461:49:461:55 | [post] buffer2 | test.rs:462:19:462:40 | buffer2[...] | provenance | | -| test.rs:462:19:462:25 | buffer2 | test.rs:462:19:462:40 | buffer2[...] | provenance | MaD:9 | +| test.rs:462:19:462:25 | buffer2 | test.rs:462:19:462:40 | buffer2[...] | provenance | MaD:10 | | test.rs:462:19:462:40 | buffer2[...] | test.rs:462:18:462:40 | &... | provenance | | | test.rs:467:17:467:26 | mut pinned | test.rs:468:19:468:24 | pinned | provenance | | | test.rs:467:17:467:26 | mut pinned | test.rs:470:26:470:31 | pinned | provenance | | | test.rs:467:17:467:26 | mut pinned [Pin, &ref] | test.rs:468:19:468:24 | pinned [Pin, &ref] | provenance | | | test.rs:467:30:467:51 | ...::new(...) | test.rs:467:17:467:26 | mut pinned | provenance | | | test.rs:467:30:467:51 | ...::new(...) [Pin, &ref] | test.rs:467:17:467:26 | mut pinned [Pin, &ref] | provenance | | -| test.rs:467:39:467:50 | &mut reader2 [&ref] | test.rs:467:30:467:51 | ...::new(...) | provenance | MaD:24 | -| test.rs:467:39:467:50 | &mut reader2 [&ref] | test.rs:467:30:467:51 | ...::new(...) [Pin, &ref] | provenance | MaD:25 | +| test.rs:467:39:467:50 | &mut reader2 [&ref] | test.rs:467:30:467:51 | ...::new(...) | provenance | MaD:25 | +| test.rs:467:39:467:50 | &mut reader2 [&ref] | test.rs:467:30:467:51 | ...::new(...) [Pin, &ref] | provenance | MaD:26 | | test.rs:467:44:467:50 | reader2 | test.rs:467:39:467:50 | &mut reader2 [&ref] | provenance | | | test.rs:468:19:468:24 | pinned | test.rs:468:18:468:24 | &pinned | provenance | | | test.rs:468:19:468:24 | pinned [Pin, &ref] | test.rs:468:18:468:24 | &pinned | provenance | | | test.rs:470:17:470:22 | buffer [Ready, Ok] | test.rs:471:19:471:24 | buffer [Ready, Ok] | provenance | | | test.rs:470:17:470:22 | buffer [Ready, Ok] | test.rs:472:20:472:39 | ...::Ready(...) [Ready, Ok] | provenance | | -| test.rs:470:26:470:31 | pinned | test.rs:470:26:470:54 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:10 | +| test.rs:470:26:470:31 | pinned | test.rs:470:26:470:54 | pinned.poll_fill_buf(...) [Ready, Ok] | provenance | MaD:11 | | test.rs:470:26:470:54 | pinned.poll_fill_buf(...) [Ready, Ok] | test.rs:470:17:470:22 | buffer [Ready, Ok] | provenance | | | test.rs:471:19:471:24 | buffer [Ready, Ok] | test.rs:471:18:471:24 | &buffer | provenance | | | test.rs:472:20:472:39 | ...::Ready(...) [Ready, Ok] | test.rs:472:32:472:38 | Ok(...) [Ok] | provenance | | | test.rs:472:32:472:38 | Ok(...) [Ok] | test.rs:472:35:472:37 | buf | provenance | | | test.rs:472:35:472:37 | buf | test.rs:473:22:473:24 | buf | provenance | | | test.rs:479:17:479:22 | buffer | test.rs:480:18:480:23 | buffer | provenance | | -| test.rs:479:26:479:32 | reader2 | test.rs:479:26:479:43 | reader2.fill_buf() [future, Ok] | provenance | MaD:12 | +| test.rs:479:26:479:32 | reader2 | test.rs:479:26:479:43 | reader2.fill_buf() [future, Ok] | provenance | MaD:13 | | test.rs:479:26:479:43 | reader2.fill_buf() [future, Ok] | test.rs:479:26:479:49 | await ... [Ok] | provenance | | | test.rs:479:26:479:49 | await ... [Ok] | test.rs:479:26:479:50 | TryExpr | provenance | | | test.rs:479:26:479:50 | TryExpr | test.rs:479:17:479:22 | buffer | provenance | | -| test.rs:486:31:486:37 | reader2 | test.rs:486:57:486:65 | [post] &mut line [&ref] | provenance | MaD:14 | +| test.rs:486:31:486:37 | reader2 | test.rs:486:57:486:65 | [post] &mut line [&ref] | provenance | MaD:15 | | test.rs:486:57:486:65 | [post] &mut line [&ref] | test.rs:486:62:486:65 | [post] line | provenance | | | test.rs:486:62:486:65 | [post] line | test.rs:487:19:487:22 | line | provenance | | | test.rs:487:19:487:22 | line | test.rs:487:18:487:22 | &line | provenance | | -| test.rs:493:31:493:37 | reader2 | test.rs:493:49:493:57 | [post] &mut line [&ref] | provenance | MaD:13 | +| test.rs:493:31:493:37 | reader2 | test.rs:493:49:493:57 | [post] &mut line [&ref] | provenance | MaD:14 | | test.rs:493:49:493:57 | [post] &mut line [&ref] | test.rs:493:54:493:57 | [post] line | provenance | | | test.rs:493:54:493:57 | [post] line | test.rs:494:19:494:22 | line | provenance | | | test.rs:494:19:494:22 | line | test.rs:494:18:494:22 | &line | provenance | | -| test.rs:500:31:500:37 | reader2 | test.rs:500:51:500:61 | [post] &mut buffer [&ref] | provenance | MaD:16 | +| test.rs:500:31:500:37 | reader2 | test.rs:500:51:500:61 | [post] &mut buffer [&ref] | provenance | MaD:17 | | test.rs:500:51:500:61 | [post] &mut buffer [&ref] | test.rs:500:56:500:61 | [post] buffer | provenance | | | test.rs:500:56:500:61 | [post] buffer | test.rs:501:19:501:24 | buffer | provenance | | | test.rs:501:19:501:24 | buffer | test.rs:501:18:501:24 | &buffer | provenance | | diff --git a/rust/ql/test/library-tests/dataflow/taint/TaintFlowStep.expected b/rust/ql/test/library-tests/dataflow/taint/TaintFlowStep.expected index 40c48c9bbf9..dfd91b81506 100644 --- a/rust/ql/test/library-tests/dataflow/taint/TaintFlowStep.expected +++ b/rust/ql/test/library-tests/dataflow/taint/TaintFlowStep.expected @@ -1,21 +1,21 @@ | main.rs:8:20:8:20 | s | main.rs:8:14:8:20 | FormatArgsExpr | -| main.rs:16:5:16:5 | [post] b [borrowed] | main.rs:16:5:16:5 | [SSA] b | -| main.rs:20:5:20:5 | [post] c [borrowed] | main.rs:20:5:20:5 | [SSA] c | +| main.rs:16:5:16:5 | [post] b [implicit borrow] | main.rs:16:5:16:5 | [SSA] b | +| main.rs:20:5:20:5 | [post] c [implicit borrow] | main.rs:20:5:20:5 | [SSA] c | | main.rs:31:13:31:13 | a | main.rs:31:13:31:19 | a as u8 | | main.rs:32:10:32:10 | b | main.rs:32:10:32:17 | b as i64 | | main.rs:32:10:32:17 | [post] b as i64 | main.rs:32:10:32:10 | [post] b | | main.rs:37:23:37:23 | i | main.rs:37:17:37:23 | FormatArgsExpr | | main.rs:41:24:41:24 | s | main.rs:41:18:41:24 | FormatArgsExpr | -| main.rs:46:23:46:23 | [post] s [borrowed] | main.rs:46:23:46:23 | [post] s | +| main.rs:46:23:46:23 | [post] s [implicit borrow] | main.rs:46:23:46:23 | [post] s | | main.rs:46:23:46:23 | s | main.rs:46:23:46:29 | s[...] | | main.rs:46:23:46:29 | s[...] [pre-dereferenced] | main.rs:46:23:46:29 | s[...] | | main.rs:57:24:57:24 | i | main.rs:57:18:57:24 | FormatArgsExpr | -| main.rs:62:14:62:16 | [post] arr [borrowed] | main.rs:62:14:62:16 | [post] arr | +| main.rs:62:14:62:16 | [post] arr [implicit borrow] | main.rs:62:14:62:16 | [post] arr | | main.rs:62:14:62:19 | arr[1] [pre-dereferenced] | main.rs:62:14:62:19 | arr[1] | -| main.rs:72:24:72:24 | [post] s [borrowed] | main.rs:72:24:72:24 | [post] s | +| main.rs:72:24:72:24 | [post] s [implicit borrow] | main.rs:72:24:72:24 | [post] s | | main.rs:72:24:72:27 | s[1] | main.rs:72:18:72:27 | FormatArgsExpr | | main.rs:72:24:72:27 | s[1] [pre-dereferenced] | main.rs:72:24:72:27 | s[1] | -| main.rs:77:9:77:12 | [post] arr2 [borrowed] | main.rs:77:9:77:12 | [post] arr2 | +| main.rs:77:9:77:12 | [post] arr2 [implicit borrow] | main.rs:77:9:77:12 | [post] arr2 | | main.rs:77:9:77:15 | arr2[1] [pre-dereferenced] | main.rs:77:9:77:15 | arr2[1] | | main.rs:98:14:98:47 | TupleExpr | main.rs:98:14:98:49 | ... .0 | | main.rs:99:14:99:47 | TupleExpr | main.rs:99:14:99:49 | ... .1 | diff --git a/rust/ql/test/query-tests/security/CWE-022/TaintedPath.expected b/rust/ql/test/query-tests/security/CWE-022/TaintedPath.expected index 2e98dadccfb..244c768696f 100644 --- a/rust/ql/test/query-tests/security/CWE-022/TaintedPath.expected +++ b/rust/ql/test/query-tests/security/CWE-022/TaintedPath.expected @@ -20,40 +20,40 @@ edges | src/main.rs:9:9:9:17 | file_path | src/main.rs:11:24:11:32 | file_path | provenance | | | src/main.rs:9:21:9:44 | ...::from(...) | src/main.rs:9:9:9:17 | file_path | provenance | | | src/main.rs:9:35:9:43 | file_name | src/main.rs:9:21:9:44 | ...::from(...) | provenance | MaD:9 | -| src/main.rs:9:35:9:43 | file_name | src/main.rs:9:21:9:44 | ...::from(...) | provenance | MaD:15 | +| src/main.rs:9:35:9:43 | file_name | src/main.rs:9:21:9:44 | ...::from(...) | provenance | MaD:16 | | src/main.rs:11:24:11:32 | file_path | src/main.rs:11:5:11:22 | ...::read_to_string | provenance | MaD:6 Sink:MaD:6 | | src/main.rs:38:11:38:19 | file_path | src/main.rs:41:52:41:60 | file_path | provenance | | | src/main.rs:41:9:41:17 | file_path | src/main.rs:46:24:46:32 | file_path | provenance | | | src/main.rs:41:21:41:62 | public_path.join(...) | src/main.rs:41:9:41:17 | file_path | provenance | | -| src/main.rs:41:38:41:61 | ...::from(...) | src/main.rs:41:21:41:62 | public_path.join(...) | provenance | MaD:13 | +| src/main.rs:41:38:41:61 | ...::from(...) | src/main.rs:41:21:41:62 | public_path.join(...) | provenance | MaD:14 | | src/main.rs:41:52:41:60 | file_path | src/main.rs:41:38:41:61 | ...::from(...) | provenance | MaD:9 | -| src/main.rs:41:52:41:60 | file_path | src/main.rs:41:38:41:61 | ...::from(...) | provenance | MaD:15 | +| src/main.rs:41:52:41:60 | file_path | src/main.rs:41:38:41:61 | ...::from(...) | provenance | MaD:16 | | src/main.rs:46:24:46:32 | file_path | src/main.rs:46:5:46:22 | ...::read_to_string | provenance | MaD:6 Sink:MaD:6 | | src/main.rs:63:11:63:19 | file_path | src/main.rs:66:32:66:40 | file_path | provenance | | | src/main.rs:66:9:66:17 | file_path [&ref] | src/main.rs:71:24:71:32 | file_path [&ref] | provenance | | | src/main.rs:66:21:66:41 | ...::new(...) [&ref] | src/main.rs:66:9:66:17 | file_path [&ref] | provenance | | -| src/main.rs:66:31:66:40 | &file_path [&ref] | src/main.rs:66:21:66:41 | ...::new(...) [&ref] | provenance | MaD:14 | +| src/main.rs:66:31:66:40 | &file_path [&ref] | src/main.rs:66:21:66:41 | ...::new(...) [&ref] | provenance | MaD:15 | | src/main.rs:66:32:66:40 | file_path | src/main.rs:66:31:66:40 | &file_path [&ref] | provenance | | | src/main.rs:71:24:71:32 | file_path [&ref] | src/main.rs:71:5:71:22 | ...::read_to_string | provenance | MaD:6 Sink:MaD:6 | | src/main.rs:76:11:76:19 | file_path | src/main.rs:79:52:79:60 | file_path | provenance | | | src/main.rs:79:9:79:17 | file_path | src/main.rs:80:21:80:29 | file_path | provenance | | | src/main.rs:79:21:79:62 | public_path.join(...) | src/main.rs:79:9:79:17 | file_path | provenance | | -| src/main.rs:79:38:79:61 | ...::from(...) | src/main.rs:79:21:79:62 | public_path.join(...) | provenance | MaD:13 | +| src/main.rs:79:38:79:61 | ...::from(...) | src/main.rs:79:21:79:62 | public_path.join(...) | provenance | MaD:14 | | src/main.rs:79:52:79:60 | file_path | src/main.rs:79:38:79:61 | ...::from(...) | provenance | MaD:9 | -| src/main.rs:79:52:79:60 | file_path | src/main.rs:79:38:79:61 | ...::from(...) | provenance | MaD:15 | +| src/main.rs:79:52:79:60 | file_path | src/main.rs:79:38:79:61 | ...::from(...) | provenance | MaD:16 | | src/main.rs:80:9:80:17 | file_path | src/main.rs:85:24:85:32 | file_path | provenance | | -| src/main.rs:80:21:80:29 | file_path | src/main.rs:80:21:80:44 | file_path.canonicalize() [Ok] | provenance | Config | -| src/main.rs:80:21:80:44 | file_path.canonicalize() [Ok] | src/main.rs:80:21:80:53 | ... .unwrap() | provenance | MaD:12 | +| src/main.rs:80:21:80:29 | file_path | src/main.rs:80:21:80:44 | file_path.canonicalize() [Ok] | provenance | MaD:11 | +| src/main.rs:80:21:80:44 | file_path.canonicalize() [Ok] | src/main.rs:80:21:80:53 | ... .unwrap() | provenance | MaD:13 | | src/main.rs:80:21:80:53 | ... .unwrap() | src/main.rs:80:9:80:17 | file_path | provenance | | | src/main.rs:85:24:85:32 | file_path | src/main.rs:85:5:85:22 | ...::read_to_string | provenance | MaD:6 Sink:MaD:6 | | src/main.rs:90:11:90:19 | file_path | src/main.rs:93:32:93:40 | file_path | provenance | | | src/main.rs:93:9:93:17 | file_path [&ref] | src/main.rs:98:21:98:29 | file_path [&ref] | provenance | | | src/main.rs:93:21:93:41 | ...::new(...) [&ref] | src/main.rs:93:9:93:17 | file_path [&ref] | provenance | | -| src/main.rs:93:31:93:40 | &file_path [&ref] | src/main.rs:93:21:93:41 | ...::new(...) [&ref] | provenance | MaD:14 | +| src/main.rs:93:31:93:40 | &file_path [&ref] | src/main.rs:93:21:93:41 | ...::new(...) [&ref] | provenance | MaD:15 | | src/main.rs:93:32:93:40 | file_path | src/main.rs:93:31:93:40 | &file_path [&ref] | provenance | | | src/main.rs:98:9:98:17 | file_path | src/main.rs:99:24:99:32 | file_path | provenance | | | src/main.rs:98:21:98:29 | file_path [&ref] | src/main.rs:98:21:98:44 | file_path.canonicalize() [Ok] | provenance | Config | -| src/main.rs:98:21:98:44 | file_path.canonicalize() [Ok] | src/main.rs:98:21:98:53 | ... .unwrap() | provenance | MaD:12 | +| src/main.rs:98:21:98:44 | file_path.canonicalize() [Ok] | src/main.rs:98:21:98:53 | ... .unwrap() | provenance | MaD:13 | | src/main.rs:98:21:98:53 | ... .unwrap() | src/main.rs:98:9:98:17 | file_path | provenance | | | src/main.rs:99:24:99:32 | file_path | src/main.rs:99:5:99:22 | ...::read_to_string | provenance | MaD:6 Sink:MaD:6 | | src/main.rs:103:9:103:13 | path1 | src/main.rs:104:33:104:37 | path1 | provenance | | @@ -65,39 +65,39 @@ edges | src/main.rs:103:9:103:13 | path1 | src/main.rs:123:37:123:41 | path1 | provenance | | | src/main.rs:103:17:103:30 | ...::args | src/main.rs:103:17:103:32 | ...::args(...) [element] | provenance | Src:MaD:7 | | src/main.rs:103:17:103:32 | ...::args(...) [element] | src/main.rs:103:17:103:39 | ... .nth(...) [Some] | provenance | MaD:10 | -| src/main.rs:103:17:103:39 | ... .nth(...) [Some] | src/main.rs:103:17:103:48 | ... .unwrap() | provenance | MaD:11 | +| src/main.rs:103:17:103:39 | ... .nth(...) [Some] | src/main.rs:103:17:103:48 | ... .unwrap() | provenance | MaD:12 | | src/main.rs:103:17:103:48 | ... .unwrap() | src/main.rs:103:9:103:13 | path1 | provenance | | | src/main.rs:104:33:104:37 | path1 | src/main.rs:104:33:104:45 | path1.clone() | provenance | MaD:8 | | src/main.rs:104:33:104:45 | path1.clone() | src/main.rs:104:13:104:31 | ...::open | provenance | MaD:2 Sink:MaD:2 | | src/main.rs:106:9:106:13 | path2 | src/main.rs:107:33:107:37 | path2 | provenance | | -| src/main.rs:106:17:106:52 | ...::canonicalize(...) [Ok] | src/main.rs:106:17:106:61 | ... .unwrap() | provenance | MaD:12 | +| src/main.rs:106:17:106:52 | ...::canonicalize(...) [Ok] | src/main.rs:106:17:106:61 | ... .unwrap() | provenance | MaD:13 | | src/main.rs:106:17:106:61 | ... .unwrap() | src/main.rs:106:9:106:13 | path2 | provenance | | | src/main.rs:106:39:106:43 | path1 | src/main.rs:106:39:106:51 | path1.clone() | provenance | MaD:8 | | src/main.rs:106:39:106:51 | path1.clone() | src/main.rs:106:17:106:52 | ...::canonicalize(...) [Ok] | provenance | Config | | src/main.rs:107:33:107:37 | path2 | src/main.rs:107:13:107:31 | ...::open | provenance | MaD:2 Sink:MaD:2 | | src/main.rs:109:9:109:13 | path3 | src/main.rs:110:35:110:39 | path3 | provenance | | | src/main.rs:109:17:109:54 | ...::canonicalize(...) [future, Ok] | src/main.rs:109:17:109:60 | await ... [Ok] | provenance | | -| src/main.rs:109:17:109:60 | await ... [Ok] | src/main.rs:109:17:109:69 | ... .unwrap() | provenance | MaD:12 | +| src/main.rs:109:17:109:60 | await ... [Ok] | src/main.rs:109:17:109:69 | ... .unwrap() | provenance | MaD:13 | | src/main.rs:109:17:109:69 | ... .unwrap() | src/main.rs:109:9:109:13 | path3 | provenance | | | src/main.rs:109:41:109:45 | path1 | src/main.rs:109:41:109:53 | path1.clone() | provenance | MaD:8 | | src/main.rs:109:41:109:53 | path1.clone() | src/main.rs:109:17:109:54 | ...::canonicalize(...) [future, Ok] | provenance | Config | | src/main.rs:110:35:110:39 | path3 | src/main.rs:110:13:110:33 | ...::open | provenance | MaD:4 Sink:MaD:4 | | src/main.rs:112:9:112:13 | path4 | src/main.rs:113:39:113:43 | path4 | provenance | | | src/main.rs:112:17:112:58 | ...::canonicalize(...) [future, Ok] | src/main.rs:112:17:112:64 | await ... [Ok] | provenance | | -| src/main.rs:112:17:112:64 | await ... [Ok] | src/main.rs:112:17:112:73 | ... .unwrap() | provenance | MaD:12 | +| src/main.rs:112:17:112:64 | await ... [Ok] | src/main.rs:112:17:112:73 | ... .unwrap() | provenance | MaD:13 | | src/main.rs:112:17:112:73 | ... .unwrap() | src/main.rs:112:9:112:13 | path4 | provenance | | | src/main.rs:112:45:112:49 | path1 | src/main.rs:112:45:112:57 | path1.clone() | provenance | MaD:8 | | src/main.rs:112:45:112:57 | path1.clone() | src/main.rs:112:17:112:58 | ...::canonicalize(...) [future, Ok] | provenance | Config | | src/main.rs:113:39:113:43 | path4 | src/main.rs:113:13:113:37 | ...::open | provenance | MaD:1 Sink:MaD:1 | | src/main.rs:115:9:115:13 | path5 [&ref] | src/main.rs:116:33:116:37 | path5 [&ref] | provenance | | | src/main.rs:115:17:115:44 | ...::new(...) [&ref] | src/main.rs:115:9:115:13 | path5 [&ref] | provenance | | -| src/main.rs:115:38:115:43 | &path1 [&ref] | src/main.rs:115:17:115:44 | ...::new(...) [&ref] | provenance | MaD:14 | +| src/main.rs:115:38:115:43 | &path1 [&ref] | src/main.rs:115:17:115:44 | ...::new(...) [&ref] | provenance | MaD:15 | | src/main.rs:115:39:115:43 | path1 | src/main.rs:115:38:115:43 | &path1 [&ref] | provenance | | | src/main.rs:116:33:116:37 | path5 [&ref] | src/main.rs:116:13:116:31 | ...::open | provenance | MaD:2 Sink:MaD:2 | | src/main.rs:116:33:116:37 | path5 [&ref] | src/main.rs:118:17:118:21 | path5 [&ref] | provenance | | | src/main.rs:118:9:118:13 | path6 | src/main.rs:119:33:119:37 | path6 | provenance | | | src/main.rs:118:17:118:21 | path5 [&ref] | src/main.rs:118:17:118:36 | path5.canonicalize() [Ok] | provenance | Config | -| src/main.rs:118:17:118:36 | path5.canonicalize() [Ok] | src/main.rs:118:17:118:45 | ... .unwrap() | provenance | MaD:12 | +| src/main.rs:118:17:118:36 | path5.canonicalize() [Ok] | src/main.rs:118:17:118:45 | ... .unwrap() | provenance | MaD:13 | | src/main.rs:118:17:118:45 | ... .unwrap() | src/main.rs:118:9:118:13 | path6 | provenance | | | src/main.rs:119:33:119:37 | path6 | src/main.rs:119:13:119:31 | ...::open | provenance | MaD:2 Sink:MaD:2 | | src/main.rs:122:27:122:31 | path1 | src/main.rs:122:27:122:39 | path1.clone() | provenance | MaD:8 | @@ -108,7 +108,7 @@ edges | src/main.rs:170:16:170:29 | ...: ... [&ref] | src/main.rs:174:36:174:43 | path_str [&ref] | provenance | | | src/main.rs:172:9:172:12 | path [&ref] | src/main.rs:173:8:173:11 | path [&ref] | provenance | | | src/main.rs:172:16:172:34 | ...::new(...) [&ref] | src/main.rs:172:9:172:12 | path [&ref] | provenance | | -| src/main.rs:172:26:172:33 | path_str [&ref] | src/main.rs:172:16:172:34 | ...::new(...) [&ref] | provenance | MaD:14 | +| src/main.rs:172:26:172:33 | path_str [&ref] | src/main.rs:172:16:172:34 | ...::new(...) [&ref] | provenance | MaD:15 | | src/main.rs:173:8:173:11 | path [&ref] | src/main.rs:173:13:173:18 | exists | provenance | MaD:3 Sink:MaD:3 | | src/main.rs:173:8:173:11 | path [&ref] | src/main.rs:177:36:177:39 | path [&ref] | provenance | | | src/main.rs:174:36:174:43 | path_str [&ref] | src/main.rs:174:25:174:34 | ...::open | provenance | MaD:2 Sink:MaD:2 | @@ -116,7 +116,7 @@ edges | src/main.rs:185:9:185:13 | path1 | src/main.rs:186:18:186:22 | path1 | provenance | | | src/main.rs:185:17:185:30 | ...::args | src/main.rs:185:17:185:32 | ...::args(...) [element] | provenance | Src:MaD:7 | | src/main.rs:185:17:185:32 | ...::args(...) [element] | src/main.rs:185:17:185:39 | ... .nth(...) [Some] | provenance | MaD:10 | -| src/main.rs:185:17:185:39 | ... .nth(...) [Some] | src/main.rs:185:17:185:48 | ... .unwrap() | provenance | MaD:11 | +| src/main.rs:185:17:185:39 | ... .nth(...) [Some] | src/main.rs:185:17:185:48 | ... .unwrap() | provenance | MaD:12 | | src/main.rs:185:17:185:48 | ... .unwrap() | src/main.rs:185:9:185:13 | path1 | provenance | | | src/main.rs:186:17:186:22 | &path1 [&ref] | src/main.rs:170:16:170:29 | ...: ... [&ref] | provenance | | | src/main.rs:186:18:186:22 | path1 | src/main.rs:186:17:186:22 | &path1 [&ref] | provenance | | @@ -131,11 +131,12 @@ models | 8 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value | | 9 | Summary: <_ as core::convert::From>::from; Argument[0]; ReturnValue; taint | | 10 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Reference.Element; ReturnValue.Field[core::option::Option::Some(0)]; value | -| 11 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 12 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 13 | Summary: ::join; Argument[0]; ReturnValue; taint | -| 14 | Summary: ::new; Argument[0].Reference; ReturnValue.Reference; value | -| 15 | Summary: ::from; Argument[0]; ReturnValue; taint | +| 11 | Summary: <_ as core::ops::deref::Deref>::deref; Argument[self].Reference; ReturnValue.Reference; taint | +| 12 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 13 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 14 | Summary: ::join; Argument[0]; ReturnValue; taint | +| 15 | Summary: ::new; Argument[0].Reference; ReturnValue.Reference; value | +| 16 | Summary: ::from; Argument[0]; ReturnValue; taint | nodes | src/main.rs:7:11:7:19 | file_name | semmle.label | file_name | | src/main.rs:9:9:9:17 | file_path | semmle.label | file_path | diff --git a/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected b/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected index 24edd2ff7f5..6da53e4f4c8 100644 --- a/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected +++ b/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected @@ -59,46 +59,46 @@ edges | main.rs:18:41:18:41 | v | main.rs:32:60:32:60 | v | provenance | | | main.rs:18:41:18:41 | v | main.rs:35:49:35:49 | v | provenance | | | main.rs:20:9:20:10 | l2 | main.rs:21:31:21:32 | l2 | provenance | | -| main.rs:20:14:20:54 | ...::from_size_align(...) [Ok] | main.rs:20:14:20:63 | ... .unwrap() | provenance | MaD:42 | +| main.rs:20:14:20:54 | ...::from_size_align(...) [Ok] | main.rs:20:14:20:63 | ... .unwrap() | provenance | MaD:44 | | main.rs:20:14:20:63 | ... .unwrap() | main.rs:20:9:20:10 | l2 | provenance | | -| main.rs:20:50:20:50 | v | main.rs:20:14:20:54 | ...::from_size_align(...) [Ok] | provenance | MaD:34 | +| main.rs:20:50:20:50 | v | main.rs:20:14:20:54 | ...::from_size_align(...) [Ok] | provenance | MaD:36 | | main.rs:21:31:21:32 | l2 | main.rs:21:13:21:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:21:31:21:32 | l2 | main.rs:22:31:22:32 | l2 | provenance | | | main.rs:21:31:21:32 | l2 | main.rs:23:31:23:32 | l2 | provenance | | | main.rs:21:31:21:32 | l2 | main.rs:24:38:24:39 | l2 | provenance | | -| main.rs:22:31:22:32 | l2 | main.rs:22:31:22:44 | l2.align_to(...) [Ok] | provenance | MaD:28 | -| main.rs:22:31:22:44 | l2.align_to(...) [Ok] | main.rs:22:31:22:53 | ... .unwrap() | provenance | MaD:42 | +| main.rs:22:31:22:32 | l2 | main.rs:22:31:22:44 | l2.align_to(...) [Ok] | provenance | MaD:30 | +| main.rs:22:31:22:44 | l2.align_to(...) [Ok] | main.rs:22:31:22:53 | ... .unwrap() | provenance | MaD:44 | | main.rs:22:31:22:53 | ... .unwrap() | main.rs:22:13:22:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | -| main.rs:23:31:23:32 | l2 | main.rs:23:31:23:44 | l2.align_to(...) [Ok] | provenance | MaD:28 | -| main.rs:23:31:23:44 | l2.align_to(...) [Ok] | main.rs:23:31:23:53 | ... .unwrap() | provenance | MaD:42 | -| main.rs:23:31:23:53 | ... .unwrap() | main.rs:23:31:23:68 | ... .pad_to_align() | provenance | MaD:36 | +| main.rs:23:31:23:32 | l2 | main.rs:23:31:23:44 | l2.align_to(...) [Ok] | provenance | MaD:30 | +| main.rs:23:31:23:44 | l2.align_to(...) [Ok] | main.rs:23:31:23:53 | ... .unwrap() | provenance | MaD:44 | +| main.rs:23:31:23:53 | ... .unwrap() | main.rs:23:31:23:68 | ... .pad_to_align() | provenance | MaD:38 | | main.rs:23:31:23:68 | ... .pad_to_align() | main.rs:23:13:23:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:24:38:24:39 | l2 | main.rs:24:13:24:36 | ...::alloc_zeroed | provenance | MaD:16 Sink:MaD:16 | | main.rs:29:9:29:10 | l4 | main.rs:30:31:30:32 | l4 | provenance | | | main.rs:29:14:29:64 | ...::from_size_align_unchecked(...) | main.rs:29:9:29:10 | l4 | provenance | | -| main.rs:29:60:29:60 | v | main.rs:29:14:29:64 | ...::from_size_align_unchecked(...) | provenance | MaD:35 | +| main.rs:29:60:29:60 | v | main.rs:29:14:29:64 | ...::from_size_align_unchecked(...) | provenance | MaD:37 | | main.rs:30:31:30:32 | l4 | main.rs:30:13:30:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:32:9:32:10 | l5 | main.rs:33:31:33:32 | l5 | provenance | | | main.rs:32:14:32:118 | ...::from_size_align_unchecked(...) | main.rs:32:9:32:10 | l5 | provenance | | | main.rs:32:60:32:60 | v | main.rs:32:60:32:89 | ... * ... | provenance | MaD:27 | -| main.rs:32:60:32:60 | v | main.rs:32:60:32:89 | ... * ... | provenance | MaD:45 | -| main.rs:32:60:32:89 | ... * ... | main.rs:32:14:32:118 | ...::from_size_align_unchecked(...) | provenance | MaD:35 | +| main.rs:32:60:32:60 | v | main.rs:32:60:32:89 | ... * ... | provenance | MaD:46 | +| main.rs:32:60:32:89 | ... * ... | main.rs:32:14:32:118 | ...::from_size_align_unchecked(...) | provenance | MaD:37 | | main.rs:33:31:33:32 | l5 | main.rs:33:13:33:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:35:9:35:10 | s6 | main.rs:36:60:36:61 | s6 | provenance | | | main.rs:35:14:35:54 | ... + ... | main.rs:35:9:35:10 | s6 | provenance | | | main.rs:35:15:35:49 | ... * ... | main.rs:35:14:35:54 | ... + ... | provenance | MaD:24 | | main.rs:35:49:35:49 | v | main.rs:35:15:35:49 | ... * ... | provenance | MaD:26 | | main.rs:35:49:35:49 | v | main.rs:35:15:35:49 | ... * ... | provenance | MaD:25 | -| main.rs:35:49:35:49 | v | main.rs:35:15:35:49 | ... * ... | provenance | MaD:44 | +| main.rs:35:49:35:49 | v | main.rs:35:15:35:49 | ... * ... | provenance | MaD:45 | | main.rs:36:9:36:10 | l6 | main.rs:37:31:37:32 | l6 | provenance | | | main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) | main.rs:36:9:36:10 | l6 | provenance | | -| main.rs:36:60:36:61 | s6 | main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) | provenance | MaD:35 | +| main.rs:36:60:36:61 | s6 | main.rs:36:14:36:65 | ...::from_size_align_unchecked(...) | provenance | MaD:37 | | main.rs:37:31:37:32 | l6 | main.rs:37:13:37:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:37:31:37:32 | l6 | main.rs:39:60:39:61 | l6 | provenance | | | main.rs:39:9:39:10 | l7 | main.rs:40:31:40:32 | l7 | provenance | | | main.rs:39:14:39:72 | ...::from_size_align_unchecked(...) | main.rs:39:9:39:10 | l7 | provenance | | -| main.rs:39:60:39:61 | l6 | main.rs:39:60:39:68 | l6.size() | provenance | MaD:39 | -| main.rs:39:60:39:68 | l6.size() | main.rs:39:14:39:72 | ...::from_size_align_unchecked(...) | provenance | MaD:35 | +| main.rs:39:60:39:61 | l6 | main.rs:39:60:39:68 | l6.size() | provenance | MaD:41 | +| main.rs:39:60:39:68 | l6.size() | main.rs:39:14:39:72 | ...::from_size_align_unchecked(...) | provenance | MaD:37 | | main.rs:40:31:40:32 | l7 | main.rs:40:13:40:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:43:44:43:51 | ...: usize | main.rs:50:41:50:41 | v | provenance | | | main.rs:43:44:43:51 | ...: usize | main.rs:51:41:51:41 | v | provenance | | @@ -106,27 +106,27 @@ edges | main.rs:43:44:43:51 | ...: usize | main.rs:54:48:54:48 | v | provenance | | | main.rs:43:44:43:51 | ...: usize | main.rs:58:34:58:34 | v | provenance | | | main.rs:43:44:43:51 | ...: usize | main.rs:67:46:67:46 | v | provenance | | -| main.rs:50:31:50:42 | l2.repeat(...) [Ok, tuple.0] | main.rs:50:31:50:51 | ... .unwrap() [tuple.0] | provenance | MaD:42 | +| main.rs:50:31:50:42 | l2.repeat(...) [Ok, tuple.0] | main.rs:50:31:50:51 | ... .unwrap() [tuple.0] | provenance | MaD:44 | | main.rs:50:31:50:51 | ... .unwrap() [tuple.0] | main.rs:50:31:50:53 | ... .0 | provenance | | | main.rs:50:31:50:53 | ... .0 | main.rs:50:13:50:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | -| main.rs:50:41:50:41 | v | main.rs:50:31:50:42 | l2.repeat(...) [Ok, tuple.0] | provenance | MaD:37 | -| main.rs:51:31:51:46 | l2.repeat(...) [Ok, tuple.0] | main.rs:51:31:51:55 | ... .unwrap() [tuple.0] | provenance | MaD:42 | +| main.rs:50:41:50:41 | v | main.rs:50:31:50:42 | l2.repeat(...) [Ok, tuple.0] | provenance | MaD:39 | +| main.rs:51:31:51:46 | l2.repeat(...) [Ok, tuple.0] | main.rs:51:31:51:55 | ... .unwrap() [tuple.0] | provenance | MaD:44 | | main.rs:51:31:51:55 | ... .unwrap() [tuple.0] | main.rs:51:31:51:57 | ... .0 | provenance | | | main.rs:51:31:51:57 | ... .0 | main.rs:51:13:51:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:51:41:51:41 | v | main.rs:51:41:51:45 | ... + ... | provenance | MaD:24 | -| main.rs:51:41:51:45 | ... + ... | main.rs:51:31:51:46 | l2.repeat(...) [Ok, tuple.0] | provenance | MaD:37 | -| main.rs:53:31:53:49 | l2.repeat_packed(...) [Ok] | main.rs:53:31:53:58 | ... .unwrap() | provenance | MaD:42 | +| main.rs:51:41:51:45 | ... + ... | main.rs:51:31:51:46 | l2.repeat(...) [Ok, tuple.0] | provenance | MaD:39 | +| main.rs:53:31:53:49 | l2.repeat_packed(...) [Ok] | main.rs:53:31:53:58 | ... .unwrap() | provenance | MaD:44 | | main.rs:53:31:53:58 | ... .unwrap() | main.rs:53:13:53:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | -| main.rs:53:48:53:48 | v | main.rs:53:31:53:49 | l2.repeat_packed(...) [Ok] | provenance | MaD:38 | -| main.rs:54:31:54:54 | l2.repeat_packed(...) [Ok] | main.rs:54:31:54:63 | ... .unwrap() | provenance | MaD:42 | +| main.rs:53:48:53:48 | v | main.rs:53:31:53:49 | l2.repeat_packed(...) [Ok] | provenance | MaD:40 | +| main.rs:54:31:54:54 | l2.repeat_packed(...) [Ok] | main.rs:54:31:54:63 | ... .unwrap() | provenance | MaD:44 | | main.rs:54:31:54:63 | ... .unwrap() | main.rs:54:13:54:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:54:48:54:48 | v | main.rs:54:48:54:53 | ... * ... | provenance | MaD:27 | -| main.rs:54:48:54:53 | ... * ... | main.rs:54:31:54:54 | l2.repeat_packed(...) [Ok] | provenance | MaD:38 | +| main.rs:54:48:54:53 | ... * ... | main.rs:54:31:54:54 | l2.repeat_packed(...) [Ok] | provenance | MaD:40 | | main.rs:58:9:58:20 | TuplePat [tuple.0] | main.rs:58:10:58:11 | k1 | provenance | | | main.rs:58:10:58:11 | k1 | main.rs:59:31:59:32 | k1 | provenance | | -| main.rs:58:24:58:35 | l3.repeat(...) [Ok, tuple.0] | main.rs:58:24:58:66 | ... .expect(...) [tuple.0] | provenance | MaD:41 | +| main.rs:58:24:58:35 | l3.repeat(...) [Ok, tuple.0] | main.rs:58:24:58:66 | ... .expect(...) [tuple.0] | provenance | MaD:43 | | main.rs:58:24:58:66 | ... .expect(...) [tuple.0] | main.rs:58:9:58:20 | TuplePat [tuple.0] | provenance | | -| main.rs:58:34:58:34 | v | main.rs:58:24:58:35 | l3.repeat(...) [Ok, tuple.0] | provenance | MaD:37 | +| main.rs:58:34:58:34 | v | main.rs:58:24:58:35 | l3.repeat(...) [Ok, tuple.0] | provenance | MaD:39 | | main.rs:59:31:59:32 | k1 | main.rs:59:13:59:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:59:31:59:32 | k1 | main.rs:60:34:60:35 | k1 | provenance | | | main.rs:59:31:59:32 | k1 | main.rs:62:24:62:25 | k1 | provenance | | @@ -134,32 +134,32 @@ edges | main.rs:59:31:59:32 | k1 | main.rs:65:31:65:32 | k1 | provenance | | | main.rs:60:9:60:20 | TuplePat [tuple.0] | main.rs:60:10:60:11 | k2 | provenance | | | main.rs:60:10:60:11 | k2 | main.rs:61:31:61:32 | k2 | provenance | | -| main.rs:60:24:60:36 | l3.extend(...) [Ok, tuple.0] | main.rs:60:24:60:45 | ... .unwrap() [tuple.0] | provenance | MaD:42 | +| main.rs:60:24:60:36 | l3.extend(...) [Ok, tuple.0] | main.rs:60:24:60:45 | ... .unwrap() [tuple.0] | provenance | MaD:44 | | main.rs:60:24:60:45 | ... .unwrap() [tuple.0] | main.rs:60:9:60:20 | TuplePat [tuple.0] | provenance | | -| main.rs:60:34:60:35 | k1 | main.rs:60:24:60:36 | l3.extend(...) [Ok, tuple.0] | provenance | MaD:30 | +| main.rs:60:34:60:35 | k1 | main.rs:60:24:60:36 | l3.extend(...) [Ok, tuple.0] | provenance | MaD:32 | | main.rs:61:31:61:32 | k2 | main.rs:61:13:61:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:62:9:62:20 | TuplePat [tuple.0] | main.rs:62:10:62:11 | k3 | provenance | | | main.rs:62:10:62:11 | k3 | main.rs:63:31:63:32 | k3 | provenance | | -| main.rs:62:24:62:25 | k1 | main.rs:62:24:62:36 | k1.extend(...) [Ok, tuple.0] | provenance | MaD:31 | -| main.rs:62:24:62:36 | k1.extend(...) [Ok, tuple.0] | main.rs:62:24:62:45 | ... .unwrap() [tuple.0] | provenance | MaD:42 | +| main.rs:62:24:62:25 | k1 | main.rs:62:24:62:36 | k1.extend(...) [Ok, tuple.0] | provenance | MaD:33 | +| main.rs:62:24:62:36 | k1.extend(...) [Ok, tuple.0] | main.rs:62:24:62:45 | ... .unwrap() [tuple.0] | provenance | MaD:44 | | main.rs:62:24:62:45 | ... .unwrap() [tuple.0] | main.rs:62:9:62:20 | TuplePat [tuple.0] | provenance | | | main.rs:63:31:63:32 | k3 | main.rs:63:13:63:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | -| main.rs:64:31:64:50 | l3.extend_packed(...) [Ok] | main.rs:64:31:64:59 | ... .unwrap() | provenance | MaD:42 | +| main.rs:64:31:64:50 | l3.extend_packed(...) [Ok] | main.rs:64:31:64:59 | ... .unwrap() | provenance | MaD:44 | | main.rs:64:31:64:59 | ... .unwrap() | main.rs:64:13:64:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | -| main.rs:64:48:64:49 | k1 | main.rs:64:31:64:50 | l3.extend_packed(...) [Ok] | provenance | MaD:32 | -| main.rs:65:31:65:32 | k1 | main.rs:65:31:65:50 | k1.extend_packed(...) [Ok] | provenance | MaD:33 | -| main.rs:65:31:65:50 | k1.extend_packed(...) [Ok] | main.rs:65:31:65:59 | ... .unwrap() | provenance | MaD:42 | +| main.rs:64:48:64:49 | k1 | main.rs:64:31:64:50 | l3.extend_packed(...) [Ok] | provenance | MaD:34 | +| main.rs:65:31:65:32 | k1 | main.rs:65:31:65:50 | k1.extend_packed(...) [Ok] | provenance | MaD:35 | +| main.rs:65:31:65:50 | k1.extend_packed(...) [Ok] | main.rs:65:31:65:59 | ... .unwrap() | provenance | MaD:44 | | main.rs:65:31:65:59 | ... .unwrap() | main.rs:65:13:65:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:67:9:67:10 | l4 | main.rs:68:31:68:32 | l4 | provenance | | -| main.rs:67:14:67:47 | ...::array::<...>(...) [Ok] | main.rs:67:14:67:56 | ... .unwrap() | provenance | MaD:42 | +| main.rs:67:14:67:47 | ...::array::<...>(...) [Ok] | main.rs:67:14:67:56 | ... .unwrap() | provenance | MaD:44 | | main.rs:67:14:67:56 | ... .unwrap() | main.rs:67:9:67:10 | l4 | provenance | | -| main.rs:67:46:67:46 | v | main.rs:67:14:67:47 | ...::array::<...>(...) [Ok] | provenance | MaD:29 | +| main.rs:67:46:67:46 | v | main.rs:67:14:67:47 | ...::array::<...>(...) [Ok] | provenance | MaD:31 | | main.rs:68:31:68:32 | l4 | main.rs:68:13:68:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:86:35:86:42 | ...: usize | main.rs:87:54:87:54 | v | provenance | | | main.rs:87:9:87:14 | layout | main.rs:88:31:88:36 | layout | provenance | | -| main.rs:87:18:87:58 | ...::from_size_align(...) [Ok] | main.rs:87:18:87:67 | ... .unwrap() | provenance | MaD:42 | +| main.rs:87:18:87:58 | ...::from_size_align(...) [Ok] | main.rs:87:18:87:67 | ... .unwrap() | provenance | MaD:44 | | main.rs:87:18:87:67 | ... .unwrap() | main.rs:87:9:87:14 | layout | provenance | | -| main.rs:87:54:87:54 | v | main.rs:87:18:87:58 | ...::from_size_align(...) [Ok] | provenance | MaD:34 | +| main.rs:87:54:87:54 | v | main.rs:87:18:87:58 | ...::from_size_align(...) [Ok] | provenance | MaD:36 | | main.rs:88:31:88:36 | layout | main.rs:88:13:88:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:91:38:91:45 | ...: usize | main.rs:92:47:92:47 | v | provenance | | | main.rs:91:38:91:45 | ...: usize | main.rs:101:51:101:51 | v | provenance | | @@ -170,16 +170,16 @@ edges | main.rs:91:38:91:45 | ...: usize | main.rs:161:55:161:55 | v | provenance | | | main.rs:92:9:92:10 | l1 | main.rs:96:35:96:36 | l1 | provenance | | | main.rs:92:9:92:10 | l1 | main.rs:102:35:102:36 | l1 | provenance | | -| main.rs:92:14:92:48 | ...::array::<...>(...) [Ok] | main.rs:92:14:92:57 | ... .unwrap() | provenance | MaD:42 | +| main.rs:92:14:92:48 | ...::array::<...>(...) [Ok] | main.rs:92:14:92:57 | ... .unwrap() | provenance | MaD:44 | | main.rs:92:14:92:57 | ... .unwrap() | main.rs:92:9:92:10 | l1 | provenance | | -| main.rs:92:47:92:47 | v | main.rs:92:14:92:48 | ...::array::<...>(...) [Ok] | provenance | MaD:29 | +| main.rs:92:47:92:47 | v | main.rs:92:14:92:48 | ...::array::<...>(...) [Ok] | provenance | MaD:31 | | main.rs:96:35:96:36 | l1 | main.rs:96:17:96:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:96:35:96:36 | l1 | main.rs:109:35:109:36 | l1 | provenance | | | main.rs:96:35:96:36 | l1 | main.rs:111:35:111:36 | l1 | provenance | | | main.rs:101:13:101:14 | l3 | main.rs:103:35:103:36 | l3 | provenance | | -| main.rs:101:18:101:52 | ...::array::<...>(...) [Ok] | main.rs:101:18:101:61 | ... .unwrap() | provenance | MaD:42 | +| main.rs:101:18:101:52 | ...::array::<...>(...) [Ok] | main.rs:101:18:101:61 | ... .unwrap() | provenance | MaD:44 | | main.rs:101:18:101:61 | ... .unwrap() | main.rs:101:13:101:14 | l3 | provenance | | -| main.rs:101:51:101:51 | v | main.rs:101:18:101:52 | ...::array::<...>(...) [Ok] | provenance | MaD:29 | +| main.rs:101:51:101:51 | v | main.rs:101:18:101:52 | ...::array::<...>(...) [Ok] | provenance | MaD:31 | | main.rs:102:35:102:36 | l1 | main.rs:102:17:102:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:102:35:102:36 | l1 | main.rs:109:35:109:36 | l1 | provenance | | | main.rs:102:35:102:36 | l1 | main.rs:111:35:111:36 | l1 | provenance | | @@ -190,28 +190,28 @@ edges | main.rs:111:35:111:36 | l1 | main.rs:111:17:111:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:111:35:111:36 | l1 | main.rs:146:35:146:36 | l1 | provenance | | | main.rs:145:13:145:14 | l9 | main.rs:148:35:148:36 | l9 | provenance | | -| main.rs:145:18:145:52 | ...::array::<...>(...) [Ok] | main.rs:145:18:145:61 | ... .unwrap() | provenance | MaD:42 | +| main.rs:145:18:145:52 | ...::array::<...>(...) [Ok] | main.rs:145:18:145:61 | ... .unwrap() | provenance | MaD:44 | | main.rs:145:18:145:61 | ... .unwrap() | main.rs:145:13:145:14 | l9 | provenance | | -| main.rs:145:51:145:51 | v | main.rs:145:18:145:52 | ...::array::<...>(...) [Ok] | provenance | MaD:29 | +| main.rs:145:51:145:51 | v | main.rs:145:18:145:52 | ...::array::<...>(...) [Ok] | provenance | MaD:31 | | main.rs:146:35:146:36 | l1 | main.rs:146:17:146:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:146:35:146:36 | l1 | main.rs:177:31:177:32 | l1 | provenance | | | main.rs:148:35:148:36 | l9 | main.rs:148:17:148:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:151:9:151:11 | l10 | main.rs:152:31:152:33 | l10 | provenance | | -| main.rs:151:15:151:69 | ...::array::<...>(...) [Ok] | main.rs:151:15:151:78 | ... .unwrap() | provenance | MaD:42 | +| main.rs:151:15:151:69 | ...::array::<...>(...) [Ok] | main.rs:151:15:151:78 | ... .unwrap() | provenance | MaD:44 | | main.rs:151:15:151:78 | ... .unwrap() | main.rs:151:9:151:11 | l10 | provenance | | -| main.rs:151:48:151:68 | ...::min(...) | main.rs:151:15:151:69 | ...::array::<...>(...) [Ok] | provenance | MaD:29 | -| main.rs:151:62:151:62 | v | main.rs:151:48:151:68 | ...::min(...) | provenance | MaD:47 | +| main.rs:151:48:151:68 | ...::min(...) | main.rs:151:15:151:69 | ...::array::<...>(...) [Ok] | provenance | MaD:31 | +| main.rs:151:62:151:62 | v | main.rs:151:48:151:68 | ...::min(...) | provenance | MaD:48 | | main.rs:152:31:152:33 | l10 | main.rs:152:13:152:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:154:9:154:11 | l11 | main.rs:155:31:155:33 | l11 | provenance | | -| main.rs:154:15:154:69 | ...::array::<...>(...) [Ok] | main.rs:154:15:154:78 | ... .unwrap() | provenance | MaD:42 | +| main.rs:154:15:154:69 | ...::array::<...>(...) [Ok] | main.rs:154:15:154:78 | ... .unwrap() | provenance | MaD:44 | | main.rs:154:15:154:78 | ... .unwrap() | main.rs:154:9:154:11 | l11 | provenance | | -| main.rs:154:48:154:68 | ...::max(...) | main.rs:154:15:154:69 | ...::array::<...>(...) [Ok] | provenance | MaD:29 | -| main.rs:154:62:154:62 | v | main.rs:154:48:154:68 | ...::max(...) | provenance | MaD:46 | +| main.rs:154:48:154:68 | ...::max(...) | main.rs:154:15:154:69 | ...::array::<...>(...) [Ok] | provenance | MaD:31 | +| main.rs:154:62:154:62 | v | main.rs:154:48:154:68 | ...::max(...) | provenance | MaD:47 | | main.rs:155:31:155:33 | l11 | main.rs:155:13:155:29 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:161:13:161:15 | l13 | main.rs:162:35:162:37 | l13 | provenance | | -| main.rs:161:19:161:59 | ...::from_size_align(...) [Ok] | main.rs:161:19:161:68 | ... .unwrap() | provenance | MaD:42 | +| main.rs:161:19:161:59 | ...::from_size_align(...) [Ok] | main.rs:161:19:161:68 | ... .unwrap() | provenance | MaD:44 | | main.rs:161:19:161:68 | ... .unwrap() | main.rs:161:13:161:15 | l13 | provenance | | -| main.rs:161:55:161:55 | v | main.rs:161:19:161:59 | ...::from_size_align(...) [Ok] | provenance | MaD:34 | +| main.rs:161:55:161:55 | v | main.rs:161:19:161:59 | ...::from_size_align(...) [Ok] | provenance | MaD:36 | | main.rs:162:35:162:37 | l13 | main.rs:162:17:162:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:162:35:162:37 | l13 | main.rs:169:35:169:37 | l13 | provenance | | | main.rs:169:35:169:37 | l13 | main.rs:169:17:169:33 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | @@ -219,9 +219,9 @@ edges | main.rs:183:29:183:36 | ...: usize | main.rs:192:46:192:46 | v | provenance | | | main.rs:183:29:183:36 | ...: usize | main.rs:202:48:202:48 | v | provenance | | | main.rs:192:9:192:10 | l2 | main.rs:193:38:193:39 | l2 | provenance | | -| main.rs:192:14:192:47 | ...::array::<...>(...) [Ok] | main.rs:192:14:192:56 | ... .unwrap() | provenance | MaD:42 | +| main.rs:192:14:192:47 | ...::array::<...>(...) [Ok] | main.rs:192:14:192:56 | ... .unwrap() | provenance | MaD:44 | | main.rs:192:14:192:56 | ... .unwrap() | main.rs:192:9:192:10 | l2 | provenance | | -| main.rs:192:46:192:46 | v | main.rs:192:14:192:47 | ...::array::<...>(...) [Ok] | provenance | MaD:29 | +| main.rs:192:46:192:46 | v | main.rs:192:14:192:47 | ...::array::<...>(...) [Ok] | provenance | MaD:31 | | main.rs:193:38:193:39 | l2 | main.rs:193:32:193:36 | alloc | provenance | MaD:10 Sink:MaD:10 | | main.rs:193:38:193:39 | l2 | main.rs:194:45:194:46 | l2 | provenance | | | main.rs:194:45:194:46 | l2 | main.rs:194:32:194:43 | alloc_zeroed | provenance | MaD:11 Sink:MaD:11 | @@ -258,19 +258,20 @@ edges | main.rs:231:42:231:42 | v | main.rs:231:13:231:40 | ...::with_capacity_in | provenance | MaD:4 Sink:MaD:4 | | main.rs:279:24:279:41 | ...: String | main.rs:280:21:280:30 | user_input | provenance | | | main.rs:280:9:280:17 | num_bytes | main.rs:282:54:282:62 | num_bytes | provenance | | -| main.rs:280:21:280:30 | user_input | main.rs:280:21:280:47 | user_input.parse() [Ok] | provenance | MaD:43 | +| main.rs:280:21:280:30 | user_input | main.rs:280:21:280:47 | user_input.parse() [Ok] | provenance | MaD:28 | +| main.rs:280:21:280:30 | user_input | main.rs:280:21:280:47 | user_input.parse() [Ok] | provenance | MaD:29 | | main.rs:280:21:280:47 | user_input.parse() [Ok] | main.rs:280:21:280:48 | TryExpr | provenance | | | main.rs:280:21:280:48 | TryExpr | main.rs:280:21:280:77 | ... * ... | provenance | MaD:27 | -| main.rs:280:21:280:48 | TryExpr | main.rs:280:21:280:77 | ... * ... | provenance | MaD:45 | +| main.rs:280:21:280:48 | TryExpr | main.rs:280:21:280:77 | ... * ... | provenance | MaD:46 | | main.rs:280:21:280:77 | ... * ... | main.rs:280:9:280:17 | num_bytes | provenance | | | main.rs:282:9:282:14 | layout | main.rs:284:40:284:45 | layout | provenance | | -| main.rs:282:18:282:66 | ...::from_size_align(...) [Ok] | main.rs:282:18:282:75 | ... .unwrap() | provenance | MaD:42 | +| main.rs:282:18:282:66 | ...::from_size_align(...) [Ok] | main.rs:282:18:282:75 | ... .unwrap() | provenance | MaD:44 | | main.rs:282:18:282:75 | ... .unwrap() | main.rs:282:9:282:14 | layout | provenance | | -| main.rs:282:54:282:62 | num_bytes | main.rs:282:18:282:66 | ...::from_size_align(...) [Ok] | provenance | MaD:34 | +| main.rs:282:54:282:62 | num_bytes | main.rs:282:18:282:66 | ...::from_size_align(...) [Ok] | provenance | MaD:36 | | main.rs:284:40:284:45 | layout | main.rs:284:22:284:38 | ...::alloc | provenance | MaD:15 Sink:MaD:15 | | main.rs:308:25:308:38 | ...::args | main.rs:308:25:308:40 | ...::args(...) [element] | provenance | Src:MaD:22 | | main.rs:308:25:308:40 | ...::args(...) [element] | main.rs:308:25:308:47 | ... .nth(...) [Some] | provenance | MaD:23 | -| main.rs:308:25:308:47 | ... .nth(...) [Some] | main.rs:308:25:308:74 | ... .unwrap_or(...) | provenance | MaD:40 | +| main.rs:308:25:308:47 | ... .nth(...) [Some] | main.rs:308:25:308:74 | ... .unwrap_or(...) | provenance | MaD:42 | | main.rs:308:25:308:74 | ... .unwrap_or(...) | main.rs:279:24:279:41 | ...: String | provenance | | | main.rs:317:9:317:9 | v | main.rs:320:34:320:34 | v | provenance | | | main.rs:317:9:317:9 | v | main.rs:321:42:321:42 | v | provenance | | @@ -280,9 +281,10 @@ edges | main.rs:317:9:317:9 | v | main.rs:325:22:325:22 | v | provenance | | | main.rs:317:13:317:26 | ...::args | main.rs:317:13:317:28 | ...::args(...) [element] | provenance | Src:MaD:22 | | main.rs:317:13:317:28 | ...::args(...) [element] | main.rs:317:13:317:35 | ... .nth(...) [Some] | provenance | MaD:23 | -| main.rs:317:13:317:35 | ... .nth(...) [Some] | main.rs:317:13:317:65 | ... .unwrap_or(...) | provenance | MaD:40 | -| main.rs:317:13:317:65 | ... .unwrap_or(...) | main.rs:317:13:317:82 | ... .parse() [Ok] | provenance | MaD:43 | -| main.rs:317:13:317:82 | ... .parse() [Ok] | main.rs:317:13:317:91 | ... .unwrap() | provenance | MaD:42 | +| main.rs:317:13:317:35 | ... .nth(...) [Some] | main.rs:317:13:317:65 | ... .unwrap_or(...) | provenance | MaD:42 | +| main.rs:317:13:317:65 | ... .unwrap_or(...) | main.rs:317:13:317:82 | ... .parse() [Ok] | provenance | MaD:28 | +| main.rs:317:13:317:65 | ... .unwrap_or(...) | main.rs:317:13:317:82 | ... .parse() [Ok] | provenance | MaD:29 | +| main.rs:317:13:317:82 | ... .parse() [Ok] | main.rs:317:13:317:91 | ... .unwrap() | provenance | MaD:44 | | main.rs:317:13:317:91 | ... .unwrap() | main.rs:317:9:317:9 | v | provenance | | | main.rs:320:34:320:34 | v | main.rs:12:36:12:43 | ...: usize | provenance | | | main.rs:321:42:321:42 | v | main.rs:43:44:43:51 | ...: usize | provenance | | @@ -318,26 +320,27 @@ models | 25 | Summary: <_ as core::ops::arith::Mul>::mul; Argument[0].Reference; ReturnValue; taint | | 26 | Summary: <_ as core::ops::arith::Mul>::mul; Argument[0]; ReturnValue; taint | | 27 | Summary: <_ as core::ops::arith::Mul>::mul; Argument[self]; ReturnValue; taint | -| 28 | Summary: ::align_to; Argument[self].Reference; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 29 | Summary: ::array; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 30 | Summary: ::extend; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint | -| 31 | Summary: ::extend; Argument[self].Reference; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint | -| 32 | Summary: ::extend_packed; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 33 | Summary: ::extend_packed; Argument[self].Reference; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 34 | Summary: ::from_size_align; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 35 | Summary: ::from_size_align_unchecked; Argument[0]; ReturnValue; taint | -| 36 | Summary: ::pad_to_align; Argument[self].Reference; ReturnValue; taint | -| 37 | Summary: ::repeat; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint | -| 38 | Summary: ::repeat_packed; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 39 | Summary: ::size; Argument[self].Reference; ReturnValue; taint | -| 40 | Summary: ::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 41 | Summary: ::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 42 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 43 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 44 | Summary: ::mul; Argument[0]; ReturnValue; taint | -| 45 | Summary: ::mul; Argument[self]; ReturnValue; taint | -| 46 | Summary: core::cmp::max; Argument[0]; ReturnValue; value | -| 47 | Summary: core::cmp::min; Argument[0]; ReturnValue; value | +| 28 | Summary: <_ as core::ops::deref::Deref>::deref; Argument[self].Reference; ReturnValue.Reference; taint | +| 29 | Summary: ::deref; Argument[self]; ReturnValue; value | +| 30 | Summary: ::align_to; Argument[self].Reference; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 31 | Summary: ::array; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 32 | Summary: ::extend; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint | +| 33 | Summary: ::extend; Argument[self].Reference; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint | +| 34 | Summary: ::extend_packed; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 35 | Summary: ::extend_packed; Argument[self].Reference; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 36 | Summary: ::from_size_align; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 37 | Summary: ::from_size_align_unchecked; Argument[0]; ReturnValue; taint | +| 38 | Summary: ::pad_to_align; Argument[self].Reference; ReturnValue; taint | +| 39 | Summary: ::repeat; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)].Field[0]; taint | +| 40 | Summary: ::repeat_packed; Argument[0]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 41 | Summary: ::size; Argument[self].Reference; ReturnValue; taint | +| 42 | Summary: ::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 43 | Summary: ::expect; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 44 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 45 | Summary: ::mul; Argument[0]; ReturnValue; taint | +| 46 | Summary: ::mul; Argument[self]; ReturnValue; taint | +| 47 | Summary: core::cmp::max; Argument[0]; ReturnValue; value | +| 48 | Summary: core::cmp::min; Argument[0]; ReturnValue; value | nodes | main.rs:12:36:12:43 | ...: usize | semmle.label | ...: usize | | main.rs:18:13:18:31 | ...::realloc | semmle.label | ...::realloc | diff --git a/shared/util/codeql/util/UnboundList.qll b/shared/util/codeql/util/UnboundList.qll index d9a8b905a13..4ee447c5cfe 100644 --- a/shared/util/codeql/util/UnboundList.qll +++ b/shared/util/codeql/util/UnboundList.qll @@ -66,7 +66,7 @@ module Make Input> { /** Gets the `i`th element in this list. */ bindingset[this] - private Element getElement(int i) { result = decode(this.splitAt(".", i)) } + Element getElement(int i) { result = decode(this.splitAt(".", i)) } /** Gets a textual representation of this list. */ bindingset[this] From bd24fb0baa9354f3da8150fad33449dc10f1c79a Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Wed, 7 Jan 2026 10:56:11 +0100 Subject: [PATCH 33/63] C++: Add simple range analysis test for bitshift --- .../SimpleRangeAnalysis/lowerBound.expected | 1236 +-- .../SimpleRangeAnalysis/nrOfBounds.expected | 6715 +++++++++-------- .../SimpleRangeAnalysis/ternaryLower.expected | 278 +- .../SimpleRangeAnalysis/ternaryUpper.expected | 278 +- .../rangeanalysis/SimpleRangeAnalysis/test.c | 10 + .../SimpleRangeAnalysis/upperBound.expected | 1238 +-- 6 files changed, 4889 insertions(+), 4866 deletions(-) diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/lowerBound.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/lowerBound.expected index cfebbd974c0..4c5ceeb9c55 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/lowerBound.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/lowerBound.expected @@ -350,118 +350,70 @@ | test.c:330:5:330:9 | total | -2147483648 | | test.c:330:14:330:14 | r | -2147483648 | | test.c:333:10:333:14 | total | -2147483648 | -| test.c:338:7:338:7 | x | -2147483648 | -| test.c:342:10:342:10 | i | 0 | -| test.c:343:5:343:5 | i | 0 | -| test.c:345:3:345:3 | d | -2147483648 | -| test.c:345:7:345:7 | i | 3 | -| test.c:346:7:346:7 | x | 0 | -| test.c:347:9:347:9 | d | 3 | -| test.c:347:14:347:14 | x | 0 | -| test.c:357:3:357:4 | y1 | 0 | -| test.c:357:8:357:8 | x | 0 | -| test.c:357:18:357:18 | x | 0 | -| test.c:358:3:358:4 | y2 | 0 | -| test.c:358:8:358:8 | x | 0 | -| test.c:358:24:358:24 | x | 0 | -| test.c:359:3:359:4 | y3 | 0 | -| test.c:360:3:360:4 | y4 | 0 | -| test.c:361:3:361:4 | y5 | 0 | -| test.c:362:3:362:4 | y6 | 0 | -| test.c:363:3:363:4 | y7 | 0 | -| test.c:364:3:364:4 | y8 | 0 | -| test.c:365:7:365:7 | x | 0 | -| test.c:366:5:366:6 | y3 | 0 | -| test.c:366:10:366:10 | x | 0 | -| test.c:367:5:367:6 | y4 | 0 | -| test.c:367:10:367:10 | x | 0 | -| test.c:368:5:368:6 | y5 | 0 | -| test.c:368:11:368:11 | x | 0 | -| test.c:369:5:369:6 | y6 | 0 | -| test.c:369:27:369:27 | x | 0 | -| test.c:370:5:370:6 | y7 | 0 | -| test.c:370:27:370:27 | x | 0 | -| test.c:371:5:371:6 | y8 | 0 | -| test.c:371:28:371:28 | x | 0 | -| test.c:373:10:373:11 | y1 | 0 | -| test.c:373:15:373:16 | y2 | 0 | -| test.c:373:20:373:21 | y3 | 0 | -| test.c:373:25:373:26 | y4 | 0 | -| test.c:373:30:373:31 | y5 | 0 | -| test.c:373:35:373:36 | y6 | 0 | -| test.c:373:40:373:41 | y7 | 0 | -| test.c:373:45:373:46 | y8 | 0 | -| test.c:379:3:379:4 | y1 | 0 | -| test.c:379:8:379:8 | x | 0 | -| test.c:379:18:379:18 | x | 101 | -| test.c:380:3:380:4 | y2 | 0 | -| test.c:380:8:380:8 | x | 0 | -| test.c:380:25:380:25 | x | 101 | -| test.c:381:3:381:4 | y3 | 0 | -| test.c:382:3:382:4 | y4 | 0 | -| test.c:383:3:383:4 | y5 | 0 | -| test.c:384:7:384:7 | x | 0 | -| test.c:385:5:385:6 | y3 | 0 | -| test.c:385:11:385:11 | x | 300 | -| test.c:386:5:386:6 | y4 | 0 | -| test.c:386:11:386:11 | x | 300 | -| test.c:387:5:387:6 | y5 | 0 | -| test.c:387:27:387:27 | x | 300 | -| test.c:389:10:389:11 | y1 | 101 | -| test.c:389:15:389:16 | y2 | 101 | -| test.c:389:20:389:21 | y3 | 0 | -| test.c:389:25:389:26 | y4 | 100 | -| test.c:389:30:389:31 | y5 | 0 | -| test.c:394:14:394:14 | m | -Infinity | -| test.c:394:18:394:18 | n | -Infinity | -| test.c:394:22:394:22 | o | -Infinity | -| test.c:394:26:394:26 | p | -Infinity | -| test.c:394:30:394:30 | q | -Infinity | -| test.c:395:14:395:14 | m | -Infinity | -| test.c:395:18:395:18 | n | -Infinity | -| test.c:395:22:395:22 | o | -Infinity | -| test.c:395:26:395:26 | p | -Infinity | -| test.c:395:30:395:30 | q | -Infinity | -| test.c:396:14:396:14 | m | -Infinity | -| test.c:396:18:396:18 | n | -Infinity | -| test.c:396:22:396:22 | o | -Infinity | -| test.c:396:26:396:26 | p | -Infinity | -| test.c:396:30:396:30 | q | -Infinity | -| test.c:397:14:397:14 | m | -Infinity | -| test.c:397:18:397:18 | n | -Infinity | -| test.c:397:22:397:22 | o | -Infinity | -| test.c:397:26:397:26 | p | -Infinity | -| test.c:397:30:397:30 | q | -Infinity | -| test.c:398:14:398:14 | m | -Infinity | -| test.c:398:18:398:18 | n | -Infinity | -| test.c:398:22:398:22 | o | -Infinity | -| test.c:398:26:398:26 | p | -Infinity | -| test.c:398:30:398:30 | q | -Infinity | -| test.c:399:14:399:14 | m | -Infinity | -| test.c:399:18:399:18 | n | -Infinity | -| test.c:399:22:399:22 | o | -Infinity | -| test.c:399:26:399:26 | p | -Infinity | -| test.c:399:30:399:30 | q | -Infinity | -| test.c:400:14:400:14 | m | -Infinity | -| test.c:400:18:400:18 | n | -Infinity | -| test.c:400:22:400:22 | o | -Infinity | -| test.c:400:26:400:26 | p | -Infinity | -| test.c:400:30:400:30 | q | -Infinity | -| test.c:401:14:401:14 | m | -Infinity | -| test.c:401:18:401:18 | n | -Infinity | -| test.c:401:22:401:22 | o | -Infinity | -| test.c:401:26:401:26 | p | -Infinity | -| test.c:401:30:401:30 | q | -Infinity | -| test.c:402:14:402:14 | m | -Infinity | -| test.c:402:18:402:18 | n | -Infinity | -| test.c:402:22:402:22 | o | -Infinity | -| test.c:402:26:402:26 | p | -Infinity | -| test.c:402:30:402:30 | q | -Infinity | -| test.c:403:14:403:14 | m | -Infinity | -| test.c:403:18:403:18 | n | -Infinity | -| test.c:403:22:403:22 | o | -Infinity | -| test.c:403:26:403:26 | p | -Infinity | -| test.c:403:30:403:30 | q | -Infinity | +| test.c:341:32:341:34 | odd | 9007199254740991 | +| test.c:343:10:343:16 | shifted | 4503599627370495.5 | +| test.c:348:7:348:7 | x | -2147483648 | +| test.c:352:10:352:10 | i | 0 | +| test.c:353:5:353:5 | i | 0 | +| test.c:355:3:355:3 | d | -2147483648 | +| test.c:355:7:355:7 | i | 3 | +| test.c:356:7:356:7 | x | 0 | +| test.c:357:9:357:9 | d | 3 | +| test.c:357:14:357:14 | x | 0 | +| test.c:367:3:367:4 | y1 | 0 | +| test.c:367:8:367:8 | x | 0 | +| test.c:367:18:367:18 | x | 0 | +| test.c:368:3:368:4 | y2 | 0 | +| test.c:368:8:368:8 | x | 0 | +| test.c:368:24:368:24 | x | 0 | +| test.c:369:3:369:4 | y3 | 0 | +| test.c:370:3:370:4 | y4 | 0 | +| test.c:371:3:371:4 | y5 | 0 | +| test.c:372:3:372:4 | y6 | 0 | +| test.c:373:3:373:4 | y7 | 0 | +| test.c:374:3:374:4 | y8 | 0 | +| test.c:375:7:375:7 | x | 0 | +| test.c:376:5:376:6 | y3 | 0 | +| test.c:376:10:376:10 | x | 0 | +| test.c:377:5:377:6 | y4 | 0 | +| test.c:377:10:377:10 | x | 0 | +| test.c:378:5:378:6 | y5 | 0 | +| test.c:378:11:378:11 | x | 0 | +| test.c:379:5:379:6 | y6 | 0 | +| test.c:379:27:379:27 | x | 0 | +| test.c:380:5:380:6 | y7 | 0 | +| test.c:380:27:380:27 | x | 0 | +| test.c:381:5:381:6 | y8 | 0 | +| test.c:381:28:381:28 | x | 0 | +| test.c:383:10:383:11 | y1 | 0 | +| test.c:383:15:383:16 | y2 | 0 | +| test.c:383:20:383:21 | y3 | 0 | +| test.c:383:25:383:26 | y4 | 0 | +| test.c:383:30:383:31 | y5 | 0 | +| test.c:383:35:383:36 | y6 | 0 | +| test.c:383:40:383:41 | y7 | 0 | +| test.c:383:45:383:46 | y8 | 0 | +| test.c:389:3:389:4 | y1 | 0 | +| test.c:389:8:389:8 | x | 0 | +| test.c:389:18:389:18 | x | 101 | +| test.c:390:3:390:4 | y2 | 0 | +| test.c:390:8:390:8 | x | 0 | +| test.c:390:25:390:25 | x | 101 | +| test.c:391:3:391:4 | y3 | 0 | +| test.c:392:3:392:4 | y4 | 0 | +| test.c:393:3:393:4 | y5 | 0 | +| test.c:394:7:394:7 | x | 0 | +| test.c:395:5:395:6 | y3 | 0 | +| test.c:395:11:395:11 | x | 300 | +| test.c:396:5:396:6 | y4 | 0 | +| test.c:396:11:396:11 | x | 300 | +| test.c:397:5:397:6 | y5 | 0 | +| test.c:397:27:397:27 | x | 300 | +| test.c:399:10:399:11 | y1 | 101 | +| test.c:399:15:399:16 | y2 | 101 | +| test.c:399:20:399:21 | y3 | 0 | +| test.c:399:25:399:26 | y4 | 100 | +| test.c:399:30:399:31 | y5 | 0 | | test.c:404:14:404:14 | m | -Infinity | | test.c:404:18:404:18 | n | -Infinity | | test.c:404:22:404:22 | o | -Infinity | @@ -472,143 +424,178 @@ | test.c:405:22:405:22 | o | -Infinity | | test.c:405:26:405:26 | p | -Infinity | | test.c:405:30:405:30 | q | -Infinity | -| test.c:411:19:411:19 | a | 0.143339 | -| test.c:411:23:411:23 | b | 0.222479 | -| test.c:411:27:411:27 | c | 0.051213 | -| test.c:411:31:411:31 | d | 0.369769 | -| test.c:411:35:411:35 | e | 0.105977 | -| test.c:411:39:411:39 | f | 0.107867 | -| test.c:411:43:411:43 | g | 0.025243 | -| test.c:411:47:411:47 | h | 0.149635 | -| test.c:411:51:411:51 | i | 0.053282 | -| test.c:411:55:411:55 | j | 0.276432 | -| test.c:411:59:411:59 | k | 0.205191 | -| test.c:411:63:411:63 | l | 0.132041 | -| test.c:413:10:413:15 | output | 1.842468 | -| test.c:420:7:420:9 | rhs | 0 | -| test.c:420:19:420:21 | rhs | 0 | -| test.c:421:7:421:9 | rhs | 0 | -| test.c:421:19:421:21 | rhs | 0 | -| test.c:422:7:422:9 | rhs | 0 | -| test.c:422:19:422:21 | rhs | 0 | -| test.c:423:7:423:9 | rhs | 0 | -| test.c:423:19:423:21 | rhs | 0 | -| test.c:424:7:424:9 | rhs | 0 | -| test.c:424:19:424:21 | rhs | 0 | -| test.c:425:10:425:12 | rhs | 0 | -| test.c:429:7:429:7 | a | -2147483648 | -| test.c:430:9:430:9 | b | -2147483648 | -| test.c:431:7:431:7 | a | 17 | -| test.c:431:12:431:12 | b | 23 | -| test.c:433:9:433:9 | a | 17 | -| test.c:434:7:434:7 | b | -2147483648 | -| test.c:439:11:439:11 | a | -2147483648 | -| test.c:439:15:439:15 | b | -2147483648 | -| test.c:440:10:440:10 | a | -2147483648 | -| test.c:440:14:440:14 | b | -2147483648 | -| test.c:447:10:447:11 | ip | 0 | -| test.c:447:20:447:21 | ip | 0 | -| test.c:447:40:447:41 | ip | 0 | -| test.c:448:14:448:15 | ip | 1 | -| test.c:449:14:449:15 | ip | 0 | -| test.c:449:34:449:35 | ip | 0 | -| test.c:450:11:450:12 | ip | 0 | -| test.c:451:13:451:14 | ip | 0 | -| test.c:452:14:452:15 | ip | 0 | -| test.c:453:14:453:15 | ip | 0 | -| test.c:454:15:454:16 | ip | 0 | -| test.c:454:41:454:42 | ip | 0 | -| test.c:454:52:454:53 | ip | 0 | -| test.c:454:67:454:68 | ip | 0 | -| test.c:454:78:454:79 | ip | 0 | -| test.c:455:18:455:19 | ip | 0 | -| test.c:456:23:456:24 | ip | 0 | -| test.c:456:34:456:35 | ip | 0 | -| test.c:457:25:457:26 | ip | 0 | -| test.c:458:20:458:21 | ip | 0 | -| test.c:459:11:459:12 | ip | 0 | -| test.c:459:26:459:27 | ip | 0 | -| test.c:460:16:460:17 | ip | 0 | -| test.c:461:16:461:17 | ip | 0 | -| test.c:462:16:462:17 | ip | 0 | -| test.c:463:17:463:18 | ip | 0 | -| test.c:464:22:464:23 | ip | 0 | -| test.c:464:33:464:34 | ip | 0 | -| test.c:464:48:464:49 | ip | 0 | -| test.c:464:59:464:60 | ip | 0 | -| test.c:465:20:465:21 | ip | 0 | -| test.c:466:25:466:26 | ip | 0 | -| test.c:466:36:466:37 | ip | 0 | -| test.c:467:27:467:28 | ip | 0 | -| test.c:468:22:468:23 | ip | 0 | -| test.c:469:15:469:16 | ip | 0 | -| test.c:469:30:469:31 | ip | 0 | -| test.c:470:11:470:12 | ip | 0 | -| test.c:471:12:471:13 | ip | 0 | -| test.c:472:12:472:13 | ip | 0 | -| test.c:473:13:473:14 | ip | 0 | -| test.c:473:39:473:40 | ip | 0 | -| test.c:473:50:473:51 | ip | 0 | -| test.c:473:65:473:66 | ip | 0 | -| test.c:473:76:473:77 | ip | 0 | -| test.c:474:16:474:17 | ip | 0 | -| test.c:475:21:475:22 | ip | 0 | -| test.c:475:32:475:33 | ip | 0 | -| test.c:476:23:476:24 | ip | 0 | -| test.c:477:18:477:19 | ip | 0 | -| test.c:478:11:478:12 | ip | 0 | -| test.c:478:17:478:18 | ip | 0 | -| test.c:478:37:478:38 | ip | 0 | -| test.c:478:43:478:44 | ip | 0 | -| test.c:479:14:479:15 | ip | 0 | -| test.c:480:14:480:15 | ip | 0 | -| test.c:481:14:481:15 | ip | 0 | -| test.c:482:15:482:16 | ip | 0 | -| test.c:482:41:482:42 | ip | 0 | -| test.c:482:52:482:53 | ip | 0 | -| test.c:482:67:482:68 | ip | 0 | -| test.c:482:78:482:79 | ip | 0 | -| test.c:483:18:483:19 | ip | 0 | -| test.c:484:23:484:24 | ip | 0 | -| test.c:484:34:484:35 | ip | 0 | -| test.c:485:25:485:26 | ip | 0 | -| test.c:486:20:486:21 | ip | 0 | -| test.c:487:14:487:15 | ip | 0 | -| test.c:487:20:487:21 | ip | 0 | -| test.c:488:16:488:17 | ip | 0 | -| test.c:489:12:489:13 | ip | 0 | +| test.c:406:14:406:14 | m | -Infinity | +| test.c:406:18:406:18 | n | -Infinity | +| test.c:406:22:406:22 | o | -Infinity | +| test.c:406:26:406:26 | p | -Infinity | +| test.c:406:30:406:30 | q | -Infinity | +| test.c:407:14:407:14 | m | -Infinity | +| test.c:407:18:407:18 | n | -Infinity | +| test.c:407:22:407:22 | o | -Infinity | +| test.c:407:26:407:26 | p | -Infinity | +| test.c:407:30:407:30 | q | -Infinity | +| test.c:408:14:408:14 | m | -Infinity | +| test.c:408:18:408:18 | n | -Infinity | +| test.c:408:22:408:22 | o | -Infinity | +| test.c:408:26:408:26 | p | -Infinity | +| test.c:408:30:408:30 | q | -Infinity | +| test.c:409:14:409:14 | m | -Infinity | +| test.c:409:18:409:18 | n | -Infinity | +| test.c:409:22:409:22 | o | -Infinity | +| test.c:409:26:409:26 | p | -Infinity | +| test.c:409:30:409:30 | q | -Infinity | +| test.c:410:14:410:14 | m | -Infinity | +| test.c:410:18:410:18 | n | -Infinity | +| test.c:410:22:410:22 | o | -Infinity | +| test.c:410:26:410:26 | p | -Infinity | +| test.c:410:30:410:30 | q | -Infinity | +| test.c:411:14:411:14 | m | -Infinity | +| test.c:411:18:411:18 | n | -Infinity | +| test.c:411:22:411:22 | o | -Infinity | +| test.c:411:26:411:26 | p | -Infinity | +| test.c:411:30:411:30 | q | -Infinity | +| test.c:412:14:412:14 | m | -Infinity | +| test.c:412:18:412:18 | n | -Infinity | +| test.c:412:22:412:22 | o | -Infinity | +| test.c:412:26:412:26 | p | -Infinity | +| test.c:412:30:412:30 | q | -Infinity | +| test.c:413:14:413:14 | m | -Infinity | +| test.c:413:18:413:18 | n | -Infinity | +| test.c:413:22:413:22 | o | -Infinity | +| test.c:413:26:413:26 | p | -Infinity | +| test.c:413:30:413:30 | q | -Infinity | +| test.c:414:14:414:14 | m | -Infinity | +| test.c:414:18:414:18 | n | -Infinity | +| test.c:414:22:414:22 | o | -Infinity | +| test.c:414:26:414:26 | p | -Infinity | +| test.c:414:30:414:30 | q | -Infinity | +| test.c:415:14:415:14 | m | -Infinity | +| test.c:415:18:415:18 | n | -Infinity | +| test.c:415:22:415:22 | o | -Infinity | +| test.c:415:26:415:26 | p | -Infinity | +| test.c:415:30:415:30 | q | -Infinity | +| test.c:421:19:421:19 | a | 0.143339 | +| test.c:421:23:421:23 | b | 0.222479 | +| test.c:421:27:421:27 | c | 0.051213 | +| test.c:421:31:421:31 | d | 0.369769 | +| test.c:421:35:421:35 | e | 0.105977 | +| test.c:421:39:421:39 | f | 0.107867 | +| test.c:421:43:421:43 | g | 0.025243 | +| test.c:421:47:421:47 | h | 0.149635 | +| test.c:421:51:421:51 | i | 0.053282 | +| test.c:421:55:421:55 | j | 0.276432 | +| test.c:421:59:421:59 | k | 0.205191 | +| test.c:421:63:421:63 | l | 0.132041 | +| test.c:423:10:423:15 | output | 1.842468 | +| test.c:430:7:430:9 | rhs | 0 | +| test.c:430:19:430:21 | rhs | 0 | +| test.c:431:7:431:9 | rhs | 0 | +| test.c:431:19:431:21 | rhs | 0 | +| test.c:432:7:432:9 | rhs | 0 | +| test.c:432:19:432:21 | rhs | 0 | +| test.c:433:7:433:9 | rhs | 0 | +| test.c:433:19:433:21 | rhs | 0 | +| test.c:434:7:434:9 | rhs | 0 | +| test.c:434:19:434:21 | rhs | 0 | +| test.c:435:10:435:12 | rhs | 0 | +| test.c:439:7:439:7 | a | -2147483648 | +| test.c:440:9:440:9 | b | -2147483648 | +| test.c:441:7:441:7 | a | 17 | +| test.c:441:12:441:12 | b | 23 | +| test.c:443:9:443:9 | a | 17 | +| test.c:444:7:444:7 | b | -2147483648 | +| test.c:449:11:449:11 | a | -2147483648 | +| test.c:449:15:449:15 | b | -2147483648 | +| test.c:450:10:450:10 | a | -2147483648 | +| test.c:450:14:450:14 | b | -2147483648 | +| test.c:457:10:457:11 | ip | 0 | +| test.c:457:20:457:21 | ip | 0 | +| test.c:457:40:457:41 | ip | 0 | +| test.c:458:14:458:15 | ip | 1 | +| test.c:459:14:459:15 | ip | 0 | +| test.c:459:34:459:35 | ip | 0 | +| test.c:460:11:460:12 | ip | 0 | +| test.c:461:13:461:14 | ip | 0 | +| test.c:462:14:462:15 | ip | 0 | +| test.c:463:14:463:15 | ip | 0 | +| test.c:464:15:464:16 | ip | 0 | +| test.c:464:41:464:42 | ip | 0 | +| test.c:464:52:464:53 | ip | 0 | +| test.c:464:67:464:68 | ip | 0 | +| test.c:464:78:464:79 | ip | 0 | +| test.c:465:18:465:19 | ip | 0 | +| test.c:466:23:466:24 | ip | 0 | +| test.c:466:34:466:35 | ip | 0 | +| test.c:467:25:467:26 | ip | 0 | +| test.c:468:20:468:21 | ip | 0 | +| test.c:469:11:469:12 | ip | 0 | +| test.c:469:26:469:27 | ip | 0 | +| test.c:470:16:470:17 | ip | 0 | +| test.c:471:16:471:17 | ip | 0 | +| test.c:472:16:472:17 | ip | 0 | +| test.c:473:17:473:18 | ip | 0 | +| test.c:474:22:474:23 | ip | 0 | +| test.c:474:33:474:34 | ip | 0 | +| test.c:474:48:474:49 | ip | 0 | +| test.c:474:59:474:60 | ip | 0 | +| test.c:475:20:475:21 | ip | 0 | +| test.c:476:25:476:26 | ip | 0 | +| test.c:476:36:476:37 | ip | 0 | +| test.c:477:27:477:28 | ip | 0 | +| test.c:478:22:478:23 | ip | 0 | +| test.c:479:15:479:16 | ip | 0 | +| test.c:479:30:479:31 | ip | 0 | +| test.c:480:11:480:12 | ip | 0 | +| test.c:481:12:481:13 | ip | 0 | +| test.c:482:12:482:13 | ip | 0 | +| test.c:483:13:483:14 | ip | 0 | +| test.c:483:39:483:40 | ip | 0 | +| test.c:483:50:483:51 | ip | 0 | +| test.c:483:65:483:66 | ip | 0 | +| test.c:483:76:483:77 | ip | 0 | +| test.c:484:16:484:17 | ip | 0 | +| test.c:485:21:485:22 | ip | 0 | +| test.c:485:32:485:33 | ip | 0 | +| test.c:486:23:486:24 | ip | 0 | +| test.c:487:18:487:19 | ip | 0 | +| test.c:488:11:488:12 | ip | 0 | +| test.c:488:17:488:18 | ip | 0 | +| test.c:488:37:488:38 | ip | 0 | +| test.c:488:43:488:44 | ip | 0 | +| test.c:489:14:489:15 | ip | 0 | | test.c:490:14:490:15 | ip | 0 | -| test.c:491:15:491:16 | ip | 0 | -| test.c:492:16:492:17 | ip | 0 | -| test.c:493:16:493:17 | ip | 0 | -| test.c:494:17:494:18 | ip | 0 | -| test.c:495:22:495:23 | ip | 0 | -| test.c:495:33:495:34 | ip | 0 | -| test.c:495:48:495:49 | ip | 0 | -| test.c:495:59:495:60 | ip | 0 | +| test.c:491:14:491:15 | ip | 0 | +| test.c:492:15:492:16 | ip | 0 | +| test.c:492:41:492:42 | ip | 0 | +| test.c:492:52:492:53 | ip | 0 | +| test.c:492:67:492:68 | ip | 0 | +| test.c:492:78:492:79 | ip | 0 | +| test.c:493:18:493:19 | ip | 0 | +| test.c:494:23:494:24 | ip | 0 | +| test.c:494:34:494:35 | ip | 0 | +| test.c:495:25:495:26 | ip | 0 | | test.c:496:20:496:21 | ip | 0 | -| test.c:497:25:497:26 | ip | 0 | -| test.c:497:36:497:37 | ip | 0 | -| test.c:498:27:498:28 | ip | 0 | -| test.c:499:22:499:23 | ip | 0 | -| test.c:500:13:500:14 | ip | 0 | -| test.c:500:28:500:29 | ip | 0 | -| test.c:501:18:501:19 | ip | 0 | -| test.c:502:18:502:19 | ip | 0 | -| test.c:503:18:503:19 | ip | 0 | -| test.c:504:19:504:20 | ip | 0 | -| test.c:505:24:505:25 | ip | 0 | -| test.c:505:35:505:36 | ip | 0 | -| test.c:505:50:505:51 | ip | 0 | -| test.c:505:61:505:62 | ip | 0 | -| test.c:506:22:506:23 | ip | 0 | -| test.c:507:27:507:28 | ip | 0 | -| test.c:507:38:507:39 | ip | 0 | -| test.c:508:29:508:30 | ip | 0 | -| test.c:509:24:509:25 | ip | 0 | -| test.c:510:17:510:18 | ip | 0 | -| test.c:510:32:510:33 | ip | 0 | -| test.c:511:14:511:15 | ip | 0 | +| test.c:497:14:497:15 | ip | 0 | +| test.c:497:20:497:21 | ip | 0 | +| test.c:498:16:498:17 | ip | 0 | +| test.c:499:12:499:13 | ip | 0 | +| test.c:500:14:500:15 | ip | 0 | +| test.c:501:15:501:16 | ip | 0 | +| test.c:502:16:502:17 | ip | 0 | +| test.c:503:16:503:17 | ip | 0 | +| test.c:504:17:504:18 | ip | 0 | +| test.c:505:22:505:23 | ip | 0 | +| test.c:505:33:505:34 | ip | 0 | +| test.c:505:48:505:49 | ip | 0 | +| test.c:505:59:505:60 | ip | 0 | +| test.c:506:20:506:21 | ip | 0 | +| test.c:507:25:507:26 | ip | 0 | +| test.c:507:36:507:37 | ip | 0 | +| test.c:508:27:508:28 | ip | 0 | +| test.c:509:22:509:23 | ip | 0 | +| test.c:510:13:510:14 | ip | 0 | +| test.c:510:28:510:29 | ip | 0 | +| test.c:511:18:511:19 | ip | 0 | | test.c:512:18:512:19 | ip | 0 | | test.c:513:18:513:19 | ip | 0 | | test.c:514:19:514:20 | ip | 0 | @@ -622,129 +609,129 @@ | test.c:518:29:518:30 | ip | 0 | | test.c:519:24:519:25 | ip | 0 | | test.c:520:17:520:18 | ip | 0 | -| test.c:520:23:520:24 | ip | 0 | -| test.c:520:43:520:44 | ip | 0 | -| test.c:520:49:520:50 | ip | 0 | -| test.c:521:16:521:17 | ip | 0 | -| test.c:522:16:522:17 | ip | 0 | -| test.c:523:16:523:17 | ip | 0 | -| test.c:524:17:524:18 | ip | 0 | -| test.c:525:22:525:23 | ip | 0 | -| test.c:525:33:525:34 | ip | 0 | -| test.c:525:48:525:49 | ip | 0 | -| test.c:525:59:525:60 | ip | 0 | -| test.c:526:20:526:21 | ip | 0 | -| test.c:527:25:527:26 | ip | 0 | -| test.c:527:36:527:37 | ip | 0 | -| test.c:528:27:528:28 | ip | 0 | -| test.c:529:22:529:23 | ip | 0 | -| test.c:530:16:530:17 | ip | 0 | -| test.c:530:22:530:23 | ip | 0 | -| test.c:531:18:531:19 | ip | 0 | -| test.c:532:14:532:15 | ip | 0 | -| test.c:533:14:533:15 | ip | 0 | -| test.c:533:24:533:25 | ip | 0 | -| test.c:533:44:533:45 | ip | 0 | -| test.c:534:16:534:17 | ip | 1 | -| test.c:535:16:535:17 | ip | 0 | -| test.c:535:36:535:37 | ip | 0 | -| test.c:536:14:536:15 | ip | 0 | -| test.c:537:19:537:20 | ip | 0 | -| test.c:538:20:538:21 | ip | 0 | -| test.c:539:20:539:21 | ip | 0 | -| test.c:540:21:540:22 | ip | 0 | -| test.c:541:26:541:27 | ip | 0 | -| test.c:541:37:541:38 | ip | 0 | -| test.c:541:52:541:53 | ip | 0 | -| test.c:541:63:541:64 | ip | 0 | -| test.c:542:24:542:25 | ip | 0 | -| test.c:543:29:543:30 | ip | 0 | -| test.c:543:40:543:41 | ip | 0 | -| test.c:544:31:544:32 | ip | 0 | -| test.c:545:26:545:27 | ip | 0 | -| test.c:546:17:546:18 | ip | 0 | -| test.c:546:32:546:33 | ip | 0 | -| test.c:547:22:547:23 | ip | 0 | -| test.c:548:22:548:23 | ip | 0 | -| test.c:549:22:549:23 | ip | 0 | -| test.c:550:23:550:24 | ip | 0 | -| test.c:551:28:551:29 | ip | 0 | -| test.c:551:39:551:40 | ip | 0 | -| test.c:551:54:551:55 | ip | 0 | -| test.c:551:65:551:66 | ip | 0 | -| test.c:552:26:552:27 | ip | 0 | -| test.c:553:31:553:32 | ip | 0 | -| test.c:553:42:553:43 | ip | 0 | -| test.c:554:33:554:34 | ip | 0 | -| test.c:555:28:555:29 | ip | 0 | -| test.c:556:21:556:22 | ip | 0 | -| test.c:556:36:556:37 | ip | 0 | -| test.c:557:17:557:18 | ip | 0 | -| test.c:558:18:558:19 | ip | 0 | -| test.c:559:18:559:19 | ip | 0 | -| test.c:560:19:560:20 | ip | 0 | -| test.c:561:24:561:25 | ip | 0 | -| test.c:561:35:561:36 | ip | 0 | -| test.c:561:50:561:51 | ip | 0 | -| test.c:561:61:561:62 | ip | 0 | -| test.c:562:22:562:23 | ip | 0 | -| test.c:563:27:563:28 | ip | 0 | -| test.c:563:38:563:39 | ip | 0 | -| test.c:564:29:564:30 | ip | 0 | -| test.c:565:24:565:25 | ip | 0 | -| test.c:566:17:566:18 | ip | 0 | -| test.c:566:23:566:24 | ip | 0 | -| test.c:566:43:566:44 | ip | 0 | -| test.c:566:49:566:50 | ip | 0 | -| test.c:567:20:567:21 | ip | 0 | -| test.c:568:20:568:21 | ip | 0 | -| test.c:569:20:569:21 | ip | 0 | -| test.c:570:21:570:22 | ip | 0 | -| test.c:571:26:571:27 | ip | 0 | -| test.c:571:37:571:38 | ip | 0 | -| test.c:571:52:571:53 | ip | 0 | -| test.c:571:63:571:64 | ip | 0 | -| test.c:572:24:572:25 | ip | 0 | -| test.c:573:29:573:30 | ip | 0 | -| test.c:573:40:573:41 | ip | 0 | -| test.c:574:31:574:32 | ip | 0 | -| test.c:575:26:575:27 | ip | 0 | -| test.c:576:20:576:21 | ip | 0 | -| test.c:576:26:576:27 | ip | 0 | -| test.c:577:22:577:23 | ip | 0 | -| test.c:578:18:578:19 | ip | 0 | -| test.c:579:16:579:17 | ip | 0 | -| test.c:580:17:580:18 | ip | 0 | -| test.c:581:18:581:19 | ip | 0 | -| test.c:582:18:582:19 | ip | 0 | -| test.c:583:19:583:20 | ip | 0 | -| test.c:584:24:584:25 | ip | 0 | -| test.c:584:35:584:36 | ip | 0 | -| test.c:584:50:584:51 | ip | 0 | -| test.c:584:61:584:62 | ip | 0 | -| test.c:585:22:585:23 | ip | 0 | -| test.c:586:27:586:28 | ip | 0 | -| test.c:586:38:586:39 | ip | 0 | -| test.c:587:29:587:30 | ip | 0 | -| test.c:588:24:588:25 | ip | 0 | -| test.c:589:15:589:16 | ip | 0 | -| test.c:589:30:589:31 | ip | 0 | -| test.c:590:20:590:21 | ip | 0 | -| test.c:591:20:591:21 | ip | 0 | -| test.c:592:20:592:21 | ip | 0 | -| test.c:593:21:593:22 | ip | 0 | -| test.c:594:26:594:27 | ip | 0 | -| test.c:594:37:594:38 | ip | 0 | -| test.c:594:52:594:53 | ip | 0 | -| test.c:594:63:594:64 | ip | 0 | -| test.c:595:24:595:25 | ip | 0 | -| test.c:596:29:596:30 | ip | 0 | -| test.c:596:40:596:41 | ip | 0 | -| test.c:597:31:597:32 | ip | 0 | -| test.c:598:26:598:27 | ip | 0 | -| test.c:599:19:599:20 | ip | 0 | -| test.c:599:34:599:35 | ip | 0 | -| test.c:600:16:600:17 | ip | 0 | +| test.c:520:32:520:33 | ip | 0 | +| test.c:521:14:521:15 | ip | 0 | +| test.c:522:18:522:19 | ip | 0 | +| test.c:523:18:523:19 | ip | 0 | +| test.c:524:19:524:20 | ip | 0 | +| test.c:525:24:525:25 | ip | 0 | +| test.c:525:35:525:36 | ip | 0 | +| test.c:525:50:525:51 | ip | 0 | +| test.c:525:61:525:62 | ip | 0 | +| test.c:526:22:526:23 | ip | 0 | +| test.c:527:27:527:28 | ip | 0 | +| test.c:527:38:527:39 | ip | 0 | +| test.c:528:29:528:30 | ip | 0 | +| test.c:529:24:529:25 | ip | 0 | +| test.c:530:17:530:18 | ip | 0 | +| test.c:530:23:530:24 | ip | 0 | +| test.c:530:43:530:44 | ip | 0 | +| test.c:530:49:530:50 | ip | 0 | +| test.c:531:16:531:17 | ip | 0 | +| test.c:532:16:532:17 | ip | 0 | +| test.c:533:16:533:17 | ip | 0 | +| test.c:534:17:534:18 | ip | 0 | +| test.c:535:22:535:23 | ip | 0 | +| test.c:535:33:535:34 | ip | 0 | +| test.c:535:48:535:49 | ip | 0 | +| test.c:535:59:535:60 | ip | 0 | +| test.c:536:20:536:21 | ip | 0 | +| test.c:537:25:537:26 | ip | 0 | +| test.c:537:36:537:37 | ip | 0 | +| test.c:538:27:538:28 | ip | 0 | +| test.c:539:22:539:23 | ip | 0 | +| test.c:540:16:540:17 | ip | 0 | +| test.c:540:22:540:23 | ip | 0 | +| test.c:541:18:541:19 | ip | 0 | +| test.c:542:14:542:15 | ip | 0 | +| test.c:543:14:543:15 | ip | 0 | +| test.c:543:24:543:25 | ip | 0 | +| test.c:543:44:543:45 | ip | 0 | +| test.c:544:16:544:17 | ip | 1 | +| test.c:545:16:545:17 | ip | 0 | +| test.c:545:36:545:37 | ip | 0 | +| test.c:546:14:546:15 | ip | 0 | +| test.c:547:19:547:20 | ip | 0 | +| test.c:548:20:548:21 | ip | 0 | +| test.c:549:20:549:21 | ip | 0 | +| test.c:550:21:550:22 | ip | 0 | +| test.c:551:26:551:27 | ip | 0 | +| test.c:551:37:551:38 | ip | 0 | +| test.c:551:52:551:53 | ip | 0 | +| test.c:551:63:551:64 | ip | 0 | +| test.c:552:24:552:25 | ip | 0 | +| test.c:553:29:553:30 | ip | 0 | +| test.c:553:40:553:41 | ip | 0 | +| test.c:554:31:554:32 | ip | 0 | +| test.c:555:26:555:27 | ip | 0 | +| test.c:556:17:556:18 | ip | 0 | +| test.c:556:32:556:33 | ip | 0 | +| test.c:557:22:557:23 | ip | 0 | +| test.c:558:22:558:23 | ip | 0 | +| test.c:559:22:559:23 | ip | 0 | +| test.c:560:23:560:24 | ip | 0 | +| test.c:561:28:561:29 | ip | 0 | +| test.c:561:39:561:40 | ip | 0 | +| test.c:561:54:561:55 | ip | 0 | +| test.c:561:65:561:66 | ip | 0 | +| test.c:562:26:562:27 | ip | 0 | +| test.c:563:31:563:32 | ip | 0 | +| test.c:563:42:563:43 | ip | 0 | +| test.c:564:33:564:34 | ip | 0 | +| test.c:565:28:565:29 | ip | 0 | +| test.c:566:21:566:22 | ip | 0 | +| test.c:566:36:566:37 | ip | 0 | +| test.c:567:17:567:18 | ip | 0 | +| test.c:568:18:568:19 | ip | 0 | +| test.c:569:18:569:19 | ip | 0 | +| test.c:570:19:570:20 | ip | 0 | +| test.c:571:24:571:25 | ip | 0 | +| test.c:571:35:571:36 | ip | 0 | +| test.c:571:50:571:51 | ip | 0 | +| test.c:571:61:571:62 | ip | 0 | +| test.c:572:22:572:23 | ip | 0 | +| test.c:573:27:573:28 | ip | 0 | +| test.c:573:38:573:39 | ip | 0 | +| test.c:574:29:574:30 | ip | 0 | +| test.c:575:24:575:25 | ip | 0 | +| test.c:576:17:576:18 | ip | 0 | +| test.c:576:23:576:24 | ip | 0 | +| test.c:576:43:576:44 | ip | 0 | +| test.c:576:49:576:50 | ip | 0 | +| test.c:577:20:577:21 | ip | 0 | +| test.c:578:20:578:21 | ip | 0 | +| test.c:579:20:579:21 | ip | 0 | +| test.c:580:21:580:22 | ip | 0 | +| test.c:581:26:581:27 | ip | 0 | +| test.c:581:37:581:38 | ip | 0 | +| test.c:581:52:581:53 | ip | 0 | +| test.c:581:63:581:64 | ip | 0 | +| test.c:582:24:582:25 | ip | 0 | +| test.c:583:29:583:30 | ip | 0 | +| test.c:583:40:583:41 | ip | 0 | +| test.c:584:31:584:32 | ip | 0 | +| test.c:585:26:585:27 | ip | 0 | +| test.c:586:20:586:21 | ip | 0 | +| test.c:586:26:586:27 | ip | 0 | +| test.c:587:22:587:23 | ip | 0 | +| test.c:588:18:588:19 | ip | 0 | +| test.c:589:16:589:17 | ip | 0 | +| test.c:590:17:590:18 | ip | 0 | +| test.c:591:18:591:19 | ip | 0 | +| test.c:592:18:592:19 | ip | 0 | +| test.c:593:19:593:20 | ip | 0 | +| test.c:594:24:594:25 | ip | 0 | +| test.c:594:35:594:36 | ip | 0 | +| test.c:594:50:594:51 | ip | 0 | +| test.c:594:61:594:62 | ip | 0 | +| test.c:595:22:595:23 | ip | 0 | +| test.c:596:27:596:28 | ip | 0 | +| test.c:596:38:596:39 | ip | 0 | +| test.c:597:29:597:30 | ip | 0 | +| test.c:598:24:598:25 | ip | 0 | +| test.c:599:15:599:16 | ip | 0 | +| test.c:599:30:599:31 | ip | 0 | +| test.c:600:20:600:21 | ip | 0 | | test.c:601:20:601:21 | ip | 0 | | test.c:602:20:602:21 | ip | 0 | | test.c:603:21:603:22 | ip | 0 | @@ -758,256 +745,271 @@ | test.c:607:31:607:32 | ip | 0 | | test.c:608:26:608:27 | ip | 0 | | test.c:609:19:609:20 | ip | 0 | -| test.c:609:25:609:26 | ip | 0 | -| test.c:609:45:609:46 | ip | 0 | -| test.c:609:51:609:52 | ip | 0 | -| test.c:610:18:610:19 | ip | 0 | -| test.c:611:18:611:19 | ip | 0 | -| test.c:612:18:612:19 | ip | 0 | -| test.c:613:19:613:20 | ip | 0 | -| test.c:614:24:614:25 | ip | 0 | -| test.c:614:35:614:36 | ip | 0 | -| test.c:614:50:614:51 | ip | 0 | -| test.c:614:61:614:62 | ip | 0 | -| test.c:615:22:615:23 | ip | 0 | -| test.c:616:27:616:28 | ip | 0 | -| test.c:616:38:616:39 | ip | 0 | -| test.c:617:29:617:30 | ip | 0 | -| test.c:618:24:618:25 | ip | 0 | -| test.c:619:18:619:19 | ip | 0 | -| test.c:619:24:619:25 | ip | 0 | -| test.c:620:20:620:21 | ip | 0 | -| test.c:621:16:621:17 | ip | 0 | -| test.c:622:10:622:23 | special_number | 0 | -| test.c:630:7:630:8 | c1 | -2147483648 | -| test.c:630:13:630:13 | x | 0 | -| test.c:631:7:631:8 | c2 | -2147483648 | -| test.c:631:13:631:13 | x | 0 | -| test.c:632:7:632:8 | c3 | -2147483648 | -| test.c:632:13:632:13 | x | 0 | -| test.c:633:7:633:8 | c4 | -2147483648 | -| test.c:633:13:633:13 | x | 0 | -| test.c:634:7:634:8 | c5 | -2147483648 | -| test.c:634:13:634:13 | x | 0 | -| test.c:635:7:635:8 | c1 | -2147483648 | -| test.c:635:13:635:14 | c2 | -2147483648 | -| test.c:635:19:635:19 | x | 0 | -| test.c:636:7:636:8 | c1 | -2147483648 | -| test.c:636:13:636:14 | c3 | -2147483648 | -| test.c:636:19:636:19 | x | 0 | -| test.c:637:7:637:8 | c1 | -2147483648 | -| test.c:637:13:637:14 | c4 | -2147483648 | -| test.c:637:19:637:19 | x | 0 | -| test.c:638:7:638:8 | c1 | -2147483648 | -| test.c:638:13:638:14 | c5 | -2147483648 | -| test.c:638:19:638:19 | x | 0 | -| test.c:639:7:639:8 | c2 | -2147483648 | -| test.c:639:13:639:14 | c3 | -2147483648 | -| test.c:639:19:639:19 | x | 0 | -| test.c:641:11:641:11 | x | 0 | -| test.c:641:15:641:15 | x | 0 | -| test.c:641:19:641:19 | x | 0 | -| test.c:641:23:641:23 | x | 0 | -| test.c:641:27:641:27 | x | 0 | -| test.c:641:31:641:31 | x | 0 | -| test.c:641:35:641:35 | x | 0 | -| test.c:641:39:641:39 | x | 0 | -| test.c:641:43:641:43 | x | 0 | -| test.c:641:47:641:47 | x | 0 | -| test.c:641:51:641:51 | x | 0 | -| test.c:641:55:641:55 | x | 0 | -| test.c:642:10:642:10 | y | -2147483648 | -| test.c:647:20:647:20 | x | 0 | -| test.c:647:30:647:30 | x | 0 | -| test.c:650:3:650:4 | y1 | 0 | -| test.c:650:11:650:11 | y | 0 | -| test.c:650:14:650:14 | y | 1 | -| test.c:651:3:651:4 | y2 | 0 | -| test.c:651:9:651:9 | y | 1 | -| test.c:651:14:651:14 | y | 2 | -| test.c:651:22:651:22 | y | 5 | -| test.c:652:10:652:11 | y1 | 1 | -| test.c:652:15:652:16 | y2 | 5 | -| test.c:660:3:660:3 | i | -2147483648 | -| test.c:661:7:661:7 | i | 10 | -| test.c:663:3:663:3 | i | -2147483648 | -| test.c:664:3:664:3 | i | 10 | -| test.c:665:7:665:7 | i | 20 | -| test.c:667:3:667:3 | i | -2147483648 | -| test.c:668:3:668:3 | i | 40 | -| test.c:669:7:669:7 | i | 30 | -| test.c:671:3:671:3 | i | -2147483648 | -| test.c:671:7:671:7 | j | -2147483648 | -| test.c:672:7:672:7 | i | 40 | -| test.c:674:3:674:3 | i | -2147483648 | -| test.c:674:8:674:8 | j | 40 | -| test.c:675:7:675:7 | i | 50 | +| test.c:609:34:609:35 | ip | 0 | +| test.c:610:16:610:17 | ip | 0 | +| test.c:611:20:611:21 | ip | 0 | +| test.c:612:20:612:21 | ip | 0 | +| test.c:613:21:613:22 | ip | 0 | +| test.c:614:26:614:27 | ip | 0 | +| test.c:614:37:614:38 | ip | 0 | +| test.c:614:52:614:53 | ip | 0 | +| test.c:614:63:614:64 | ip | 0 | +| test.c:615:24:615:25 | ip | 0 | +| test.c:616:29:616:30 | ip | 0 | +| test.c:616:40:616:41 | ip | 0 | +| test.c:617:31:617:32 | ip | 0 | +| test.c:618:26:618:27 | ip | 0 | +| test.c:619:19:619:20 | ip | 0 | +| test.c:619:25:619:26 | ip | 0 | +| test.c:619:45:619:46 | ip | 0 | +| test.c:619:51:619:52 | ip | 0 | +| test.c:620:18:620:19 | ip | 0 | +| test.c:621:18:621:19 | ip | 0 | +| test.c:622:18:622:19 | ip | 0 | +| test.c:623:19:623:20 | ip | 0 | +| test.c:624:24:624:25 | ip | 0 | +| test.c:624:35:624:36 | ip | 0 | +| test.c:624:50:624:51 | ip | 0 | +| test.c:624:61:624:62 | ip | 0 | +| test.c:625:22:625:23 | ip | 0 | +| test.c:626:27:626:28 | ip | 0 | +| test.c:626:38:626:39 | ip | 0 | +| test.c:627:29:627:30 | ip | 0 | +| test.c:628:24:628:25 | ip | 0 | +| test.c:629:18:629:19 | ip | 0 | +| test.c:629:24:629:25 | ip | 0 | +| test.c:630:20:630:21 | ip | 0 | +| test.c:631:16:631:17 | ip | 0 | +| test.c:632:10:632:23 | special_number | 0 | +| test.c:640:7:640:8 | c1 | -2147483648 | +| test.c:640:13:640:13 | x | 0 | +| test.c:641:7:641:8 | c2 | -2147483648 | +| test.c:641:13:641:13 | x | 0 | +| test.c:642:7:642:8 | c3 | -2147483648 | +| test.c:642:13:642:13 | x | 0 | +| test.c:643:7:643:8 | c4 | -2147483648 | +| test.c:643:13:643:13 | x | 0 | +| test.c:644:7:644:8 | c5 | -2147483648 | +| test.c:644:13:644:13 | x | 0 | +| test.c:645:7:645:8 | c1 | -2147483648 | +| test.c:645:13:645:14 | c2 | -2147483648 | +| test.c:645:19:645:19 | x | 0 | +| test.c:646:7:646:8 | c1 | -2147483648 | +| test.c:646:13:646:14 | c3 | -2147483648 | +| test.c:646:19:646:19 | x | 0 | +| test.c:647:7:647:8 | c1 | -2147483648 | +| test.c:647:13:647:14 | c4 | -2147483648 | +| test.c:647:19:647:19 | x | 0 | +| test.c:648:7:648:8 | c1 | -2147483648 | +| test.c:648:13:648:14 | c5 | -2147483648 | +| test.c:648:19:648:19 | x | 0 | +| test.c:649:7:649:8 | c2 | -2147483648 | +| test.c:649:13:649:14 | c3 | -2147483648 | +| test.c:649:19:649:19 | x | 0 | +| test.c:651:11:651:11 | x | 0 | +| test.c:651:15:651:15 | x | 0 | +| test.c:651:19:651:19 | x | 0 | +| test.c:651:23:651:23 | x | 0 | +| test.c:651:27:651:27 | x | 0 | +| test.c:651:31:651:31 | x | 0 | +| test.c:651:35:651:35 | x | 0 | +| test.c:651:39:651:39 | x | 0 | +| test.c:651:43:651:43 | x | 0 | +| test.c:651:47:651:47 | x | 0 | +| test.c:651:51:651:51 | x | 0 | +| test.c:651:55:651:55 | x | 0 | +| test.c:652:10:652:10 | y | -2147483648 | +| test.c:657:20:657:20 | x | 0 | +| test.c:657:30:657:30 | x | 0 | +| test.c:660:3:660:4 | y1 | 0 | +| test.c:660:11:660:11 | y | 0 | +| test.c:660:14:660:14 | y | 1 | +| test.c:661:3:661:4 | y2 | 0 | +| test.c:661:9:661:9 | y | 1 | +| test.c:661:14:661:14 | y | 2 | +| test.c:661:22:661:22 | y | 5 | +| test.c:662:10:662:11 | y1 | 1 | +| test.c:662:15:662:16 | y2 | 5 | +| test.c:670:3:670:3 | i | -2147483648 | +| test.c:671:7:671:7 | i | 10 | +| test.c:673:3:673:3 | i | -2147483648 | +| test.c:674:3:674:3 | i | 10 | +| test.c:675:7:675:7 | i | 20 | | test.c:677:3:677:3 | i | -2147483648 | -| test.c:677:13:677:13 | j | 50 | -| test.c:678:7:678:7 | i | 60 | -| test.c:685:12:685:12 | a | 0 | -| test.c:685:17:685:17 | a | 3 | -| test.c:685:33:685:33 | b | 0 | -| test.c:685:38:685:38 | b | 5 | -| test.c:686:13:686:13 | a | 3 | -| test.c:686:15:686:15 | b | 5 | -| test.c:687:5:687:9 | total | 0 | -| test.c:687:14:687:14 | r | 15 | -| test.c:689:12:689:12 | a | 0 | -| test.c:689:17:689:17 | a | 3 | -| test.c:689:33:689:33 | b | 0 | -| test.c:689:38:689:38 | b | 0 | -| test.c:690:13:690:13 | a | 3 | -| test.c:690:15:690:15 | b | 0 | -| test.c:691:5:691:9 | total | 0 | -| test.c:691:14:691:14 | r | 0 | -| test.c:693:12:693:12 | a | 0 | -| test.c:693:17:693:17 | a | 3 | -| test.c:693:34:693:34 | b | 0 | -| test.c:693:39:693:39 | b | 13 | -| test.c:694:13:694:13 | a | 3 | -| test.c:694:15:694:15 | b | 13 | -| test.c:695:5:695:9 | total | 0 | -| test.c:695:14:695:14 | r | 39 | -| test.c:698:10:698:14 | total | 0 | -| test.c:704:12:704:12 | b | 0 | -| test.c:704:17:704:17 | b | 5 | -| test.c:705:16:705:16 | b | 5 | -| test.c:706:5:706:9 | total | 0 | -| test.c:706:14:706:14 | r | 55 | -| test.c:708:12:708:12 | b | 0 | -| test.c:708:17:708:17 | b | 0 | -| test.c:709:16:709:16 | b | 0 | -| test.c:710:5:710:9 | total | 0 | -| test.c:710:14:710:14 | r | 0 | -| test.c:712:13:712:13 | b | 0 | -| test.c:712:18:712:18 | b | 13 | -| test.c:713:16:713:16 | b | 13 | -| test.c:714:5:714:9 | total | 0 | -| test.c:714:14:714:14 | r | 143 | -| test.c:717:10:717:14 | total | 0 | -| test.c:722:3:722:3 | x | 0 | -| test.c:722:7:722:7 | y | 0 | -| test.c:723:3:723:4 | xy | 0 | -| test.c:723:8:723:8 | x | 1000000003 | -| test.c:723:12:723:12 | y | 1000000003 | -| test.c:724:10:724:11 | xy | 1000000006000000000 | -| test.c:729:3:729:3 | x | 0 | -| test.c:730:3:730:3 | y | 0 | -| test.c:731:3:731:4 | xy | 0 | -| test.c:731:8:731:8 | x | 274177 | -| test.c:731:12:731:12 | y | 67280421310721 | -| test.c:732:10:732:11 | xy | 18446744073709551616 | -| test.c:736:7:736:8 | ui | 0 | -| test.c:737:43:737:44 | ui | 10 | -| test.c:737:48:737:49 | ui | 10 | -| test.c:738:12:738:17 | result | 100 | -| test.c:740:7:740:8 | ul | 0 | -| test.c:741:28:741:29 | ul | 10 | -| test.c:741:33:741:34 | ul | 10 | -| test.c:742:12:742:17 | result | 0 | -| test.c:748:7:748:8 | ui | 0 | -| test.c:748:19:748:20 | ui | 0 | -| test.c:749:5:749:6 | ui | 2 | -| test.c:749:11:749:12 | ui | 2 | -| test.c:750:12:750:13 | ui | 4 | -| test.c:754:3:754:9 | uiconst | 10 | -| test.c:757:3:757:9 | ulconst | 10 | -| test.c:758:10:758:16 | uiconst | 40 | -| test.c:758:20:758:26 | ulconst | 40 | -| test.c:762:7:762:7 | i | -2147483648 | -| test.c:762:18:762:18 | i | -1 | -| test.c:763:5:763:5 | i | -2147483648 | -| test.c:763:13:763:13 | i | -1 | -| test.c:764:9:764:9 | i | -5 | -| test.c:766:5:766:5 | i | -2147483648 | -| test.c:766:9:766:9 | i | -5 | -| test.c:767:9:767:9 | i | -30 | -| test.c:769:5:769:5 | i | -30 | -| test.c:770:9:770:9 | i | -210 | -| test.c:772:5:772:5 | i | -210 | -| test.c:773:9:773:9 | i | -1155 | -| test.c:775:7:775:7 | i | -2147483648 | +| test.c:678:3:678:3 | i | 40 | +| test.c:679:7:679:7 | i | 30 | +| test.c:681:3:681:3 | i | -2147483648 | +| test.c:681:7:681:7 | j | -2147483648 | +| test.c:682:7:682:7 | i | 40 | +| test.c:684:3:684:3 | i | -2147483648 | +| test.c:684:8:684:8 | j | 40 | +| test.c:685:7:685:7 | i | 50 | +| test.c:687:3:687:3 | i | -2147483648 | +| test.c:687:13:687:13 | j | 50 | +| test.c:688:7:688:7 | i | 60 | +| test.c:695:12:695:12 | a | 0 | +| test.c:695:17:695:17 | a | 3 | +| test.c:695:33:695:33 | b | 0 | +| test.c:695:38:695:38 | b | 5 | +| test.c:696:13:696:13 | a | 3 | +| test.c:696:15:696:15 | b | 5 | +| test.c:697:5:697:9 | total | 0 | +| test.c:697:14:697:14 | r | 15 | +| test.c:699:12:699:12 | a | 0 | +| test.c:699:17:699:17 | a | 3 | +| test.c:699:33:699:33 | b | 0 | +| test.c:699:38:699:38 | b | 0 | +| test.c:700:13:700:13 | a | 3 | +| test.c:700:15:700:15 | b | 0 | +| test.c:701:5:701:9 | total | 0 | +| test.c:701:14:701:14 | r | 0 | +| test.c:703:12:703:12 | a | 0 | +| test.c:703:17:703:17 | a | 3 | +| test.c:703:34:703:34 | b | 0 | +| test.c:703:39:703:39 | b | 13 | +| test.c:704:13:704:13 | a | 3 | +| test.c:704:15:704:15 | b | 13 | +| test.c:705:5:705:9 | total | 0 | +| test.c:705:14:705:14 | r | 39 | +| test.c:708:10:708:14 | total | 0 | +| test.c:714:12:714:12 | b | 0 | +| test.c:714:17:714:17 | b | 5 | +| test.c:715:16:715:16 | b | 5 | +| test.c:716:5:716:9 | total | 0 | +| test.c:716:14:716:14 | r | 55 | +| test.c:718:12:718:12 | b | 0 | +| test.c:718:17:718:17 | b | 0 | +| test.c:719:16:719:16 | b | 0 | +| test.c:720:5:720:9 | total | 0 | +| test.c:720:14:720:14 | r | 0 | +| test.c:722:13:722:13 | b | 0 | +| test.c:722:18:722:18 | b | 13 | +| test.c:723:16:723:16 | b | 13 | +| test.c:724:5:724:9 | total | 0 | +| test.c:724:14:724:14 | r | 143 | +| test.c:727:10:727:14 | total | 0 | +| test.c:732:3:732:3 | x | 0 | +| test.c:732:7:732:7 | y | 0 | +| test.c:733:3:733:4 | xy | 0 | +| test.c:733:8:733:8 | x | 1000000003 | +| test.c:733:12:733:12 | y | 1000000003 | +| test.c:734:10:734:11 | xy | 1000000006000000000 | +| test.c:739:3:739:3 | x | 0 | +| test.c:740:3:740:3 | y | 0 | +| test.c:741:3:741:4 | xy | 0 | +| test.c:741:8:741:8 | x | 274177 | +| test.c:741:12:741:12 | y | 67280421310721 | +| test.c:742:10:742:11 | xy | 18446744073709551616 | +| test.c:746:7:746:8 | ui | 0 | +| test.c:747:43:747:44 | ui | 10 | +| test.c:747:48:747:49 | ui | 10 | +| test.c:748:12:748:17 | result | 100 | +| test.c:750:7:750:8 | ul | 0 | +| test.c:751:28:751:29 | ul | 10 | +| test.c:751:33:751:34 | ul | 10 | +| test.c:752:12:752:17 | result | 0 | +| test.c:758:7:758:8 | ui | 0 | +| test.c:758:19:758:20 | ui | 0 | +| test.c:759:5:759:6 | ui | 2 | +| test.c:759:11:759:12 | ui | 2 | +| test.c:760:12:760:13 | ui | 4 | +| test.c:764:3:764:9 | uiconst | 10 | +| test.c:767:3:767:9 | ulconst | 10 | +| test.c:768:10:768:16 | uiconst | 40 | +| test.c:768:20:768:26 | ulconst | 40 | +| test.c:772:7:772:7 | i | -2147483648 | +| test.c:772:18:772:18 | i | -1 | +| test.c:773:5:773:5 | i | -2147483648 | +| test.c:773:13:773:13 | i | -1 | +| test.c:774:9:774:9 | i | -5 | | test.c:776:5:776:5 | i | -2147483648 | -| test.c:776:9:776:9 | i | -1 | -| test.c:777:9:777:9 | i | 1 | -| test.c:779:3:779:3 | i | -2147483648 | -| test.c:779:7:779:7 | i | -2147483648 | -| test.c:780:10:780:10 | i | -2147483648 | -| test.c:783:3:783:3 | i | -2147483648 | -| test.c:783:10:783:11 | sc | 1 | -| test.c:785:7:785:7 | i | -128 | -| test.c:792:7:792:7 | n | 0 | -| test.c:794:7:794:7 | n | 0 | -| test.c:795:9:795:9 | n | 1 | -| test.c:798:7:798:7 | n | 0 | -| test.c:799:9:799:9 | n | 1 | -| test.c:801:9:801:9 | n | 0 | -| test.c:804:8:804:8 | n | 0 | -| test.c:805:9:805:9 | n | 0 | -| test.c:807:9:807:9 | n | 1 | -| test.c:810:10:810:10 | n | 0 | -| test.c:811:5:811:5 | n | 1 | -| test.c:814:7:814:7 | n | 0 | -| test.c:818:7:818:7 | n | -32768 | -| test.c:821:7:821:7 | n | 0 | -| test.c:822:9:822:9 | n | 0 | -| test.c:824:9:824:9 | n | 1 | -| test.c:827:7:827:7 | n | 0 | -| test.c:828:9:828:9 | n | 1 | -| test.c:830:9:830:9 | n | 0 | -| test.c:833:10:833:10 | n | 0 | -| test.c:834:5:834:5 | n | 1 | +| test.c:776:9:776:9 | i | -5 | +| test.c:777:9:777:9 | i | -30 | +| test.c:779:5:779:5 | i | -30 | +| test.c:780:9:780:9 | i | -210 | +| test.c:782:5:782:5 | i | -210 | +| test.c:783:9:783:9 | i | -1155 | +| test.c:785:7:785:7 | i | -2147483648 | +| test.c:786:5:786:5 | i | -2147483648 | +| test.c:786:9:786:9 | i | -1 | +| test.c:787:9:787:9 | i | 1 | +| test.c:789:3:789:3 | i | -2147483648 | +| test.c:789:7:789:7 | i | -2147483648 | +| test.c:790:10:790:10 | i | -2147483648 | +| test.c:793:3:793:3 | i | -2147483648 | +| test.c:793:10:793:11 | sc | 1 | +| test.c:795:7:795:7 | i | -128 | +| test.c:802:7:802:7 | n | 0 | +| test.c:804:7:804:7 | n | 0 | +| test.c:805:9:805:9 | n | 1 | +| test.c:808:7:808:7 | n | 0 | +| test.c:809:9:809:9 | n | 1 | +| test.c:811:9:811:9 | n | 0 | +| test.c:814:8:814:8 | n | 0 | +| test.c:815:9:815:9 | n | 0 | +| test.c:817:9:817:9 | n | 1 | +| test.c:820:10:820:10 | n | 0 | +| test.c:821:5:821:5 | n | 1 | +| test.c:824:7:824:7 | n | 0 | +| test.c:828:7:828:7 | n | -32768 | +| test.c:831:7:831:7 | n | 0 | +| test.c:832:9:832:9 | n | 0 | +| test.c:834:9:834:9 | n | 1 | | test.c:837:7:837:7 | n | 0 | -| test.c:841:7:841:7 | n | -32768 | -| test.c:842:9:842:9 | n | -32768 | -| test.c:843:11:843:11 | n | 0 | -| test.c:847:7:847:7 | n | -32768 | -| test.c:848:13:848:13 | n | 5 | -| test.c:851:9:851:9 | n | 6 | -| test.c:854:7:854:7 | n | -32768 | -| test.c:854:22:854:22 | n | -32767 | -| test.c:855:9:855:9 | n | -32766 | -| test.c:858:7:858:7 | n | -32768 | -| test.c:859:5:859:5 | n | 0 | -| test.c:859:10:859:10 | n | 1 | -| test.c:859:14:859:14 | n | 0 | -| test.c:860:6:860:6 | n | 0 | -| test.c:860:10:860:10 | n | 0 | -| test.c:860:14:860:14 | n | 1 | -| test.c:871:7:871:8 | ss | -32768 | -| test.c:872:9:872:10 | ss | 0 | -| test.c:875:7:875:8 | ss | -32768 | -| test.c:876:9:876:10 | ss | -32768 | -| test.c:879:14:879:15 | us | 0 | -| test.c:880:9:880:10 | us | 0 | -| test.c:883:14:883:15 | us | 0 | -| test.c:884:9:884:10 | us | 0 | -| test.c:887:7:887:8 | ss | -32768 | -| test.c:888:9:888:10 | ss | -32768 | -| test.c:891:7:891:8 | ss | -32768 | -| test.c:892:9:892:10 | ss | -1 | -| test.c:898:8:898:8 | s | -2147483648 | -| test.c:898:15:898:15 | s | 0 | -| test.c:898:23:898:23 | s | 0 | -| test.c:899:18:899:18 | s | 0 | -| test.c:899:22:899:22 | s | 0 | -| test.c:900:9:900:14 | result | 0 | -| test.c:906:7:906:7 | i | 0 | -| test.c:907:9:907:9 | i | -2147483648 | -| test.c:911:7:911:7 | u | 0 | -| test.c:912:9:912:9 | u | 0 | -| test.c:917:12:917:12 | s | -2147483648 | -| test.c:918:7:918:8 | s2 | -4 | -| test.c:923:7:923:7 | x | -2147483648 | -| test.c:924:9:924:9 | y | -2147483648 | -| test.c:928:7:928:7 | y | -2147483648 | -| test.c:937:7:937:7 | x | -2147483648 | -| test.c:942:7:942:7 | x | -2147483648 | -| test.c:949:8:949:8 | x | 2147483647 | -| test.c:949:12:949:12 | y | 256 | -| test.c:950:9:950:9 | x | 2147483647 | -| test.c:951:9:951:9 | y | 256 | +| test.c:838:9:838:9 | n | 1 | +| test.c:840:9:840:9 | n | 0 | +| test.c:843:10:843:10 | n | 0 | +| test.c:844:5:844:5 | n | 1 | +| test.c:847:7:847:7 | n | 0 | +| test.c:851:7:851:7 | n | -32768 | +| test.c:852:9:852:9 | n | -32768 | +| test.c:853:11:853:11 | n | 0 | +| test.c:857:7:857:7 | n | -32768 | +| test.c:858:13:858:13 | n | 5 | +| test.c:861:9:861:9 | n | 6 | +| test.c:864:7:864:7 | n | -32768 | +| test.c:864:22:864:22 | n | -32767 | +| test.c:865:9:865:9 | n | -32766 | +| test.c:868:7:868:7 | n | -32768 | +| test.c:869:5:869:5 | n | 0 | +| test.c:869:10:869:10 | n | 1 | +| test.c:869:14:869:14 | n | 0 | +| test.c:870:6:870:6 | n | 0 | +| test.c:870:10:870:10 | n | 0 | +| test.c:870:14:870:14 | n | 1 | +| test.c:881:7:881:8 | ss | -32768 | +| test.c:882:9:882:10 | ss | 0 | +| test.c:885:7:885:8 | ss | -32768 | +| test.c:886:9:886:10 | ss | -32768 | +| test.c:889:14:889:15 | us | 0 | +| test.c:890:9:890:10 | us | 0 | +| test.c:893:14:893:15 | us | 0 | +| test.c:894:9:894:10 | us | 0 | +| test.c:897:7:897:8 | ss | -32768 | +| test.c:898:9:898:10 | ss | -32768 | +| test.c:901:7:901:8 | ss | -32768 | +| test.c:902:9:902:10 | ss | -1 | +| test.c:908:8:908:8 | s | -2147483648 | +| test.c:908:15:908:15 | s | 0 | +| test.c:908:23:908:23 | s | 0 | +| test.c:909:18:909:18 | s | 0 | +| test.c:909:22:909:22 | s | 0 | +| test.c:910:9:910:14 | result | 0 | +| test.c:916:7:916:7 | i | 0 | +| test.c:917:9:917:9 | i | -2147483648 | +| test.c:921:7:921:7 | u | 0 | +| test.c:922:9:922:9 | u | 0 | +| test.c:927:12:927:12 | s | -2147483648 | +| test.c:928:7:928:8 | s2 | -4 | +| test.c:933:7:933:7 | x | -2147483648 | +| test.c:934:9:934:9 | y | -2147483648 | +| test.c:938:7:938:7 | y | -2147483648 | +| test.c:947:7:947:7 | x | -2147483648 | +| test.c:952:7:952:7 | x | -2147483648 | +| test.c:959:8:959:8 | x | 2147483647 | +| test.c:959:12:959:12 | y | 256 | +| test.c:960:9:960:9 | x | 2147483647 | +| test.c:961:9:961:9 | y | 256 | | test.cpp:10:7:10:7 | b | -2147483648 | | test.cpp:11:5:11:5 | x | -2147483648 | | test.cpp:13:10:13:10 | x | -2147483648 | diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected index 0d30eb30f75..21d139a51a5 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected @@ -967,3490 +967,3499 @@ estimateNrOfBounds | test.c:330:5:330:14 | ... += ... | 16.0 | | test.c:330:14:330:14 | r | 1.0 | | test.c:333:10:333:14 | total | 32.0 | -| test.c:337:13:337:14 | 0 | 1.0 | -| test.c:338:7:338:7 | x | 1.0 | -| test.c:338:7:338:11 | ... < ... | 1.0 | -| test.c:338:11:338:11 | 0 | 1.0 | -| test.c:339:12:339:13 | - ... | 1.0 | -| test.c:339:13:339:13 | 1 | 1.0 | -| test.c:342:10:342:10 | i | 13.0 | -| test.c:342:10:342:14 | ... < ... | 1.0 | -| test.c:342:14:342:14 | 3 | 1.0 | -| test.c:343:5:343:5 | i | 13.0 | -| test.c:343:5:343:7 | ... ++ | 13.0 | -| test.c:345:3:345:3 | d | 1.0 | -| test.c:345:3:345:7 | ... = ... | 13.0 | -| test.c:345:7:345:7 | i | 13.0 | -| test.c:346:7:346:7 | x | 1.0 | -| test.c:346:7:346:11 | ... < ... | 1.0 | -| test.c:346:11:346:11 | 0 | 1.0 | -| test.c:347:9:347:9 | d | 13.0 | -| test.c:347:9:347:14 | ... > ... | 1.0 | -| test.c:347:13:347:14 | - ... | 1.0 | -| test.c:347:14:347:14 | x | 1.0 | -| test.c:348:14:348:14 | 1 | 1.0 | -| test.c:351:10:351:10 | 0 | 1.0 | -| test.c:357:3:357:4 | y1 | 1.0 | -| test.c:357:3:357:23 | ... = ... | 1.0 | -| test.c:357:8:357:8 | x | 1.0 | -| test.c:357:8:357:14 | ... < ... | 1.0 | -| test.c:357:8:357:23 | ... ? ... : ... | 1.0 | -| test.c:357:12:357:14 | 100 | 1.0 | -| test.c:357:12:357:14 | (unsigned int)... | 1.0 | -| test.c:357:18:357:18 | x | 1.0 | -| test.c:357:22:357:23 | 10 | 1.0 | -| test.c:357:22:357:23 | (unsigned int)... | 1.0 | -| test.c:358:3:358:4 | y2 | 1.0 | -| test.c:358:3:358:24 | ... = ... | 2.0 | -| test.c:358:8:358:8 | x | 2.0 | -| test.c:358:8:358:15 | ... >= ... | 1.0 | -| test.c:358:8:358:24 | ... ? ... : ... | 2.0 | -| test.c:358:13:358:15 | 100 | 1.0 | -| test.c:358:13:358:15 | (unsigned int)... | 1.0 | -| test.c:358:19:358:20 | 10 | 1.0 | -| test.c:358:19:358:20 | (unsigned int)... | 1.0 | -| test.c:358:24:358:24 | x | 2.0 | -| test.c:359:3:359:4 | y3 | 1.0 | -| test.c:359:3:359:8 | ... = ... | 1.0 | -| test.c:359:8:359:8 | 0 | 1.0 | -| test.c:359:8:359:8 | (unsigned int)... | 1.0 | -| test.c:360:3:360:4 | y4 | 1.0 | -| test.c:360:3:360:8 | ... = ... | 1.0 | -| test.c:360:8:360:8 | 0 | 1.0 | -| test.c:360:8:360:8 | (unsigned int)... | 1.0 | -| test.c:361:3:361:4 | y5 | 1.0 | -| test.c:361:3:361:8 | ... = ... | 1.0 | -| test.c:361:8:361:8 | 0 | 1.0 | -| test.c:361:8:361:8 | (unsigned int)... | 1.0 | -| test.c:362:3:362:4 | y6 | 1.0 | -| test.c:362:3:362:8 | ... = ... | 1.0 | -| test.c:362:8:362:8 | 0 | 1.0 | -| test.c:362:8:362:8 | (unsigned int)... | 1.0 | -| test.c:363:3:363:4 | y7 | 1.0 | -| test.c:363:3:363:8 | ... = ... | 1.0 | -| test.c:363:8:363:8 | 0 | 1.0 | -| test.c:363:8:363:8 | (unsigned int)... | 1.0 | -| test.c:364:3:364:4 | y8 | 1.0 | -| test.c:364:3:364:8 | ... = ... | 1.0 | -| test.c:364:8:364:8 | 0 | 1.0 | -| test.c:364:8:364:8 | (unsigned int)... | 1.0 | -| test.c:365:7:365:7 | x | 4.0 | -| test.c:365:7:365:13 | ... < ... | 1.0 | -| test.c:365:11:365:13 | 300 | 1.0 | -| test.c:365:11:365:13 | (unsigned int)... | 1.0 | -| test.c:366:5:366:6 | y3 | 1.0 | -| test.c:366:5:366:15 | ... = ... | 4.0 | -| test.c:366:10:366:10 | x | 4.0 | -| test.c:366:10:366:15 | ... ? ... : ... | 4.0 | -| test.c:366:15:366:15 | 5 | 1.0 | -| test.c:366:15:366:15 | (unsigned int)... | 1.0 | -| test.c:367:5:367:6 | y4 | 1.0 | -| test.c:367:5:367:17 | ... = ... | 4.0 | -| test.c:367:10:367:10 | x | 4.0 | -| test.c:367:10:367:17 | ... ? ... : ... | 4.0 | -| test.c:367:15:367:17 | 500 | 1.0 | -| test.c:367:15:367:17 | (unsigned int)... | 1.0 | -| test.c:368:5:368:6 | y5 | 1.0 | -| test.c:368:5:368:21 | ... = ... | 4.0 | -| test.c:368:10:368:14 | (...) | 4.0 | -| test.c:368:10:368:21 | ... ? ... : ... | 4.0 | -| test.c:368:11:368:11 | x | 4.0 | -| test.c:368:11:368:13 | ... + ... | 4.0 | -| test.c:368:13:368:13 | 1 | 1.0 | -| test.c:368:13:368:13 | (unsigned int)... | 1.0 | -| test.c:368:19:368:21 | 500 | 1.0 | -| test.c:368:19:368:21 | (unsigned int)... | 1.0 | -| test.c:369:5:369:6 | y6 | 1.0 | -| test.c:369:5:369:36 | ... = ... | 4.0 | -| test.c:369:10:369:31 | (...) | 4.0 | -| test.c:369:10:369:36 | (unsigned int)... | 4.0 | -| test.c:369:10:369:36 | ... ? ... : ... | 4.0 | -| test.c:369:11:369:30 | (unsigned char)... | 4.0 | -| test.c:369:26:369:30 | (...) | 4.0 | -| test.c:369:27:369:27 | x | 4.0 | -| test.c:369:27:369:29 | ... + ... | 4.0 | -| test.c:369:29:369:29 | 1 | 1.0 | -| test.c:369:29:369:29 | (unsigned int)... | 1.0 | -| test.c:369:36:369:36 | 5 | 1.0 | -| test.c:370:5:370:6 | y7 | 1.0 | -| test.c:370:5:370:38 | ... = ... | 4.0 | -| test.c:370:10:370:31 | (...) | 4.0 | -| test.c:370:10:370:38 | (unsigned int)... | 4.0 | -| test.c:370:10:370:38 | ... ? ... : ... | 4.0 | -| test.c:370:11:370:30 | (unsigned char)... | 4.0 | -| test.c:370:26:370:30 | (...) | 4.0 | -| test.c:370:27:370:27 | x | 4.0 | -| test.c:370:27:370:29 | ... + ... | 4.0 | -| test.c:370:29:370:29 | 1 | 1.0 | -| test.c:370:29:370:29 | (unsigned int)... | 1.0 | -| test.c:370:36:370:38 | 500 | 1.0 | -| test.c:371:5:371:6 | y8 | 1.0 | -| test.c:371:5:371:39 | ... = ... | 4.0 | -| test.c:371:10:371:32 | (...) | 4.0 | -| test.c:371:10:371:39 | (unsigned int)... | 4.0 | -| test.c:371:10:371:39 | ... ? ... : ... | 4.0 | -| test.c:371:11:371:31 | (unsigned short)... | 4.0 | -| test.c:371:27:371:31 | (...) | 4.0 | -| test.c:371:28:371:28 | x | 4.0 | -| test.c:371:28:371:30 | ... + ... | 4.0 | -| test.c:371:30:371:30 | 1 | 1.0 | -| test.c:371:30:371:30 | (unsigned int)... | 1.0 | -| test.c:371:37:371:39 | 500 | 1.0 | -| test.c:373:10:373:11 | y1 | 1.0 | -| test.c:373:10:373:16 | ... + ... | 2.0 | -| test.c:373:10:373:21 | ... + ... | 10.0 | -| test.c:373:10:373:26 | ... + ... | 50.0 | -| test.c:373:10:373:31 | ... + ... | 250.0 | -| test.c:373:10:373:36 | ... + ... | 1250.0 | -| test.c:373:10:373:41 | ... + ... | 6250.0 | -| test.c:373:10:373:46 | ... + ... | 31250.0 | -| test.c:373:15:373:16 | y2 | 2.0 | -| test.c:373:20:373:21 | y3 | 5.0 | -| test.c:373:25:373:26 | y4 | 5.0 | -| test.c:373:30:373:31 | y5 | 5.0 | -| test.c:373:35:373:36 | y6 | 5.0 | -| test.c:373:40:373:41 | y7 | 5.0 | -| test.c:373:45:373:46 | y8 | 5.0 | -| test.c:379:3:379:4 | y1 | 1.0 | -| test.c:379:3:379:24 | ... = ... | 1.0 | -| test.c:379:8:379:8 | x | 1.0 | -| test.c:379:8:379:14 | ... > ... | 1.0 | -| test.c:379:8:379:24 | ... ? ... : ... | 1.0 | -| test.c:379:12:379:14 | 100 | 1.0 | -| test.c:379:12:379:14 | (unsigned int)... | 1.0 | -| test.c:379:18:379:18 | x | 1.0 | -| test.c:379:22:379:24 | 110 | 1.0 | -| test.c:379:22:379:24 | (unsigned int)... | 1.0 | -| test.c:380:3:380:4 | y2 | 1.0 | -| test.c:380:3:380:25 | ... = ... | 2.0 | -| test.c:380:8:380:8 | x | 2.0 | -| test.c:380:8:380:15 | ... <= ... | 1.0 | -| test.c:380:8:380:25 | ... ? ... : ... | 2.0 | -| test.c:380:13:380:15 | 100 | 1.0 | -| test.c:380:13:380:15 | (unsigned int)... | 1.0 | -| test.c:380:19:380:21 | 110 | 1.0 | -| test.c:380:19:380:21 | (unsigned int)... | 1.0 | -| test.c:380:25:380:25 | x | 2.0 | -| test.c:381:3:381:4 | y3 | 1.0 | -| test.c:381:3:381:11 | ... = ... | 1.0 | -| test.c:381:8:381:11 | 1000 | 1.0 | -| test.c:381:8:381:11 | (unsigned int)... | 1.0 | -| test.c:382:3:382:4 | y4 | 1.0 | -| test.c:382:3:382:11 | ... = ... | 1.0 | -| test.c:382:8:382:11 | 1000 | 1.0 | -| test.c:382:8:382:11 | (unsigned int)... | 1.0 | -| test.c:383:3:383:4 | y5 | 1.0 | -| test.c:383:3:383:11 | ... = ... | 1.0 | -| test.c:383:8:383:11 | 1000 | 1.0 | -| test.c:383:8:383:11 | (unsigned int)... | 1.0 | -| test.c:384:7:384:7 | x | 4.0 | -| test.c:384:7:384:14 | ... >= ... | 1.0 | -| test.c:384:12:384:14 | 300 | 1.0 | -| test.c:384:12:384:14 | (unsigned int)... | 1.0 | -| test.c:385:5:385:6 | y3 | 1.0 | -| test.c:385:5:385:21 | ... = ... | 4.0 | -| test.c:385:10:385:16 | (...) | 4.0 | -| test.c:385:10:385:21 | ... ? ... : ... | 4.0 | -| test.c:385:11:385:11 | x | 4.0 | -| test.c:385:11:385:15 | ... - ... | 4.0 | -| test.c:385:13:385:15 | 300 | 1.0 | -| test.c:385:13:385:15 | (unsigned int)... | 1.0 | -| test.c:385:21:385:21 | 5 | 1.0 | -| test.c:385:21:385:21 | (unsigned int)... | 1.0 | -| test.c:386:5:386:6 | y4 | 1.0 | -| test.c:386:5:386:21 | ... = ... | 4.0 | -| test.c:386:10:386:16 | (...) | 4.0 | -| test.c:386:10:386:21 | ... ? ... : ... | 4.0 | -| test.c:386:11:386:11 | x | 4.0 | -| test.c:386:11:386:15 | ... - ... | 4.0 | -| test.c:386:13:386:15 | 200 | 1.0 | -| test.c:386:13:386:15 | (unsigned int)... | 1.0 | -| test.c:386:21:386:21 | 5 | 1.0 | -| test.c:386:21:386:21 | (unsigned int)... | 1.0 | -| test.c:387:5:387:6 | y5 | 1.0 | -| test.c:387:5:387:38 | ... = ... | 4.0 | -| test.c:387:10:387:33 | (...) | 4.0 | -| test.c:387:10:387:38 | (unsigned int)... | 4.0 | -| test.c:387:10:387:38 | ... ? ... : ... | 4.0 | -| test.c:387:11:387:32 | (unsigned char)... | 4.0 | -| test.c:387:26:387:32 | (...) | 4.0 | -| test.c:387:27:387:27 | x | 4.0 | -| test.c:387:27:387:31 | ... - ... | 4.0 | -| test.c:387:29:387:31 | 200 | 1.0 | -| test.c:387:29:387:31 | (unsigned int)... | 1.0 | -| test.c:387:38:387:38 | 5 | 1.0 | -| test.c:389:10:389:11 | y1 | 1.0 | -| test.c:389:10:389:16 | ... + ... | 2.0 | -| test.c:389:10:389:21 | ... + ... | 10.0 | -| test.c:389:10:389:26 | ... + ... | 50.0 | -| test.c:389:10:389:31 | ... + ... | 250.0 | -| test.c:389:15:389:16 | y2 | 2.0 | -| test.c:389:20:389:21 | y3 | 5.0 | -| test.c:389:25:389:26 | y4 | 5.0 | -| test.c:389:30:389:31 | y5 | 5.0 | -| test.c:394:14:394:14 | m | 1.0 | -| test.c:394:14:394:108 | ... ? ... : ... | 1.0 | -| test.c:394:18:394:18 | n | 1.0 | -| test.c:394:18:394:95 | ... ? ... : ... | 1.0 | -| test.c:394:22:394:22 | o | 1.0 | -| test.c:394:22:394:82 | ... ? ... : ... | 1.0 | -| test.c:394:26:394:26 | p | 1.0 | -| test.c:394:26:394:69 | ... ? ... : ... | 1.0 | -| test.c:394:30:394:30 | q | 1.0 | -| test.c:394:30:394:56 | ... ? ... : ... | 1.0 | -| test.c:394:34:394:43 | 0.4743882700000000008 | 1.0 | -| test.c:394:47:394:56 | 0.1433388700000000071 | 1.0 | -| test.c:394:60:394:69 | 0.3527920299999999787 | 1.0 | -| test.c:394:73:394:82 | 0.3920645799999999959 | 1.0 | -| test.c:394:86:394:95 | 0.2154022499999999896 | 1.0 | -| test.c:394:99:394:108 | 0.4049680500000000238 | 1.0 | -| test.c:395:14:395:14 | m | 2.0 | -| test.c:395:14:395:108 | ... ? ... : ... | 1.0 | -| test.c:395:18:395:18 | n | 3.0 | -| test.c:395:18:395:95 | ... ? ... : ... | 1.0 | -| test.c:395:22:395:22 | o | 3.0 | -| test.c:395:22:395:82 | ... ? ... : ... | 1.0 | -| test.c:395:26:395:26 | p | 3.0 | -| test.c:395:26:395:69 | ... ? ... : ... | 1.0 | -| test.c:395:30:395:30 | q | 3.0 | -| test.c:395:30:395:56 | ... ? ... : ... | 1.0 | -| test.c:395:34:395:43 | 0.3418334800000000229 | 1.0 | -| test.c:395:47:395:56 | 0.3533464000000000049 | 1.0 | -| test.c:395:60:395:69 | 0.2224785300000000077 | 1.0 | -| test.c:395:73:395:82 | 0.326618929999999974 | 1.0 | -| test.c:395:86:395:95 | 0.5927046500000000551 | 1.0 | -| test.c:395:99:395:108 | 0.5297741000000000255 | 1.0 | -| test.c:396:14:396:14 | m | 4.0 | -| test.c:396:14:396:108 | ... ? ... : ... | 1.0 | -| test.c:396:18:396:18 | n | 9.0 | -| test.c:396:18:396:95 | ... ? ... : ... | 1.0 | -| test.c:396:22:396:22 | o | 9.0 | -| test.c:396:22:396:82 | ... ? ... : ... | 1.0 | -| test.c:396:26:396:26 | p | 9.0 | -| test.c:396:26:396:69 | ... ? ... : ... | 1.0 | -| test.c:396:30:396:30 | q | 9.0 | -| test.c:396:30:396:56 | ... ? ... : ... | 1.0 | -| test.c:396:34:396:43 | 0.774296030000000024 | 1.0 | -| test.c:396:47:396:56 | 0.3147808400000000062 | 1.0 | -| test.c:396:60:396:69 | 0.3123551399999999756 | 1.0 | -| test.c:396:73:396:82 | 0.05121255999999999725 | 1.0 | -| test.c:396:86:396:95 | 0.7931074500000000471 | 1.0 | -| test.c:396:99:396:108 | 0.6798145100000000385 | 1.0 | -| test.c:397:14:397:14 | m | 8.0 | -| test.c:397:14:397:108 | ... ? ... : ... | 1.0 | -| test.c:397:18:397:18 | n | 27.0 | -| test.c:397:18:397:95 | ... ? ... : ... | 1.0 | -| test.c:397:22:397:22 | o | 27.0 | -| test.c:397:22:397:82 | ... ? ... : ... | 1.0 | -| test.c:397:26:397:26 | p | 27.0 | -| test.c:397:26:397:69 | ... ? ... : ... | 1.0 | -| test.c:397:30:397:30 | q | 27.0 | -| test.c:397:30:397:56 | ... ? ... : ... | 1.0 | -| test.c:397:34:397:43 | 0.4472955599999999809 | 1.0 | -| test.c:397:47:397:56 | 0.8059920200000000312 | 1.0 | -| test.c:397:60:397:69 | 0.9899726199999999698 | 1.0 | -| test.c:397:73:397:82 | 0.5995273199999999747 | 1.0 | -| test.c:397:86:397:95 | 0.3697694799999999837 | 1.0 | -| test.c:397:99:397:108 | 0.8386683499999999514 | 1.0 | -| test.c:398:14:398:14 | m | 16.0 | -| test.c:398:14:398:108 | ... ? ... : ... | 1.0 | -| test.c:398:18:398:18 | n | 81.0 | -| test.c:398:18:398:95 | ... ? ... : ... | 1.0 | -| test.c:398:22:398:22 | o | 81.0 | -| test.c:398:22:398:82 | ... ? ... : ... | 1.0 | -| test.c:398:26:398:26 | p | 81.0 | -| test.c:398:26:398:69 | ... ? ... : ... | 1.0 | -| test.c:398:30:398:30 | q | 81.0 | -| test.c:398:30:398:56 | ... ? ... : ... | 1.0 | -| test.c:398:34:398:43 | 0.4931182800000000199 | 1.0 | -| test.c:398:47:398:56 | 0.9038991100000000056 | 1.0 | -| test.c:398:60:398:69 | 0.1059771199999999941 | 1.0 | -| test.c:398:73:398:82 | 0.2177842600000000073 | 1.0 | -| test.c:398:86:398:95 | 0.7248596600000000167 | 1.0 | -| test.c:398:99:398:108 | 0.6873487400000000136 | 1.0 | -| test.c:399:14:399:14 | m | 32.0 | -| test.c:399:14:399:108 | ... ? ... : ... | 1.0 | -| test.c:399:18:399:18 | n | 243.0 | -| test.c:399:18:399:95 | ... ? ... : ... | 1.0 | -| test.c:399:22:399:22 | o | 243.0 | -| test.c:399:22:399:82 | ... ? ... : ... | 1.0 | -| test.c:399:26:399:26 | p | 243.0 | -| test.c:399:26:399:69 | ... ? ... : ... | 1.0 | -| test.c:399:30:399:30 | q | 243.0 | -| test.c:399:30:399:56 | ... ? ... : ... | 1.0 | -| test.c:399:34:399:43 | 0.4745284799999999747 | 1.0 | -| test.c:399:47:399:56 | 0.107866500000000004 | 1.0 | -| test.c:399:60:399:69 | 0.1188457599999999947 | 1.0 | -| test.c:399:73:399:82 | 0.7616405200000000431 | 1.0 | -| test.c:399:86:399:95 | 0.3480889200000000239 | 1.0 | -| test.c:399:99:399:108 | 0.584408649999999974 | 1.0 | -| test.c:400:14:400:14 | m | 64.0 | -| test.c:400:14:400:108 | ... ? ... : ... | 1.0 | -| test.c:400:18:400:18 | n | 729.0 | -| test.c:400:18:400:95 | ... ? ... : ... | 1.0 | -| test.c:400:22:400:22 | o | 729.0 | -| test.c:400:22:400:82 | ... ? ... : ... | 1.0 | -| test.c:400:26:400:26 | p | 729.0 | -| test.c:400:26:400:69 | ... ? ... : ... | 1.0 | -| test.c:400:30:400:30 | q | 729.0 | -| test.c:400:30:400:56 | ... ? ... : ... | 1.0 | -| test.c:400:34:400:43 | 0.02524326 | 1.0 | -| test.c:400:47:400:56 | 0.8290504600000000446 | 1.0 | -| test.c:400:60:400:69 | 0.95823075000000002 | 1.0 | -| test.c:400:73:400:82 | 0.1251655799999999985 | 1.0 | -| test.c:400:86:400:95 | 0.8523517900000000536 | 1.0 | -| test.c:400:99:400:108 | 0.3623238400000000081 | 1.0 | -| test.c:401:14:401:14 | m | 128.0 | -| test.c:401:14:401:108 | ... ? ... : ... | 1.0 | -| test.c:401:18:401:18 | n | 2187.0 | -| test.c:401:18:401:95 | ... ? ... : ... | 1.0 | -| test.c:401:22:401:22 | o | 2187.0 | -| test.c:401:22:401:82 | ... ? ... : ... | 1.0 | -| test.c:401:26:401:26 | p | 2187.0 | -| test.c:401:26:401:69 | ... ? ... : ... | 1.0 | -| test.c:401:30:401:30 | q | 2187.0 | -| test.c:401:30:401:56 | ... ? ... : ... | 1.0 | -| test.c:401:34:401:43 | 0.3870862600000000153 | 1.0 | -| test.c:401:47:401:56 | 0.3287604399999999871 | 1.0 | -| test.c:401:60:401:69 | 0.1496348500000000137 | 1.0 | -| test.c:401:73:401:82 | 0.4504110800000000192 | 1.0 | -| test.c:401:86:401:95 | 0.4864090899999999884 | 1.0 | -| test.c:401:99:401:108 | 0.8433127200000000157 | 1.0 | -| test.c:402:14:402:14 | m | 256.0 | -| test.c:402:14:402:108 | ... ? ... : ... | 1.0 | -| test.c:402:18:402:18 | n | 6561.0 | -| test.c:402:18:402:95 | ... ? ... : ... | 1.0 | -| test.c:402:22:402:22 | o | 6561.0 | -| test.c:402:22:402:82 | ... ? ... : ... | 1.0 | -| test.c:402:26:402:26 | p | 6561.0 | -| test.c:402:26:402:69 | ... ? ... : ... | 1.0 | -| test.c:402:30:402:30 | q | 6561.0 | -| test.c:402:30:402:56 | ... ? ... : ... | 1.0 | -| test.c:402:34:402:43 | 0.1575506299999999971 | 1.0 | -| test.c:402:47:402:56 | 0.7708683299999999905 | 1.0 | -| test.c:402:60:402:69 | 0.2642848099999999811 | 1.0 | -| test.c:402:73:402:82 | 0.1480050800000000111 | 1.0 | -| test.c:402:86:402:95 | 0.374281430000000026 | 1.0 | -| test.c:402:99:402:108 | 0.05328182000000000057 | 1.0 | -| test.c:403:14:403:14 | m | 512.0 | -| test.c:403:14:403:108 | ... ? ... : ... | 1.0 | -| test.c:403:18:403:18 | n | 19683.0 | -| test.c:403:18:403:95 | ... ? ... : ... | 1.0 | -| test.c:403:22:403:22 | o | 19683.0 | -| test.c:403:22:403:82 | ... ? ... : ... | 1.0 | -| test.c:403:26:403:26 | p | 19683.0 | -| test.c:403:26:403:69 | ... ? ... : ... | 1.0 | -| test.c:403:30:403:30 | q | 19683.0 | -| test.c:403:30:403:56 | ... ? ... : ... | 1.0 | -| test.c:403:34:403:43 | 0.4173653600000000186 | 1.0 | -| test.c:403:47:403:56 | 0.7682662799999999681 | 1.0 | -| test.c:403:60:403:69 | 0.2764323799999999776 | 1.0 | -| test.c:403:73:403:82 | 0.5567927400000000082 | 1.0 | -| test.c:403:86:403:95 | 0.3946885700000000163 | 1.0 | -| test.c:403:99:403:108 | 0.6907214400000000198 | 1.0 | -| test.c:404:14:404:14 | m | 1024.0 | +| test.c:339:28:339:43 | 9007199254740992 | 1.0 | +| test.c:339:28:339:47 | (unsigned long long)... | 1.0 | +| test.c:339:28:339:47 | ... - ... | 1.0 | +| test.c:339:47:339:47 | 1 | 1.0 | +| test.c:339:47:339:47 | (long)... | 1.0 | +| test.c:341:32:341:34 | odd | 1.0 | +| test.c:341:32:341:39 | ... >> ... | 1.0 | +| test.c:341:39:341:39 | 1 | 1.0 | +| test.c:343:10:343:16 | shifted | 1.0 | +| test.c:347:13:347:14 | 0 | 1.0 | +| test.c:348:7:348:7 | x | 1.0 | +| test.c:348:7:348:11 | ... < ... | 1.0 | +| test.c:348:11:348:11 | 0 | 1.0 | +| test.c:349:12:349:13 | - ... | 1.0 | +| test.c:349:13:349:13 | 1 | 1.0 | +| test.c:352:10:352:10 | i | 13.0 | +| test.c:352:10:352:14 | ... < ... | 1.0 | +| test.c:352:14:352:14 | 3 | 1.0 | +| test.c:353:5:353:5 | i | 13.0 | +| test.c:353:5:353:7 | ... ++ | 13.0 | +| test.c:355:3:355:3 | d | 1.0 | +| test.c:355:3:355:7 | ... = ... | 13.0 | +| test.c:355:7:355:7 | i | 13.0 | +| test.c:356:7:356:7 | x | 1.0 | +| test.c:356:7:356:11 | ... < ... | 1.0 | +| test.c:356:11:356:11 | 0 | 1.0 | +| test.c:357:9:357:9 | d | 13.0 | +| test.c:357:9:357:14 | ... > ... | 1.0 | +| test.c:357:13:357:14 | - ... | 1.0 | +| test.c:357:14:357:14 | x | 1.0 | +| test.c:358:14:358:14 | 1 | 1.0 | +| test.c:361:10:361:10 | 0 | 1.0 | +| test.c:367:3:367:4 | y1 | 1.0 | +| test.c:367:3:367:23 | ... = ... | 1.0 | +| test.c:367:8:367:8 | x | 1.0 | +| test.c:367:8:367:14 | ... < ... | 1.0 | +| test.c:367:8:367:23 | ... ? ... : ... | 1.0 | +| test.c:367:12:367:14 | 100 | 1.0 | +| test.c:367:12:367:14 | (unsigned int)... | 1.0 | +| test.c:367:18:367:18 | x | 1.0 | +| test.c:367:22:367:23 | 10 | 1.0 | +| test.c:367:22:367:23 | (unsigned int)... | 1.0 | +| test.c:368:3:368:4 | y2 | 1.0 | +| test.c:368:3:368:24 | ... = ... | 2.0 | +| test.c:368:8:368:8 | x | 2.0 | +| test.c:368:8:368:15 | ... >= ... | 1.0 | +| test.c:368:8:368:24 | ... ? ... : ... | 2.0 | +| test.c:368:13:368:15 | 100 | 1.0 | +| test.c:368:13:368:15 | (unsigned int)... | 1.0 | +| test.c:368:19:368:20 | 10 | 1.0 | +| test.c:368:19:368:20 | (unsigned int)... | 1.0 | +| test.c:368:24:368:24 | x | 2.0 | +| test.c:369:3:369:4 | y3 | 1.0 | +| test.c:369:3:369:8 | ... = ... | 1.0 | +| test.c:369:8:369:8 | 0 | 1.0 | +| test.c:369:8:369:8 | (unsigned int)... | 1.0 | +| test.c:370:3:370:4 | y4 | 1.0 | +| test.c:370:3:370:8 | ... = ... | 1.0 | +| test.c:370:8:370:8 | 0 | 1.0 | +| test.c:370:8:370:8 | (unsigned int)... | 1.0 | +| test.c:371:3:371:4 | y5 | 1.0 | +| test.c:371:3:371:8 | ... = ... | 1.0 | +| test.c:371:8:371:8 | 0 | 1.0 | +| test.c:371:8:371:8 | (unsigned int)... | 1.0 | +| test.c:372:3:372:4 | y6 | 1.0 | +| test.c:372:3:372:8 | ... = ... | 1.0 | +| test.c:372:8:372:8 | 0 | 1.0 | +| test.c:372:8:372:8 | (unsigned int)... | 1.0 | +| test.c:373:3:373:4 | y7 | 1.0 | +| test.c:373:3:373:8 | ... = ... | 1.0 | +| test.c:373:8:373:8 | 0 | 1.0 | +| test.c:373:8:373:8 | (unsigned int)... | 1.0 | +| test.c:374:3:374:4 | y8 | 1.0 | +| test.c:374:3:374:8 | ... = ... | 1.0 | +| test.c:374:8:374:8 | 0 | 1.0 | +| test.c:374:8:374:8 | (unsigned int)... | 1.0 | +| test.c:375:7:375:7 | x | 4.0 | +| test.c:375:7:375:13 | ... < ... | 1.0 | +| test.c:375:11:375:13 | 300 | 1.0 | +| test.c:375:11:375:13 | (unsigned int)... | 1.0 | +| test.c:376:5:376:6 | y3 | 1.0 | +| test.c:376:5:376:15 | ... = ... | 4.0 | +| test.c:376:10:376:10 | x | 4.0 | +| test.c:376:10:376:15 | ... ? ... : ... | 4.0 | +| test.c:376:15:376:15 | 5 | 1.0 | +| test.c:376:15:376:15 | (unsigned int)... | 1.0 | +| test.c:377:5:377:6 | y4 | 1.0 | +| test.c:377:5:377:17 | ... = ... | 4.0 | +| test.c:377:10:377:10 | x | 4.0 | +| test.c:377:10:377:17 | ... ? ... : ... | 4.0 | +| test.c:377:15:377:17 | 500 | 1.0 | +| test.c:377:15:377:17 | (unsigned int)... | 1.0 | +| test.c:378:5:378:6 | y5 | 1.0 | +| test.c:378:5:378:21 | ... = ... | 4.0 | +| test.c:378:10:378:14 | (...) | 4.0 | +| test.c:378:10:378:21 | ... ? ... : ... | 4.0 | +| test.c:378:11:378:11 | x | 4.0 | +| test.c:378:11:378:13 | ... + ... | 4.0 | +| test.c:378:13:378:13 | 1 | 1.0 | +| test.c:378:13:378:13 | (unsigned int)... | 1.0 | +| test.c:378:19:378:21 | 500 | 1.0 | +| test.c:378:19:378:21 | (unsigned int)... | 1.0 | +| test.c:379:5:379:6 | y6 | 1.0 | +| test.c:379:5:379:36 | ... = ... | 4.0 | +| test.c:379:10:379:31 | (...) | 4.0 | +| test.c:379:10:379:36 | (unsigned int)... | 4.0 | +| test.c:379:10:379:36 | ... ? ... : ... | 4.0 | +| test.c:379:11:379:30 | (unsigned char)... | 4.0 | +| test.c:379:26:379:30 | (...) | 4.0 | +| test.c:379:27:379:27 | x | 4.0 | +| test.c:379:27:379:29 | ... + ... | 4.0 | +| test.c:379:29:379:29 | 1 | 1.0 | +| test.c:379:29:379:29 | (unsigned int)... | 1.0 | +| test.c:379:36:379:36 | 5 | 1.0 | +| test.c:380:5:380:6 | y7 | 1.0 | +| test.c:380:5:380:38 | ... = ... | 4.0 | +| test.c:380:10:380:31 | (...) | 4.0 | +| test.c:380:10:380:38 | (unsigned int)... | 4.0 | +| test.c:380:10:380:38 | ... ? ... : ... | 4.0 | +| test.c:380:11:380:30 | (unsigned char)... | 4.0 | +| test.c:380:26:380:30 | (...) | 4.0 | +| test.c:380:27:380:27 | x | 4.0 | +| test.c:380:27:380:29 | ... + ... | 4.0 | +| test.c:380:29:380:29 | 1 | 1.0 | +| test.c:380:29:380:29 | (unsigned int)... | 1.0 | +| test.c:380:36:380:38 | 500 | 1.0 | +| test.c:381:5:381:6 | y8 | 1.0 | +| test.c:381:5:381:39 | ... = ... | 4.0 | +| test.c:381:10:381:32 | (...) | 4.0 | +| test.c:381:10:381:39 | (unsigned int)... | 4.0 | +| test.c:381:10:381:39 | ... ? ... : ... | 4.0 | +| test.c:381:11:381:31 | (unsigned short)... | 4.0 | +| test.c:381:27:381:31 | (...) | 4.0 | +| test.c:381:28:381:28 | x | 4.0 | +| test.c:381:28:381:30 | ... + ... | 4.0 | +| test.c:381:30:381:30 | 1 | 1.0 | +| test.c:381:30:381:30 | (unsigned int)... | 1.0 | +| test.c:381:37:381:39 | 500 | 1.0 | +| test.c:383:10:383:11 | y1 | 1.0 | +| test.c:383:10:383:16 | ... + ... | 2.0 | +| test.c:383:10:383:21 | ... + ... | 10.0 | +| test.c:383:10:383:26 | ... + ... | 50.0 | +| test.c:383:10:383:31 | ... + ... | 250.0 | +| test.c:383:10:383:36 | ... + ... | 1250.0 | +| test.c:383:10:383:41 | ... + ... | 6250.0 | +| test.c:383:10:383:46 | ... + ... | 31250.0 | +| test.c:383:15:383:16 | y2 | 2.0 | +| test.c:383:20:383:21 | y3 | 5.0 | +| test.c:383:25:383:26 | y4 | 5.0 | +| test.c:383:30:383:31 | y5 | 5.0 | +| test.c:383:35:383:36 | y6 | 5.0 | +| test.c:383:40:383:41 | y7 | 5.0 | +| test.c:383:45:383:46 | y8 | 5.0 | +| test.c:389:3:389:4 | y1 | 1.0 | +| test.c:389:3:389:24 | ... = ... | 1.0 | +| test.c:389:8:389:8 | x | 1.0 | +| test.c:389:8:389:14 | ... > ... | 1.0 | +| test.c:389:8:389:24 | ... ? ... : ... | 1.0 | +| test.c:389:12:389:14 | 100 | 1.0 | +| test.c:389:12:389:14 | (unsigned int)... | 1.0 | +| test.c:389:18:389:18 | x | 1.0 | +| test.c:389:22:389:24 | 110 | 1.0 | +| test.c:389:22:389:24 | (unsigned int)... | 1.0 | +| test.c:390:3:390:4 | y2 | 1.0 | +| test.c:390:3:390:25 | ... = ... | 2.0 | +| test.c:390:8:390:8 | x | 2.0 | +| test.c:390:8:390:15 | ... <= ... | 1.0 | +| test.c:390:8:390:25 | ... ? ... : ... | 2.0 | +| test.c:390:13:390:15 | 100 | 1.0 | +| test.c:390:13:390:15 | (unsigned int)... | 1.0 | +| test.c:390:19:390:21 | 110 | 1.0 | +| test.c:390:19:390:21 | (unsigned int)... | 1.0 | +| test.c:390:25:390:25 | x | 2.0 | +| test.c:391:3:391:4 | y3 | 1.0 | +| test.c:391:3:391:11 | ... = ... | 1.0 | +| test.c:391:8:391:11 | 1000 | 1.0 | +| test.c:391:8:391:11 | (unsigned int)... | 1.0 | +| test.c:392:3:392:4 | y4 | 1.0 | +| test.c:392:3:392:11 | ... = ... | 1.0 | +| test.c:392:8:392:11 | 1000 | 1.0 | +| test.c:392:8:392:11 | (unsigned int)... | 1.0 | +| test.c:393:3:393:4 | y5 | 1.0 | +| test.c:393:3:393:11 | ... = ... | 1.0 | +| test.c:393:8:393:11 | 1000 | 1.0 | +| test.c:393:8:393:11 | (unsigned int)... | 1.0 | +| test.c:394:7:394:7 | x | 4.0 | +| test.c:394:7:394:14 | ... >= ... | 1.0 | +| test.c:394:12:394:14 | 300 | 1.0 | +| test.c:394:12:394:14 | (unsigned int)... | 1.0 | +| test.c:395:5:395:6 | y3 | 1.0 | +| test.c:395:5:395:21 | ... = ... | 4.0 | +| test.c:395:10:395:16 | (...) | 4.0 | +| test.c:395:10:395:21 | ... ? ... : ... | 4.0 | +| test.c:395:11:395:11 | x | 4.0 | +| test.c:395:11:395:15 | ... - ... | 4.0 | +| test.c:395:13:395:15 | 300 | 1.0 | +| test.c:395:13:395:15 | (unsigned int)... | 1.0 | +| test.c:395:21:395:21 | 5 | 1.0 | +| test.c:395:21:395:21 | (unsigned int)... | 1.0 | +| test.c:396:5:396:6 | y4 | 1.0 | +| test.c:396:5:396:21 | ... = ... | 4.0 | +| test.c:396:10:396:16 | (...) | 4.0 | +| test.c:396:10:396:21 | ... ? ... : ... | 4.0 | +| test.c:396:11:396:11 | x | 4.0 | +| test.c:396:11:396:15 | ... - ... | 4.0 | +| test.c:396:13:396:15 | 200 | 1.0 | +| test.c:396:13:396:15 | (unsigned int)... | 1.0 | +| test.c:396:21:396:21 | 5 | 1.0 | +| test.c:396:21:396:21 | (unsigned int)... | 1.0 | +| test.c:397:5:397:6 | y5 | 1.0 | +| test.c:397:5:397:38 | ... = ... | 4.0 | +| test.c:397:10:397:33 | (...) | 4.0 | +| test.c:397:10:397:38 | (unsigned int)... | 4.0 | +| test.c:397:10:397:38 | ... ? ... : ... | 4.0 | +| test.c:397:11:397:32 | (unsigned char)... | 4.0 | +| test.c:397:26:397:32 | (...) | 4.0 | +| test.c:397:27:397:27 | x | 4.0 | +| test.c:397:27:397:31 | ... - ... | 4.0 | +| test.c:397:29:397:31 | 200 | 1.0 | +| test.c:397:29:397:31 | (unsigned int)... | 1.0 | +| test.c:397:38:397:38 | 5 | 1.0 | +| test.c:399:10:399:11 | y1 | 1.0 | +| test.c:399:10:399:16 | ... + ... | 2.0 | +| test.c:399:10:399:21 | ... + ... | 10.0 | +| test.c:399:10:399:26 | ... + ... | 50.0 | +| test.c:399:10:399:31 | ... + ... | 250.0 | +| test.c:399:15:399:16 | y2 | 2.0 | +| test.c:399:20:399:21 | y3 | 5.0 | +| test.c:399:25:399:26 | y4 | 5.0 | +| test.c:399:30:399:31 | y5 | 5.0 | +| test.c:404:14:404:14 | m | 1.0 | | test.c:404:14:404:108 | ... ? ... : ... | 1.0 | -| test.c:404:18:404:18 | n | 59049.0 | +| test.c:404:18:404:18 | n | 1.0 | | test.c:404:18:404:95 | ... ? ... : ... | 1.0 | -| test.c:404:22:404:22 | o | 59049.0 | +| test.c:404:22:404:22 | o | 1.0 | | test.c:404:22:404:82 | ... ? ... : ... | 1.0 | -| test.c:404:26:404:26 | p | 59049.0 | +| test.c:404:26:404:26 | p | 1.0 | | test.c:404:26:404:69 | ... ? ... : ... | 1.0 | -| test.c:404:30:404:30 | q | 59049.0 | +| test.c:404:30:404:30 | q | 1.0 | | test.c:404:30:404:56 | ... ? ... : ... | 1.0 | -| test.c:404:34:404:43 | 0.8895534499999999678 | 1.0 | -| test.c:404:47:404:56 | 0.2990482400000000207 | 1.0 | -| test.c:404:60:404:69 | 0.7624258299999999711 | 1.0 | -| test.c:404:73:404:82 | 0.2051910999999999874 | 1.0 | -| test.c:404:86:404:95 | 0.8874555899999999609 | 1.0 | -| test.c:404:99:404:108 | 0.8137279800000000174 | 1.0 | -| test.c:405:14:405:14 | m | 2048.0 | +| test.c:404:34:404:43 | 0.4743882700000000008 | 1.0 | +| test.c:404:47:404:56 | 0.1433388700000000071 | 1.0 | +| test.c:404:60:404:69 | 0.3527920299999999787 | 1.0 | +| test.c:404:73:404:82 | 0.3920645799999999959 | 1.0 | +| test.c:404:86:404:95 | 0.2154022499999999896 | 1.0 | +| test.c:404:99:404:108 | 0.4049680500000000238 | 1.0 | +| test.c:405:14:405:14 | m | 2.0 | | test.c:405:14:405:108 | ... ? ... : ... | 1.0 | -| test.c:405:18:405:18 | n | 177147.0 | +| test.c:405:18:405:18 | n | 3.0 | | test.c:405:18:405:95 | ... ? ... : ... | 1.0 | -| test.c:405:22:405:22 | o | 177147.0 | +| test.c:405:22:405:22 | o | 3.0 | | test.c:405:22:405:82 | ... ? ... : ... | 1.0 | -| test.c:405:26:405:26 | p | 177147.0 | +| test.c:405:26:405:26 | p | 3.0 | | test.c:405:26:405:69 | ... ? ... : ... | 1.0 | -| test.c:405:30:405:30 | q | 177147.0 | +| test.c:405:30:405:30 | q | 3.0 | | test.c:405:30:405:56 | ... ? ... : ... | 1.0 | -| test.c:405:34:405:43 | 0.4218627600000000033 | 1.0 | -| test.c:405:47:405:56 | 0.5384335799999999672 | 1.0 | -| test.c:405:60:405:69 | 0.4499667900000000054 | 1.0 | -| test.c:405:73:405:82 | 0.1320411400000000013 | 1.0 | -| test.c:405:86:405:95 | 0.5203124099999999475 | 1.0 | -| test.c:405:99:405:108 | 0.4276264699999999808 | 1.0 | -| test.c:411:19:411:19 | a | 1.0 | -| test.c:411:19:411:23 | ... + ... | 1.0 | -| test.c:411:19:411:27 | ... + ... | 1.0 | -| test.c:411:19:411:31 | ... + ... | 1.0 | -| test.c:411:19:411:35 | ... + ... | 1.0 | -| test.c:411:19:411:39 | ... + ... | 1.0 | -| test.c:411:19:411:43 | ... + ... | 1.0 | -| test.c:411:19:411:47 | ... + ... | 1.0 | -| test.c:411:19:411:51 | ... + ... | 1.0 | -| test.c:411:19:411:55 | ... + ... | 1.0 | -| test.c:411:19:411:59 | ... + ... | 1.0 | -| test.c:411:19:411:63 | ... + ... | 1.0 | -| test.c:411:23:411:23 | b | 1.0 | -| test.c:411:27:411:27 | c | 1.0 | -| test.c:411:31:411:31 | d | 1.0 | -| test.c:411:35:411:35 | e | 1.0 | -| test.c:411:39:411:39 | f | 1.0 | -| test.c:411:43:411:43 | g | 1.0 | -| test.c:411:47:411:47 | h | 1.0 | -| test.c:411:51:411:51 | i | 1.0 | -| test.c:411:55:411:55 | j | 1.0 | -| test.c:411:59:411:59 | k | 1.0 | -| test.c:411:63:411:63 | l | 1.0 | -| test.c:413:10:413:15 | output | 1.0 | -| test.c:420:7:420:9 | rhs | 1.0 | -| test.c:420:7:420:14 | ... < ... | 1.0 | -| test.c:420:13:420:14 | 12 | 1.0 | -| test.c:420:13:420:14 | (unsigned int)... | 1.0 | -| test.c:420:19:420:21 | rhs | 1.0 | -| test.c:420:19:420:26 | ... << ... | 1.0 | -| test.c:420:26:420:26 | 1 | 1.0 | -| test.c:421:7:421:9 | rhs | 2.0 | -| test.c:421:7:421:14 | ... < ... | 1.0 | -| test.c:421:13:421:14 | 13 | 1.0 | -| test.c:421:13:421:14 | (unsigned int)... | 1.0 | -| test.c:421:19:421:21 | rhs | 2.0 | -| test.c:421:19:421:26 | ... << ... | 1.0 | -| test.c:421:26:421:26 | 1 | 1.0 | -| test.c:422:7:422:9 | rhs | 3.0 | -| test.c:422:7:422:14 | ... < ... | 1.0 | -| test.c:422:13:422:14 | 14 | 1.0 | -| test.c:422:13:422:14 | (unsigned int)... | 1.0 | -| test.c:422:19:422:21 | rhs | 3.0 | -| test.c:422:19:422:26 | ... << ... | 1.0 | -| test.c:422:26:422:26 | 1 | 1.0 | -| test.c:423:7:423:9 | rhs | 4.0 | -| test.c:423:7:423:14 | ... < ... | 1.0 | -| test.c:423:13:423:14 | 15 | 1.0 | -| test.c:423:13:423:14 | (unsigned int)... | 1.0 | -| test.c:423:19:423:21 | rhs | 4.0 | -| test.c:423:19:423:26 | ... << ... | 1.0 | -| test.c:423:26:423:26 | 1 | 1.0 | -| test.c:424:7:424:9 | rhs | 5.0 | -| test.c:424:7:424:14 | ... < ... | 1.0 | -| test.c:424:13:424:14 | 16 | 1.0 | -| test.c:424:13:424:14 | (unsigned int)... | 1.0 | -| test.c:424:19:424:21 | rhs | 5.0 | -| test.c:424:19:424:26 | ... << ... | 1.0 | -| test.c:424:26:424:26 | 1 | 1.0 | -| test.c:425:10:425:12 | (int)... | 6.0 | -| test.c:425:10:425:12 | rhs | 6.0 | -| test.c:429:7:429:7 | a | 1.0 | -| test.c:429:7:429:13 | ... == ... | 1.0 | -| test.c:429:12:429:13 | 17 | 1.0 | -| test.c:430:9:430:9 | b | 1.0 | -| test.c:430:9:430:15 | ... == ... | 1.0 | -| test.c:430:14:430:15 | 23 | 1.0 | -| test.c:431:7:431:7 | a | 1.0 | -| test.c:431:7:431:12 | ... += ... | 1.0 | -| test.c:431:12:431:12 | b | 1.0 | -| test.c:433:9:433:9 | a | 2.0 | -| test.c:433:9:433:15 | ... == ... | 1.0 | -| test.c:433:14:433:15 | 18 | 1.0 | -| test.c:434:7:434:7 | b | 1.0 | -| test.c:434:7:434:12 | ... = ... | 1.0 | -| test.c:434:11:434:12 | 10 | 1.0 | -| test.c:439:11:439:11 | a | 4.0 | -| test.c:439:11:439:15 | ... + ... | 16.0 | -| test.c:439:15:439:15 | b | 4.0 | -| test.c:440:10:440:10 | a | 4.0 | -| test.c:440:10:440:14 | ... + ... | 16.0 | -| test.c:440:14:440:14 | b | 4.0 | -| test.c:447:4:449:50 | (...) | 1.0 | -| test.c:447:4:532:26 | ... > ... | 1.0 | -| test.c:447:4:621:27 | ... ? ... : ... | 1.297918419127476E201 | -| test.c:447:5:447:6 | 14 | 1.0 | -| test.c:447:5:447:6 | (unsigned int)... | 1.0 | -| test.c:447:5:447:11 | ... * ... | 1.0 | -| test.c:447:5:447:55 | ... > ... | 1.0 | -| test.c:447:5:449:49 | ... ? ... : ... | 1.0 | -| test.c:447:10:447:11 | ip | 1.0 | -| test.c:447:15:447:26 | (...) | 1.0 | -| test.c:447:15:447:31 | ... * ... | 1.0 | -| test.c:447:15:447:55 | ... + ... | 1.0 | -| test.c:447:16:447:16 | 2 | 1.0 | -| test.c:447:16:447:16 | (unsigned int)... | 1.0 | -| test.c:447:16:447:21 | ... * ... | 1.0 | -| test.c:447:16:447:25 | ... + ... | 1.0 | -| test.c:447:20:447:21 | ip | 1.0 | -| test.c:447:25:447:25 | 1 | 1.0 | -| test.c:447:25:447:25 | (unsigned int)... | 1.0 | -| test.c:447:30:447:31 | 17 | 1.0 | -| test.c:447:30:447:31 | (unsigned int)... | 1.0 | -| test.c:447:35:447:50 | (...) | 1.0 | -| test.c:447:35:447:55 | ... * ... | 1.0 | -| test.c:447:36:447:36 | 2 | 1.0 | -| test.c:447:36:447:36 | (unsigned int)... | 1.0 | -| test.c:447:36:447:41 | ... * ... | 1.0 | -| test.c:447:36:447:45 | ... + ... | 1.0 | -| test.c:447:36:447:49 | ... + ... | 1.0 | -| test.c:447:40:447:41 | ip | 1.0 | -| test.c:447:45:447:45 | 1 | 1.0 | -| test.c:447:45:447:45 | (unsigned int)... | 1.0 | -| test.c:447:49:447:49 | 1 | 1.0 | -| test.c:447:49:447:49 | (unsigned int)... | 1.0 | -| test.c:447:54:447:55 | 17 | 1.0 | -| test.c:447:54:447:55 | (unsigned int)... | 1.0 | -| test.c:448:9:448:10 | 14 | 1.0 | -| test.c:448:9:448:10 | (unsigned int)... | 1.0 | -| test.c:448:9:448:15 | ... * ... | 1.0 | -| test.c:448:14:448:15 | ip | 1.0 | -| test.c:449:9:449:20 | (...) | 1.0 | -| test.c:449:9:449:25 | ... * ... | 1.0 | -| test.c:449:9:449:49 | ... + ... | 1.0 | -| test.c:449:10:449:10 | 2 | 1.0 | -| test.c:449:10:449:10 | (unsigned int)... | 1.0 | -| test.c:449:10:449:15 | ... * ... | 1.0 | -| test.c:449:10:449:19 | ... + ... | 1.0 | -| test.c:449:14:449:15 | ip | 1.0 | -| test.c:449:19:449:19 | 1 | 1.0 | -| test.c:449:19:449:19 | (unsigned int)... | 1.0 | -| test.c:449:24:449:25 | 14 | 1.0 | -| test.c:449:24:449:25 | (unsigned int)... | 1.0 | -| test.c:449:29:449:44 | (...) | 1.0 | -| test.c:449:29:449:49 | ... * ... | 1.0 | -| test.c:449:30:449:30 | 2 | 1.0 | -| test.c:449:30:449:30 | (unsigned int)... | 1.0 | -| test.c:449:30:449:35 | ... * ... | 1.0 | -| test.c:449:30:449:39 | ... + ... | 1.0 | -| test.c:449:30:449:43 | ... + ... | 1.0 | -| test.c:449:34:449:35 | ip | 1.0 | -| test.c:449:39:449:39 | 1 | 1.0 | -| test.c:449:39:449:39 | (unsigned int)... | 1.0 | -| test.c:449:43:449:43 | 1 | 1.0 | -| test.c:449:43:449:43 | (unsigned int)... | 1.0 | -| test.c:449:48:449:49 | 17 | 1.0 | -| test.c:449:48:449:49 | (unsigned int)... | 1.0 | -| test.c:450:5:532:26 | (...) | 9.29462083211502E84 | -| test.c:450:6:450:6 | 2 | 1.0 | -| test.c:450:6:450:6 | (unsigned int)... | 1.0 | -| test.c:450:6:450:23 | ... * ... | 2.0 | -| test.c:450:6:469:42 | ... + ... | 4.524508125E10 | -| test.c:450:6:489:24 | ... > ... | 1.0 | -| test.c:450:6:532:25 | ... ? ... : ... | 9.29462083211502E84 | -| test.c:450:10:450:23 | (...) | 2.0 | -| test.c:450:11:450:12 | ip | 2.0 | -| test.c:450:11:450:17 | ... * ... | 2.0 | -| test.c:450:11:450:22 | ... + ... | 2.0 | -| test.c:450:16:450:17 | 14 | 1.0 | -| test.c:450:16:450:17 | (unsigned int)... | 1.0 | -| test.c:450:21:450:22 | 32 | 1.0 | -| test.c:450:21:450:22 | (unsigned int)... | 1.0 | -| test.c:451:7:469:42 | (...) | 2.2622540625E10 | -| test.c:451:8:451:8 | 4 | 1.0 | -| test.c:451:8:451:8 | (unsigned int)... | 1.0 | -| test.c:451:8:451:25 | ... * ... | 2.0 | -| test.c:451:8:452:26 | ... + ... | 4.0 | -| test.c:451:8:453:26 | ... + ... | 8.0 | -| test.c:451:8:458:22 | ... + ... | 1000.0 | -| test.c:451:8:459:37 | ... > ... | 1.0 | -| test.c:451:8:469:41 | ... ? ... : ... | 2.2622540625E10 | -| test.c:451:12:451:25 | (...) | 2.0 | -| test.c:451:13:451:14 | ip | 2.0 | -| test.c:451:13:451:19 | ... * ... | 2.0 | -| test.c:451:13:451:24 | ... + ... | 2.0 | -| test.c:451:18:451:19 | 14 | 1.0 | -| test.c:451:18:451:19 | (unsigned int)... | 1.0 | -| test.c:451:23:451:24 | 32 | 1.0 | -| test.c:451:23:451:24 | (unsigned int)... | 1.0 | -| test.c:452:9:452:26 | (...) | 2.0 | -| test.c:452:10:452:10 | 2 | 1.0 | -| test.c:452:10:452:10 | (unsigned int)... | 1.0 | -| test.c:452:10:452:15 | ... * ... | 2.0 | -| test.c:452:10:452:20 | ... * ... | 2.0 | -| test.c:452:10:452:25 | ... + ... | 2.0 | -| test.c:452:14:452:15 | ip | 2.0 | -| test.c:452:19:452:20 | 14 | 1.0 | -| test.c:452:19:452:20 | (unsigned int)... | 1.0 | -| test.c:452:24:452:25 | 32 | 1.0 | -| test.c:452:24:452:25 | (unsigned int)... | 1.0 | -| test.c:453:9:453:9 | 2 | 1.0 | -| test.c:453:9:453:9 | (unsigned int)... | 1.0 | -| test.c:453:9:453:26 | ... * ... | 2.0 | -| test.c:453:13:453:26 | (...) | 2.0 | -| test.c:453:14:453:15 | ip | 2.0 | -| test.c:453:14:453:20 | ... * ... | 2.0 | -| test.c:453:14:453:25 | ... + ... | 2.0 | -| test.c:453:19:453:20 | 14 | 1.0 | -| test.c:453:19:453:20 | (unsigned int)... | 1.0 | -| test.c:453:24:453:25 | 64 | 1.0 | -| test.c:453:24:453:25 | (unsigned int)... | 1.0 | -| test.c:454:9:458:22 | (...) | 125.0 | -| test.c:454:10:454:21 | (...) | 2.0 | -| test.c:454:10:454:26 | ... * ... | 2.0 | -| test.c:454:10:454:80 | ... > ... | 1.0 | -| test.c:454:10:458:21 | ... ? ... : ... | 125.0 | -| test.c:454:11:454:11 | 2 | 1.0 | -| test.c:454:11:454:11 | (unsigned int)... | 1.0 | -| test.c:454:11:454:16 | ... * ... | 2.0 | -| test.c:454:11:454:20 | ... + ... | 2.0 | -| test.c:454:15:454:16 | ip | 2.0 | -| test.c:454:20:454:20 | 1 | 1.0 | -| test.c:454:20:454:20 | (unsigned int)... | 1.0 | -| test.c:454:25:454:26 | 14 | 1.0 | -| test.c:454:25:454:26 | (unsigned int)... | 1.0 | -| test.c:454:30:454:80 | (...) | 4.0 | -| test.c:454:31:454:32 | 17 | 1.0 | -| test.c:454:31:454:32 | (unsigned int)... | 1.0 | -| test.c:454:31:454:43 | ... * ... | 2.0 | -| test.c:454:31:454:53 | ... > ... | 1.0 | -| test.c:454:31:454:79 | ... ? ... : ... | 4.0 | -| test.c:454:36:454:43 | (...) | 2.0 | -| test.c:454:37:454:37 | 2 | 1.0 | -| test.c:454:37:454:37 | (unsigned int)... | 1.0 | -| test.c:454:37:454:42 | ... * ... | 2.0 | -| test.c:454:41:454:42 | ip | 2.0 | -| test.c:454:47:454:48 | 17 | 1.0 | -| test.c:454:47:454:48 | (unsigned int)... | 1.0 | -| test.c:454:47:454:53 | ... * ... | 2.0 | -| test.c:454:52:454:53 | ip | 2.0 | -| test.c:454:57:454:58 | 17 | 1.0 | -| test.c:454:57:454:58 | (unsigned int)... | 1.0 | -| test.c:454:57:454:69 | ... * ... | 2.0 | -| test.c:454:62:454:69 | (...) | 2.0 | -| test.c:454:63:454:63 | 2 | 1.0 | -| test.c:454:63:454:63 | (unsigned int)... | 1.0 | -| test.c:454:63:454:68 | ... * ... | 2.0 | -| test.c:454:67:454:68 | ip | 2.0 | -| test.c:454:73:454:74 | 17 | 1.0 | -| test.c:454:73:454:74 | (unsigned int)... | 1.0 | -| test.c:454:73:454:79 | ... * ... | 2.0 | -| test.c:454:78:454:79 | ip | 2.0 | -| test.c:455:13:455:24 | (...) | 5.0 | -| test.c:455:13:455:29 | ... * ... | 5.0 | -| test.c:455:14:455:14 | 2 | 1.0 | -| test.c:455:14:455:14 | (unsigned int)... | 1.0 | -| test.c:455:14:455:19 | ... * ... | 5.0 | -| test.c:455:14:455:23 | ... + ... | 5.0 | -| test.c:455:18:455:19 | ip | 5.0 | -| test.c:455:23:455:23 | 1 | 1.0 | -| test.c:455:23:455:23 | (unsigned int)... | 1.0 | -| test.c:455:28:455:29 | 14 | 1.0 | -| test.c:455:28:455:29 | (unsigned int)... | 1.0 | -| test.c:456:13:456:14 | 14 | 1.0 | -| test.c:456:13:456:14 | (unsigned int)... | 1.0 | -| test.c:456:13:456:25 | ... * ... | 5.0 | -| test.c:456:13:456:35 | ... > ... | 1.0 | -| test.c:456:13:458:21 | ... ? ... : ... | 25.0 | -| test.c:456:18:456:25 | (...) | 5.0 | -| test.c:456:19:456:19 | 2 | 1.0 | -| test.c:456:19:456:19 | (unsigned int)... | 1.0 | -| test.c:456:19:456:24 | ... * ... | 5.0 | -| test.c:456:23:456:24 | ip | 5.0 | -| test.c:456:29:456:30 | 17 | 1.0 | -| test.c:456:29:456:30 | (unsigned int)... | 1.0 | -| test.c:456:29:456:35 | ... * ... | 5.0 | -| test.c:456:34:456:35 | ip | 5.0 | -| test.c:457:15:457:16 | 14 | 1.0 | -| test.c:457:15:457:16 | (unsigned int)... | 1.0 | -| test.c:457:15:457:27 | ... * ... | 5.0 | -| test.c:457:20:457:27 | (...) | 5.0 | -| test.c:457:21:457:21 | 2 | 1.0 | -| test.c:457:21:457:21 | (unsigned int)... | 1.0 | -| test.c:457:21:457:26 | ... * ... | 5.0 | -| test.c:457:25:457:26 | ip | 5.0 | -| test.c:458:15:458:16 | 14 | 1.0 | -| test.c:458:15:458:16 | (unsigned int)... | 1.0 | -| test.c:458:15:458:21 | ... * ... | 5.0 | -| test.c:458:20:458:21 | ip | 5.0 | -| test.c:459:7:459:7 | 2 | 1.0 | -| test.c:459:7:459:7 | (unsigned int)... | 1.0 | -| test.c:459:7:459:12 | ... * ... | 15.0 | -| test.c:459:7:459:17 | ... * ... | 15.0 | -| test.c:459:7:459:37 | ... + ... | 225.0 | -| test.c:459:11:459:12 | ip | 15.0 | -| test.c:459:16:459:17 | 14 | 1.0 | -| test.c:459:16:459:17 | (unsigned int)... | 1.0 | -| test.c:459:21:459:32 | (...) | 15.0 | -| test.c:459:21:459:37 | ... * ... | 15.0 | -| test.c:459:22:459:22 | 2 | 1.0 | -| test.c:459:22:459:22 | (unsigned int)... | 1.0 | -| test.c:459:22:459:27 | ... * ... | 15.0 | -| test.c:459:22:459:31 | ... + ... | 15.0 | -| test.c:459:26:459:27 | ip | 15.0 | -| test.c:459:31:459:31 | 1 | 1.0 | -| test.c:459:31:459:31 | (unsigned int)... | 1.0 | -| test.c:459:36:459:37 | 17 | 1.0 | -| test.c:459:36:459:37 | (unsigned int)... | 1.0 | -| test.c:460:11:460:11 | 4 | 1.0 | -| test.c:460:11:460:11 | (unsigned int)... | 1.0 | -| test.c:460:11:460:28 | ... * ... | 15.0 | -| test.c:460:11:461:28 | ... + ... | 225.0 | -| test.c:460:11:462:28 | ... + ... | 3375.0 | -| test.c:460:11:468:24 | ... + ... | 1.00544625E8 | -| test.c:460:15:460:28 | (...) | 15.0 | -| test.c:460:16:460:17 | ip | 15.0 | -| test.c:460:16:460:22 | ... * ... | 15.0 | -| test.c:460:16:460:27 | ... + ... | 15.0 | -| test.c:460:21:460:22 | 14 | 1.0 | +| test.c:405:34:405:43 | 0.3418334800000000229 | 1.0 | +| test.c:405:47:405:56 | 0.3533464000000000049 | 1.0 | +| test.c:405:60:405:69 | 0.2224785300000000077 | 1.0 | +| test.c:405:73:405:82 | 0.326618929999999974 | 1.0 | +| test.c:405:86:405:95 | 0.5927046500000000551 | 1.0 | +| test.c:405:99:405:108 | 0.5297741000000000255 | 1.0 | +| test.c:406:14:406:14 | m | 4.0 | +| test.c:406:14:406:108 | ... ? ... : ... | 1.0 | +| test.c:406:18:406:18 | n | 9.0 | +| test.c:406:18:406:95 | ... ? ... : ... | 1.0 | +| test.c:406:22:406:22 | o | 9.0 | +| test.c:406:22:406:82 | ... ? ... : ... | 1.0 | +| test.c:406:26:406:26 | p | 9.0 | +| test.c:406:26:406:69 | ... ? ... : ... | 1.0 | +| test.c:406:30:406:30 | q | 9.0 | +| test.c:406:30:406:56 | ... ? ... : ... | 1.0 | +| test.c:406:34:406:43 | 0.774296030000000024 | 1.0 | +| test.c:406:47:406:56 | 0.3147808400000000062 | 1.0 | +| test.c:406:60:406:69 | 0.3123551399999999756 | 1.0 | +| test.c:406:73:406:82 | 0.05121255999999999725 | 1.0 | +| test.c:406:86:406:95 | 0.7931074500000000471 | 1.0 | +| test.c:406:99:406:108 | 0.6798145100000000385 | 1.0 | +| test.c:407:14:407:14 | m | 8.0 | +| test.c:407:14:407:108 | ... ? ... : ... | 1.0 | +| test.c:407:18:407:18 | n | 27.0 | +| test.c:407:18:407:95 | ... ? ... : ... | 1.0 | +| test.c:407:22:407:22 | o | 27.0 | +| test.c:407:22:407:82 | ... ? ... : ... | 1.0 | +| test.c:407:26:407:26 | p | 27.0 | +| test.c:407:26:407:69 | ... ? ... : ... | 1.0 | +| test.c:407:30:407:30 | q | 27.0 | +| test.c:407:30:407:56 | ... ? ... : ... | 1.0 | +| test.c:407:34:407:43 | 0.4472955599999999809 | 1.0 | +| test.c:407:47:407:56 | 0.8059920200000000312 | 1.0 | +| test.c:407:60:407:69 | 0.9899726199999999698 | 1.0 | +| test.c:407:73:407:82 | 0.5995273199999999747 | 1.0 | +| test.c:407:86:407:95 | 0.3697694799999999837 | 1.0 | +| test.c:407:99:407:108 | 0.8386683499999999514 | 1.0 | +| test.c:408:14:408:14 | m | 16.0 | +| test.c:408:14:408:108 | ... ? ... : ... | 1.0 | +| test.c:408:18:408:18 | n | 81.0 | +| test.c:408:18:408:95 | ... ? ... : ... | 1.0 | +| test.c:408:22:408:22 | o | 81.0 | +| test.c:408:22:408:82 | ... ? ... : ... | 1.0 | +| test.c:408:26:408:26 | p | 81.0 | +| test.c:408:26:408:69 | ... ? ... : ... | 1.0 | +| test.c:408:30:408:30 | q | 81.0 | +| test.c:408:30:408:56 | ... ? ... : ... | 1.0 | +| test.c:408:34:408:43 | 0.4931182800000000199 | 1.0 | +| test.c:408:47:408:56 | 0.9038991100000000056 | 1.0 | +| test.c:408:60:408:69 | 0.1059771199999999941 | 1.0 | +| test.c:408:73:408:82 | 0.2177842600000000073 | 1.0 | +| test.c:408:86:408:95 | 0.7248596600000000167 | 1.0 | +| test.c:408:99:408:108 | 0.6873487400000000136 | 1.0 | +| test.c:409:14:409:14 | m | 32.0 | +| test.c:409:14:409:108 | ... ? ... : ... | 1.0 | +| test.c:409:18:409:18 | n | 243.0 | +| test.c:409:18:409:95 | ... ? ... : ... | 1.0 | +| test.c:409:22:409:22 | o | 243.0 | +| test.c:409:22:409:82 | ... ? ... : ... | 1.0 | +| test.c:409:26:409:26 | p | 243.0 | +| test.c:409:26:409:69 | ... ? ... : ... | 1.0 | +| test.c:409:30:409:30 | q | 243.0 | +| test.c:409:30:409:56 | ... ? ... : ... | 1.0 | +| test.c:409:34:409:43 | 0.4745284799999999747 | 1.0 | +| test.c:409:47:409:56 | 0.107866500000000004 | 1.0 | +| test.c:409:60:409:69 | 0.1188457599999999947 | 1.0 | +| test.c:409:73:409:82 | 0.7616405200000000431 | 1.0 | +| test.c:409:86:409:95 | 0.3480889200000000239 | 1.0 | +| test.c:409:99:409:108 | 0.584408649999999974 | 1.0 | +| test.c:410:14:410:14 | m | 64.0 | +| test.c:410:14:410:108 | ... ? ... : ... | 1.0 | +| test.c:410:18:410:18 | n | 729.0 | +| test.c:410:18:410:95 | ... ? ... : ... | 1.0 | +| test.c:410:22:410:22 | o | 729.0 | +| test.c:410:22:410:82 | ... ? ... : ... | 1.0 | +| test.c:410:26:410:26 | p | 729.0 | +| test.c:410:26:410:69 | ... ? ... : ... | 1.0 | +| test.c:410:30:410:30 | q | 729.0 | +| test.c:410:30:410:56 | ... ? ... : ... | 1.0 | +| test.c:410:34:410:43 | 0.02524326 | 1.0 | +| test.c:410:47:410:56 | 0.8290504600000000446 | 1.0 | +| test.c:410:60:410:69 | 0.95823075000000002 | 1.0 | +| test.c:410:73:410:82 | 0.1251655799999999985 | 1.0 | +| test.c:410:86:410:95 | 0.8523517900000000536 | 1.0 | +| test.c:410:99:410:108 | 0.3623238400000000081 | 1.0 | +| test.c:411:14:411:14 | m | 128.0 | +| test.c:411:14:411:108 | ... ? ... : ... | 1.0 | +| test.c:411:18:411:18 | n | 2187.0 | +| test.c:411:18:411:95 | ... ? ... : ... | 1.0 | +| test.c:411:22:411:22 | o | 2187.0 | +| test.c:411:22:411:82 | ... ? ... : ... | 1.0 | +| test.c:411:26:411:26 | p | 2187.0 | +| test.c:411:26:411:69 | ... ? ... : ... | 1.0 | +| test.c:411:30:411:30 | q | 2187.0 | +| test.c:411:30:411:56 | ... ? ... : ... | 1.0 | +| test.c:411:34:411:43 | 0.3870862600000000153 | 1.0 | +| test.c:411:47:411:56 | 0.3287604399999999871 | 1.0 | +| test.c:411:60:411:69 | 0.1496348500000000137 | 1.0 | +| test.c:411:73:411:82 | 0.4504110800000000192 | 1.0 | +| test.c:411:86:411:95 | 0.4864090899999999884 | 1.0 | +| test.c:411:99:411:108 | 0.8433127200000000157 | 1.0 | +| test.c:412:14:412:14 | m | 256.0 | +| test.c:412:14:412:108 | ... ? ... : ... | 1.0 | +| test.c:412:18:412:18 | n | 6561.0 | +| test.c:412:18:412:95 | ... ? ... : ... | 1.0 | +| test.c:412:22:412:22 | o | 6561.0 | +| test.c:412:22:412:82 | ... ? ... : ... | 1.0 | +| test.c:412:26:412:26 | p | 6561.0 | +| test.c:412:26:412:69 | ... ? ... : ... | 1.0 | +| test.c:412:30:412:30 | q | 6561.0 | +| test.c:412:30:412:56 | ... ? ... : ... | 1.0 | +| test.c:412:34:412:43 | 0.1575506299999999971 | 1.0 | +| test.c:412:47:412:56 | 0.7708683299999999905 | 1.0 | +| test.c:412:60:412:69 | 0.2642848099999999811 | 1.0 | +| test.c:412:73:412:82 | 0.1480050800000000111 | 1.0 | +| test.c:412:86:412:95 | 0.374281430000000026 | 1.0 | +| test.c:412:99:412:108 | 0.05328182000000000057 | 1.0 | +| test.c:413:14:413:14 | m | 512.0 | +| test.c:413:14:413:108 | ... ? ... : ... | 1.0 | +| test.c:413:18:413:18 | n | 19683.0 | +| test.c:413:18:413:95 | ... ? ... : ... | 1.0 | +| test.c:413:22:413:22 | o | 19683.0 | +| test.c:413:22:413:82 | ... ? ... : ... | 1.0 | +| test.c:413:26:413:26 | p | 19683.0 | +| test.c:413:26:413:69 | ... ? ... : ... | 1.0 | +| test.c:413:30:413:30 | q | 19683.0 | +| test.c:413:30:413:56 | ... ? ... : ... | 1.0 | +| test.c:413:34:413:43 | 0.4173653600000000186 | 1.0 | +| test.c:413:47:413:56 | 0.7682662799999999681 | 1.0 | +| test.c:413:60:413:69 | 0.2764323799999999776 | 1.0 | +| test.c:413:73:413:82 | 0.5567927400000000082 | 1.0 | +| test.c:413:86:413:95 | 0.3946885700000000163 | 1.0 | +| test.c:413:99:413:108 | 0.6907214400000000198 | 1.0 | +| test.c:414:14:414:14 | m | 1024.0 | +| test.c:414:14:414:108 | ... ? ... : ... | 1.0 | +| test.c:414:18:414:18 | n | 59049.0 | +| test.c:414:18:414:95 | ... ? ... : ... | 1.0 | +| test.c:414:22:414:22 | o | 59049.0 | +| test.c:414:22:414:82 | ... ? ... : ... | 1.0 | +| test.c:414:26:414:26 | p | 59049.0 | +| test.c:414:26:414:69 | ... ? ... : ... | 1.0 | +| test.c:414:30:414:30 | q | 59049.0 | +| test.c:414:30:414:56 | ... ? ... : ... | 1.0 | +| test.c:414:34:414:43 | 0.8895534499999999678 | 1.0 | +| test.c:414:47:414:56 | 0.2990482400000000207 | 1.0 | +| test.c:414:60:414:69 | 0.7624258299999999711 | 1.0 | +| test.c:414:73:414:82 | 0.2051910999999999874 | 1.0 | +| test.c:414:86:414:95 | 0.8874555899999999609 | 1.0 | +| test.c:414:99:414:108 | 0.8137279800000000174 | 1.0 | +| test.c:415:14:415:14 | m | 2048.0 | +| test.c:415:14:415:108 | ... ? ... : ... | 1.0 | +| test.c:415:18:415:18 | n | 177147.0 | +| test.c:415:18:415:95 | ... ? ... : ... | 1.0 | +| test.c:415:22:415:22 | o | 177147.0 | +| test.c:415:22:415:82 | ... ? ... : ... | 1.0 | +| test.c:415:26:415:26 | p | 177147.0 | +| test.c:415:26:415:69 | ... ? ... : ... | 1.0 | +| test.c:415:30:415:30 | q | 177147.0 | +| test.c:415:30:415:56 | ... ? ... : ... | 1.0 | +| test.c:415:34:415:43 | 0.4218627600000000033 | 1.0 | +| test.c:415:47:415:56 | 0.5384335799999999672 | 1.0 | +| test.c:415:60:415:69 | 0.4499667900000000054 | 1.0 | +| test.c:415:73:415:82 | 0.1320411400000000013 | 1.0 | +| test.c:415:86:415:95 | 0.5203124099999999475 | 1.0 | +| test.c:415:99:415:108 | 0.4276264699999999808 | 1.0 | +| test.c:421:19:421:19 | a | 1.0 | +| test.c:421:19:421:23 | ... + ... | 1.0 | +| test.c:421:19:421:27 | ... + ... | 1.0 | +| test.c:421:19:421:31 | ... + ... | 1.0 | +| test.c:421:19:421:35 | ... + ... | 1.0 | +| test.c:421:19:421:39 | ... + ... | 1.0 | +| test.c:421:19:421:43 | ... + ... | 1.0 | +| test.c:421:19:421:47 | ... + ... | 1.0 | +| test.c:421:19:421:51 | ... + ... | 1.0 | +| test.c:421:19:421:55 | ... + ... | 1.0 | +| test.c:421:19:421:59 | ... + ... | 1.0 | +| test.c:421:19:421:63 | ... + ... | 1.0 | +| test.c:421:23:421:23 | b | 1.0 | +| test.c:421:27:421:27 | c | 1.0 | +| test.c:421:31:421:31 | d | 1.0 | +| test.c:421:35:421:35 | e | 1.0 | +| test.c:421:39:421:39 | f | 1.0 | +| test.c:421:43:421:43 | g | 1.0 | +| test.c:421:47:421:47 | h | 1.0 | +| test.c:421:51:421:51 | i | 1.0 | +| test.c:421:55:421:55 | j | 1.0 | +| test.c:421:59:421:59 | k | 1.0 | +| test.c:421:63:421:63 | l | 1.0 | +| test.c:423:10:423:15 | output | 1.0 | +| test.c:430:7:430:9 | rhs | 1.0 | +| test.c:430:7:430:14 | ... < ... | 1.0 | +| test.c:430:13:430:14 | 12 | 1.0 | +| test.c:430:13:430:14 | (unsigned int)... | 1.0 | +| test.c:430:19:430:21 | rhs | 1.0 | +| test.c:430:19:430:26 | ... << ... | 1.0 | +| test.c:430:26:430:26 | 1 | 1.0 | +| test.c:431:7:431:9 | rhs | 2.0 | +| test.c:431:7:431:14 | ... < ... | 1.0 | +| test.c:431:13:431:14 | 13 | 1.0 | +| test.c:431:13:431:14 | (unsigned int)... | 1.0 | +| test.c:431:19:431:21 | rhs | 2.0 | +| test.c:431:19:431:26 | ... << ... | 1.0 | +| test.c:431:26:431:26 | 1 | 1.0 | +| test.c:432:7:432:9 | rhs | 3.0 | +| test.c:432:7:432:14 | ... < ... | 1.0 | +| test.c:432:13:432:14 | 14 | 1.0 | +| test.c:432:13:432:14 | (unsigned int)... | 1.0 | +| test.c:432:19:432:21 | rhs | 3.0 | +| test.c:432:19:432:26 | ... << ... | 1.0 | +| test.c:432:26:432:26 | 1 | 1.0 | +| test.c:433:7:433:9 | rhs | 4.0 | +| test.c:433:7:433:14 | ... < ... | 1.0 | +| test.c:433:13:433:14 | 15 | 1.0 | +| test.c:433:13:433:14 | (unsigned int)... | 1.0 | +| test.c:433:19:433:21 | rhs | 4.0 | +| test.c:433:19:433:26 | ... << ... | 1.0 | +| test.c:433:26:433:26 | 1 | 1.0 | +| test.c:434:7:434:9 | rhs | 5.0 | +| test.c:434:7:434:14 | ... < ... | 1.0 | +| test.c:434:13:434:14 | 16 | 1.0 | +| test.c:434:13:434:14 | (unsigned int)... | 1.0 | +| test.c:434:19:434:21 | rhs | 5.0 | +| test.c:434:19:434:26 | ... << ... | 1.0 | +| test.c:434:26:434:26 | 1 | 1.0 | +| test.c:435:10:435:12 | (int)... | 6.0 | +| test.c:435:10:435:12 | rhs | 6.0 | +| test.c:439:7:439:7 | a | 1.0 | +| test.c:439:7:439:13 | ... == ... | 1.0 | +| test.c:439:12:439:13 | 17 | 1.0 | +| test.c:440:9:440:9 | b | 1.0 | +| test.c:440:9:440:15 | ... == ... | 1.0 | +| test.c:440:14:440:15 | 23 | 1.0 | +| test.c:441:7:441:7 | a | 1.0 | +| test.c:441:7:441:12 | ... += ... | 1.0 | +| test.c:441:12:441:12 | b | 1.0 | +| test.c:443:9:443:9 | a | 2.0 | +| test.c:443:9:443:15 | ... == ... | 1.0 | +| test.c:443:14:443:15 | 18 | 1.0 | +| test.c:444:7:444:7 | b | 1.0 | +| test.c:444:7:444:12 | ... = ... | 1.0 | +| test.c:444:11:444:12 | 10 | 1.0 | +| test.c:449:11:449:11 | a | 4.0 | +| test.c:449:11:449:15 | ... + ... | 16.0 | +| test.c:449:15:449:15 | b | 4.0 | +| test.c:450:10:450:10 | a | 4.0 | +| test.c:450:10:450:14 | ... + ... | 16.0 | +| test.c:450:14:450:14 | b | 4.0 | +| test.c:457:4:459:50 | (...) | 1.0 | +| test.c:457:4:542:26 | ... > ... | 1.0 | +| test.c:457:4:631:27 | ... ? ... : ... | 1.297918419127476E201 | +| test.c:457:5:457:6 | 14 | 1.0 | +| test.c:457:5:457:6 | (unsigned int)... | 1.0 | +| test.c:457:5:457:11 | ... * ... | 1.0 | +| test.c:457:5:457:55 | ... > ... | 1.0 | +| test.c:457:5:459:49 | ... ? ... : ... | 1.0 | +| test.c:457:10:457:11 | ip | 1.0 | +| test.c:457:15:457:26 | (...) | 1.0 | +| test.c:457:15:457:31 | ... * ... | 1.0 | +| test.c:457:15:457:55 | ... + ... | 1.0 | +| test.c:457:16:457:16 | 2 | 1.0 | +| test.c:457:16:457:16 | (unsigned int)... | 1.0 | +| test.c:457:16:457:21 | ... * ... | 1.0 | +| test.c:457:16:457:25 | ... + ... | 1.0 | +| test.c:457:20:457:21 | ip | 1.0 | +| test.c:457:25:457:25 | 1 | 1.0 | +| test.c:457:25:457:25 | (unsigned int)... | 1.0 | +| test.c:457:30:457:31 | 17 | 1.0 | +| test.c:457:30:457:31 | (unsigned int)... | 1.0 | +| test.c:457:35:457:50 | (...) | 1.0 | +| test.c:457:35:457:55 | ... * ... | 1.0 | +| test.c:457:36:457:36 | 2 | 1.0 | +| test.c:457:36:457:36 | (unsigned int)... | 1.0 | +| test.c:457:36:457:41 | ... * ... | 1.0 | +| test.c:457:36:457:45 | ... + ... | 1.0 | +| test.c:457:36:457:49 | ... + ... | 1.0 | +| test.c:457:40:457:41 | ip | 1.0 | +| test.c:457:45:457:45 | 1 | 1.0 | +| test.c:457:45:457:45 | (unsigned int)... | 1.0 | +| test.c:457:49:457:49 | 1 | 1.0 | +| test.c:457:49:457:49 | (unsigned int)... | 1.0 | +| test.c:457:54:457:55 | 17 | 1.0 | +| test.c:457:54:457:55 | (unsigned int)... | 1.0 | +| test.c:458:9:458:10 | 14 | 1.0 | +| test.c:458:9:458:10 | (unsigned int)... | 1.0 | +| test.c:458:9:458:15 | ... * ... | 1.0 | +| test.c:458:14:458:15 | ip | 1.0 | +| test.c:459:9:459:20 | (...) | 1.0 | +| test.c:459:9:459:25 | ... * ... | 1.0 | +| test.c:459:9:459:49 | ... + ... | 1.0 | +| test.c:459:10:459:10 | 2 | 1.0 | +| test.c:459:10:459:10 | (unsigned int)... | 1.0 | +| test.c:459:10:459:15 | ... * ... | 1.0 | +| test.c:459:10:459:19 | ... + ... | 1.0 | +| test.c:459:14:459:15 | ip | 1.0 | +| test.c:459:19:459:19 | 1 | 1.0 | +| test.c:459:19:459:19 | (unsigned int)... | 1.0 | +| test.c:459:24:459:25 | 14 | 1.0 | +| test.c:459:24:459:25 | (unsigned int)... | 1.0 | +| test.c:459:29:459:44 | (...) | 1.0 | +| test.c:459:29:459:49 | ... * ... | 1.0 | +| test.c:459:30:459:30 | 2 | 1.0 | +| test.c:459:30:459:30 | (unsigned int)... | 1.0 | +| test.c:459:30:459:35 | ... * ... | 1.0 | +| test.c:459:30:459:39 | ... + ... | 1.0 | +| test.c:459:30:459:43 | ... + ... | 1.0 | +| test.c:459:34:459:35 | ip | 1.0 | +| test.c:459:39:459:39 | 1 | 1.0 | +| test.c:459:39:459:39 | (unsigned int)... | 1.0 | +| test.c:459:43:459:43 | 1 | 1.0 | +| test.c:459:43:459:43 | (unsigned int)... | 1.0 | +| test.c:459:48:459:49 | 17 | 1.0 | +| test.c:459:48:459:49 | (unsigned int)... | 1.0 | +| test.c:460:5:542:26 | (...) | 9.29462083211502E84 | +| test.c:460:6:460:6 | 2 | 1.0 | +| test.c:460:6:460:6 | (unsigned int)... | 1.0 | +| test.c:460:6:460:23 | ... * ... | 2.0 | +| test.c:460:6:479:42 | ... + ... | 4.524508125E10 | +| test.c:460:6:499:24 | ... > ... | 1.0 | +| test.c:460:6:542:25 | ... ? ... : ... | 9.29462083211502E84 | +| test.c:460:10:460:23 | (...) | 2.0 | +| test.c:460:11:460:12 | ip | 2.0 | +| test.c:460:11:460:17 | ... * ... | 2.0 | +| test.c:460:11:460:22 | ... + ... | 2.0 | +| test.c:460:16:460:17 | 14 | 1.0 | +| test.c:460:16:460:17 | (unsigned int)... | 1.0 | +| test.c:460:21:460:22 | 32 | 1.0 | | test.c:460:21:460:22 | (unsigned int)... | 1.0 | -| test.c:460:26:460:27 | 32 | 1.0 | -| test.c:460:26:460:27 | (unsigned int)... | 1.0 | -| test.c:461:11:461:28 | (...) | 15.0 | -| test.c:461:12:461:12 | 2 | 1.0 | -| test.c:461:12:461:12 | (unsigned int)... | 1.0 | -| test.c:461:12:461:17 | ... * ... | 15.0 | -| test.c:461:12:461:22 | ... * ... | 15.0 | -| test.c:461:12:461:27 | ... + ... | 15.0 | -| test.c:461:16:461:17 | ip | 15.0 | -| test.c:461:21:461:22 | 14 | 1.0 | -| test.c:461:21:461:22 | (unsigned int)... | 1.0 | -| test.c:461:26:461:27 | 32 | 1.0 | -| test.c:461:26:461:27 | (unsigned int)... | 1.0 | -| test.c:462:11:462:11 | 2 | 1.0 | -| test.c:462:11:462:11 | (unsigned int)... | 1.0 | -| test.c:462:11:462:28 | ... * ... | 15.0 | -| test.c:462:15:462:28 | (...) | 15.0 | -| test.c:462:16:462:17 | ip | 15.0 | -| test.c:462:16:462:22 | ... * ... | 15.0 | -| test.c:462:16:462:27 | ... + ... | 15.0 | -| test.c:462:21:462:22 | 14 | 1.0 | -| test.c:462:21:462:22 | (unsigned int)... | 1.0 | -| test.c:462:26:462:27 | 64 | 1.0 | -| test.c:462:26:462:27 | (unsigned int)... | 1.0 | -| test.c:463:11:468:24 | (...) | 29791.0 | -| test.c:463:12:463:23 | (...) | 15.0 | -| test.c:463:12:463:28 | ... * ... | 15.0 | -| test.c:463:12:464:61 | ... > ... | 1.0 | -| test.c:463:12:468:23 | ... ? ... : ... | 29791.0 | -| test.c:463:13:463:13 | 2 | 1.0 | -| test.c:463:13:463:13 | (unsigned int)... | 1.0 | -| test.c:463:13:463:18 | ... * ... | 15.0 | -| test.c:463:13:463:22 | ... + ... | 15.0 | -| test.c:463:17:463:18 | ip | 15.0 | -| test.c:463:22:463:22 | 1 | 1.0 | -| test.c:463:22:463:22 | (unsigned int)... | 1.0 | -| test.c:463:27:463:28 | 14 | 1.0 | -| test.c:463:27:463:28 | (unsigned int)... | 1.0 | -| test.c:464:11:464:61 | (...) | 225.0 | -| test.c:464:12:464:13 | 14 | 1.0 | -| test.c:464:12:464:13 | (unsigned int)... | 1.0 | -| test.c:464:12:464:24 | ... * ... | 15.0 | -| test.c:464:12:464:34 | ... > ... | 1.0 | -| test.c:464:12:464:60 | ... ? ... : ... | 225.0 | -| test.c:464:17:464:24 | (...) | 15.0 | -| test.c:464:18:464:18 | 2 | 1.0 | -| test.c:464:18:464:18 | (unsigned int)... | 1.0 | -| test.c:464:18:464:23 | ... * ... | 15.0 | -| test.c:464:22:464:23 | ip | 15.0 | -| test.c:464:28:464:29 | 17 | 1.0 | -| test.c:464:28:464:29 | (unsigned int)... | 1.0 | -| test.c:464:28:464:34 | ... * ... | 15.0 | -| test.c:464:33:464:34 | ip | 15.0 | -| test.c:464:38:464:39 | 17 | 1.0 | -| test.c:464:38:464:39 | (unsigned int)... | 1.0 | -| test.c:464:38:464:50 | ... * ... | 15.0 | -| test.c:464:43:464:50 | (...) | 15.0 | -| test.c:464:44:464:44 | 2 | 1.0 | -| test.c:464:44:464:44 | (unsigned int)... | 1.0 | -| test.c:464:44:464:49 | ... * ... | 15.0 | -| test.c:464:48:464:49 | ip | 15.0 | -| test.c:464:54:464:55 | 17 | 1.0 | -| test.c:464:54:464:55 | (unsigned int)... | 1.0 | -| test.c:464:54:464:60 | ... * ... | 15.0 | -| test.c:464:59:464:60 | ip | 15.0 | -| test.c:465:15:465:26 | (...) | 31.0 | -| test.c:465:15:465:31 | ... * ... | 31.0 | -| test.c:465:16:465:16 | 2 | 1.0 | -| test.c:465:16:465:16 | (unsigned int)... | 1.0 | -| test.c:465:16:465:21 | ... * ... | 31.0 | -| test.c:465:16:465:25 | ... + ... | 31.0 | -| test.c:465:20:465:21 | ip | 31.0 | -| test.c:465:25:465:25 | 1 | 1.0 | -| test.c:465:25:465:25 | (unsigned int)... | 1.0 | -| test.c:465:30:465:31 | 14 | 1.0 | -| test.c:465:30:465:31 | (unsigned int)... | 1.0 | -| test.c:466:15:466:16 | 14 | 1.0 | -| test.c:466:15:466:16 | (unsigned int)... | 1.0 | -| test.c:466:15:466:27 | ... * ... | 31.0 | -| test.c:466:15:466:37 | ... > ... | 1.0 | -| test.c:466:15:468:23 | ... ? ... : ... | 961.0 | -| test.c:466:20:466:27 | (...) | 31.0 | -| test.c:466:21:466:21 | 2 | 1.0 | -| test.c:466:21:466:21 | (unsigned int)... | 1.0 | -| test.c:466:21:466:26 | ... * ... | 31.0 | -| test.c:466:25:466:26 | ip | 31.0 | -| test.c:466:31:466:32 | 17 | 1.0 | -| test.c:466:31:466:32 | (unsigned int)... | 1.0 | -| test.c:466:31:466:37 | ... * ... | 31.0 | -| test.c:466:36:466:37 | ip | 31.0 | -| test.c:467:17:467:18 | 14 | 1.0 | -| test.c:467:17:467:18 | (unsigned int)... | 1.0 | -| test.c:467:17:467:29 | ... * ... | 31.0 | -| test.c:467:22:467:29 | (...) | 31.0 | -| test.c:467:23:467:23 | 2 | 1.0 | -| test.c:467:23:467:23 | (unsigned int)... | 1.0 | -| test.c:467:23:467:28 | ... * ... | 31.0 | -| test.c:467:27:467:28 | ip | 31.0 | -| test.c:468:17:468:18 | 14 | 1.0 | -| test.c:468:17:468:18 | (unsigned int)... | 1.0 | -| test.c:468:17:468:23 | ... * ... | 31.0 | -| test.c:468:22:468:23 | ip | 31.0 | -| test.c:469:11:469:11 | 2 | 1.0 | -| test.c:469:11:469:11 | (unsigned int)... | 1.0 | -| test.c:469:11:469:16 | ... * ... | 15.0 | -| test.c:469:11:469:21 | ... * ... | 15.0 | -| test.c:469:11:469:41 | ... + ... | 225.0 | -| test.c:469:15:469:16 | ip | 15.0 | -| test.c:469:20:469:21 | 14 | 1.0 | -| test.c:469:20:469:21 | (unsigned int)... | 1.0 | -| test.c:469:25:469:36 | (...) | 15.0 | -| test.c:469:25:469:41 | ... * ... | 15.0 | -| test.c:469:26:469:26 | 2 | 1.0 | -| test.c:469:26:469:26 | (unsigned int)... | 1.0 | -| test.c:469:26:469:31 | ... * ... | 15.0 | -| test.c:469:26:469:35 | ... + ... | 15.0 | -| test.c:469:30:469:31 | ip | 15.0 | -| test.c:469:35:469:35 | 1 | 1.0 | -| test.c:469:35:469:35 | (unsigned int)... | 1.0 | -| test.c:469:40:469:41 | 17 | 1.0 | -| test.c:469:40:469:41 | (unsigned int)... | 1.0 | -| test.c:470:5:489:24 | (...) | 6.6142118960740864E25 | -| test.c:470:6:470:6 | 4 | 1.0 | -| test.c:470:6:470:6 | (unsigned int)... | 1.0 | -| test.c:470:6:470:23 | ... * ... | 108.0 | -| test.c:470:6:471:24 | ... + ... | 11664.0 | -| test.c:470:6:472:24 | ... + ... | 1259712.0 | -| test.c:470:6:477:20 | ... + ... | 1.2872131505856E13 | -| test.c:470:6:478:55 | ... > ... | 1.0 | -| test.c:470:6:489:23 | ... ? ... : ... | 6.6142118960740864E25 | -| test.c:470:10:470:23 | (...) | 108.0 | -| test.c:470:11:470:12 | ip | 108.0 | -| test.c:470:11:470:17 | ... * ... | 108.0 | -| test.c:470:11:470:22 | ... + ... | 108.0 | -| test.c:470:16:470:17 | 14 | 1.0 | -| test.c:470:16:470:17 | (unsigned int)... | 1.0 | -| test.c:470:21:470:22 | 32 | 1.0 | +| test.c:461:7:479:42 | (...) | 2.2622540625E10 | +| test.c:461:8:461:8 | 4 | 1.0 | +| test.c:461:8:461:8 | (unsigned int)... | 1.0 | +| test.c:461:8:461:25 | ... * ... | 2.0 | +| test.c:461:8:462:26 | ... + ... | 4.0 | +| test.c:461:8:463:26 | ... + ... | 8.0 | +| test.c:461:8:468:22 | ... + ... | 1000.0 | +| test.c:461:8:469:37 | ... > ... | 1.0 | +| test.c:461:8:479:41 | ... ? ... : ... | 2.2622540625E10 | +| test.c:461:12:461:25 | (...) | 2.0 | +| test.c:461:13:461:14 | ip | 2.0 | +| test.c:461:13:461:19 | ... * ... | 2.0 | +| test.c:461:13:461:24 | ... + ... | 2.0 | +| test.c:461:18:461:19 | 14 | 1.0 | +| test.c:461:18:461:19 | (unsigned int)... | 1.0 | +| test.c:461:23:461:24 | 32 | 1.0 | +| test.c:461:23:461:24 | (unsigned int)... | 1.0 | +| test.c:462:9:462:26 | (...) | 2.0 | +| test.c:462:10:462:10 | 2 | 1.0 | +| test.c:462:10:462:10 | (unsigned int)... | 1.0 | +| test.c:462:10:462:15 | ... * ... | 2.0 | +| test.c:462:10:462:20 | ... * ... | 2.0 | +| test.c:462:10:462:25 | ... + ... | 2.0 | +| test.c:462:14:462:15 | ip | 2.0 | +| test.c:462:19:462:20 | 14 | 1.0 | +| test.c:462:19:462:20 | (unsigned int)... | 1.0 | +| test.c:462:24:462:25 | 32 | 1.0 | +| test.c:462:24:462:25 | (unsigned int)... | 1.0 | +| test.c:463:9:463:9 | 2 | 1.0 | +| test.c:463:9:463:9 | (unsigned int)... | 1.0 | +| test.c:463:9:463:26 | ... * ... | 2.0 | +| test.c:463:13:463:26 | (...) | 2.0 | +| test.c:463:14:463:15 | ip | 2.0 | +| test.c:463:14:463:20 | ... * ... | 2.0 | +| test.c:463:14:463:25 | ... + ... | 2.0 | +| test.c:463:19:463:20 | 14 | 1.0 | +| test.c:463:19:463:20 | (unsigned int)... | 1.0 | +| test.c:463:24:463:25 | 64 | 1.0 | +| test.c:463:24:463:25 | (unsigned int)... | 1.0 | +| test.c:464:9:468:22 | (...) | 125.0 | +| test.c:464:10:464:21 | (...) | 2.0 | +| test.c:464:10:464:26 | ... * ... | 2.0 | +| test.c:464:10:464:80 | ... > ... | 1.0 | +| test.c:464:10:468:21 | ... ? ... : ... | 125.0 | +| test.c:464:11:464:11 | 2 | 1.0 | +| test.c:464:11:464:11 | (unsigned int)... | 1.0 | +| test.c:464:11:464:16 | ... * ... | 2.0 | +| test.c:464:11:464:20 | ... + ... | 2.0 | +| test.c:464:15:464:16 | ip | 2.0 | +| test.c:464:20:464:20 | 1 | 1.0 | +| test.c:464:20:464:20 | (unsigned int)... | 1.0 | +| test.c:464:25:464:26 | 14 | 1.0 | +| test.c:464:25:464:26 | (unsigned int)... | 1.0 | +| test.c:464:30:464:80 | (...) | 4.0 | +| test.c:464:31:464:32 | 17 | 1.0 | +| test.c:464:31:464:32 | (unsigned int)... | 1.0 | +| test.c:464:31:464:43 | ... * ... | 2.0 | +| test.c:464:31:464:53 | ... > ... | 1.0 | +| test.c:464:31:464:79 | ... ? ... : ... | 4.0 | +| test.c:464:36:464:43 | (...) | 2.0 | +| test.c:464:37:464:37 | 2 | 1.0 | +| test.c:464:37:464:37 | (unsigned int)... | 1.0 | +| test.c:464:37:464:42 | ... * ... | 2.0 | +| test.c:464:41:464:42 | ip | 2.0 | +| test.c:464:47:464:48 | 17 | 1.0 | +| test.c:464:47:464:48 | (unsigned int)... | 1.0 | +| test.c:464:47:464:53 | ... * ... | 2.0 | +| test.c:464:52:464:53 | ip | 2.0 | +| test.c:464:57:464:58 | 17 | 1.0 | +| test.c:464:57:464:58 | (unsigned int)... | 1.0 | +| test.c:464:57:464:69 | ... * ... | 2.0 | +| test.c:464:62:464:69 | (...) | 2.0 | +| test.c:464:63:464:63 | 2 | 1.0 | +| test.c:464:63:464:63 | (unsigned int)... | 1.0 | +| test.c:464:63:464:68 | ... * ... | 2.0 | +| test.c:464:67:464:68 | ip | 2.0 | +| test.c:464:73:464:74 | 17 | 1.0 | +| test.c:464:73:464:74 | (unsigned int)... | 1.0 | +| test.c:464:73:464:79 | ... * ... | 2.0 | +| test.c:464:78:464:79 | ip | 2.0 | +| test.c:465:13:465:24 | (...) | 5.0 | +| test.c:465:13:465:29 | ... * ... | 5.0 | +| test.c:465:14:465:14 | 2 | 1.0 | +| test.c:465:14:465:14 | (unsigned int)... | 1.0 | +| test.c:465:14:465:19 | ... * ... | 5.0 | +| test.c:465:14:465:23 | ... + ... | 5.0 | +| test.c:465:18:465:19 | ip | 5.0 | +| test.c:465:23:465:23 | 1 | 1.0 | +| test.c:465:23:465:23 | (unsigned int)... | 1.0 | +| test.c:465:28:465:29 | 14 | 1.0 | +| test.c:465:28:465:29 | (unsigned int)... | 1.0 | +| test.c:466:13:466:14 | 14 | 1.0 | +| test.c:466:13:466:14 | (unsigned int)... | 1.0 | +| test.c:466:13:466:25 | ... * ... | 5.0 | +| test.c:466:13:466:35 | ... > ... | 1.0 | +| test.c:466:13:468:21 | ... ? ... : ... | 25.0 | +| test.c:466:18:466:25 | (...) | 5.0 | +| test.c:466:19:466:19 | 2 | 1.0 | +| test.c:466:19:466:19 | (unsigned int)... | 1.0 | +| test.c:466:19:466:24 | ... * ... | 5.0 | +| test.c:466:23:466:24 | ip | 5.0 | +| test.c:466:29:466:30 | 17 | 1.0 | +| test.c:466:29:466:30 | (unsigned int)... | 1.0 | +| test.c:466:29:466:35 | ... * ... | 5.0 | +| test.c:466:34:466:35 | ip | 5.0 | +| test.c:467:15:467:16 | 14 | 1.0 | +| test.c:467:15:467:16 | (unsigned int)... | 1.0 | +| test.c:467:15:467:27 | ... * ... | 5.0 | +| test.c:467:20:467:27 | (...) | 5.0 | +| test.c:467:21:467:21 | 2 | 1.0 | +| test.c:467:21:467:21 | (unsigned int)... | 1.0 | +| test.c:467:21:467:26 | ... * ... | 5.0 | +| test.c:467:25:467:26 | ip | 5.0 | +| test.c:468:15:468:16 | 14 | 1.0 | +| test.c:468:15:468:16 | (unsigned int)... | 1.0 | +| test.c:468:15:468:21 | ... * ... | 5.0 | +| test.c:468:20:468:21 | ip | 5.0 | +| test.c:469:7:469:7 | 2 | 1.0 | +| test.c:469:7:469:7 | (unsigned int)... | 1.0 | +| test.c:469:7:469:12 | ... * ... | 15.0 | +| test.c:469:7:469:17 | ... * ... | 15.0 | +| test.c:469:7:469:37 | ... + ... | 225.0 | +| test.c:469:11:469:12 | ip | 15.0 | +| test.c:469:16:469:17 | 14 | 1.0 | +| test.c:469:16:469:17 | (unsigned int)... | 1.0 | +| test.c:469:21:469:32 | (...) | 15.0 | +| test.c:469:21:469:37 | ... * ... | 15.0 | +| test.c:469:22:469:22 | 2 | 1.0 | +| test.c:469:22:469:22 | (unsigned int)... | 1.0 | +| test.c:469:22:469:27 | ... * ... | 15.0 | +| test.c:469:22:469:31 | ... + ... | 15.0 | +| test.c:469:26:469:27 | ip | 15.0 | +| test.c:469:31:469:31 | 1 | 1.0 | +| test.c:469:31:469:31 | (unsigned int)... | 1.0 | +| test.c:469:36:469:37 | 17 | 1.0 | +| test.c:469:36:469:37 | (unsigned int)... | 1.0 | +| test.c:470:11:470:11 | 4 | 1.0 | +| test.c:470:11:470:11 | (unsigned int)... | 1.0 | +| test.c:470:11:470:28 | ... * ... | 15.0 | +| test.c:470:11:471:28 | ... + ... | 225.0 | +| test.c:470:11:472:28 | ... + ... | 3375.0 | +| test.c:470:11:478:24 | ... + ... | 1.00544625E8 | +| test.c:470:15:470:28 | (...) | 15.0 | +| test.c:470:16:470:17 | ip | 15.0 | +| test.c:470:16:470:22 | ... * ... | 15.0 | +| test.c:470:16:470:27 | ... + ... | 15.0 | +| test.c:470:21:470:22 | 14 | 1.0 | | test.c:470:21:470:22 | (unsigned int)... | 1.0 | -| test.c:471:7:471:24 | (...) | 108.0 | -| test.c:471:8:471:8 | 2 | 1.0 | -| test.c:471:8:471:8 | (unsigned int)... | 1.0 | -| test.c:471:8:471:13 | ... * ... | 108.0 | -| test.c:471:8:471:18 | ... * ... | 108.0 | -| test.c:471:8:471:23 | ... + ... | 108.0 | -| test.c:471:12:471:13 | ip | 108.0 | -| test.c:471:17:471:18 | 14 | 1.0 | -| test.c:471:17:471:18 | (unsigned int)... | 1.0 | -| test.c:471:22:471:23 | 32 | 1.0 | -| test.c:471:22:471:23 | (unsigned int)... | 1.0 | -| test.c:472:7:472:7 | 2 | 1.0 | -| test.c:472:7:472:7 | (unsigned int)... | 1.0 | -| test.c:472:7:472:24 | ... * ... | 108.0 | -| test.c:472:11:472:24 | (...) | 108.0 | -| test.c:472:12:472:13 | ip | 108.0 | -| test.c:472:12:472:18 | ... * ... | 108.0 | -| test.c:472:12:472:23 | ... + ... | 108.0 | -| test.c:472:17:472:18 | 14 | 1.0 | -| test.c:472:17:472:18 | (unsigned int)... | 1.0 | -| test.c:472:22:472:23 | 64 | 1.0 | -| test.c:472:22:472:23 | (unsigned int)... | 1.0 | -| test.c:473:7:477:20 | (...) | 1.0218313E7 | -| test.c:473:8:473:19 | (...) | 108.0 | -| test.c:473:8:473:24 | ... * ... | 108.0 | -| test.c:473:8:473:78 | ... > ... | 1.0 | -| test.c:473:8:477:19 | ... ? ... : ... | 1.0218313E7 | -| test.c:473:9:473:9 | 2 | 1.0 | -| test.c:473:9:473:9 | (unsigned int)... | 1.0 | -| test.c:473:9:473:14 | ... * ... | 108.0 | -| test.c:473:9:473:18 | ... + ... | 108.0 | -| test.c:473:13:473:14 | ip | 108.0 | -| test.c:473:18:473:18 | 1 | 1.0 | -| test.c:473:18:473:18 | (unsigned int)... | 1.0 | -| test.c:473:23:473:24 | 14 | 1.0 | -| test.c:473:23:473:24 | (unsigned int)... | 1.0 | -| test.c:473:28:473:78 | (...) | 11664.0 | -| test.c:473:29:473:30 | 17 | 1.0 | -| test.c:473:29:473:30 | (unsigned int)... | 1.0 | -| test.c:473:29:473:41 | ... * ... | 108.0 | -| test.c:473:29:473:51 | ... > ... | 1.0 | -| test.c:473:29:473:77 | ... ? ... : ... | 11664.0 | -| test.c:473:34:473:41 | (...) | 108.0 | -| test.c:473:35:473:35 | 2 | 1.0 | -| test.c:473:35:473:35 | (unsigned int)... | 1.0 | -| test.c:473:35:473:40 | ... * ... | 108.0 | -| test.c:473:39:473:40 | ip | 108.0 | -| test.c:473:45:473:46 | 17 | 1.0 | -| test.c:473:45:473:46 | (unsigned int)... | 1.0 | -| test.c:473:45:473:51 | ... * ... | 108.0 | -| test.c:473:50:473:51 | ip | 108.0 | -| test.c:473:55:473:56 | 17 | 1.0 | -| test.c:473:55:473:56 | (unsigned int)... | 1.0 | -| test.c:473:55:473:67 | ... * ... | 108.0 | -| test.c:473:60:473:67 | (...) | 108.0 | -| test.c:473:61:473:61 | 2 | 1.0 | -| test.c:473:61:473:61 | (unsigned int)... | 1.0 | -| test.c:473:61:473:66 | ... * ... | 108.0 | -| test.c:473:65:473:66 | ip | 108.0 | -| test.c:473:71:473:72 | 17 | 1.0 | -| test.c:473:71:473:72 | (unsigned int)... | 1.0 | -| test.c:473:71:473:77 | ... * ... | 108.0 | -| test.c:473:76:473:77 | ip | 108.0 | -| test.c:474:11:474:22 | (...) | 217.0 | -| test.c:474:11:474:27 | ... * ... | 217.0 | -| test.c:474:12:474:12 | 2 | 1.0 | -| test.c:474:12:474:12 | (unsigned int)... | 1.0 | -| test.c:474:12:474:17 | ... * ... | 217.0 | -| test.c:474:12:474:21 | ... + ... | 217.0 | -| test.c:474:16:474:17 | ip | 217.0 | -| test.c:474:21:474:21 | 1 | 1.0 | -| test.c:474:21:474:21 | (unsigned int)... | 1.0 | -| test.c:474:26:474:27 | 14 | 1.0 | -| test.c:474:26:474:27 | (unsigned int)... | 1.0 | -| test.c:475:11:475:12 | 14 | 1.0 | -| test.c:475:11:475:12 | (unsigned int)... | 1.0 | -| test.c:475:11:475:23 | ... * ... | 217.0 | -| test.c:475:11:475:33 | ... > ... | 1.0 | -| test.c:475:11:477:19 | ... ? ... : ... | 47089.0 | -| test.c:475:16:475:23 | (...) | 217.0 | -| test.c:475:17:475:17 | 2 | 1.0 | -| test.c:475:17:475:17 | (unsigned int)... | 1.0 | -| test.c:475:17:475:22 | ... * ... | 217.0 | -| test.c:475:21:475:22 | ip | 217.0 | -| test.c:475:27:475:28 | 17 | 1.0 | -| test.c:475:27:475:28 | (unsigned int)... | 1.0 | -| test.c:475:27:475:33 | ... * ... | 217.0 | -| test.c:475:32:475:33 | ip | 217.0 | -| test.c:476:13:476:14 | 14 | 1.0 | -| test.c:476:13:476:14 | (unsigned int)... | 1.0 | -| test.c:476:13:476:25 | ... * ... | 217.0 | -| test.c:476:18:476:25 | (...) | 217.0 | -| test.c:476:19:476:19 | 2 | 1.0 | -| test.c:476:19:476:19 | (unsigned int)... | 1.0 | -| test.c:476:19:476:24 | ... * ... | 217.0 | -| test.c:476:23:476:24 | ip | 217.0 | -| test.c:477:13:477:14 | 14 | 1.0 | -| test.c:477:13:477:14 | (unsigned int)... | 1.0 | -| test.c:477:13:477:19 | ... * ... | 217.0 | -| test.c:477:18:477:19 | ip | 217.0 | -| test.c:478:5:478:55 | (...) | 423801.0 | -| test.c:478:6:478:7 | 14 | 1.0 | -| test.c:478:6:478:7 | (unsigned int)... | 1.0 | -| test.c:478:6:478:12 | ... * ... | 651.0 | -| test.c:478:6:478:28 | ... > ... | 1.0 | -| test.c:478:6:478:54 | ... ? ... : ... | 423801.0 | -| test.c:478:11:478:12 | ip | 651.0 | -| test.c:478:16:478:23 | (...) | 651.0 | -| test.c:478:16:478:28 | ... * ... | 651.0 | -| test.c:478:17:478:18 | ip | 651.0 | -| test.c:478:17:478:22 | ... + ... | 651.0 | -| test.c:478:22:478:22 | 1 | 1.0 | -| test.c:478:22:478:22 | (unsigned int)... | 1.0 | -| test.c:478:27:478:28 | 17 | 1.0 | -| test.c:478:27:478:28 | (unsigned int)... | 1.0 | -| test.c:478:32:478:33 | 17 | 1.0 | -| test.c:478:32:478:33 | (unsigned int)... | 1.0 | -| test.c:478:32:478:38 | ... * ... | 651.0 | -| test.c:478:37:478:38 | ip | 651.0 | -| test.c:478:42:478:49 | (...) | 651.0 | -| test.c:478:42:478:54 | ... * ... | 651.0 | -| test.c:478:43:478:44 | ip | 651.0 | -| test.c:478:43:478:48 | ... + ... | 651.0 | -| test.c:478:48:478:48 | 1 | 1.0 | -| test.c:478:48:478:48 | (unsigned int)... | 1.0 | -| test.c:478:53:478:54 | 17 | 1.0 | -| test.c:478:53:478:54 | (unsigned int)... | 1.0 | -| test.c:479:9:479:9 | 4 | 1.0 | -| test.c:479:9:479:9 | (unsigned int)... | 1.0 | -| test.c:479:9:479:26 | ... * ... | 1302.0 | -| test.c:479:9:480:26 | ... + ... | 1695204.0 | -| test.c:479:9:481:26 | ... + ... | 2.207155608E9 | -| test.c:479:9:486:22 | ... + ... | 3.9017203216097214E19 | -| test.c:479:13:479:26 | (...) | 1302.0 | -| test.c:479:14:479:15 | ip | 1302.0 | -| test.c:479:14:479:20 | ... * ... | 1302.0 | -| test.c:479:14:479:25 | ... + ... | 1302.0 | -| test.c:479:19:479:20 | 14 | 1.0 | -| test.c:479:19:479:20 | (unsigned int)... | 1.0 | -| test.c:479:24:479:25 | 32 | 1.0 | -| test.c:479:24:479:25 | (unsigned int)... | 1.0 | -| test.c:480:9:480:26 | (...) | 1302.0 | -| test.c:480:10:480:10 | 2 | 1.0 | -| test.c:480:10:480:10 | (unsigned int)... | 1.0 | -| test.c:480:10:480:15 | ... * ... | 1302.0 | -| test.c:480:10:480:20 | ... * ... | 1302.0 | -| test.c:480:10:480:25 | ... + ... | 1302.0 | -| test.c:480:14:480:15 | ip | 1302.0 | -| test.c:480:19:480:20 | 14 | 1.0 | -| test.c:480:19:480:20 | (unsigned int)... | 1.0 | -| test.c:480:24:480:25 | 32 | 1.0 | -| test.c:480:24:480:25 | (unsigned int)... | 1.0 | -| test.c:481:9:481:9 | 2 | 1.0 | -| test.c:481:9:481:9 | (unsigned int)... | 1.0 | -| test.c:481:9:481:26 | ... * ... | 1302.0 | -| test.c:481:13:481:26 | (...) | 1302.0 | -| test.c:481:14:481:15 | ip | 1302.0 | -| test.c:481:14:481:20 | ... * ... | 1302.0 | -| test.c:481:14:481:25 | ... + ... | 1302.0 | -| test.c:481:19:481:20 | 14 | 1.0 | -| test.c:481:19:481:20 | (unsigned int)... | 1.0 | -| test.c:481:24:481:25 | 64 | 1.0 | -| test.c:481:24:481:25 | (unsigned int)... | 1.0 | -| test.c:482:9:486:22 | (...) | 1.7677595125E10 | -| test.c:482:10:482:21 | (...) | 1302.0 | -| test.c:482:10:482:26 | ... * ... | 1302.0 | -| test.c:482:10:482:80 | ... > ... | 1.0 | -| test.c:482:10:486:21 | ... ? ... : ... | 1.7677595125E10 | -| test.c:482:11:482:11 | 2 | 1.0 | -| test.c:482:11:482:11 | (unsigned int)... | 1.0 | -| test.c:482:11:482:16 | ... * ... | 1302.0 | -| test.c:482:11:482:20 | ... + ... | 1302.0 | -| test.c:482:15:482:16 | ip | 1302.0 | -| test.c:482:20:482:20 | 1 | 1.0 | -| test.c:482:20:482:20 | (unsigned int)... | 1.0 | -| test.c:482:25:482:26 | 14 | 1.0 | -| test.c:482:25:482:26 | (unsigned int)... | 1.0 | -| test.c:482:30:482:80 | (...) | 1695204.0 | -| test.c:482:31:482:32 | 17 | 1.0 | -| test.c:482:31:482:32 | (unsigned int)... | 1.0 | -| test.c:482:31:482:43 | ... * ... | 1302.0 | -| test.c:482:31:482:53 | ... > ... | 1.0 | -| test.c:482:31:482:79 | ... ? ... : ... | 1695204.0 | -| test.c:482:36:482:43 | (...) | 1302.0 | -| test.c:482:37:482:37 | 2 | 1.0 | -| test.c:482:37:482:37 | (unsigned int)... | 1.0 | -| test.c:482:37:482:42 | ... * ... | 1302.0 | -| test.c:482:41:482:42 | ip | 1302.0 | -| test.c:482:47:482:48 | 17 | 1.0 | -| test.c:482:47:482:48 | (unsigned int)... | 1.0 | -| test.c:482:47:482:53 | ... * ... | 1302.0 | -| test.c:482:52:482:53 | ip | 1302.0 | -| test.c:482:57:482:58 | 17 | 1.0 | -| test.c:482:57:482:58 | (unsigned int)... | 1.0 | -| test.c:482:57:482:69 | ... * ... | 1302.0 | -| test.c:482:62:482:69 | (...) | 1302.0 | -| test.c:482:63:482:63 | 2 | 1.0 | -| test.c:482:63:482:63 | (unsigned int)... | 1.0 | -| test.c:482:63:482:68 | ... * ... | 1302.0 | -| test.c:482:67:482:68 | ip | 1302.0 | -| test.c:482:73:482:74 | 17 | 1.0 | -| test.c:482:73:482:74 | (unsigned int)... | 1.0 | -| test.c:482:73:482:79 | ... * ... | 1302.0 | -| test.c:482:78:482:79 | ip | 1302.0 | -| test.c:483:13:483:24 | (...) | 2605.0 | -| test.c:483:13:483:29 | ... * ... | 2605.0 | -| test.c:483:14:483:14 | 2 | 1.0 | -| test.c:483:14:483:14 | (unsigned int)... | 1.0 | -| test.c:483:14:483:19 | ... * ... | 2605.0 | -| test.c:483:14:483:23 | ... + ... | 2605.0 | -| test.c:483:18:483:19 | ip | 2605.0 | -| test.c:483:23:483:23 | 1 | 1.0 | -| test.c:483:23:483:23 | (unsigned int)... | 1.0 | -| test.c:483:28:483:29 | 14 | 1.0 | -| test.c:483:28:483:29 | (unsigned int)... | 1.0 | -| test.c:484:13:484:14 | 14 | 1.0 | -| test.c:484:13:484:14 | (unsigned int)... | 1.0 | -| test.c:484:13:484:25 | ... * ... | 2605.0 | -| test.c:484:13:484:35 | ... > ... | 1.0 | -| test.c:484:13:486:21 | ... ? ... : ... | 6786025.0 | -| test.c:484:18:484:25 | (...) | 2605.0 | -| test.c:484:19:484:19 | 2 | 1.0 | -| test.c:484:19:484:19 | (unsigned int)... | 1.0 | -| test.c:484:19:484:24 | ... * ... | 2605.0 | -| test.c:484:23:484:24 | ip | 2605.0 | -| test.c:484:29:484:30 | 17 | 1.0 | -| test.c:484:29:484:30 | (unsigned int)... | 1.0 | -| test.c:484:29:484:35 | ... * ... | 2605.0 | -| test.c:484:34:484:35 | ip | 2605.0 | -| test.c:485:15:485:16 | 14 | 1.0 | -| test.c:485:15:485:16 | (unsigned int)... | 1.0 | -| test.c:485:15:485:27 | ... * ... | 2605.0 | -| test.c:485:20:485:27 | (...) | 2605.0 | -| test.c:485:21:485:21 | 2 | 1.0 | -| test.c:485:21:485:21 | (unsigned int)... | 1.0 | -| test.c:485:21:485:26 | ... * ... | 2605.0 | -| test.c:485:25:485:26 | ip | 2605.0 | -| test.c:486:15:486:16 | 14 | 1.0 | -| test.c:486:15:486:16 | (unsigned int)... | 1.0 | -| test.c:486:15:486:21 | ... * ... | 2605.0 | -| test.c:486:20:486:21 | ip | 2605.0 | -| test.c:487:9:487:10 | 14 | 1.0 | -| test.c:487:9:487:10 | (unsigned int)... | 1.0 | -| test.c:487:9:487:15 | ... * ... | 1302.0 | -| test.c:487:9:487:31 | ... > ... | 1.0 | -| test.c:487:9:489:23 | ... ? ... : ... | 1695204.0 | -| test.c:487:14:487:15 | ip | 1302.0 | -| test.c:487:19:487:26 | (...) | 1302.0 | -| test.c:487:19:487:31 | ... * ... | 1302.0 | -| test.c:487:20:487:21 | ip | 1302.0 | -| test.c:487:20:487:25 | ... + ... | 1302.0 | -| test.c:487:25:487:25 | 1 | 1.0 | -| test.c:487:25:487:25 | (unsigned int)... | 1.0 | -| test.c:487:30:487:31 | 17 | 1.0 | -| test.c:487:30:487:31 | (unsigned int)... | 1.0 | -| test.c:488:11:488:12 | 14 | 1.0 | -| test.c:488:11:488:12 | (unsigned int)... | 1.0 | -| test.c:488:11:488:17 | ... * ... | 1302.0 | -| test.c:488:16:488:17 | ip | 1302.0 | -| test.c:489:11:489:18 | (...) | 1302.0 | -| test.c:489:11:489:23 | ... * ... | 1302.0 | -| test.c:489:12:489:13 | ip | 1302.0 | -| test.c:489:12:489:17 | ... + ... | 1302.0 | -| test.c:489:17:489:17 | 1 | 1.0 | -| test.c:489:17:489:17 | (unsigned int)... | 1.0 | -| test.c:489:22:489:23 | 14 | 1.0 | -| test.c:489:22:489:23 | (unsigned int)... | 1.0 | -| test.c:490:9:490:9 | 2 | 1.0 | -| test.c:490:9:490:9 | (unsigned int)... | 1.0 | -| test.c:490:9:490:26 | ... * ... | 10419.0 | -| test.c:490:9:510:44 | ... + ... | 1.9449636104972528E43 | -| test.c:490:13:490:26 | (...) | 10419.0 | -| test.c:490:14:490:15 | ip | 10419.0 | -| test.c:490:14:490:20 | ... * ... | 10419.0 | -| test.c:490:14:490:25 | ... + ... | 10419.0 | +| test.c:470:26:470:27 | 32 | 1.0 | +| test.c:470:26:470:27 | (unsigned int)... | 1.0 | +| test.c:471:11:471:28 | (...) | 15.0 | +| test.c:471:12:471:12 | 2 | 1.0 | +| test.c:471:12:471:12 | (unsigned int)... | 1.0 | +| test.c:471:12:471:17 | ... * ... | 15.0 | +| test.c:471:12:471:22 | ... * ... | 15.0 | +| test.c:471:12:471:27 | ... + ... | 15.0 | +| test.c:471:16:471:17 | ip | 15.0 | +| test.c:471:21:471:22 | 14 | 1.0 | +| test.c:471:21:471:22 | (unsigned int)... | 1.0 | +| test.c:471:26:471:27 | 32 | 1.0 | +| test.c:471:26:471:27 | (unsigned int)... | 1.0 | +| test.c:472:11:472:11 | 2 | 1.0 | +| test.c:472:11:472:11 | (unsigned int)... | 1.0 | +| test.c:472:11:472:28 | ... * ... | 15.0 | +| test.c:472:15:472:28 | (...) | 15.0 | +| test.c:472:16:472:17 | ip | 15.0 | +| test.c:472:16:472:22 | ... * ... | 15.0 | +| test.c:472:16:472:27 | ... + ... | 15.0 | +| test.c:472:21:472:22 | 14 | 1.0 | +| test.c:472:21:472:22 | (unsigned int)... | 1.0 | +| test.c:472:26:472:27 | 64 | 1.0 | +| test.c:472:26:472:27 | (unsigned int)... | 1.0 | +| test.c:473:11:478:24 | (...) | 29791.0 | +| test.c:473:12:473:23 | (...) | 15.0 | +| test.c:473:12:473:28 | ... * ... | 15.0 | +| test.c:473:12:474:61 | ... > ... | 1.0 | +| test.c:473:12:478:23 | ... ? ... : ... | 29791.0 | +| test.c:473:13:473:13 | 2 | 1.0 | +| test.c:473:13:473:13 | (unsigned int)... | 1.0 | +| test.c:473:13:473:18 | ... * ... | 15.0 | +| test.c:473:13:473:22 | ... + ... | 15.0 | +| test.c:473:17:473:18 | ip | 15.0 | +| test.c:473:22:473:22 | 1 | 1.0 | +| test.c:473:22:473:22 | (unsigned int)... | 1.0 | +| test.c:473:27:473:28 | 14 | 1.0 | +| test.c:473:27:473:28 | (unsigned int)... | 1.0 | +| test.c:474:11:474:61 | (...) | 225.0 | +| test.c:474:12:474:13 | 14 | 1.0 | +| test.c:474:12:474:13 | (unsigned int)... | 1.0 | +| test.c:474:12:474:24 | ... * ... | 15.0 | +| test.c:474:12:474:34 | ... > ... | 1.0 | +| test.c:474:12:474:60 | ... ? ... : ... | 225.0 | +| test.c:474:17:474:24 | (...) | 15.0 | +| test.c:474:18:474:18 | 2 | 1.0 | +| test.c:474:18:474:18 | (unsigned int)... | 1.0 | +| test.c:474:18:474:23 | ... * ... | 15.0 | +| test.c:474:22:474:23 | ip | 15.0 | +| test.c:474:28:474:29 | 17 | 1.0 | +| test.c:474:28:474:29 | (unsigned int)... | 1.0 | +| test.c:474:28:474:34 | ... * ... | 15.0 | +| test.c:474:33:474:34 | ip | 15.0 | +| test.c:474:38:474:39 | 17 | 1.0 | +| test.c:474:38:474:39 | (unsigned int)... | 1.0 | +| test.c:474:38:474:50 | ... * ... | 15.0 | +| test.c:474:43:474:50 | (...) | 15.0 | +| test.c:474:44:474:44 | 2 | 1.0 | +| test.c:474:44:474:44 | (unsigned int)... | 1.0 | +| test.c:474:44:474:49 | ... * ... | 15.0 | +| test.c:474:48:474:49 | ip | 15.0 | +| test.c:474:54:474:55 | 17 | 1.0 | +| test.c:474:54:474:55 | (unsigned int)... | 1.0 | +| test.c:474:54:474:60 | ... * ... | 15.0 | +| test.c:474:59:474:60 | ip | 15.0 | +| test.c:475:15:475:26 | (...) | 31.0 | +| test.c:475:15:475:31 | ... * ... | 31.0 | +| test.c:475:16:475:16 | 2 | 1.0 | +| test.c:475:16:475:16 | (unsigned int)... | 1.0 | +| test.c:475:16:475:21 | ... * ... | 31.0 | +| test.c:475:16:475:25 | ... + ... | 31.0 | +| test.c:475:20:475:21 | ip | 31.0 | +| test.c:475:25:475:25 | 1 | 1.0 | +| test.c:475:25:475:25 | (unsigned int)... | 1.0 | +| test.c:475:30:475:31 | 14 | 1.0 | +| test.c:475:30:475:31 | (unsigned int)... | 1.0 | +| test.c:476:15:476:16 | 14 | 1.0 | +| test.c:476:15:476:16 | (unsigned int)... | 1.0 | +| test.c:476:15:476:27 | ... * ... | 31.0 | +| test.c:476:15:476:37 | ... > ... | 1.0 | +| test.c:476:15:478:23 | ... ? ... : ... | 961.0 | +| test.c:476:20:476:27 | (...) | 31.0 | +| test.c:476:21:476:21 | 2 | 1.0 | +| test.c:476:21:476:21 | (unsigned int)... | 1.0 | +| test.c:476:21:476:26 | ... * ... | 31.0 | +| test.c:476:25:476:26 | ip | 31.0 | +| test.c:476:31:476:32 | 17 | 1.0 | +| test.c:476:31:476:32 | (unsigned int)... | 1.0 | +| test.c:476:31:476:37 | ... * ... | 31.0 | +| test.c:476:36:476:37 | ip | 31.0 | +| test.c:477:17:477:18 | 14 | 1.0 | +| test.c:477:17:477:18 | (unsigned int)... | 1.0 | +| test.c:477:17:477:29 | ... * ... | 31.0 | +| test.c:477:22:477:29 | (...) | 31.0 | +| test.c:477:23:477:23 | 2 | 1.0 | +| test.c:477:23:477:23 | (unsigned int)... | 1.0 | +| test.c:477:23:477:28 | ... * ... | 31.0 | +| test.c:477:27:477:28 | ip | 31.0 | +| test.c:478:17:478:18 | 14 | 1.0 | +| test.c:478:17:478:18 | (unsigned int)... | 1.0 | +| test.c:478:17:478:23 | ... * ... | 31.0 | +| test.c:478:22:478:23 | ip | 31.0 | +| test.c:479:11:479:11 | 2 | 1.0 | +| test.c:479:11:479:11 | (unsigned int)... | 1.0 | +| test.c:479:11:479:16 | ... * ... | 15.0 | +| test.c:479:11:479:21 | ... * ... | 15.0 | +| test.c:479:11:479:41 | ... + ... | 225.0 | +| test.c:479:15:479:16 | ip | 15.0 | +| test.c:479:20:479:21 | 14 | 1.0 | +| test.c:479:20:479:21 | (unsigned int)... | 1.0 | +| test.c:479:25:479:36 | (...) | 15.0 | +| test.c:479:25:479:41 | ... * ... | 15.0 | +| test.c:479:26:479:26 | 2 | 1.0 | +| test.c:479:26:479:26 | (unsigned int)... | 1.0 | +| test.c:479:26:479:31 | ... * ... | 15.0 | +| test.c:479:26:479:35 | ... + ... | 15.0 | +| test.c:479:30:479:31 | ip | 15.0 | +| test.c:479:35:479:35 | 1 | 1.0 | +| test.c:479:35:479:35 | (unsigned int)... | 1.0 | +| test.c:479:40:479:41 | 17 | 1.0 | +| test.c:479:40:479:41 | (unsigned int)... | 1.0 | +| test.c:480:5:499:24 | (...) | 6.6142118960740864E25 | +| test.c:480:6:480:6 | 4 | 1.0 | +| test.c:480:6:480:6 | (unsigned int)... | 1.0 | +| test.c:480:6:480:23 | ... * ... | 108.0 | +| test.c:480:6:481:24 | ... + ... | 11664.0 | +| test.c:480:6:482:24 | ... + ... | 1259712.0 | +| test.c:480:6:487:20 | ... + ... | 1.2872131505856E13 | +| test.c:480:6:488:55 | ... > ... | 1.0 | +| test.c:480:6:499:23 | ... ? ... : ... | 6.6142118960740864E25 | +| test.c:480:10:480:23 | (...) | 108.0 | +| test.c:480:11:480:12 | ip | 108.0 | +| test.c:480:11:480:17 | ... * ... | 108.0 | +| test.c:480:11:480:22 | ... + ... | 108.0 | +| test.c:480:16:480:17 | 14 | 1.0 | +| test.c:480:16:480:17 | (unsigned int)... | 1.0 | +| test.c:480:21:480:22 | 32 | 1.0 | +| test.c:480:21:480:22 | (unsigned int)... | 1.0 | +| test.c:481:7:481:24 | (...) | 108.0 | +| test.c:481:8:481:8 | 2 | 1.0 | +| test.c:481:8:481:8 | (unsigned int)... | 1.0 | +| test.c:481:8:481:13 | ... * ... | 108.0 | +| test.c:481:8:481:18 | ... * ... | 108.0 | +| test.c:481:8:481:23 | ... + ... | 108.0 | +| test.c:481:12:481:13 | ip | 108.0 | +| test.c:481:17:481:18 | 14 | 1.0 | +| test.c:481:17:481:18 | (unsigned int)... | 1.0 | +| test.c:481:22:481:23 | 32 | 1.0 | +| test.c:481:22:481:23 | (unsigned int)... | 1.0 | +| test.c:482:7:482:7 | 2 | 1.0 | +| test.c:482:7:482:7 | (unsigned int)... | 1.0 | +| test.c:482:7:482:24 | ... * ... | 108.0 | +| test.c:482:11:482:24 | (...) | 108.0 | +| test.c:482:12:482:13 | ip | 108.0 | +| test.c:482:12:482:18 | ... * ... | 108.0 | +| test.c:482:12:482:23 | ... + ... | 108.0 | +| test.c:482:17:482:18 | 14 | 1.0 | +| test.c:482:17:482:18 | (unsigned int)... | 1.0 | +| test.c:482:22:482:23 | 64 | 1.0 | +| test.c:482:22:482:23 | (unsigned int)... | 1.0 | +| test.c:483:7:487:20 | (...) | 1.0218313E7 | +| test.c:483:8:483:19 | (...) | 108.0 | +| test.c:483:8:483:24 | ... * ... | 108.0 | +| test.c:483:8:483:78 | ... > ... | 1.0 | +| test.c:483:8:487:19 | ... ? ... : ... | 1.0218313E7 | +| test.c:483:9:483:9 | 2 | 1.0 | +| test.c:483:9:483:9 | (unsigned int)... | 1.0 | +| test.c:483:9:483:14 | ... * ... | 108.0 | +| test.c:483:9:483:18 | ... + ... | 108.0 | +| test.c:483:13:483:14 | ip | 108.0 | +| test.c:483:18:483:18 | 1 | 1.0 | +| test.c:483:18:483:18 | (unsigned int)... | 1.0 | +| test.c:483:23:483:24 | 14 | 1.0 | +| test.c:483:23:483:24 | (unsigned int)... | 1.0 | +| test.c:483:28:483:78 | (...) | 11664.0 | +| test.c:483:29:483:30 | 17 | 1.0 | +| test.c:483:29:483:30 | (unsigned int)... | 1.0 | +| test.c:483:29:483:41 | ... * ... | 108.0 | +| test.c:483:29:483:51 | ... > ... | 1.0 | +| test.c:483:29:483:77 | ... ? ... : ... | 11664.0 | +| test.c:483:34:483:41 | (...) | 108.0 | +| test.c:483:35:483:35 | 2 | 1.0 | +| test.c:483:35:483:35 | (unsigned int)... | 1.0 | +| test.c:483:35:483:40 | ... * ... | 108.0 | +| test.c:483:39:483:40 | ip | 108.0 | +| test.c:483:45:483:46 | 17 | 1.0 | +| test.c:483:45:483:46 | (unsigned int)... | 1.0 | +| test.c:483:45:483:51 | ... * ... | 108.0 | +| test.c:483:50:483:51 | ip | 108.0 | +| test.c:483:55:483:56 | 17 | 1.0 | +| test.c:483:55:483:56 | (unsigned int)... | 1.0 | +| test.c:483:55:483:67 | ... * ... | 108.0 | +| test.c:483:60:483:67 | (...) | 108.0 | +| test.c:483:61:483:61 | 2 | 1.0 | +| test.c:483:61:483:61 | (unsigned int)... | 1.0 | +| test.c:483:61:483:66 | ... * ... | 108.0 | +| test.c:483:65:483:66 | ip | 108.0 | +| test.c:483:71:483:72 | 17 | 1.0 | +| test.c:483:71:483:72 | (unsigned int)... | 1.0 | +| test.c:483:71:483:77 | ... * ... | 108.0 | +| test.c:483:76:483:77 | ip | 108.0 | +| test.c:484:11:484:22 | (...) | 217.0 | +| test.c:484:11:484:27 | ... * ... | 217.0 | +| test.c:484:12:484:12 | 2 | 1.0 | +| test.c:484:12:484:12 | (unsigned int)... | 1.0 | +| test.c:484:12:484:17 | ... * ... | 217.0 | +| test.c:484:12:484:21 | ... + ... | 217.0 | +| test.c:484:16:484:17 | ip | 217.0 | +| test.c:484:21:484:21 | 1 | 1.0 | +| test.c:484:21:484:21 | (unsigned int)... | 1.0 | +| test.c:484:26:484:27 | 14 | 1.0 | +| test.c:484:26:484:27 | (unsigned int)... | 1.0 | +| test.c:485:11:485:12 | 14 | 1.0 | +| test.c:485:11:485:12 | (unsigned int)... | 1.0 | +| test.c:485:11:485:23 | ... * ... | 217.0 | +| test.c:485:11:485:33 | ... > ... | 1.0 | +| test.c:485:11:487:19 | ... ? ... : ... | 47089.0 | +| test.c:485:16:485:23 | (...) | 217.0 | +| test.c:485:17:485:17 | 2 | 1.0 | +| test.c:485:17:485:17 | (unsigned int)... | 1.0 | +| test.c:485:17:485:22 | ... * ... | 217.0 | +| test.c:485:21:485:22 | ip | 217.0 | +| test.c:485:27:485:28 | 17 | 1.0 | +| test.c:485:27:485:28 | (unsigned int)... | 1.0 | +| test.c:485:27:485:33 | ... * ... | 217.0 | +| test.c:485:32:485:33 | ip | 217.0 | +| test.c:486:13:486:14 | 14 | 1.0 | +| test.c:486:13:486:14 | (unsigned int)... | 1.0 | +| test.c:486:13:486:25 | ... * ... | 217.0 | +| test.c:486:18:486:25 | (...) | 217.0 | +| test.c:486:19:486:19 | 2 | 1.0 | +| test.c:486:19:486:19 | (unsigned int)... | 1.0 | +| test.c:486:19:486:24 | ... * ... | 217.0 | +| test.c:486:23:486:24 | ip | 217.0 | +| test.c:487:13:487:14 | 14 | 1.0 | +| test.c:487:13:487:14 | (unsigned int)... | 1.0 | +| test.c:487:13:487:19 | ... * ... | 217.0 | +| test.c:487:18:487:19 | ip | 217.0 | +| test.c:488:5:488:55 | (...) | 423801.0 | +| test.c:488:6:488:7 | 14 | 1.0 | +| test.c:488:6:488:7 | (unsigned int)... | 1.0 | +| test.c:488:6:488:12 | ... * ... | 651.0 | +| test.c:488:6:488:28 | ... > ... | 1.0 | +| test.c:488:6:488:54 | ... ? ... : ... | 423801.0 | +| test.c:488:11:488:12 | ip | 651.0 | +| test.c:488:16:488:23 | (...) | 651.0 | +| test.c:488:16:488:28 | ... * ... | 651.0 | +| test.c:488:17:488:18 | ip | 651.0 | +| test.c:488:17:488:22 | ... + ... | 651.0 | +| test.c:488:22:488:22 | 1 | 1.0 | +| test.c:488:22:488:22 | (unsigned int)... | 1.0 | +| test.c:488:27:488:28 | 17 | 1.0 | +| test.c:488:27:488:28 | (unsigned int)... | 1.0 | +| test.c:488:32:488:33 | 17 | 1.0 | +| test.c:488:32:488:33 | (unsigned int)... | 1.0 | +| test.c:488:32:488:38 | ... * ... | 651.0 | +| test.c:488:37:488:38 | ip | 651.0 | +| test.c:488:42:488:49 | (...) | 651.0 | +| test.c:488:42:488:54 | ... * ... | 651.0 | +| test.c:488:43:488:44 | ip | 651.0 | +| test.c:488:43:488:48 | ... + ... | 651.0 | +| test.c:488:48:488:48 | 1 | 1.0 | +| test.c:488:48:488:48 | (unsigned int)... | 1.0 | +| test.c:488:53:488:54 | 17 | 1.0 | +| test.c:488:53:488:54 | (unsigned int)... | 1.0 | +| test.c:489:9:489:9 | 4 | 1.0 | +| test.c:489:9:489:9 | (unsigned int)... | 1.0 | +| test.c:489:9:489:26 | ... * ... | 1302.0 | +| test.c:489:9:490:26 | ... + ... | 1695204.0 | +| test.c:489:9:491:26 | ... + ... | 2.207155608E9 | +| test.c:489:9:496:22 | ... + ... | 3.9017203216097214E19 | +| test.c:489:13:489:26 | (...) | 1302.0 | +| test.c:489:14:489:15 | ip | 1302.0 | +| test.c:489:14:489:20 | ... * ... | 1302.0 | +| test.c:489:14:489:25 | ... + ... | 1302.0 | +| test.c:489:19:489:20 | 14 | 1.0 | +| test.c:489:19:489:20 | (unsigned int)... | 1.0 | +| test.c:489:24:489:25 | 32 | 1.0 | +| test.c:489:24:489:25 | (unsigned int)... | 1.0 | +| test.c:490:9:490:26 | (...) | 1302.0 | +| test.c:490:10:490:10 | 2 | 1.0 | +| test.c:490:10:490:10 | (unsigned int)... | 1.0 | +| test.c:490:10:490:15 | ... * ... | 1302.0 | +| test.c:490:10:490:20 | ... * ... | 1302.0 | +| test.c:490:10:490:25 | ... + ... | 1302.0 | +| test.c:490:14:490:15 | ip | 1302.0 | | test.c:490:19:490:20 | 14 | 1.0 | | test.c:490:19:490:20 | (unsigned int)... | 1.0 | | test.c:490:24:490:25 | 32 | 1.0 | | test.c:490:24:490:25 | (unsigned int)... | 1.0 | -| test.c:491:9:510:44 | (...) | 1.8667469147684545E39 | -| test.c:491:10:491:10 | 4 | 1.0 | -| test.c:491:10:491:10 | (unsigned int)... | 1.0 | -| test.c:491:10:491:27 | ... * ... | 10419.0 | -| test.c:491:10:492:28 | ... + ... | 1.08555561E8 | -| test.c:491:10:493:28 | ... + ... | 1.131040390059E12 | -| test.c:491:10:499:24 | ... + ... | 1.0235492350954187E25 | -| test.c:491:10:500:39 | ... > ... | 1.0 | -| test.c:491:10:510:43 | ... ? ... : ... | 1.8667469147684545E39 | -| test.c:491:14:491:27 | (...) | 10419.0 | -| test.c:491:15:491:16 | ip | 10419.0 | -| test.c:491:15:491:21 | ... * ... | 10419.0 | -| test.c:491:15:491:26 | ... + ... | 10419.0 | -| test.c:491:20:491:21 | 14 | 1.0 | -| test.c:491:20:491:21 | (unsigned int)... | 1.0 | -| test.c:491:25:491:26 | 32 | 1.0 | -| test.c:491:25:491:26 | (unsigned int)... | 1.0 | -| test.c:492:11:492:28 | (...) | 10419.0 | -| test.c:492:12:492:12 | 2 | 1.0 | -| test.c:492:12:492:12 | (unsigned int)... | 1.0 | -| test.c:492:12:492:17 | ... * ... | 10419.0 | -| test.c:492:12:492:22 | ... * ... | 10419.0 | -| test.c:492:12:492:27 | ... + ... | 10419.0 | -| test.c:492:16:492:17 | ip | 10419.0 | -| test.c:492:21:492:22 | 14 | 1.0 | -| test.c:492:21:492:22 | (unsigned int)... | 1.0 | -| test.c:492:26:492:27 | 32 | 1.0 | -| test.c:492:26:492:27 | (unsigned int)... | 1.0 | -| test.c:493:11:493:11 | 2 | 1.0 | -| test.c:493:11:493:11 | (unsigned int)... | 1.0 | -| test.c:493:11:493:28 | ... * ... | 10419.0 | -| test.c:493:15:493:28 | (...) | 10419.0 | -| test.c:493:16:493:17 | ip | 10419.0 | -| test.c:493:16:493:22 | ... * ... | 10419.0 | -| test.c:493:16:493:27 | ... + ... | 10419.0 | -| test.c:493:21:493:22 | 14 | 1.0 | -| test.c:493:21:493:22 | (unsigned int)... | 1.0 | -| test.c:493:26:493:27 | 64 | 1.0 | -| test.c:493:26:493:27 | (unsigned int)... | 1.0 | -| test.c:494:11:499:24 | (...) | 9.049625849719E12 | -| test.c:494:12:494:23 | (...) | 10419.0 | -| test.c:494:12:494:28 | ... * ... | 10419.0 | -| test.c:494:12:495:61 | ... > ... | 1.0 | -| test.c:494:12:499:23 | ... ? ... : ... | 9.049625849719E12 | -| test.c:494:13:494:13 | 2 | 1.0 | -| test.c:494:13:494:13 | (unsigned int)... | 1.0 | -| test.c:494:13:494:18 | ... * ... | 10419.0 | -| test.c:494:13:494:22 | ... + ... | 10419.0 | -| test.c:494:17:494:18 | ip | 10419.0 | -| test.c:494:22:494:22 | 1 | 1.0 | -| test.c:494:22:494:22 | (unsigned int)... | 1.0 | -| test.c:494:27:494:28 | 14 | 1.0 | -| test.c:494:27:494:28 | (unsigned int)... | 1.0 | -| test.c:495:11:495:61 | (...) | 1.08555561E8 | -| test.c:495:12:495:13 | 14 | 1.0 | -| test.c:495:12:495:13 | (unsigned int)... | 1.0 | -| test.c:495:12:495:24 | ... * ... | 10419.0 | -| test.c:495:12:495:34 | ... > ... | 1.0 | -| test.c:495:12:495:60 | ... ? ... : ... | 1.08555561E8 | -| test.c:495:17:495:24 | (...) | 10419.0 | -| test.c:495:18:495:18 | 2 | 1.0 | -| test.c:495:18:495:18 | (unsigned int)... | 1.0 | -| test.c:495:18:495:23 | ... * ... | 10419.0 | -| test.c:495:22:495:23 | ip | 10419.0 | -| test.c:495:28:495:29 | 17 | 1.0 | -| test.c:495:28:495:29 | (unsigned int)... | 1.0 | -| test.c:495:28:495:34 | ... * ... | 10419.0 | -| test.c:495:33:495:34 | ip | 10419.0 | -| test.c:495:38:495:39 | 17 | 1.0 | -| test.c:495:38:495:39 | (unsigned int)... | 1.0 | -| test.c:495:38:495:50 | ... * ... | 10419.0 | -| test.c:495:43:495:50 | (...) | 10419.0 | -| test.c:495:44:495:44 | 2 | 1.0 | -| test.c:495:44:495:44 | (unsigned int)... | 1.0 | -| test.c:495:44:495:49 | ... * ... | 10419.0 | -| test.c:495:48:495:49 | ip | 10419.0 | -| test.c:495:54:495:55 | 17 | 1.0 | -| test.c:495:54:495:55 | (unsigned int)... | 1.0 | -| test.c:495:54:495:60 | ... * ... | 10419.0 | -| test.c:495:59:495:60 | ip | 10419.0 | -| test.c:496:15:496:26 | (...) | 20839.0 | -| test.c:496:15:496:31 | ... * ... | 20839.0 | -| test.c:496:16:496:16 | 2 | 1.0 | -| test.c:496:16:496:16 | (unsigned int)... | 1.0 | -| test.c:496:16:496:21 | ... * ... | 20839.0 | -| test.c:496:16:496:25 | ... + ... | 20839.0 | -| test.c:496:20:496:21 | ip | 20839.0 | -| test.c:496:25:496:25 | 1 | 1.0 | -| test.c:496:25:496:25 | (unsigned int)... | 1.0 | -| test.c:496:30:496:31 | 14 | 1.0 | -| test.c:496:30:496:31 | (unsigned int)... | 1.0 | -| test.c:497:15:497:16 | 14 | 1.0 | -| test.c:497:15:497:16 | (unsigned int)... | 1.0 | -| test.c:497:15:497:27 | ... * ... | 20839.0 | -| test.c:497:15:497:37 | ... > ... | 1.0 | -| test.c:497:15:499:23 | ... ? ... : ... | 4.34263921E8 | -| test.c:497:20:497:27 | (...) | 20839.0 | -| test.c:497:21:497:21 | 2 | 1.0 | -| test.c:497:21:497:21 | (unsigned int)... | 1.0 | -| test.c:497:21:497:26 | ... * ... | 20839.0 | -| test.c:497:25:497:26 | ip | 20839.0 | -| test.c:497:31:497:32 | 17 | 1.0 | -| test.c:497:31:497:32 | (unsigned int)... | 1.0 | -| test.c:497:31:497:37 | ... * ... | 20839.0 | -| test.c:497:36:497:37 | ip | 20839.0 | -| test.c:498:17:498:18 | 14 | 1.0 | -| test.c:498:17:498:18 | (unsigned int)... | 1.0 | -| test.c:498:17:498:29 | ... * ... | 20839.0 | -| test.c:498:22:498:29 | (...) | 20839.0 | -| test.c:498:23:498:23 | 2 | 1.0 | -| test.c:498:23:498:23 | (unsigned int)... | 1.0 | -| test.c:498:23:498:28 | ... * ... | 20839.0 | -| test.c:498:27:498:28 | ip | 20839.0 | -| test.c:499:17:499:18 | 14 | 1.0 | -| test.c:499:17:499:18 | (unsigned int)... | 1.0 | -| test.c:499:17:499:23 | ... * ... | 20839.0 | -| test.c:499:22:499:23 | ip | 20839.0 | +| test.c:491:9:491:9 | 2 | 1.0 | +| test.c:491:9:491:9 | (unsigned int)... | 1.0 | +| test.c:491:9:491:26 | ... * ... | 1302.0 | +| test.c:491:13:491:26 | (...) | 1302.0 | +| test.c:491:14:491:15 | ip | 1302.0 | +| test.c:491:14:491:20 | ... * ... | 1302.0 | +| test.c:491:14:491:25 | ... + ... | 1302.0 | +| test.c:491:19:491:20 | 14 | 1.0 | +| test.c:491:19:491:20 | (unsigned int)... | 1.0 | +| test.c:491:24:491:25 | 64 | 1.0 | +| test.c:491:24:491:25 | (unsigned int)... | 1.0 | +| test.c:492:9:496:22 | (...) | 1.7677595125E10 | +| test.c:492:10:492:21 | (...) | 1302.0 | +| test.c:492:10:492:26 | ... * ... | 1302.0 | +| test.c:492:10:492:80 | ... > ... | 1.0 | +| test.c:492:10:496:21 | ... ? ... : ... | 1.7677595125E10 | +| test.c:492:11:492:11 | 2 | 1.0 | +| test.c:492:11:492:11 | (unsigned int)... | 1.0 | +| test.c:492:11:492:16 | ... * ... | 1302.0 | +| test.c:492:11:492:20 | ... + ... | 1302.0 | +| test.c:492:15:492:16 | ip | 1302.0 | +| test.c:492:20:492:20 | 1 | 1.0 | +| test.c:492:20:492:20 | (unsigned int)... | 1.0 | +| test.c:492:25:492:26 | 14 | 1.0 | +| test.c:492:25:492:26 | (unsigned int)... | 1.0 | +| test.c:492:30:492:80 | (...) | 1695204.0 | +| test.c:492:31:492:32 | 17 | 1.0 | +| test.c:492:31:492:32 | (unsigned int)... | 1.0 | +| test.c:492:31:492:43 | ... * ... | 1302.0 | +| test.c:492:31:492:53 | ... > ... | 1.0 | +| test.c:492:31:492:79 | ... ? ... : ... | 1695204.0 | +| test.c:492:36:492:43 | (...) | 1302.0 | +| test.c:492:37:492:37 | 2 | 1.0 | +| test.c:492:37:492:37 | (unsigned int)... | 1.0 | +| test.c:492:37:492:42 | ... * ... | 1302.0 | +| test.c:492:41:492:42 | ip | 1302.0 | +| test.c:492:47:492:48 | 17 | 1.0 | +| test.c:492:47:492:48 | (unsigned int)... | 1.0 | +| test.c:492:47:492:53 | ... * ... | 1302.0 | +| test.c:492:52:492:53 | ip | 1302.0 | +| test.c:492:57:492:58 | 17 | 1.0 | +| test.c:492:57:492:58 | (unsigned int)... | 1.0 | +| test.c:492:57:492:69 | ... * ... | 1302.0 | +| test.c:492:62:492:69 | (...) | 1302.0 | +| test.c:492:63:492:63 | 2 | 1.0 | +| test.c:492:63:492:63 | (unsigned int)... | 1.0 | +| test.c:492:63:492:68 | ... * ... | 1302.0 | +| test.c:492:67:492:68 | ip | 1302.0 | +| test.c:492:73:492:74 | 17 | 1.0 | +| test.c:492:73:492:74 | (unsigned int)... | 1.0 | +| test.c:492:73:492:79 | ... * ... | 1302.0 | +| test.c:492:78:492:79 | ip | 1302.0 | +| test.c:493:13:493:24 | (...) | 2605.0 | +| test.c:493:13:493:29 | ... * ... | 2605.0 | +| test.c:493:14:493:14 | 2 | 1.0 | +| test.c:493:14:493:14 | (unsigned int)... | 1.0 | +| test.c:493:14:493:19 | ... * ... | 2605.0 | +| test.c:493:14:493:23 | ... + ... | 2605.0 | +| test.c:493:18:493:19 | ip | 2605.0 | +| test.c:493:23:493:23 | 1 | 1.0 | +| test.c:493:23:493:23 | (unsigned int)... | 1.0 | +| test.c:493:28:493:29 | 14 | 1.0 | +| test.c:493:28:493:29 | (unsigned int)... | 1.0 | +| test.c:494:13:494:14 | 14 | 1.0 | +| test.c:494:13:494:14 | (unsigned int)... | 1.0 | +| test.c:494:13:494:25 | ... * ... | 2605.0 | +| test.c:494:13:494:35 | ... > ... | 1.0 | +| test.c:494:13:496:21 | ... ? ... : ... | 6786025.0 | +| test.c:494:18:494:25 | (...) | 2605.0 | +| test.c:494:19:494:19 | 2 | 1.0 | +| test.c:494:19:494:19 | (unsigned int)... | 1.0 | +| test.c:494:19:494:24 | ... * ... | 2605.0 | +| test.c:494:23:494:24 | ip | 2605.0 | +| test.c:494:29:494:30 | 17 | 1.0 | +| test.c:494:29:494:30 | (unsigned int)... | 1.0 | +| test.c:494:29:494:35 | ... * ... | 2605.0 | +| test.c:494:34:494:35 | ip | 2605.0 | +| test.c:495:15:495:16 | 14 | 1.0 | +| test.c:495:15:495:16 | (unsigned int)... | 1.0 | +| test.c:495:15:495:27 | ... * ... | 2605.0 | +| test.c:495:20:495:27 | (...) | 2605.0 | +| test.c:495:21:495:21 | 2 | 1.0 | +| test.c:495:21:495:21 | (unsigned int)... | 1.0 | +| test.c:495:21:495:26 | ... * ... | 2605.0 | +| test.c:495:25:495:26 | ip | 2605.0 | +| test.c:496:15:496:16 | 14 | 1.0 | +| test.c:496:15:496:16 | (unsigned int)... | 1.0 | +| test.c:496:15:496:21 | ... * ... | 2605.0 | +| test.c:496:20:496:21 | ip | 2605.0 | +| test.c:497:9:497:10 | 14 | 1.0 | +| test.c:497:9:497:10 | (unsigned int)... | 1.0 | +| test.c:497:9:497:15 | ... * ... | 1302.0 | +| test.c:497:9:497:31 | ... > ... | 1.0 | +| test.c:497:9:499:23 | ... ? ... : ... | 1695204.0 | +| test.c:497:14:497:15 | ip | 1302.0 | +| test.c:497:19:497:26 | (...) | 1302.0 | +| test.c:497:19:497:31 | ... * ... | 1302.0 | +| test.c:497:20:497:21 | ip | 1302.0 | +| test.c:497:20:497:25 | ... + ... | 1302.0 | +| test.c:497:25:497:25 | 1 | 1.0 | +| test.c:497:25:497:25 | (unsigned int)... | 1.0 | +| test.c:497:30:497:31 | 17 | 1.0 | +| test.c:497:30:497:31 | (unsigned int)... | 1.0 | +| test.c:498:11:498:12 | 14 | 1.0 | +| test.c:498:11:498:12 | (unsigned int)... | 1.0 | +| test.c:498:11:498:17 | ... * ... | 1302.0 | +| test.c:498:16:498:17 | ip | 1302.0 | +| test.c:499:11:499:18 | (...) | 1302.0 | +| test.c:499:11:499:23 | ... * ... | 1302.0 | +| test.c:499:12:499:13 | ip | 1302.0 | +| test.c:499:12:499:17 | ... + ... | 1302.0 | +| test.c:499:17:499:17 | 1 | 1.0 | +| test.c:499:17:499:17 | (unsigned int)... | 1.0 | +| test.c:499:22:499:23 | 14 | 1.0 | +| test.c:499:22:499:23 | (unsigned int)... | 1.0 | | test.c:500:9:500:9 | 2 | 1.0 | | test.c:500:9:500:9 | (unsigned int)... | 1.0 | -| test.c:500:9:500:14 | ... * ... | 62517.0 | -| test.c:500:9:500:19 | ... * ... | 62517.0 | -| test.c:500:9:500:39 | ... + ... | 3.908375289E9 | -| test.c:500:13:500:14 | ip | 62517.0 | -| test.c:500:18:500:19 | 14 | 1.0 | -| test.c:500:18:500:19 | (unsigned int)... | 1.0 | -| test.c:500:23:500:34 | (...) | 62517.0 | -| test.c:500:23:500:39 | ... * ... | 62517.0 | -| test.c:500:24:500:24 | 2 | 1.0 | -| test.c:500:24:500:24 | (unsigned int)... | 1.0 | -| test.c:500:24:500:29 | ... * ... | 62517.0 | -| test.c:500:24:500:33 | ... + ... | 62517.0 | -| test.c:500:28:500:29 | ip | 62517.0 | -| test.c:500:33:500:33 | 1 | 1.0 | -| test.c:500:33:500:33 | (unsigned int)... | 1.0 | -| test.c:500:38:500:39 | 17 | 1.0 | -| test.c:500:38:500:39 | (unsigned int)... | 1.0 | -| test.c:501:13:501:13 | 4 | 1.0 | -| test.c:501:13:501:13 | (unsigned int)... | 1.0 | -| test.c:501:13:501:30 | ... * ... | 62517.0 | -| test.c:501:13:502:30 | ... + ... | 3.908375289E9 | -| test.c:501:13:503:30 | ... + ... | 2.44339897942413E14 | -| test.c:501:13:509:26 | ... + ... | 4.7762734556795386E29 | -| test.c:501:17:501:30 | (...) | 62517.0 | -| test.c:501:18:501:19 | ip | 62517.0 | -| test.c:501:18:501:24 | ... * ... | 62517.0 | -| test.c:501:18:501:29 | ... + ... | 62517.0 | -| test.c:501:23:501:24 | 14 | 1.0 | -| test.c:501:23:501:24 | (unsigned int)... | 1.0 | -| test.c:501:28:501:29 | 32 | 1.0 | -| test.c:501:28:501:29 | (unsigned int)... | 1.0 | -| test.c:502:13:502:30 | (...) | 62517.0 | -| test.c:502:14:502:14 | 2 | 1.0 | -| test.c:502:14:502:14 | (unsigned int)... | 1.0 | -| test.c:502:14:502:19 | ... * ... | 62517.0 | -| test.c:502:14:502:24 | ... * ... | 62517.0 | -| test.c:502:14:502:29 | ... + ... | 62517.0 | -| test.c:502:18:502:19 | ip | 62517.0 | -| test.c:502:23:502:24 | 14 | 1.0 | -| test.c:502:23:502:24 | (unsigned int)... | 1.0 | -| test.c:502:28:502:29 | 32 | 1.0 | -| test.c:502:28:502:29 | (unsigned int)... | 1.0 | -| test.c:503:13:503:13 | 2 | 1.0 | -| test.c:503:13:503:13 | (unsigned int)... | 1.0 | -| test.c:503:13:503:30 | ... * ... | 62517.0 | -| test.c:503:17:503:30 | (...) | 62517.0 | -| test.c:503:18:503:19 | ip | 62517.0 | -| test.c:503:18:503:24 | ... * ... | 62517.0 | -| test.c:503:18:503:29 | ... + ... | 62517.0 | -| test.c:503:23:503:24 | 14 | 1.0 | -| test.c:503:23:503:24 | (unsigned int)... | 1.0 | -| test.c:503:28:503:29 | 64 | 1.0 | -| test.c:503:28:503:29 | (unsigned int)... | 1.0 | -| test.c:504:13:509:26 | (...) | 1.954766084417875E15 | -| test.c:504:14:504:25 | (...) | 62517.0 | -| test.c:504:14:504:30 | ... * ... | 62517.0 | -| test.c:504:14:505:63 | ... > ... | 1.0 | -| test.c:504:14:509:25 | ... ? ... : ... | 1.954766084417875E15 | -| test.c:504:15:504:15 | 2 | 1.0 | -| test.c:504:15:504:15 | (unsigned int)... | 1.0 | -| test.c:504:15:504:20 | ... * ... | 62517.0 | -| test.c:504:15:504:24 | ... + ... | 62517.0 | -| test.c:504:19:504:20 | ip | 62517.0 | -| test.c:504:24:504:24 | 1 | 1.0 | -| test.c:504:24:504:24 | (unsigned int)... | 1.0 | -| test.c:504:29:504:30 | 14 | 1.0 | -| test.c:504:29:504:30 | (unsigned int)... | 1.0 | -| test.c:505:13:505:63 | (...) | 3.908375289E9 | -| test.c:505:14:505:15 | 14 | 1.0 | -| test.c:505:14:505:15 | (unsigned int)... | 1.0 | -| test.c:505:14:505:26 | ... * ... | 62517.0 | -| test.c:505:14:505:36 | ... > ... | 1.0 | -| test.c:505:14:505:62 | ... ? ... : ... | 3.908375289E9 | -| test.c:505:19:505:26 | (...) | 62517.0 | -| test.c:505:20:505:20 | 2 | 1.0 | -| test.c:505:20:505:20 | (unsigned int)... | 1.0 | -| test.c:505:20:505:25 | ... * ... | 62517.0 | -| test.c:505:24:505:25 | ip | 62517.0 | -| test.c:505:30:505:31 | 17 | 1.0 | -| test.c:505:30:505:31 | (unsigned int)... | 1.0 | -| test.c:505:30:505:36 | ... * ... | 62517.0 | -| test.c:505:35:505:36 | ip | 62517.0 | -| test.c:505:40:505:41 | 17 | 1.0 | -| test.c:505:40:505:41 | (unsigned int)... | 1.0 | -| test.c:505:40:505:52 | ... * ... | 62517.0 | -| test.c:505:45:505:52 | (...) | 62517.0 | -| test.c:505:46:505:46 | 2 | 1.0 | -| test.c:505:46:505:46 | (unsigned int)... | 1.0 | -| test.c:505:46:505:51 | ... * ... | 62517.0 | -| test.c:505:50:505:51 | ip | 62517.0 | -| test.c:505:56:505:57 | 17 | 1.0 | -| test.c:505:56:505:57 | (unsigned int)... | 1.0 | -| test.c:505:56:505:62 | ... * ... | 62517.0 | -| test.c:505:61:505:62 | ip | 62517.0 | -| test.c:506:17:506:28 | (...) | 125035.0 | -| test.c:506:17:506:33 | ... * ... | 125035.0 | -| test.c:506:18:506:18 | 2 | 1.0 | -| test.c:506:18:506:18 | (unsigned int)... | 1.0 | -| test.c:506:18:506:23 | ... * ... | 125035.0 | -| test.c:506:18:506:27 | ... + ... | 125035.0 | -| test.c:506:22:506:23 | ip | 125035.0 | -| test.c:506:27:506:27 | 1 | 1.0 | -| test.c:506:27:506:27 | (unsigned int)... | 1.0 | -| test.c:506:32:506:33 | 14 | 1.0 | -| test.c:506:32:506:33 | (unsigned int)... | 1.0 | -| test.c:507:17:507:18 | 14 | 1.0 | -| test.c:507:17:507:18 | (unsigned int)... | 1.0 | -| test.c:507:17:507:29 | ... * ... | 125035.0 | -| test.c:507:17:507:39 | ... > ... | 1.0 | -| test.c:507:17:509:25 | ... ? ... : ... | 1.5633751225E10 | -| test.c:507:22:507:29 | (...) | 125035.0 | -| test.c:507:23:507:23 | 2 | 1.0 | -| test.c:507:23:507:23 | (unsigned int)... | 1.0 | -| test.c:507:23:507:28 | ... * ... | 125035.0 | -| test.c:507:27:507:28 | ip | 125035.0 | -| test.c:507:33:507:34 | 17 | 1.0 | -| test.c:507:33:507:34 | (unsigned int)... | 1.0 | -| test.c:507:33:507:39 | ... * ... | 125035.0 | -| test.c:507:38:507:39 | ip | 125035.0 | -| test.c:508:19:508:20 | 14 | 1.0 | -| test.c:508:19:508:20 | (unsigned int)... | 1.0 | -| test.c:508:19:508:31 | ... * ... | 125035.0 | -| test.c:508:24:508:31 | (...) | 125035.0 | -| test.c:508:25:508:25 | 2 | 1.0 | -| test.c:508:25:508:25 | (unsigned int)... | 1.0 | -| test.c:508:25:508:30 | ... * ... | 125035.0 | -| test.c:508:29:508:30 | ip | 125035.0 | -| test.c:509:19:509:20 | 14 | 1.0 | -| test.c:509:19:509:20 | (unsigned int)... | 1.0 | -| test.c:509:19:509:25 | ... * ... | 125035.0 | -| test.c:509:24:509:25 | ip | 125035.0 | -| test.c:510:13:510:13 | 2 | 1.0 | -| test.c:510:13:510:13 | (unsigned int)... | 1.0 | -| test.c:510:13:510:18 | ... * ... | 62517.0 | -| test.c:510:13:510:23 | ... * ... | 62517.0 | -| test.c:510:13:510:43 | ... + ... | 3.908375289E9 | -| test.c:510:17:510:18 | ip | 62517.0 | -| test.c:510:22:510:23 | 14 | 1.0 | -| test.c:510:22:510:23 | (unsigned int)... | 1.0 | -| test.c:510:27:510:38 | (...) | 62517.0 | -| test.c:510:27:510:43 | ... * ... | 62517.0 | -| test.c:510:28:510:28 | 2 | 1.0 | -| test.c:510:28:510:28 | (unsigned int)... | 1.0 | -| test.c:510:28:510:33 | ... * ... | 62517.0 | -| test.c:510:28:510:37 | ... + ... | 62517.0 | -| test.c:510:32:510:33 | ip | 62517.0 | -| test.c:510:37:510:37 | 1 | 1.0 | -| test.c:510:37:510:37 | (unsigned int)... | 1.0 | -| test.c:510:42:510:43 | 17 | 1.0 | -| test.c:510:42:510:43 | (unsigned int)... | 1.0 | -| test.c:511:9:511:9 | 4 | 1.0 | -| test.c:511:9:511:9 | (unsigned int)... | 1.0 | -| test.c:511:9:511:26 | ... * ... | 10419.0 | -| test.c:511:9:512:30 | ... + ... | 1.08555561E8 | -| test.c:511:9:513:30 | ... + ... | 1.131040390059E12 | -| test.c:511:9:519:26 | ... + ... | 1.0235492350954187E25 | -| test.c:511:9:520:61 | ... > ... | 1.0 | -| test.c:511:9:532:25 | ... ? ... : ... | 4.778814771623795E41 | -| test.c:511:13:511:26 | (...) | 10419.0 | -| test.c:511:14:511:15 | ip | 10419.0 | -| test.c:511:14:511:20 | ... * ... | 10419.0 | -| test.c:511:14:511:25 | ... + ... | 10419.0 | -| test.c:511:19:511:20 | 14 | 1.0 | -| test.c:511:19:511:20 | (unsigned int)... | 1.0 | -| test.c:511:24:511:25 | 32 | 1.0 | -| test.c:511:24:511:25 | (unsigned int)... | 1.0 | -| test.c:512:13:512:30 | (...) | 10419.0 | +| test.c:500:9:500:26 | ... * ... | 10419.0 | +| test.c:500:9:520:44 | ... + ... | 1.9449636104972528E43 | +| test.c:500:13:500:26 | (...) | 10419.0 | +| test.c:500:14:500:15 | ip | 10419.0 | +| test.c:500:14:500:20 | ... * ... | 10419.0 | +| test.c:500:14:500:25 | ... + ... | 10419.0 | +| test.c:500:19:500:20 | 14 | 1.0 | +| test.c:500:19:500:20 | (unsigned int)... | 1.0 | +| test.c:500:24:500:25 | 32 | 1.0 | +| test.c:500:24:500:25 | (unsigned int)... | 1.0 | +| test.c:501:9:520:44 | (...) | 1.8667469147684545E39 | +| test.c:501:10:501:10 | 4 | 1.0 | +| test.c:501:10:501:10 | (unsigned int)... | 1.0 | +| test.c:501:10:501:27 | ... * ... | 10419.0 | +| test.c:501:10:502:28 | ... + ... | 1.08555561E8 | +| test.c:501:10:503:28 | ... + ... | 1.131040390059E12 | +| test.c:501:10:509:24 | ... + ... | 1.0235492350954187E25 | +| test.c:501:10:510:39 | ... > ... | 1.0 | +| test.c:501:10:520:43 | ... ? ... : ... | 1.8667469147684545E39 | +| test.c:501:14:501:27 | (...) | 10419.0 | +| test.c:501:15:501:16 | ip | 10419.0 | +| test.c:501:15:501:21 | ... * ... | 10419.0 | +| test.c:501:15:501:26 | ... + ... | 10419.0 | +| test.c:501:20:501:21 | 14 | 1.0 | +| test.c:501:20:501:21 | (unsigned int)... | 1.0 | +| test.c:501:25:501:26 | 32 | 1.0 | +| test.c:501:25:501:26 | (unsigned int)... | 1.0 | +| test.c:502:11:502:28 | (...) | 10419.0 | +| test.c:502:12:502:12 | 2 | 1.0 | +| test.c:502:12:502:12 | (unsigned int)... | 1.0 | +| test.c:502:12:502:17 | ... * ... | 10419.0 | +| test.c:502:12:502:22 | ... * ... | 10419.0 | +| test.c:502:12:502:27 | ... + ... | 10419.0 | +| test.c:502:16:502:17 | ip | 10419.0 | +| test.c:502:21:502:22 | 14 | 1.0 | +| test.c:502:21:502:22 | (unsigned int)... | 1.0 | +| test.c:502:26:502:27 | 32 | 1.0 | +| test.c:502:26:502:27 | (unsigned int)... | 1.0 | +| test.c:503:11:503:11 | 2 | 1.0 | +| test.c:503:11:503:11 | (unsigned int)... | 1.0 | +| test.c:503:11:503:28 | ... * ... | 10419.0 | +| test.c:503:15:503:28 | (...) | 10419.0 | +| test.c:503:16:503:17 | ip | 10419.0 | +| test.c:503:16:503:22 | ... * ... | 10419.0 | +| test.c:503:16:503:27 | ... + ... | 10419.0 | +| test.c:503:21:503:22 | 14 | 1.0 | +| test.c:503:21:503:22 | (unsigned int)... | 1.0 | +| test.c:503:26:503:27 | 64 | 1.0 | +| test.c:503:26:503:27 | (unsigned int)... | 1.0 | +| test.c:504:11:509:24 | (...) | 9.049625849719E12 | +| test.c:504:12:504:23 | (...) | 10419.0 | +| test.c:504:12:504:28 | ... * ... | 10419.0 | +| test.c:504:12:505:61 | ... > ... | 1.0 | +| test.c:504:12:509:23 | ... ? ... : ... | 9.049625849719E12 | +| test.c:504:13:504:13 | 2 | 1.0 | +| test.c:504:13:504:13 | (unsigned int)... | 1.0 | +| test.c:504:13:504:18 | ... * ... | 10419.0 | +| test.c:504:13:504:22 | ... + ... | 10419.0 | +| test.c:504:17:504:18 | ip | 10419.0 | +| test.c:504:22:504:22 | 1 | 1.0 | +| test.c:504:22:504:22 | (unsigned int)... | 1.0 | +| test.c:504:27:504:28 | 14 | 1.0 | +| test.c:504:27:504:28 | (unsigned int)... | 1.0 | +| test.c:505:11:505:61 | (...) | 1.08555561E8 | +| test.c:505:12:505:13 | 14 | 1.0 | +| test.c:505:12:505:13 | (unsigned int)... | 1.0 | +| test.c:505:12:505:24 | ... * ... | 10419.0 | +| test.c:505:12:505:34 | ... > ... | 1.0 | +| test.c:505:12:505:60 | ... ? ... : ... | 1.08555561E8 | +| test.c:505:17:505:24 | (...) | 10419.0 | +| test.c:505:18:505:18 | 2 | 1.0 | +| test.c:505:18:505:18 | (unsigned int)... | 1.0 | +| test.c:505:18:505:23 | ... * ... | 10419.0 | +| test.c:505:22:505:23 | ip | 10419.0 | +| test.c:505:28:505:29 | 17 | 1.0 | +| test.c:505:28:505:29 | (unsigned int)... | 1.0 | +| test.c:505:28:505:34 | ... * ... | 10419.0 | +| test.c:505:33:505:34 | ip | 10419.0 | +| test.c:505:38:505:39 | 17 | 1.0 | +| test.c:505:38:505:39 | (unsigned int)... | 1.0 | +| test.c:505:38:505:50 | ... * ... | 10419.0 | +| test.c:505:43:505:50 | (...) | 10419.0 | +| test.c:505:44:505:44 | 2 | 1.0 | +| test.c:505:44:505:44 | (unsigned int)... | 1.0 | +| test.c:505:44:505:49 | ... * ... | 10419.0 | +| test.c:505:48:505:49 | ip | 10419.0 | +| test.c:505:54:505:55 | 17 | 1.0 | +| test.c:505:54:505:55 | (unsigned int)... | 1.0 | +| test.c:505:54:505:60 | ... * ... | 10419.0 | +| test.c:505:59:505:60 | ip | 10419.0 | +| test.c:506:15:506:26 | (...) | 20839.0 | +| test.c:506:15:506:31 | ... * ... | 20839.0 | +| test.c:506:16:506:16 | 2 | 1.0 | +| test.c:506:16:506:16 | (unsigned int)... | 1.0 | +| test.c:506:16:506:21 | ... * ... | 20839.0 | +| test.c:506:16:506:25 | ... + ... | 20839.0 | +| test.c:506:20:506:21 | ip | 20839.0 | +| test.c:506:25:506:25 | 1 | 1.0 | +| test.c:506:25:506:25 | (unsigned int)... | 1.0 | +| test.c:506:30:506:31 | 14 | 1.0 | +| test.c:506:30:506:31 | (unsigned int)... | 1.0 | +| test.c:507:15:507:16 | 14 | 1.0 | +| test.c:507:15:507:16 | (unsigned int)... | 1.0 | +| test.c:507:15:507:27 | ... * ... | 20839.0 | +| test.c:507:15:507:37 | ... > ... | 1.0 | +| test.c:507:15:509:23 | ... ? ... : ... | 4.34263921E8 | +| test.c:507:20:507:27 | (...) | 20839.0 | +| test.c:507:21:507:21 | 2 | 1.0 | +| test.c:507:21:507:21 | (unsigned int)... | 1.0 | +| test.c:507:21:507:26 | ... * ... | 20839.0 | +| test.c:507:25:507:26 | ip | 20839.0 | +| test.c:507:31:507:32 | 17 | 1.0 | +| test.c:507:31:507:32 | (unsigned int)... | 1.0 | +| test.c:507:31:507:37 | ... * ... | 20839.0 | +| test.c:507:36:507:37 | ip | 20839.0 | +| test.c:508:17:508:18 | 14 | 1.0 | +| test.c:508:17:508:18 | (unsigned int)... | 1.0 | +| test.c:508:17:508:29 | ... * ... | 20839.0 | +| test.c:508:22:508:29 | (...) | 20839.0 | +| test.c:508:23:508:23 | 2 | 1.0 | +| test.c:508:23:508:23 | (unsigned int)... | 1.0 | +| test.c:508:23:508:28 | ... * ... | 20839.0 | +| test.c:508:27:508:28 | ip | 20839.0 | +| test.c:509:17:509:18 | 14 | 1.0 | +| test.c:509:17:509:18 | (unsigned int)... | 1.0 | +| test.c:509:17:509:23 | ... * ... | 20839.0 | +| test.c:509:22:509:23 | ip | 20839.0 | +| test.c:510:9:510:9 | 2 | 1.0 | +| test.c:510:9:510:9 | (unsigned int)... | 1.0 | +| test.c:510:9:510:14 | ... * ... | 62517.0 | +| test.c:510:9:510:19 | ... * ... | 62517.0 | +| test.c:510:9:510:39 | ... + ... | 3.908375289E9 | +| test.c:510:13:510:14 | ip | 62517.0 | +| test.c:510:18:510:19 | 14 | 1.0 | +| test.c:510:18:510:19 | (unsigned int)... | 1.0 | +| test.c:510:23:510:34 | (...) | 62517.0 | +| test.c:510:23:510:39 | ... * ... | 62517.0 | +| test.c:510:24:510:24 | 2 | 1.0 | +| test.c:510:24:510:24 | (unsigned int)... | 1.0 | +| test.c:510:24:510:29 | ... * ... | 62517.0 | +| test.c:510:24:510:33 | ... + ... | 62517.0 | +| test.c:510:28:510:29 | ip | 62517.0 | +| test.c:510:33:510:33 | 1 | 1.0 | +| test.c:510:33:510:33 | (unsigned int)... | 1.0 | +| test.c:510:38:510:39 | 17 | 1.0 | +| test.c:510:38:510:39 | (unsigned int)... | 1.0 | +| test.c:511:13:511:13 | 4 | 1.0 | +| test.c:511:13:511:13 | (unsigned int)... | 1.0 | +| test.c:511:13:511:30 | ... * ... | 62517.0 | +| test.c:511:13:512:30 | ... + ... | 3.908375289E9 | +| test.c:511:13:513:30 | ... + ... | 2.44339897942413E14 | +| test.c:511:13:519:26 | ... + ... | 4.7762734556795386E29 | +| test.c:511:17:511:30 | (...) | 62517.0 | +| test.c:511:18:511:19 | ip | 62517.0 | +| test.c:511:18:511:24 | ... * ... | 62517.0 | +| test.c:511:18:511:29 | ... + ... | 62517.0 | +| test.c:511:23:511:24 | 14 | 1.0 | +| test.c:511:23:511:24 | (unsigned int)... | 1.0 | +| test.c:511:28:511:29 | 32 | 1.0 | +| test.c:511:28:511:29 | (unsigned int)... | 1.0 | +| test.c:512:13:512:30 | (...) | 62517.0 | | test.c:512:14:512:14 | 2 | 1.0 | | test.c:512:14:512:14 | (unsigned int)... | 1.0 | -| test.c:512:14:512:19 | ... * ... | 10419.0 | -| test.c:512:14:512:24 | ... * ... | 10419.0 | -| test.c:512:14:512:29 | ... + ... | 10419.0 | -| test.c:512:18:512:19 | ip | 10419.0 | +| test.c:512:14:512:19 | ... * ... | 62517.0 | +| test.c:512:14:512:24 | ... * ... | 62517.0 | +| test.c:512:14:512:29 | ... + ... | 62517.0 | +| test.c:512:18:512:19 | ip | 62517.0 | | test.c:512:23:512:24 | 14 | 1.0 | | test.c:512:23:512:24 | (unsigned int)... | 1.0 | | test.c:512:28:512:29 | 32 | 1.0 | | test.c:512:28:512:29 | (unsigned int)... | 1.0 | | test.c:513:13:513:13 | 2 | 1.0 | | test.c:513:13:513:13 | (unsigned int)... | 1.0 | -| test.c:513:13:513:30 | ... * ... | 10419.0 | -| test.c:513:17:513:30 | (...) | 10419.0 | -| test.c:513:18:513:19 | ip | 10419.0 | -| test.c:513:18:513:24 | ... * ... | 10419.0 | -| test.c:513:18:513:29 | ... + ... | 10419.0 | +| test.c:513:13:513:30 | ... * ... | 62517.0 | +| test.c:513:17:513:30 | (...) | 62517.0 | +| test.c:513:18:513:19 | ip | 62517.0 | +| test.c:513:18:513:24 | ... * ... | 62517.0 | +| test.c:513:18:513:29 | ... + ... | 62517.0 | | test.c:513:23:513:24 | 14 | 1.0 | | test.c:513:23:513:24 | (unsigned int)... | 1.0 | | test.c:513:28:513:29 | 64 | 1.0 | | test.c:513:28:513:29 | (unsigned int)... | 1.0 | -| test.c:514:13:519:26 | (...) | 9.049625849719E12 | -| test.c:514:14:514:25 | (...) | 10419.0 | -| test.c:514:14:514:30 | ... * ... | 10419.0 | +| test.c:514:13:519:26 | (...) | 1.954766084417875E15 | +| test.c:514:14:514:25 | (...) | 62517.0 | +| test.c:514:14:514:30 | ... * ... | 62517.0 | | test.c:514:14:515:63 | ... > ... | 1.0 | -| test.c:514:14:519:25 | ... ? ... : ... | 9.049625849719E12 | +| test.c:514:14:519:25 | ... ? ... : ... | 1.954766084417875E15 | | test.c:514:15:514:15 | 2 | 1.0 | | test.c:514:15:514:15 | (unsigned int)... | 1.0 | -| test.c:514:15:514:20 | ... * ... | 10419.0 | -| test.c:514:15:514:24 | ... + ... | 10419.0 | -| test.c:514:19:514:20 | ip | 10419.0 | +| test.c:514:15:514:20 | ... * ... | 62517.0 | +| test.c:514:15:514:24 | ... + ... | 62517.0 | +| test.c:514:19:514:20 | ip | 62517.0 | | test.c:514:24:514:24 | 1 | 1.0 | | test.c:514:24:514:24 | (unsigned int)... | 1.0 | | test.c:514:29:514:30 | 14 | 1.0 | | test.c:514:29:514:30 | (unsigned int)... | 1.0 | -| test.c:515:13:515:63 | (...) | 1.08555561E8 | +| test.c:515:13:515:63 | (...) | 3.908375289E9 | | test.c:515:14:515:15 | 14 | 1.0 | | test.c:515:14:515:15 | (unsigned int)... | 1.0 | -| test.c:515:14:515:26 | ... * ... | 10419.0 | +| test.c:515:14:515:26 | ... * ... | 62517.0 | | test.c:515:14:515:36 | ... > ... | 1.0 | -| test.c:515:14:515:62 | ... ? ... : ... | 1.08555561E8 | -| test.c:515:19:515:26 | (...) | 10419.0 | +| test.c:515:14:515:62 | ... ? ... : ... | 3.908375289E9 | +| test.c:515:19:515:26 | (...) | 62517.0 | | test.c:515:20:515:20 | 2 | 1.0 | | test.c:515:20:515:20 | (unsigned int)... | 1.0 | -| test.c:515:20:515:25 | ... * ... | 10419.0 | -| test.c:515:24:515:25 | ip | 10419.0 | +| test.c:515:20:515:25 | ... * ... | 62517.0 | +| test.c:515:24:515:25 | ip | 62517.0 | | test.c:515:30:515:31 | 17 | 1.0 | | test.c:515:30:515:31 | (unsigned int)... | 1.0 | -| test.c:515:30:515:36 | ... * ... | 10419.0 | -| test.c:515:35:515:36 | ip | 10419.0 | +| test.c:515:30:515:36 | ... * ... | 62517.0 | +| test.c:515:35:515:36 | ip | 62517.0 | | test.c:515:40:515:41 | 17 | 1.0 | | test.c:515:40:515:41 | (unsigned int)... | 1.0 | -| test.c:515:40:515:52 | ... * ... | 10419.0 | -| test.c:515:45:515:52 | (...) | 10419.0 | +| test.c:515:40:515:52 | ... * ... | 62517.0 | +| test.c:515:45:515:52 | (...) | 62517.0 | | test.c:515:46:515:46 | 2 | 1.0 | | test.c:515:46:515:46 | (unsigned int)... | 1.0 | -| test.c:515:46:515:51 | ... * ... | 10419.0 | -| test.c:515:50:515:51 | ip | 10419.0 | +| test.c:515:46:515:51 | ... * ... | 62517.0 | +| test.c:515:50:515:51 | ip | 62517.0 | | test.c:515:56:515:57 | 17 | 1.0 | | test.c:515:56:515:57 | (unsigned int)... | 1.0 | -| test.c:515:56:515:62 | ... * ... | 10419.0 | -| test.c:515:61:515:62 | ip | 10419.0 | -| test.c:516:17:516:28 | (...) | 20839.0 | -| test.c:516:17:516:33 | ... * ... | 20839.0 | +| test.c:515:56:515:62 | ... * ... | 62517.0 | +| test.c:515:61:515:62 | ip | 62517.0 | +| test.c:516:17:516:28 | (...) | 125035.0 | +| test.c:516:17:516:33 | ... * ... | 125035.0 | | test.c:516:18:516:18 | 2 | 1.0 | | test.c:516:18:516:18 | (unsigned int)... | 1.0 | -| test.c:516:18:516:23 | ... * ... | 20839.0 | -| test.c:516:18:516:27 | ... + ... | 20839.0 | -| test.c:516:22:516:23 | ip | 20839.0 | +| test.c:516:18:516:23 | ... * ... | 125035.0 | +| test.c:516:18:516:27 | ... + ... | 125035.0 | +| test.c:516:22:516:23 | ip | 125035.0 | | test.c:516:27:516:27 | 1 | 1.0 | | test.c:516:27:516:27 | (unsigned int)... | 1.0 | | test.c:516:32:516:33 | 14 | 1.0 | | test.c:516:32:516:33 | (unsigned int)... | 1.0 | | test.c:517:17:517:18 | 14 | 1.0 | | test.c:517:17:517:18 | (unsigned int)... | 1.0 | -| test.c:517:17:517:29 | ... * ... | 20839.0 | +| test.c:517:17:517:29 | ... * ... | 125035.0 | | test.c:517:17:517:39 | ... > ... | 1.0 | -| test.c:517:17:519:25 | ... ? ... : ... | 4.34263921E8 | -| test.c:517:22:517:29 | (...) | 20839.0 | +| test.c:517:17:519:25 | ... ? ... : ... | 1.5633751225E10 | +| test.c:517:22:517:29 | (...) | 125035.0 | | test.c:517:23:517:23 | 2 | 1.0 | | test.c:517:23:517:23 | (unsigned int)... | 1.0 | -| test.c:517:23:517:28 | ... * ... | 20839.0 | -| test.c:517:27:517:28 | ip | 20839.0 | +| test.c:517:23:517:28 | ... * ... | 125035.0 | +| test.c:517:27:517:28 | ip | 125035.0 | | test.c:517:33:517:34 | 17 | 1.0 | | test.c:517:33:517:34 | (unsigned int)... | 1.0 | -| test.c:517:33:517:39 | ... * ... | 20839.0 | -| test.c:517:38:517:39 | ip | 20839.0 | +| test.c:517:33:517:39 | ... * ... | 125035.0 | +| test.c:517:38:517:39 | ip | 125035.0 | | test.c:518:19:518:20 | 14 | 1.0 | | test.c:518:19:518:20 | (unsigned int)... | 1.0 | -| test.c:518:19:518:31 | ... * ... | 20839.0 | -| test.c:518:24:518:31 | (...) | 20839.0 | +| test.c:518:19:518:31 | ... * ... | 125035.0 | +| test.c:518:24:518:31 | (...) | 125035.0 | | test.c:518:25:518:25 | 2 | 1.0 | | test.c:518:25:518:25 | (unsigned int)... | 1.0 | -| test.c:518:25:518:30 | ... * ... | 20839.0 | -| test.c:518:29:518:30 | ip | 20839.0 | +| test.c:518:25:518:30 | ... * ... | 125035.0 | +| test.c:518:29:518:30 | ip | 125035.0 | | test.c:519:19:519:20 | 14 | 1.0 | | test.c:519:19:519:20 | (unsigned int)... | 1.0 | -| test.c:519:19:519:25 | ... * ... | 20839.0 | -| test.c:519:24:519:25 | ip | 20839.0 | -| test.c:520:11:520:61 | (...) | 3.908375289E9 | -| test.c:520:12:520:13 | 14 | 1.0 | -| test.c:520:12:520:13 | (unsigned int)... | 1.0 | -| test.c:520:12:520:18 | ... * ... | 62517.0 | -| test.c:520:12:520:34 | ... > ... | 1.0 | -| test.c:520:12:520:60 | ... ? ... : ... | 3.908375289E9 | +| test.c:519:19:519:25 | ... * ... | 125035.0 | +| test.c:519:24:519:25 | ip | 125035.0 | +| test.c:520:13:520:13 | 2 | 1.0 | +| test.c:520:13:520:13 | (unsigned int)... | 1.0 | +| test.c:520:13:520:18 | ... * ... | 62517.0 | +| test.c:520:13:520:23 | ... * ... | 62517.0 | +| test.c:520:13:520:43 | ... + ... | 3.908375289E9 | | test.c:520:17:520:18 | ip | 62517.0 | -| test.c:520:22:520:29 | (...) | 62517.0 | -| test.c:520:22:520:34 | ... * ... | 62517.0 | -| test.c:520:23:520:24 | ip | 62517.0 | -| test.c:520:23:520:28 | ... + ... | 62517.0 | -| test.c:520:28:520:28 | 1 | 1.0 | +| test.c:520:22:520:23 | 14 | 1.0 | +| test.c:520:22:520:23 | (unsigned int)... | 1.0 | +| test.c:520:27:520:38 | (...) | 62517.0 | +| test.c:520:27:520:43 | ... * ... | 62517.0 | +| test.c:520:28:520:28 | 2 | 1.0 | | test.c:520:28:520:28 | (unsigned int)... | 1.0 | -| test.c:520:33:520:34 | 17 | 1.0 | -| test.c:520:33:520:34 | (unsigned int)... | 1.0 | -| test.c:520:38:520:39 | 17 | 1.0 | -| test.c:520:38:520:39 | (unsigned int)... | 1.0 | -| test.c:520:38:520:44 | ... * ... | 62517.0 | -| test.c:520:43:520:44 | ip | 62517.0 | -| test.c:520:48:520:55 | (...) | 62517.0 | -| test.c:520:48:520:60 | ... * ... | 62517.0 | -| test.c:520:49:520:50 | ip | 62517.0 | -| test.c:520:49:520:54 | ... + ... | 62517.0 | -| test.c:520:54:520:54 | 1 | 1.0 | -| test.c:520:54:520:54 | (unsigned int)... | 1.0 | -| test.c:520:59:520:60 | 17 | 1.0 | -| test.c:520:59:520:60 | (unsigned int)... | 1.0 | -| test.c:521:11:521:11 | 4 | 1.0 | -| test.c:521:11:521:11 | (unsigned int)... | 1.0 | -| test.c:521:11:521:28 | ... * ... | 125034.0 | -| test.c:521:11:522:28 | ... + ... | 1.5633501156E10 | -| test.c:521:11:523:28 | ... + ... | 1.954719183539304E15 | -| test.c:521:11:529:24 | ... + ... | 3.056778340269433E31 | -| test.c:521:15:521:28 | (...) | 125034.0 | -| test.c:521:16:521:17 | ip | 125034.0 | -| test.c:521:16:521:22 | ... * ... | 125034.0 | -| test.c:521:16:521:27 | ... + ... | 125034.0 | -| test.c:521:21:521:22 | 14 | 1.0 | -| test.c:521:21:521:22 | (unsigned int)... | 1.0 | -| test.c:521:26:521:27 | 32 | 1.0 | -| test.c:521:26:521:27 | (unsigned int)... | 1.0 | -| test.c:522:11:522:28 | (...) | 125034.0 | -| test.c:522:12:522:12 | 2 | 1.0 | -| test.c:522:12:522:12 | (unsigned int)... | 1.0 | -| test.c:522:12:522:17 | ... * ... | 125034.0 | -| test.c:522:12:522:22 | ... * ... | 125034.0 | -| test.c:522:12:522:27 | ... + ... | 125034.0 | -| test.c:522:16:522:17 | ip | 125034.0 | -| test.c:522:21:522:22 | 14 | 1.0 | -| test.c:522:21:522:22 | (unsigned int)... | 1.0 | -| test.c:522:26:522:27 | 32 | 1.0 | -| test.c:522:26:522:27 | (unsigned int)... | 1.0 | -| test.c:523:11:523:11 | 2 | 1.0 | -| test.c:523:11:523:11 | (unsigned int)... | 1.0 | -| test.c:523:11:523:28 | ... * ... | 125034.0 | -| test.c:523:15:523:28 | (...) | 125034.0 | -| test.c:523:16:523:17 | ip | 125034.0 | -| test.c:523:16:523:22 | ... * ... | 125034.0 | -| test.c:523:16:523:27 | ... + ... | 125034.0 | -| test.c:523:21:523:22 | 14 | 1.0 | -| test.c:523:21:523:22 | (unsigned int)... | 1.0 | -| test.c:523:26:523:27 | 64 | 1.0 | -| test.c:523:26:523:27 | (unsigned int)... | 1.0 | -| test.c:524:11:529:24 | (...) | 1.5637941071078508E16 | -| test.c:524:12:524:23 | (...) | 125034.0 | -| test.c:524:12:524:28 | ... * ... | 125034.0 | -| test.c:524:12:525:61 | ... > ... | 1.0 | -| test.c:524:12:529:23 | ... ? ... : ... | 1.5637941071078508E16 | -| test.c:524:13:524:13 | 2 | 1.0 | -| test.c:524:13:524:13 | (unsigned int)... | 1.0 | -| test.c:524:13:524:18 | ... * ... | 125034.0 | -| test.c:524:13:524:22 | ... + ... | 125034.0 | -| test.c:524:17:524:18 | ip | 125034.0 | -| test.c:524:22:524:22 | 1 | 1.0 | -| test.c:524:22:524:22 | (unsigned int)... | 1.0 | -| test.c:524:27:524:28 | 14 | 1.0 | -| test.c:524:27:524:28 | (unsigned int)... | 1.0 | -| test.c:525:11:525:61 | (...) | 1.5633501156E10 | -| test.c:525:12:525:13 | 14 | 1.0 | -| test.c:525:12:525:13 | (unsigned int)... | 1.0 | -| test.c:525:12:525:24 | ... * ... | 125034.0 | -| test.c:525:12:525:34 | ... > ... | 1.0 | -| test.c:525:12:525:60 | ... ? ... : ... | 1.5633501156E10 | -| test.c:525:17:525:24 | (...) | 125034.0 | -| test.c:525:18:525:18 | 2 | 1.0 | -| test.c:525:18:525:18 | (unsigned int)... | 1.0 | -| test.c:525:18:525:23 | ... * ... | 125034.0 | -| test.c:525:22:525:23 | ip | 125034.0 | -| test.c:525:28:525:29 | 17 | 1.0 | -| test.c:525:28:525:29 | (unsigned int)... | 1.0 | -| test.c:525:28:525:34 | ... * ... | 125034.0 | -| test.c:525:33:525:34 | ip | 125034.0 | -| test.c:525:38:525:39 | 17 | 1.0 | -| test.c:525:38:525:39 | (unsigned int)... | 1.0 | -| test.c:525:38:525:50 | ... * ... | 125034.0 | -| test.c:525:43:525:50 | (...) | 125034.0 | -| test.c:525:44:525:44 | 2 | 1.0 | -| test.c:525:44:525:44 | (unsigned int)... | 1.0 | -| test.c:525:44:525:49 | ... * ... | 125034.0 | -| test.c:525:48:525:49 | ip | 125034.0 | -| test.c:525:54:525:55 | 17 | 1.0 | -| test.c:525:54:525:55 | (unsigned int)... | 1.0 | -| test.c:525:54:525:60 | ... * ... | 125034.0 | -| test.c:525:59:525:60 | ip | 125034.0 | -| test.c:526:15:526:26 | (...) | 250069.0 | -| test.c:526:15:526:31 | ... * ... | 250069.0 | -| test.c:526:16:526:16 | 2 | 1.0 | -| test.c:526:16:526:16 | (unsigned int)... | 1.0 | -| test.c:526:16:526:21 | ... * ... | 250069.0 | -| test.c:526:16:526:25 | ... + ... | 250069.0 | -| test.c:526:20:526:21 | ip | 250069.0 | -| test.c:526:25:526:25 | 1 | 1.0 | -| test.c:526:25:526:25 | (unsigned int)... | 1.0 | -| test.c:526:30:526:31 | 14 | 1.0 | -| test.c:526:30:526:31 | (unsigned int)... | 1.0 | -| test.c:527:15:527:16 | 14 | 1.0 | -| test.c:527:15:527:16 | (unsigned int)... | 1.0 | -| test.c:527:15:527:27 | ... * ... | 250069.0 | -| test.c:527:15:527:37 | ... > ... | 1.0 | -| test.c:527:15:529:23 | ... ? ... : ... | 6.2534504761E10 | -| test.c:527:20:527:27 | (...) | 250069.0 | -| test.c:527:21:527:21 | 2 | 1.0 | -| test.c:527:21:527:21 | (unsigned int)... | 1.0 | -| test.c:527:21:527:26 | ... * ... | 250069.0 | -| test.c:527:25:527:26 | ip | 250069.0 | -| test.c:527:31:527:32 | 17 | 1.0 | -| test.c:527:31:527:32 | (unsigned int)... | 1.0 | -| test.c:527:31:527:37 | ... * ... | 250069.0 | -| test.c:527:36:527:37 | ip | 250069.0 | -| test.c:528:17:528:18 | 14 | 1.0 | -| test.c:528:17:528:18 | (unsigned int)... | 1.0 | -| test.c:528:17:528:29 | ... * ... | 250069.0 | -| test.c:528:22:528:29 | (...) | 250069.0 | -| test.c:528:23:528:23 | 2 | 1.0 | -| test.c:528:23:528:23 | (unsigned int)... | 1.0 | -| test.c:528:23:528:28 | ... * ... | 250069.0 | -| test.c:528:27:528:28 | ip | 250069.0 | -| test.c:529:17:529:18 | 14 | 1.0 | -| test.c:529:17:529:18 | (unsigned int)... | 1.0 | -| test.c:529:17:529:23 | ... * ... | 250069.0 | -| test.c:529:22:529:23 | ip | 250069.0 | -| test.c:530:11:530:12 | 14 | 1.0 | -| test.c:530:11:530:12 | (unsigned int)... | 1.0 | -| test.c:530:11:530:17 | ... * ... | 125034.0 | -| test.c:530:11:530:33 | ... > ... | 1.0 | -| test.c:530:11:532:25 | ... ? ... : ... | 1.5633501156E10 | -| test.c:530:16:530:17 | ip | 125034.0 | -| test.c:530:21:530:28 | (...) | 125034.0 | -| test.c:530:21:530:33 | ... * ... | 125034.0 | -| test.c:530:22:530:23 | ip | 125034.0 | -| test.c:530:22:530:27 | ... + ... | 125034.0 | -| test.c:530:27:530:27 | 1 | 1.0 | -| test.c:530:27:530:27 | (unsigned int)... | 1.0 | -| test.c:530:32:530:33 | 17 | 1.0 | -| test.c:530:32:530:33 | (unsigned int)... | 1.0 | -| test.c:531:13:531:14 | 14 | 1.0 | -| test.c:531:13:531:14 | (unsigned int)... | 1.0 | -| test.c:531:13:531:19 | ... * ... | 125034.0 | -| test.c:531:18:531:19 | ip | 125034.0 | -| test.c:532:13:532:20 | (...) | 125034.0 | -| test.c:532:13:532:25 | ... * ... | 125034.0 | -| test.c:532:14:532:15 | ip | 125034.0 | -| test.c:532:14:532:19 | ... + ... | 125034.0 | -| test.c:532:19:532:19 | 1 | 1.0 | -| test.c:532:19:532:19 | (unsigned int)... | 1.0 | -| test.c:532:24:532:25 | 14 | 1.0 | -| test.c:532:24:532:25 | (unsigned int)... | 1.0 | -| test.c:533:9:533:10 | 14 | 1.0 | -| test.c:533:9:533:10 | (unsigned int)... | 1.0 | -| test.c:533:9:533:15 | ... * ... | 1437897.0 | -| test.c:533:9:533:59 | ... > ... | 1.0 | -| test.c:533:9:535:51 | ... ? ... : ... | 2.9729207539701335E18 | -| test.c:533:14:533:15 | ip | 1437897.0 | -| test.c:533:19:533:30 | (...) | 1437897.0 | -| test.c:533:19:533:35 | ... * ... | 1437897.0 | -| test.c:533:19:533:59 | ... + ... | 2.067547782609E12 | -| test.c:533:20:533:20 | 2 | 1.0 | -| test.c:533:20:533:20 | (unsigned int)... | 1.0 | -| test.c:533:20:533:25 | ... * ... | 1437897.0 | -| test.c:533:20:533:29 | ... + ... | 1437897.0 | -| test.c:533:24:533:25 | ip | 1437897.0 | -| test.c:533:29:533:29 | 1 | 1.0 | -| test.c:533:29:533:29 | (unsigned int)... | 1.0 | -| test.c:533:34:533:35 | 17 | 1.0 | -| test.c:533:34:533:35 | (unsigned int)... | 1.0 | -| test.c:533:39:533:54 | (...) | 1437897.0 | -| test.c:533:39:533:59 | ... * ... | 1437897.0 | -| test.c:533:40:533:40 | 2 | 1.0 | -| test.c:533:40:533:40 | (unsigned int)... | 1.0 | -| test.c:533:40:533:45 | ... * ... | 1437897.0 | -| test.c:533:40:533:49 | ... + ... | 1437897.0 | -| test.c:533:40:533:53 | ... + ... | 1437897.0 | -| test.c:533:44:533:45 | ip | 1437897.0 | -| test.c:533:49:533:49 | 1 | 1.0 | -| test.c:533:49:533:49 | (unsigned int)... | 1.0 | -| test.c:533:53:533:53 | 1 | 1.0 | -| test.c:533:53:533:53 | (unsigned int)... | 1.0 | -| test.c:533:58:533:59 | 17 | 1.0 | -| test.c:533:58:533:59 | (unsigned int)... | 1.0 | -| test.c:534:11:534:12 | 14 | 1.0 | -| test.c:534:11:534:12 | (unsigned int)... | 1.0 | -| test.c:534:11:534:17 | ... * ... | 1437897.0 | -| test.c:534:16:534:17 | ip | 1437897.0 | -| test.c:535:11:535:22 | (...) | 1437897.0 | -| test.c:535:11:535:27 | ... * ... | 1437897.0 | -| test.c:535:11:535:51 | ... + ... | 2.067547782609E12 | -| test.c:535:12:535:12 | 2 | 1.0 | -| test.c:535:12:535:12 | (unsigned int)... | 1.0 | -| test.c:535:12:535:17 | ... * ... | 1437897.0 | -| test.c:535:12:535:21 | ... + ... | 1437897.0 | -| test.c:535:16:535:17 | ip | 1437897.0 | -| test.c:535:21:535:21 | 1 | 1.0 | -| test.c:535:21:535:21 | (unsigned int)... | 1.0 | -| test.c:535:26:535:27 | 14 | 1.0 | -| test.c:535:26:535:27 | (unsigned int)... | 1.0 | -| test.c:535:31:535:46 | (...) | 1437897.0 | -| test.c:535:31:535:51 | ... * ... | 1437897.0 | -| test.c:535:32:535:32 | 2 | 1.0 | -| test.c:535:32:535:32 | (unsigned int)... | 1.0 | -| test.c:535:32:535:37 | ... * ... | 1437897.0 | -| test.c:535:32:535:41 | ... + ... | 1437897.0 | -| test.c:535:32:535:45 | ... + ... | 1437897.0 | -| test.c:535:36:535:37 | ip | 1437897.0 | -| test.c:535:41:535:41 | 1 | 1.0 | -| test.c:535:41:535:41 | (unsigned int)... | 1.0 | -| test.c:535:45:535:45 | 1 | 1.0 | -| test.c:535:45:535:45 | (unsigned int)... | 1.0 | -| test.c:535:50:535:51 | 17 | 1.0 | -| test.c:535:50:535:51 | (unsigned int)... | 1.0 | -| test.c:536:9:536:9 | 2 | 1.0 | -| test.c:536:9:536:9 | (unsigned int)... | 1.0 | -| test.c:536:9:536:26 | ... * ... | 1437897.0 | -| test.c:536:9:556:48 | ... + ... | 3.5306223994138077E62 | -| test.c:536:9:578:30 | ... > ... | 1.0 | -| test.c:536:9:621:27 | ... ? ... : ... | 4.3658022750663434E182 | -| test.c:536:13:536:26 | (...) | 1437897.0 | -| test.c:536:14:536:15 | ip | 1437897.0 | -| test.c:536:14:536:20 | ... * ... | 1437897.0 | -| test.c:536:14:536:25 | ... + ... | 1437897.0 | -| test.c:536:19:536:20 | 14 | 1.0 | -| test.c:536:19:536:20 | (unsigned int)... | 1.0 | -| test.c:536:24:536:25 | 32 | 1.0 | -| test.c:536:24:536:25 | (unsigned int)... | 1.0 | -| test.c:537:13:556:48 | (...) | 2.4554070280512497E56 | -| test.c:537:14:537:14 | 4 | 1.0 | -| test.c:537:14:537:14 | (unsigned int)... | 1.0 | -| test.c:537:14:537:31 | ... * ... | 1437897.0 | -| test.c:537:14:538:32 | ... + ... | 2.067547782609E12 | -| test.c:537:14:539:32 | ... + ... | 2.9729207539701335E18 | -| test.c:537:14:545:28 | ... + ... | 7.070613623498497E37 | -| test.c:537:14:546:43 | ... > ... | 1.0 | -| test.c:537:14:556:47 | ... ? ... : ... | 2.4554070280512497E56 | -| test.c:537:18:537:31 | (...) | 1437897.0 | -| test.c:537:19:537:20 | ip | 1437897.0 | -| test.c:537:19:537:25 | ... * ... | 1437897.0 | -| test.c:537:19:537:30 | ... + ... | 1437897.0 | -| test.c:537:24:537:25 | 14 | 1.0 | -| test.c:537:24:537:25 | (unsigned int)... | 1.0 | -| test.c:537:29:537:30 | 32 | 1.0 | -| test.c:537:29:537:30 | (unsigned int)... | 1.0 | -| test.c:538:15:538:32 | (...) | 1437897.0 | -| test.c:538:16:538:16 | 2 | 1.0 | -| test.c:538:16:538:16 | (unsigned int)... | 1.0 | -| test.c:538:16:538:21 | ... * ... | 1437897.0 | -| test.c:538:16:538:26 | ... * ... | 1437897.0 | -| test.c:538:16:538:31 | ... + ... | 1437897.0 | -| test.c:538:20:538:21 | ip | 1437897.0 | -| test.c:538:25:538:26 | 14 | 1.0 | -| test.c:538:25:538:26 | (unsigned int)... | 1.0 | -| test.c:538:30:538:31 | 32 | 1.0 | -| test.c:538:30:538:31 | (unsigned int)... | 1.0 | -| test.c:539:15:539:15 | 2 | 1.0 | -| test.c:539:15:539:15 | (unsigned int)... | 1.0 | -| test.c:539:15:539:32 | ... * ... | 1437897.0 | -| test.c:539:19:539:32 | (...) | 1437897.0 | -| test.c:539:20:539:21 | ip | 1437897.0 | -| test.c:539:20:539:26 | ... * ... | 1437897.0 | -| test.c:539:20:539:31 | ... + ... | 1437897.0 | -| test.c:539:25:539:26 | 14 | 1.0 | -| test.c:539:25:539:26 | (unsigned int)... | 1.0 | -| test.c:539:30:539:31 | 64 | 1.0 | -| test.c:539:30:539:31 | (unsigned int)... | 1.0 | -| test.c:540:15:545:28 | (...) | 2.3783390842343084E19 | -| test.c:540:16:540:27 | (...) | 1437897.0 | -| test.c:540:16:540:32 | ... * ... | 1437897.0 | -| test.c:540:16:541:65 | ... > ... | 1.0 | -| test.c:540:16:545:27 | ... ? ... : ... | 2.3783390842343084E19 | -| test.c:540:17:540:17 | 2 | 1.0 | -| test.c:540:17:540:17 | (unsigned int)... | 1.0 | -| test.c:540:17:540:22 | ... * ... | 1437897.0 | -| test.c:540:17:540:26 | ... + ... | 1437897.0 | -| test.c:540:21:540:22 | ip | 1437897.0 | -| test.c:540:26:540:26 | 1 | 1.0 | -| test.c:540:26:540:26 | (unsigned int)... | 1.0 | -| test.c:540:31:540:32 | 14 | 1.0 | -| test.c:540:31:540:32 | (unsigned int)... | 1.0 | -| test.c:541:15:541:65 | (...) | 2.067547782609E12 | -| test.c:541:16:541:17 | 14 | 1.0 | -| test.c:541:16:541:17 | (unsigned int)... | 1.0 | -| test.c:541:16:541:28 | ... * ... | 1437897.0 | -| test.c:541:16:541:38 | ... > ... | 1.0 | -| test.c:541:16:541:64 | ... ? ... : ... | 2.067547782609E12 | -| test.c:541:21:541:28 | (...) | 1437897.0 | -| test.c:541:22:541:22 | 2 | 1.0 | -| test.c:541:22:541:22 | (unsigned int)... | 1.0 | -| test.c:541:22:541:27 | ... * ... | 1437897.0 | -| test.c:541:26:541:27 | ip | 1437897.0 | -| test.c:541:32:541:33 | 17 | 1.0 | -| test.c:541:32:541:33 | (unsigned int)... | 1.0 | -| test.c:541:32:541:38 | ... * ... | 1437897.0 | -| test.c:541:37:541:38 | ip | 1437897.0 | -| test.c:541:42:541:43 | 17 | 1.0 | -| test.c:541:42:541:43 | (unsigned int)... | 1.0 | -| test.c:541:42:541:54 | ... * ... | 1437897.0 | -| test.c:541:47:541:54 | (...) | 1437897.0 | -| test.c:541:48:541:48 | 2 | 1.0 | -| test.c:541:48:541:48 | (unsigned int)... | 1.0 | -| test.c:541:48:541:53 | ... * ... | 1437897.0 | -| test.c:541:52:541:53 | ip | 1437897.0 | -| test.c:541:58:541:59 | 17 | 1.0 | -| test.c:541:58:541:59 | (unsigned int)... | 1.0 | -| test.c:541:58:541:64 | ... * ... | 1437897.0 | -| test.c:541:63:541:64 | ip | 1437897.0 | -| test.c:542:19:542:30 | (...) | 2875795.0 | -| test.c:542:19:542:35 | ... * ... | 2875795.0 | -| test.c:542:20:542:20 | 2 | 1.0 | -| test.c:542:20:542:20 | (unsigned int)... | 1.0 | -| test.c:542:20:542:25 | ... * ... | 2875795.0 | -| test.c:542:20:542:29 | ... + ... | 2875795.0 | -| test.c:542:24:542:25 | ip | 2875795.0 | -| test.c:542:29:542:29 | 1 | 1.0 | -| test.c:542:29:542:29 | (unsigned int)... | 1.0 | -| test.c:542:34:542:35 | 14 | 1.0 | -| test.c:542:34:542:35 | (unsigned int)... | 1.0 | -| test.c:543:19:543:20 | 14 | 1.0 | -| test.c:543:19:543:20 | (unsigned int)... | 1.0 | -| test.c:543:19:543:31 | ... * ... | 2875795.0 | -| test.c:543:19:543:41 | ... > ... | 1.0 | -| test.c:543:19:545:27 | ... ? ... : ... | 8.270196882025E12 | -| test.c:543:24:543:31 | (...) | 2875795.0 | -| test.c:543:25:543:25 | 2 | 1.0 | -| test.c:543:25:543:25 | (unsigned int)... | 1.0 | -| test.c:543:25:543:30 | ... * ... | 2875795.0 | -| test.c:543:29:543:30 | ip | 2875795.0 | -| test.c:543:35:543:36 | 17 | 1.0 | -| test.c:543:35:543:36 | (unsigned int)... | 1.0 | -| test.c:543:35:543:41 | ... * ... | 2875795.0 | -| test.c:543:40:543:41 | ip | 2875795.0 | -| test.c:544:21:544:22 | 14 | 1.0 | -| test.c:544:21:544:22 | (unsigned int)... | 1.0 | -| test.c:544:21:544:33 | ... * ... | 2875795.0 | -| test.c:544:26:544:33 | (...) | 2875795.0 | -| test.c:544:27:544:27 | 2 | 1.0 | -| test.c:544:27:544:27 | (unsigned int)... | 1.0 | -| test.c:544:27:544:32 | ... * ... | 2875795.0 | -| test.c:544:31:544:32 | ip | 2875795.0 | -| test.c:545:21:545:22 | 14 | 1.0 | -| test.c:545:21:545:22 | (unsigned int)... | 1.0 | -| test.c:545:21:545:27 | ... * ... | 2875795.0 | -| test.c:545:26:545:27 | ip | 2875795.0 | -| test.c:546:13:546:13 | 2 | 1.0 | -| test.c:546:13:546:13 | (unsigned int)... | 1.0 | -| test.c:546:13:546:18 | ... * ... | 8627385.0 | -| test.c:546:13:546:23 | ... * ... | 8627385.0 | -| test.c:546:13:546:43 | ... + ... | 7.4431771938225E13 | -| test.c:546:17:546:18 | ip | 8627385.0 | -| test.c:546:22:546:23 | 14 | 1.0 | -| test.c:546:22:546:23 | (unsigned int)... | 1.0 | -| test.c:546:27:546:38 | (...) | 8627385.0 | -| test.c:546:27:546:43 | ... * ... | 8627385.0 | -| test.c:546:28:546:28 | 2 | 1.0 | -| test.c:546:28:546:28 | (unsigned int)... | 1.0 | -| test.c:546:28:546:33 | ... * ... | 8627385.0 | -| test.c:546:28:546:37 | ... + ... | 8627385.0 | -| test.c:546:32:546:33 | ip | 8627385.0 | -| test.c:546:37:546:37 | 1 | 1.0 | -| test.c:546:37:546:37 | (unsigned int)... | 1.0 | -| test.c:546:42:546:43 | 17 | 1.0 | -| test.c:546:42:546:43 | (unsigned int)... | 1.0 | -| test.c:547:17:547:17 | 4 | 1.0 | -| test.c:547:17:547:17 | (unsigned int)... | 1.0 | -| test.c:547:17:547:34 | ... * ... | 8627385.0 | -| test.c:547:17:548:34 | ... + ... | 7.4431771938225E13 | -| test.c:547:17:549:34 | ... + ... | 6.421515527432633E20 | -| test.c:547:17:555:30 | ... + ... | 3.298869507082441E42 | -| test.c:547:21:547:34 | (...) | 8627385.0 | -| test.c:547:22:547:23 | ip | 8627385.0 | -| test.c:547:22:547:28 | ... * ... | 8627385.0 | -| test.c:547:22:547:33 | ... + ... | 8627385.0 | -| test.c:547:27:547:28 | 14 | 1.0 | -| test.c:547:27:547:28 | (unsigned int)... | 1.0 | -| test.c:547:32:547:33 | 32 | 1.0 | -| test.c:547:32:547:33 | (unsigned int)... | 1.0 | -| test.c:548:17:548:34 | (...) | 8627385.0 | -| test.c:548:18:548:18 | 2 | 1.0 | -| test.c:548:18:548:18 | (unsigned int)... | 1.0 | -| test.c:548:18:548:23 | ... * ... | 8627385.0 | -| test.c:548:18:548:28 | ... * ... | 8627385.0 | -| test.c:548:18:548:33 | ... + ... | 8627385.0 | -| test.c:548:22:548:23 | ip | 8627385.0 | -| test.c:548:27:548:28 | 14 | 1.0 | -| test.c:548:27:548:28 | (unsigned int)... | 1.0 | -| test.c:548:32:548:33 | 32 | 1.0 | -| test.c:548:32:548:33 | (unsigned int)... | 1.0 | -| test.c:549:17:549:17 | 2 | 1.0 | -| test.c:549:17:549:17 | (unsigned int)... | 1.0 | -| test.c:549:17:549:34 | ... * ... | 8627385.0 | -| test.c:549:21:549:34 | (...) | 8627385.0 | -| test.c:549:22:549:23 | ip | 8627385.0 | -| test.c:549:22:549:28 | ... * ... | 8627385.0 | -| test.c:549:22:549:33 | ... + ... | 8627385.0 | -| test.c:549:27:549:28 | 14 | 1.0 | -| test.c:549:27:549:28 | (unsigned int)... | 1.0 | -| test.c:549:32:549:33 | 64 | 1.0 | -| test.c:549:32:549:33 | (unsigned int)... | 1.0 | -| test.c:550:17:555:30 | (...) | 5.137213315127421E21 | -| test.c:550:18:550:29 | (...) | 8627385.0 | -| test.c:550:18:550:34 | ... * ... | 8627385.0 | -| test.c:550:18:551:67 | ... > ... | 1.0 | -| test.c:550:18:555:29 | ... ? ... : ... | 5.137213315127421E21 | -| test.c:550:19:550:19 | 2 | 1.0 | -| test.c:550:19:550:19 | (unsigned int)... | 1.0 | -| test.c:550:19:550:24 | ... * ... | 8627385.0 | -| test.c:550:19:550:28 | ... + ... | 8627385.0 | -| test.c:550:23:550:24 | ip | 8627385.0 | -| test.c:550:28:550:28 | 1 | 1.0 | -| test.c:550:28:550:28 | (unsigned int)... | 1.0 | -| test.c:550:33:550:34 | 14 | 1.0 | -| test.c:550:33:550:34 | (unsigned int)... | 1.0 | -| test.c:551:17:551:67 | (...) | 7.4431771938225E13 | -| test.c:551:18:551:19 | 14 | 1.0 | -| test.c:551:18:551:19 | (unsigned int)... | 1.0 | -| test.c:551:18:551:30 | ... * ... | 8627385.0 | -| test.c:551:18:551:40 | ... > ... | 1.0 | -| test.c:551:18:551:66 | ... ? ... : ... | 7.4431771938225E13 | -| test.c:551:23:551:30 | (...) | 8627385.0 | -| test.c:551:24:551:24 | 2 | 1.0 | -| test.c:551:24:551:24 | (unsigned int)... | 1.0 | -| test.c:551:24:551:29 | ... * ... | 8627385.0 | -| test.c:551:28:551:29 | ip | 8627385.0 | -| test.c:551:34:551:35 | 17 | 1.0 | -| test.c:551:34:551:35 | (unsigned int)... | 1.0 | -| test.c:551:34:551:40 | ... * ... | 8627385.0 | -| test.c:551:39:551:40 | ip | 8627385.0 | -| test.c:551:44:551:45 | 17 | 1.0 | -| test.c:551:44:551:45 | (unsigned int)... | 1.0 | -| test.c:551:44:551:56 | ... * ... | 8627385.0 | -| test.c:551:49:551:56 | (...) | 8627385.0 | -| test.c:551:50:551:50 | 2 | 1.0 | -| test.c:551:50:551:50 | (unsigned int)... | 1.0 | -| test.c:551:50:551:55 | ... * ... | 8627385.0 | -| test.c:551:54:551:55 | ip | 8627385.0 | -| test.c:551:60:551:61 | 17 | 1.0 | -| test.c:551:60:551:61 | (unsigned int)... | 1.0 | -| test.c:551:60:551:66 | ... * ... | 8627385.0 | -| test.c:551:65:551:66 | ip | 8627385.0 | -| test.c:552:21:552:32 | (...) | 1.7254771E7 | -| test.c:552:21:552:37 | ... * ... | 1.7254771E7 | -| test.c:552:22:552:22 | 2 | 1.0 | -| test.c:552:22:552:22 | (unsigned int)... | 1.0 | -| test.c:552:22:552:27 | ... * ... | 1.7254771E7 | -| test.c:552:22:552:31 | ... + ... | 1.7254771E7 | -| test.c:552:26:552:27 | ip | 1.7254771E7 | -| test.c:552:31:552:31 | 1 | 1.0 | -| test.c:552:31:552:31 | (unsigned int)... | 1.0 | -| test.c:552:36:552:37 | 14 | 1.0 | -| test.c:552:36:552:37 | (unsigned int)... | 1.0 | -| test.c:553:21:553:22 | 14 | 1.0 | -| test.c:553:21:553:22 | (unsigned int)... | 1.0 | -| test.c:553:21:553:33 | ... * ... | 1.7254771E7 | -| test.c:553:21:553:43 | ... > ... | 1.0 | -| test.c:553:21:555:29 | ... ? ... : ... | 2.97727122262441E14 | -| test.c:553:26:553:33 | (...) | 1.7254771E7 | -| test.c:553:27:553:27 | 2 | 1.0 | -| test.c:553:27:553:27 | (unsigned int)... | 1.0 | -| test.c:553:27:553:32 | ... * ... | 1.7254771E7 | -| test.c:553:31:553:32 | ip | 1.7254771E7 | -| test.c:553:37:553:38 | 17 | 1.0 | -| test.c:553:37:553:38 | (unsigned int)... | 1.0 | -| test.c:553:37:553:43 | ... * ... | 1.7254771E7 | -| test.c:553:42:553:43 | ip | 1.7254771E7 | -| test.c:554:23:554:24 | 14 | 1.0 | -| test.c:554:23:554:24 | (unsigned int)... | 1.0 | -| test.c:554:23:554:35 | ... * ... | 1.7254771E7 | -| test.c:554:28:554:35 | (...) | 1.7254771E7 | -| test.c:554:29:554:29 | 2 | 1.0 | -| test.c:554:29:554:29 | (unsigned int)... | 1.0 | -| test.c:554:29:554:34 | ... * ... | 1.7254771E7 | -| test.c:554:33:554:34 | ip | 1.7254771E7 | -| test.c:555:23:555:24 | 14 | 1.0 | -| test.c:555:23:555:24 | (unsigned int)... | 1.0 | -| test.c:555:23:555:29 | ... * ... | 1.7254771E7 | -| test.c:555:28:555:29 | ip | 1.7254771E7 | -| test.c:556:17:556:17 | 2 | 1.0 | -| test.c:556:17:556:17 | (unsigned int)... | 1.0 | -| test.c:556:17:556:22 | ... * ... | 8627385.0 | -| test.c:556:17:556:27 | ... * ... | 8627385.0 | -| test.c:556:17:556:47 | ... + ... | 7.4431771938225E13 | -| test.c:556:21:556:22 | ip | 8627385.0 | -| test.c:556:26:556:27 | 14 | 1.0 | -| test.c:556:26:556:27 | (unsigned int)... | 1.0 | -| test.c:556:31:556:42 | (...) | 8627385.0 | -| test.c:556:31:556:47 | ... * ... | 8627385.0 | -| test.c:556:32:556:32 | 2 | 1.0 | -| test.c:556:32:556:32 | (unsigned int)... | 1.0 | -| test.c:556:32:556:37 | ... * ... | 8627385.0 | -| test.c:556:32:556:41 | ... + ... | 8627385.0 | -| test.c:556:36:556:37 | ip | 8627385.0 | -| test.c:556:41:556:41 | 1 | 1.0 | -| test.c:556:41:556:41 | (unsigned int)... | 1.0 | -| test.c:556:46:556:47 | 17 | 1.0 | -| test.c:556:46:556:47 | (unsigned int)... | 1.0 | -| test.c:557:11:578:30 | (...) | 6.08636382738973E71 | -| test.c:557:12:557:12 | 4 | 1.0 | -| test.c:557:12:557:12 | (unsigned int)... | 1.0 | -| test.c:557:12:557:29 | ... * ... | 6.0391698E7 | -| test.c:557:12:558:30 | ... + ... | 3.647157187323204E15 | -| test.c:557:12:559:30 | ... + ... | 2.2025801541535236E23 | -| test.c:557:12:565:26 | ... + ... | 3.881087564774641E47 | -| test.c:557:12:566:61 | ... > ... | 1.0 | -| test.c:557:12:578:29 | ... ? ... : ... | 6.08636382738973E71 | -| test.c:557:16:557:29 | (...) | 6.0391698E7 | -| test.c:557:17:557:18 | ip | 6.0391698E7 | -| test.c:557:17:557:23 | ... * ... | 6.0391698E7 | -| test.c:557:17:557:28 | ... + ... | 6.0391698E7 | -| test.c:557:22:557:23 | 14 | 1.0 | -| test.c:557:22:557:23 | (unsigned int)... | 1.0 | -| test.c:557:27:557:28 | 32 | 1.0 | +| test.c:520:28:520:33 | ... * ... | 62517.0 | +| test.c:520:28:520:37 | ... + ... | 62517.0 | +| test.c:520:32:520:33 | ip | 62517.0 | +| test.c:520:37:520:37 | 1 | 1.0 | +| test.c:520:37:520:37 | (unsigned int)... | 1.0 | +| test.c:520:42:520:43 | 17 | 1.0 | +| test.c:520:42:520:43 | (unsigned int)... | 1.0 | +| test.c:521:9:521:9 | 4 | 1.0 | +| test.c:521:9:521:9 | (unsigned int)... | 1.0 | +| test.c:521:9:521:26 | ... * ... | 10419.0 | +| test.c:521:9:522:30 | ... + ... | 1.08555561E8 | +| test.c:521:9:523:30 | ... + ... | 1.131040390059E12 | +| test.c:521:9:529:26 | ... + ... | 1.0235492350954187E25 | +| test.c:521:9:530:61 | ... > ... | 1.0 | +| test.c:521:9:542:25 | ... ? ... : ... | 4.778814771623795E41 | +| test.c:521:13:521:26 | (...) | 10419.0 | +| test.c:521:14:521:15 | ip | 10419.0 | +| test.c:521:14:521:20 | ... * ... | 10419.0 | +| test.c:521:14:521:25 | ... + ... | 10419.0 | +| test.c:521:19:521:20 | 14 | 1.0 | +| test.c:521:19:521:20 | (unsigned int)... | 1.0 | +| test.c:521:24:521:25 | 32 | 1.0 | +| test.c:521:24:521:25 | (unsigned int)... | 1.0 | +| test.c:522:13:522:30 | (...) | 10419.0 | +| test.c:522:14:522:14 | 2 | 1.0 | +| test.c:522:14:522:14 | (unsigned int)... | 1.0 | +| test.c:522:14:522:19 | ... * ... | 10419.0 | +| test.c:522:14:522:24 | ... * ... | 10419.0 | +| test.c:522:14:522:29 | ... + ... | 10419.0 | +| test.c:522:18:522:19 | ip | 10419.0 | +| test.c:522:23:522:24 | 14 | 1.0 | +| test.c:522:23:522:24 | (unsigned int)... | 1.0 | +| test.c:522:28:522:29 | 32 | 1.0 | +| test.c:522:28:522:29 | (unsigned int)... | 1.0 | +| test.c:523:13:523:13 | 2 | 1.0 | +| test.c:523:13:523:13 | (unsigned int)... | 1.0 | +| test.c:523:13:523:30 | ... * ... | 10419.0 | +| test.c:523:17:523:30 | (...) | 10419.0 | +| test.c:523:18:523:19 | ip | 10419.0 | +| test.c:523:18:523:24 | ... * ... | 10419.0 | +| test.c:523:18:523:29 | ... + ... | 10419.0 | +| test.c:523:23:523:24 | 14 | 1.0 | +| test.c:523:23:523:24 | (unsigned int)... | 1.0 | +| test.c:523:28:523:29 | 64 | 1.0 | +| test.c:523:28:523:29 | (unsigned int)... | 1.0 | +| test.c:524:13:529:26 | (...) | 9.049625849719E12 | +| test.c:524:14:524:25 | (...) | 10419.0 | +| test.c:524:14:524:30 | ... * ... | 10419.0 | +| test.c:524:14:525:63 | ... > ... | 1.0 | +| test.c:524:14:529:25 | ... ? ... : ... | 9.049625849719E12 | +| test.c:524:15:524:15 | 2 | 1.0 | +| test.c:524:15:524:15 | (unsigned int)... | 1.0 | +| test.c:524:15:524:20 | ... * ... | 10419.0 | +| test.c:524:15:524:24 | ... + ... | 10419.0 | +| test.c:524:19:524:20 | ip | 10419.0 | +| test.c:524:24:524:24 | 1 | 1.0 | +| test.c:524:24:524:24 | (unsigned int)... | 1.0 | +| test.c:524:29:524:30 | 14 | 1.0 | +| test.c:524:29:524:30 | (unsigned int)... | 1.0 | +| test.c:525:13:525:63 | (...) | 1.08555561E8 | +| test.c:525:14:525:15 | 14 | 1.0 | +| test.c:525:14:525:15 | (unsigned int)... | 1.0 | +| test.c:525:14:525:26 | ... * ... | 10419.0 | +| test.c:525:14:525:36 | ... > ... | 1.0 | +| test.c:525:14:525:62 | ... ? ... : ... | 1.08555561E8 | +| test.c:525:19:525:26 | (...) | 10419.0 | +| test.c:525:20:525:20 | 2 | 1.0 | +| test.c:525:20:525:20 | (unsigned int)... | 1.0 | +| test.c:525:20:525:25 | ... * ... | 10419.0 | +| test.c:525:24:525:25 | ip | 10419.0 | +| test.c:525:30:525:31 | 17 | 1.0 | +| test.c:525:30:525:31 | (unsigned int)... | 1.0 | +| test.c:525:30:525:36 | ... * ... | 10419.0 | +| test.c:525:35:525:36 | ip | 10419.0 | +| test.c:525:40:525:41 | 17 | 1.0 | +| test.c:525:40:525:41 | (unsigned int)... | 1.0 | +| test.c:525:40:525:52 | ... * ... | 10419.0 | +| test.c:525:45:525:52 | (...) | 10419.0 | +| test.c:525:46:525:46 | 2 | 1.0 | +| test.c:525:46:525:46 | (unsigned int)... | 1.0 | +| test.c:525:46:525:51 | ... * ... | 10419.0 | +| test.c:525:50:525:51 | ip | 10419.0 | +| test.c:525:56:525:57 | 17 | 1.0 | +| test.c:525:56:525:57 | (unsigned int)... | 1.0 | +| test.c:525:56:525:62 | ... * ... | 10419.0 | +| test.c:525:61:525:62 | ip | 10419.0 | +| test.c:526:17:526:28 | (...) | 20839.0 | +| test.c:526:17:526:33 | ... * ... | 20839.0 | +| test.c:526:18:526:18 | 2 | 1.0 | +| test.c:526:18:526:18 | (unsigned int)... | 1.0 | +| test.c:526:18:526:23 | ... * ... | 20839.0 | +| test.c:526:18:526:27 | ... + ... | 20839.0 | +| test.c:526:22:526:23 | ip | 20839.0 | +| test.c:526:27:526:27 | 1 | 1.0 | +| test.c:526:27:526:27 | (unsigned int)... | 1.0 | +| test.c:526:32:526:33 | 14 | 1.0 | +| test.c:526:32:526:33 | (unsigned int)... | 1.0 | +| test.c:527:17:527:18 | 14 | 1.0 | +| test.c:527:17:527:18 | (unsigned int)... | 1.0 | +| test.c:527:17:527:29 | ... * ... | 20839.0 | +| test.c:527:17:527:39 | ... > ... | 1.0 | +| test.c:527:17:529:25 | ... ? ... : ... | 4.34263921E8 | +| test.c:527:22:527:29 | (...) | 20839.0 | +| test.c:527:23:527:23 | 2 | 1.0 | +| test.c:527:23:527:23 | (unsigned int)... | 1.0 | +| test.c:527:23:527:28 | ... * ... | 20839.0 | +| test.c:527:27:527:28 | ip | 20839.0 | +| test.c:527:33:527:34 | 17 | 1.0 | +| test.c:527:33:527:34 | (unsigned int)... | 1.0 | +| test.c:527:33:527:39 | ... * ... | 20839.0 | +| test.c:527:38:527:39 | ip | 20839.0 | +| test.c:528:19:528:20 | 14 | 1.0 | +| test.c:528:19:528:20 | (unsigned int)... | 1.0 | +| test.c:528:19:528:31 | ... * ... | 20839.0 | +| test.c:528:24:528:31 | (...) | 20839.0 | +| test.c:528:25:528:25 | 2 | 1.0 | +| test.c:528:25:528:25 | (unsigned int)... | 1.0 | +| test.c:528:25:528:30 | ... * ... | 20839.0 | +| test.c:528:29:528:30 | ip | 20839.0 | +| test.c:529:19:529:20 | 14 | 1.0 | +| test.c:529:19:529:20 | (unsigned int)... | 1.0 | +| test.c:529:19:529:25 | ... * ... | 20839.0 | +| test.c:529:24:529:25 | ip | 20839.0 | +| test.c:530:11:530:61 | (...) | 3.908375289E9 | +| test.c:530:12:530:13 | 14 | 1.0 | +| test.c:530:12:530:13 | (unsigned int)... | 1.0 | +| test.c:530:12:530:18 | ... * ... | 62517.0 | +| test.c:530:12:530:34 | ... > ... | 1.0 | +| test.c:530:12:530:60 | ... ? ... : ... | 3.908375289E9 | +| test.c:530:17:530:18 | ip | 62517.0 | +| test.c:530:22:530:29 | (...) | 62517.0 | +| test.c:530:22:530:34 | ... * ... | 62517.0 | +| test.c:530:23:530:24 | ip | 62517.0 | +| test.c:530:23:530:28 | ... + ... | 62517.0 | +| test.c:530:28:530:28 | 1 | 1.0 | +| test.c:530:28:530:28 | (unsigned int)... | 1.0 | +| test.c:530:33:530:34 | 17 | 1.0 | +| test.c:530:33:530:34 | (unsigned int)... | 1.0 | +| test.c:530:38:530:39 | 17 | 1.0 | +| test.c:530:38:530:39 | (unsigned int)... | 1.0 | +| test.c:530:38:530:44 | ... * ... | 62517.0 | +| test.c:530:43:530:44 | ip | 62517.0 | +| test.c:530:48:530:55 | (...) | 62517.0 | +| test.c:530:48:530:60 | ... * ... | 62517.0 | +| test.c:530:49:530:50 | ip | 62517.0 | +| test.c:530:49:530:54 | ... + ... | 62517.0 | +| test.c:530:54:530:54 | 1 | 1.0 | +| test.c:530:54:530:54 | (unsigned int)... | 1.0 | +| test.c:530:59:530:60 | 17 | 1.0 | +| test.c:530:59:530:60 | (unsigned int)... | 1.0 | +| test.c:531:11:531:11 | 4 | 1.0 | +| test.c:531:11:531:11 | (unsigned int)... | 1.0 | +| test.c:531:11:531:28 | ... * ... | 125034.0 | +| test.c:531:11:532:28 | ... + ... | 1.5633501156E10 | +| test.c:531:11:533:28 | ... + ... | 1.954719183539304E15 | +| test.c:531:11:539:24 | ... + ... | 3.056778340269433E31 | +| test.c:531:15:531:28 | (...) | 125034.0 | +| test.c:531:16:531:17 | ip | 125034.0 | +| test.c:531:16:531:22 | ... * ... | 125034.0 | +| test.c:531:16:531:27 | ... + ... | 125034.0 | +| test.c:531:21:531:22 | 14 | 1.0 | +| test.c:531:21:531:22 | (unsigned int)... | 1.0 | +| test.c:531:26:531:27 | 32 | 1.0 | +| test.c:531:26:531:27 | (unsigned int)... | 1.0 | +| test.c:532:11:532:28 | (...) | 125034.0 | +| test.c:532:12:532:12 | 2 | 1.0 | +| test.c:532:12:532:12 | (unsigned int)... | 1.0 | +| test.c:532:12:532:17 | ... * ... | 125034.0 | +| test.c:532:12:532:22 | ... * ... | 125034.0 | +| test.c:532:12:532:27 | ... + ... | 125034.0 | +| test.c:532:16:532:17 | ip | 125034.0 | +| test.c:532:21:532:22 | 14 | 1.0 | +| test.c:532:21:532:22 | (unsigned int)... | 1.0 | +| test.c:532:26:532:27 | 32 | 1.0 | +| test.c:532:26:532:27 | (unsigned int)... | 1.0 | +| test.c:533:11:533:11 | 2 | 1.0 | +| test.c:533:11:533:11 | (unsigned int)... | 1.0 | +| test.c:533:11:533:28 | ... * ... | 125034.0 | +| test.c:533:15:533:28 | (...) | 125034.0 | +| test.c:533:16:533:17 | ip | 125034.0 | +| test.c:533:16:533:22 | ... * ... | 125034.0 | +| test.c:533:16:533:27 | ... + ... | 125034.0 | +| test.c:533:21:533:22 | 14 | 1.0 | +| test.c:533:21:533:22 | (unsigned int)... | 1.0 | +| test.c:533:26:533:27 | 64 | 1.0 | +| test.c:533:26:533:27 | (unsigned int)... | 1.0 | +| test.c:534:11:539:24 | (...) | 1.5637941071078508E16 | +| test.c:534:12:534:23 | (...) | 125034.0 | +| test.c:534:12:534:28 | ... * ... | 125034.0 | +| test.c:534:12:535:61 | ... > ... | 1.0 | +| test.c:534:12:539:23 | ... ? ... : ... | 1.5637941071078508E16 | +| test.c:534:13:534:13 | 2 | 1.0 | +| test.c:534:13:534:13 | (unsigned int)... | 1.0 | +| test.c:534:13:534:18 | ... * ... | 125034.0 | +| test.c:534:13:534:22 | ... + ... | 125034.0 | +| test.c:534:17:534:18 | ip | 125034.0 | +| test.c:534:22:534:22 | 1 | 1.0 | +| test.c:534:22:534:22 | (unsigned int)... | 1.0 | +| test.c:534:27:534:28 | 14 | 1.0 | +| test.c:534:27:534:28 | (unsigned int)... | 1.0 | +| test.c:535:11:535:61 | (...) | 1.5633501156E10 | +| test.c:535:12:535:13 | 14 | 1.0 | +| test.c:535:12:535:13 | (unsigned int)... | 1.0 | +| test.c:535:12:535:24 | ... * ... | 125034.0 | +| test.c:535:12:535:34 | ... > ... | 1.0 | +| test.c:535:12:535:60 | ... ? ... : ... | 1.5633501156E10 | +| test.c:535:17:535:24 | (...) | 125034.0 | +| test.c:535:18:535:18 | 2 | 1.0 | +| test.c:535:18:535:18 | (unsigned int)... | 1.0 | +| test.c:535:18:535:23 | ... * ... | 125034.0 | +| test.c:535:22:535:23 | ip | 125034.0 | +| test.c:535:28:535:29 | 17 | 1.0 | +| test.c:535:28:535:29 | (unsigned int)... | 1.0 | +| test.c:535:28:535:34 | ... * ... | 125034.0 | +| test.c:535:33:535:34 | ip | 125034.0 | +| test.c:535:38:535:39 | 17 | 1.0 | +| test.c:535:38:535:39 | (unsigned int)... | 1.0 | +| test.c:535:38:535:50 | ... * ... | 125034.0 | +| test.c:535:43:535:50 | (...) | 125034.0 | +| test.c:535:44:535:44 | 2 | 1.0 | +| test.c:535:44:535:44 | (unsigned int)... | 1.0 | +| test.c:535:44:535:49 | ... * ... | 125034.0 | +| test.c:535:48:535:49 | ip | 125034.0 | +| test.c:535:54:535:55 | 17 | 1.0 | +| test.c:535:54:535:55 | (unsigned int)... | 1.0 | +| test.c:535:54:535:60 | ... * ... | 125034.0 | +| test.c:535:59:535:60 | ip | 125034.0 | +| test.c:536:15:536:26 | (...) | 250069.0 | +| test.c:536:15:536:31 | ... * ... | 250069.0 | +| test.c:536:16:536:16 | 2 | 1.0 | +| test.c:536:16:536:16 | (unsigned int)... | 1.0 | +| test.c:536:16:536:21 | ... * ... | 250069.0 | +| test.c:536:16:536:25 | ... + ... | 250069.0 | +| test.c:536:20:536:21 | ip | 250069.0 | +| test.c:536:25:536:25 | 1 | 1.0 | +| test.c:536:25:536:25 | (unsigned int)... | 1.0 | +| test.c:536:30:536:31 | 14 | 1.0 | +| test.c:536:30:536:31 | (unsigned int)... | 1.0 | +| test.c:537:15:537:16 | 14 | 1.0 | +| test.c:537:15:537:16 | (unsigned int)... | 1.0 | +| test.c:537:15:537:27 | ... * ... | 250069.0 | +| test.c:537:15:537:37 | ... > ... | 1.0 | +| test.c:537:15:539:23 | ... ? ... : ... | 6.2534504761E10 | +| test.c:537:20:537:27 | (...) | 250069.0 | +| test.c:537:21:537:21 | 2 | 1.0 | +| test.c:537:21:537:21 | (unsigned int)... | 1.0 | +| test.c:537:21:537:26 | ... * ... | 250069.0 | +| test.c:537:25:537:26 | ip | 250069.0 | +| test.c:537:31:537:32 | 17 | 1.0 | +| test.c:537:31:537:32 | (unsigned int)... | 1.0 | +| test.c:537:31:537:37 | ... * ... | 250069.0 | +| test.c:537:36:537:37 | ip | 250069.0 | +| test.c:538:17:538:18 | 14 | 1.0 | +| test.c:538:17:538:18 | (unsigned int)... | 1.0 | +| test.c:538:17:538:29 | ... * ... | 250069.0 | +| test.c:538:22:538:29 | (...) | 250069.0 | +| test.c:538:23:538:23 | 2 | 1.0 | +| test.c:538:23:538:23 | (unsigned int)... | 1.0 | +| test.c:538:23:538:28 | ... * ... | 250069.0 | +| test.c:538:27:538:28 | ip | 250069.0 | +| test.c:539:17:539:18 | 14 | 1.0 | +| test.c:539:17:539:18 | (unsigned int)... | 1.0 | +| test.c:539:17:539:23 | ... * ... | 250069.0 | +| test.c:539:22:539:23 | ip | 250069.0 | +| test.c:540:11:540:12 | 14 | 1.0 | +| test.c:540:11:540:12 | (unsigned int)... | 1.0 | +| test.c:540:11:540:17 | ... * ... | 125034.0 | +| test.c:540:11:540:33 | ... > ... | 1.0 | +| test.c:540:11:542:25 | ... ? ... : ... | 1.5633501156E10 | +| test.c:540:16:540:17 | ip | 125034.0 | +| test.c:540:21:540:28 | (...) | 125034.0 | +| test.c:540:21:540:33 | ... * ... | 125034.0 | +| test.c:540:22:540:23 | ip | 125034.0 | +| test.c:540:22:540:27 | ... + ... | 125034.0 | +| test.c:540:27:540:27 | 1 | 1.0 | +| test.c:540:27:540:27 | (unsigned int)... | 1.0 | +| test.c:540:32:540:33 | 17 | 1.0 | +| test.c:540:32:540:33 | (unsigned int)... | 1.0 | +| test.c:541:13:541:14 | 14 | 1.0 | +| test.c:541:13:541:14 | (unsigned int)... | 1.0 | +| test.c:541:13:541:19 | ... * ... | 125034.0 | +| test.c:541:18:541:19 | ip | 125034.0 | +| test.c:542:13:542:20 | (...) | 125034.0 | +| test.c:542:13:542:25 | ... * ... | 125034.0 | +| test.c:542:14:542:15 | ip | 125034.0 | +| test.c:542:14:542:19 | ... + ... | 125034.0 | +| test.c:542:19:542:19 | 1 | 1.0 | +| test.c:542:19:542:19 | (unsigned int)... | 1.0 | +| test.c:542:24:542:25 | 14 | 1.0 | +| test.c:542:24:542:25 | (unsigned int)... | 1.0 | +| test.c:543:9:543:10 | 14 | 1.0 | +| test.c:543:9:543:10 | (unsigned int)... | 1.0 | +| test.c:543:9:543:15 | ... * ... | 1437897.0 | +| test.c:543:9:543:59 | ... > ... | 1.0 | +| test.c:543:9:545:51 | ... ? ... : ... | 2.9729207539701335E18 | +| test.c:543:14:543:15 | ip | 1437897.0 | +| test.c:543:19:543:30 | (...) | 1437897.0 | +| test.c:543:19:543:35 | ... * ... | 1437897.0 | +| test.c:543:19:543:59 | ... + ... | 2.067547782609E12 | +| test.c:543:20:543:20 | 2 | 1.0 | +| test.c:543:20:543:20 | (unsigned int)... | 1.0 | +| test.c:543:20:543:25 | ... * ... | 1437897.0 | +| test.c:543:20:543:29 | ... + ... | 1437897.0 | +| test.c:543:24:543:25 | ip | 1437897.0 | +| test.c:543:29:543:29 | 1 | 1.0 | +| test.c:543:29:543:29 | (unsigned int)... | 1.0 | +| test.c:543:34:543:35 | 17 | 1.0 | +| test.c:543:34:543:35 | (unsigned int)... | 1.0 | +| test.c:543:39:543:54 | (...) | 1437897.0 | +| test.c:543:39:543:59 | ... * ... | 1437897.0 | +| test.c:543:40:543:40 | 2 | 1.0 | +| test.c:543:40:543:40 | (unsigned int)... | 1.0 | +| test.c:543:40:543:45 | ... * ... | 1437897.0 | +| test.c:543:40:543:49 | ... + ... | 1437897.0 | +| test.c:543:40:543:53 | ... + ... | 1437897.0 | +| test.c:543:44:543:45 | ip | 1437897.0 | +| test.c:543:49:543:49 | 1 | 1.0 | +| test.c:543:49:543:49 | (unsigned int)... | 1.0 | +| test.c:543:53:543:53 | 1 | 1.0 | +| test.c:543:53:543:53 | (unsigned int)... | 1.0 | +| test.c:543:58:543:59 | 17 | 1.0 | +| test.c:543:58:543:59 | (unsigned int)... | 1.0 | +| test.c:544:11:544:12 | 14 | 1.0 | +| test.c:544:11:544:12 | (unsigned int)... | 1.0 | +| test.c:544:11:544:17 | ... * ... | 1437897.0 | +| test.c:544:16:544:17 | ip | 1437897.0 | +| test.c:545:11:545:22 | (...) | 1437897.0 | +| test.c:545:11:545:27 | ... * ... | 1437897.0 | +| test.c:545:11:545:51 | ... + ... | 2.067547782609E12 | +| test.c:545:12:545:12 | 2 | 1.0 | +| test.c:545:12:545:12 | (unsigned int)... | 1.0 | +| test.c:545:12:545:17 | ... * ... | 1437897.0 | +| test.c:545:12:545:21 | ... + ... | 1437897.0 | +| test.c:545:16:545:17 | ip | 1437897.0 | +| test.c:545:21:545:21 | 1 | 1.0 | +| test.c:545:21:545:21 | (unsigned int)... | 1.0 | +| test.c:545:26:545:27 | 14 | 1.0 | +| test.c:545:26:545:27 | (unsigned int)... | 1.0 | +| test.c:545:31:545:46 | (...) | 1437897.0 | +| test.c:545:31:545:51 | ... * ... | 1437897.0 | +| test.c:545:32:545:32 | 2 | 1.0 | +| test.c:545:32:545:32 | (unsigned int)... | 1.0 | +| test.c:545:32:545:37 | ... * ... | 1437897.0 | +| test.c:545:32:545:41 | ... + ... | 1437897.0 | +| test.c:545:32:545:45 | ... + ... | 1437897.0 | +| test.c:545:36:545:37 | ip | 1437897.0 | +| test.c:545:41:545:41 | 1 | 1.0 | +| test.c:545:41:545:41 | (unsigned int)... | 1.0 | +| test.c:545:45:545:45 | 1 | 1.0 | +| test.c:545:45:545:45 | (unsigned int)... | 1.0 | +| test.c:545:50:545:51 | 17 | 1.0 | +| test.c:545:50:545:51 | (unsigned int)... | 1.0 | +| test.c:546:9:546:9 | 2 | 1.0 | +| test.c:546:9:546:9 | (unsigned int)... | 1.0 | +| test.c:546:9:546:26 | ... * ... | 1437897.0 | +| test.c:546:9:566:48 | ... + ... | 3.5306223994138077E62 | +| test.c:546:9:588:30 | ... > ... | 1.0 | +| test.c:546:9:631:27 | ... ? ... : ... | 4.3658022750663434E182 | +| test.c:546:13:546:26 | (...) | 1437897.0 | +| test.c:546:14:546:15 | ip | 1437897.0 | +| test.c:546:14:546:20 | ... * ... | 1437897.0 | +| test.c:546:14:546:25 | ... + ... | 1437897.0 | +| test.c:546:19:546:20 | 14 | 1.0 | +| test.c:546:19:546:20 | (unsigned int)... | 1.0 | +| test.c:546:24:546:25 | 32 | 1.0 | +| test.c:546:24:546:25 | (unsigned int)... | 1.0 | +| test.c:547:13:566:48 | (...) | 2.4554070280512497E56 | +| test.c:547:14:547:14 | 4 | 1.0 | +| test.c:547:14:547:14 | (unsigned int)... | 1.0 | +| test.c:547:14:547:31 | ... * ... | 1437897.0 | +| test.c:547:14:548:32 | ... + ... | 2.067547782609E12 | +| test.c:547:14:549:32 | ... + ... | 2.9729207539701335E18 | +| test.c:547:14:555:28 | ... + ... | 7.070613623498497E37 | +| test.c:547:14:556:43 | ... > ... | 1.0 | +| test.c:547:14:566:47 | ... ? ... : ... | 2.4554070280512497E56 | +| test.c:547:18:547:31 | (...) | 1437897.0 | +| test.c:547:19:547:20 | ip | 1437897.0 | +| test.c:547:19:547:25 | ... * ... | 1437897.0 | +| test.c:547:19:547:30 | ... + ... | 1437897.0 | +| test.c:547:24:547:25 | 14 | 1.0 | +| test.c:547:24:547:25 | (unsigned int)... | 1.0 | +| test.c:547:29:547:30 | 32 | 1.0 | +| test.c:547:29:547:30 | (unsigned int)... | 1.0 | +| test.c:548:15:548:32 | (...) | 1437897.0 | +| test.c:548:16:548:16 | 2 | 1.0 | +| test.c:548:16:548:16 | (unsigned int)... | 1.0 | +| test.c:548:16:548:21 | ... * ... | 1437897.0 | +| test.c:548:16:548:26 | ... * ... | 1437897.0 | +| test.c:548:16:548:31 | ... + ... | 1437897.0 | +| test.c:548:20:548:21 | ip | 1437897.0 | +| test.c:548:25:548:26 | 14 | 1.0 | +| test.c:548:25:548:26 | (unsigned int)... | 1.0 | +| test.c:548:30:548:31 | 32 | 1.0 | +| test.c:548:30:548:31 | (unsigned int)... | 1.0 | +| test.c:549:15:549:15 | 2 | 1.0 | +| test.c:549:15:549:15 | (unsigned int)... | 1.0 | +| test.c:549:15:549:32 | ... * ... | 1437897.0 | +| test.c:549:19:549:32 | (...) | 1437897.0 | +| test.c:549:20:549:21 | ip | 1437897.0 | +| test.c:549:20:549:26 | ... * ... | 1437897.0 | +| test.c:549:20:549:31 | ... + ... | 1437897.0 | +| test.c:549:25:549:26 | 14 | 1.0 | +| test.c:549:25:549:26 | (unsigned int)... | 1.0 | +| test.c:549:30:549:31 | 64 | 1.0 | +| test.c:549:30:549:31 | (unsigned int)... | 1.0 | +| test.c:550:15:555:28 | (...) | 2.3783390842343084E19 | +| test.c:550:16:550:27 | (...) | 1437897.0 | +| test.c:550:16:550:32 | ... * ... | 1437897.0 | +| test.c:550:16:551:65 | ... > ... | 1.0 | +| test.c:550:16:555:27 | ... ? ... : ... | 2.3783390842343084E19 | +| test.c:550:17:550:17 | 2 | 1.0 | +| test.c:550:17:550:17 | (unsigned int)... | 1.0 | +| test.c:550:17:550:22 | ... * ... | 1437897.0 | +| test.c:550:17:550:26 | ... + ... | 1437897.0 | +| test.c:550:21:550:22 | ip | 1437897.0 | +| test.c:550:26:550:26 | 1 | 1.0 | +| test.c:550:26:550:26 | (unsigned int)... | 1.0 | +| test.c:550:31:550:32 | 14 | 1.0 | +| test.c:550:31:550:32 | (unsigned int)... | 1.0 | +| test.c:551:15:551:65 | (...) | 2.067547782609E12 | +| test.c:551:16:551:17 | 14 | 1.0 | +| test.c:551:16:551:17 | (unsigned int)... | 1.0 | +| test.c:551:16:551:28 | ... * ... | 1437897.0 | +| test.c:551:16:551:38 | ... > ... | 1.0 | +| test.c:551:16:551:64 | ... ? ... : ... | 2.067547782609E12 | +| test.c:551:21:551:28 | (...) | 1437897.0 | +| test.c:551:22:551:22 | 2 | 1.0 | +| test.c:551:22:551:22 | (unsigned int)... | 1.0 | +| test.c:551:22:551:27 | ... * ... | 1437897.0 | +| test.c:551:26:551:27 | ip | 1437897.0 | +| test.c:551:32:551:33 | 17 | 1.0 | +| test.c:551:32:551:33 | (unsigned int)... | 1.0 | +| test.c:551:32:551:38 | ... * ... | 1437897.0 | +| test.c:551:37:551:38 | ip | 1437897.0 | +| test.c:551:42:551:43 | 17 | 1.0 | +| test.c:551:42:551:43 | (unsigned int)... | 1.0 | +| test.c:551:42:551:54 | ... * ... | 1437897.0 | +| test.c:551:47:551:54 | (...) | 1437897.0 | +| test.c:551:48:551:48 | 2 | 1.0 | +| test.c:551:48:551:48 | (unsigned int)... | 1.0 | +| test.c:551:48:551:53 | ... * ... | 1437897.0 | +| test.c:551:52:551:53 | ip | 1437897.0 | +| test.c:551:58:551:59 | 17 | 1.0 | +| test.c:551:58:551:59 | (unsigned int)... | 1.0 | +| test.c:551:58:551:64 | ... * ... | 1437897.0 | +| test.c:551:63:551:64 | ip | 1437897.0 | +| test.c:552:19:552:30 | (...) | 2875795.0 | +| test.c:552:19:552:35 | ... * ... | 2875795.0 | +| test.c:552:20:552:20 | 2 | 1.0 | +| test.c:552:20:552:20 | (unsigned int)... | 1.0 | +| test.c:552:20:552:25 | ... * ... | 2875795.0 | +| test.c:552:20:552:29 | ... + ... | 2875795.0 | +| test.c:552:24:552:25 | ip | 2875795.0 | +| test.c:552:29:552:29 | 1 | 1.0 | +| test.c:552:29:552:29 | (unsigned int)... | 1.0 | +| test.c:552:34:552:35 | 14 | 1.0 | +| test.c:552:34:552:35 | (unsigned int)... | 1.0 | +| test.c:553:19:553:20 | 14 | 1.0 | +| test.c:553:19:553:20 | (unsigned int)... | 1.0 | +| test.c:553:19:553:31 | ... * ... | 2875795.0 | +| test.c:553:19:553:41 | ... > ... | 1.0 | +| test.c:553:19:555:27 | ... ? ... : ... | 8.270196882025E12 | +| test.c:553:24:553:31 | (...) | 2875795.0 | +| test.c:553:25:553:25 | 2 | 1.0 | +| test.c:553:25:553:25 | (unsigned int)... | 1.0 | +| test.c:553:25:553:30 | ... * ... | 2875795.0 | +| test.c:553:29:553:30 | ip | 2875795.0 | +| test.c:553:35:553:36 | 17 | 1.0 | +| test.c:553:35:553:36 | (unsigned int)... | 1.0 | +| test.c:553:35:553:41 | ... * ... | 2875795.0 | +| test.c:553:40:553:41 | ip | 2875795.0 | +| test.c:554:21:554:22 | 14 | 1.0 | +| test.c:554:21:554:22 | (unsigned int)... | 1.0 | +| test.c:554:21:554:33 | ... * ... | 2875795.0 | +| test.c:554:26:554:33 | (...) | 2875795.0 | +| test.c:554:27:554:27 | 2 | 1.0 | +| test.c:554:27:554:27 | (unsigned int)... | 1.0 | +| test.c:554:27:554:32 | ... * ... | 2875795.0 | +| test.c:554:31:554:32 | ip | 2875795.0 | +| test.c:555:21:555:22 | 14 | 1.0 | +| test.c:555:21:555:22 | (unsigned int)... | 1.0 | +| test.c:555:21:555:27 | ... * ... | 2875795.0 | +| test.c:555:26:555:27 | ip | 2875795.0 | +| test.c:556:13:556:13 | 2 | 1.0 | +| test.c:556:13:556:13 | (unsigned int)... | 1.0 | +| test.c:556:13:556:18 | ... * ... | 8627385.0 | +| test.c:556:13:556:23 | ... * ... | 8627385.0 | +| test.c:556:13:556:43 | ... + ... | 7.4431771938225E13 | +| test.c:556:17:556:18 | ip | 8627385.0 | +| test.c:556:22:556:23 | 14 | 1.0 | +| test.c:556:22:556:23 | (unsigned int)... | 1.0 | +| test.c:556:27:556:38 | (...) | 8627385.0 | +| test.c:556:27:556:43 | ... * ... | 8627385.0 | +| test.c:556:28:556:28 | 2 | 1.0 | +| test.c:556:28:556:28 | (unsigned int)... | 1.0 | +| test.c:556:28:556:33 | ... * ... | 8627385.0 | +| test.c:556:28:556:37 | ... + ... | 8627385.0 | +| test.c:556:32:556:33 | ip | 8627385.0 | +| test.c:556:37:556:37 | 1 | 1.0 | +| test.c:556:37:556:37 | (unsigned int)... | 1.0 | +| test.c:556:42:556:43 | 17 | 1.0 | +| test.c:556:42:556:43 | (unsigned int)... | 1.0 | +| test.c:557:17:557:17 | 4 | 1.0 | +| test.c:557:17:557:17 | (unsigned int)... | 1.0 | +| test.c:557:17:557:34 | ... * ... | 8627385.0 | +| test.c:557:17:558:34 | ... + ... | 7.4431771938225E13 | +| test.c:557:17:559:34 | ... + ... | 6.421515527432633E20 | +| test.c:557:17:565:30 | ... + ... | 3.298869507082441E42 | +| test.c:557:21:557:34 | (...) | 8627385.0 | +| test.c:557:22:557:23 | ip | 8627385.0 | +| test.c:557:22:557:28 | ... * ... | 8627385.0 | +| test.c:557:22:557:33 | ... + ... | 8627385.0 | +| test.c:557:27:557:28 | 14 | 1.0 | | test.c:557:27:557:28 | (unsigned int)... | 1.0 | -| test.c:558:13:558:30 | (...) | 6.0391698E7 | -| test.c:558:14:558:14 | 2 | 1.0 | -| test.c:558:14:558:14 | (unsigned int)... | 1.0 | -| test.c:558:14:558:19 | ... * ... | 6.0391698E7 | -| test.c:558:14:558:24 | ... * ... | 6.0391698E7 | -| test.c:558:14:558:29 | ... + ... | 6.0391698E7 | -| test.c:558:18:558:19 | ip | 6.0391698E7 | -| test.c:558:23:558:24 | 14 | 1.0 | -| test.c:558:23:558:24 | (unsigned int)... | 1.0 | -| test.c:558:28:558:29 | 32 | 1.0 | -| test.c:558:28:558:29 | (unsigned int)... | 1.0 | -| test.c:559:13:559:13 | 2 | 1.0 | -| test.c:559:13:559:13 | (unsigned int)... | 1.0 | -| test.c:559:13:559:30 | ... * ... | 6.0391698E7 | -| test.c:559:17:559:30 | (...) | 6.0391698E7 | -| test.c:559:18:559:19 | ip | 6.0391698E7 | -| test.c:559:18:559:24 | ... * ... | 6.0391698E7 | -| test.c:559:18:559:29 | ... + ... | 6.0391698E7 | -| test.c:559:23:559:24 | 14 | 1.0 | -| test.c:559:23:559:24 | (unsigned int)... | 1.0 | -| test.c:559:28:559:29 | 64 | 1.0 | -| test.c:559:28:559:29 | (unsigned int)... | 1.0 | -| test.c:560:13:565:26 | (...) | 1.7620641670887053E24 | -| test.c:560:14:560:25 | (...) | 6.0391698E7 | -| test.c:560:14:560:30 | ... * ... | 6.0391698E7 | -| test.c:560:14:561:63 | ... > ... | 1.0 | -| test.c:560:14:565:25 | ... ? ... : ... | 1.7620641670887053E24 | -| test.c:560:15:560:15 | 2 | 1.0 | -| test.c:560:15:560:15 | (unsigned int)... | 1.0 | -| test.c:560:15:560:20 | ... * ... | 6.0391698E7 | -| test.c:560:15:560:24 | ... + ... | 6.0391698E7 | -| test.c:560:19:560:20 | ip | 6.0391698E7 | -| test.c:560:24:560:24 | 1 | 1.0 | -| test.c:560:24:560:24 | (unsigned int)... | 1.0 | -| test.c:560:29:560:30 | 14 | 1.0 | -| test.c:560:29:560:30 | (unsigned int)... | 1.0 | -| test.c:561:13:561:63 | (...) | 3.647157187323204E15 | -| test.c:561:14:561:15 | 14 | 1.0 | -| test.c:561:14:561:15 | (unsigned int)... | 1.0 | -| test.c:561:14:561:26 | ... * ... | 6.0391698E7 | -| test.c:561:14:561:36 | ... > ... | 1.0 | -| test.c:561:14:561:62 | ... ? ... : ... | 3.647157187323204E15 | -| test.c:561:19:561:26 | (...) | 6.0391698E7 | -| test.c:561:20:561:20 | 2 | 1.0 | -| test.c:561:20:561:20 | (unsigned int)... | 1.0 | -| test.c:561:20:561:25 | ... * ... | 6.0391698E7 | -| test.c:561:24:561:25 | ip | 6.0391698E7 | -| test.c:561:30:561:31 | 17 | 1.0 | -| test.c:561:30:561:31 | (unsigned int)... | 1.0 | -| test.c:561:30:561:36 | ... * ... | 6.0391698E7 | -| test.c:561:35:561:36 | ip | 6.0391698E7 | -| test.c:561:40:561:41 | 17 | 1.0 | -| test.c:561:40:561:41 | (unsigned int)... | 1.0 | -| test.c:561:40:561:52 | ... * ... | 6.0391698E7 | -| test.c:561:45:561:52 | (...) | 6.0391698E7 | -| test.c:561:46:561:46 | 2 | 1.0 | -| test.c:561:46:561:46 | (unsigned int)... | 1.0 | -| test.c:561:46:561:51 | ... * ... | 6.0391698E7 | -| test.c:561:50:561:51 | ip | 6.0391698E7 | -| test.c:561:56:561:57 | 17 | 1.0 | -| test.c:561:56:561:57 | (unsigned int)... | 1.0 | -| test.c:561:56:561:62 | ... * ... | 6.0391698E7 | -| test.c:561:61:561:62 | ip | 6.0391698E7 | -| test.c:562:17:562:28 | (...) | 1.20783397E8 | -| test.c:562:17:562:33 | ... * ... | 1.20783397E8 | -| test.c:562:18:562:18 | 2 | 1.0 | -| test.c:562:18:562:18 | (unsigned int)... | 1.0 | -| test.c:562:18:562:23 | ... * ... | 1.20783397E8 | -| test.c:562:18:562:27 | ... + ... | 1.20783397E8 | -| test.c:562:22:562:23 | ip | 1.20783397E8 | -| test.c:562:27:562:27 | 1 | 1.0 | -| test.c:562:27:562:27 | (unsigned int)... | 1.0 | -| test.c:562:32:562:33 | 14 | 1.0 | -| test.c:562:32:562:33 | (unsigned int)... | 1.0 | -| test.c:563:17:563:18 | 14 | 1.0 | -| test.c:563:17:563:18 | (unsigned int)... | 1.0 | -| test.c:563:17:563:29 | ... * ... | 1.20783397E8 | -| test.c:563:17:563:39 | ... > ... | 1.0 | -| test.c:563:17:565:25 | ... ? ... : ... | 1.4588628990859608E16 | -| test.c:563:22:563:29 | (...) | 1.20783397E8 | -| test.c:563:23:563:23 | 2 | 1.0 | -| test.c:563:23:563:23 | (unsigned int)... | 1.0 | -| test.c:563:23:563:28 | ... * ... | 1.20783397E8 | -| test.c:563:27:563:28 | ip | 1.20783397E8 | -| test.c:563:33:563:34 | 17 | 1.0 | -| test.c:563:33:563:34 | (unsigned int)... | 1.0 | -| test.c:563:33:563:39 | ... * ... | 1.20783397E8 | -| test.c:563:38:563:39 | ip | 1.20783397E8 | -| test.c:564:19:564:20 | 14 | 1.0 | -| test.c:564:19:564:20 | (unsigned int)... | 1.0 | -| test.c:564:19:564:31 | ... * ... | 1.20783397E8 | -| test.c:564:24:564:31 | (...) | 1.20783397E8 | -| test.c:564:25:564:25 | 2 | 1.0 | -| test.c:564:25:564:25 | (unsigned int)... | 1.0 | -| test.c:564:25:564:30 | ... * ... | 1.20783397E8 | -| test.c:564:29:564:30 | ip | 1.20783397E8 | -| test.c:565:19:565:20 | 14 | 1.0 | -| test.c:565:19:565:20 | (unsigned int)... | 1.0 | -| test.c:565:19:565:25 | ... * ... | 1.20783397E8 | -| test.c:565:24:565:25 | ip | 1.20783397E8 | -| test.c:566:11:566:61 | (...) | 1.3129766091773648E17 | -| test.c:566:12:566:13 | 14 | 1.0 | -| test.c:566:12:566:13 | (unsigned int)... | 1.0 | -| test.c:566:12:566:18 | ... * ... | 3.62350191E8 | -| test.c:566:12:566:34 | ... > ... | 1.0 | -| test.c:566:12:566:60 | ... ? ... : ... | 1.3129766091773648E17 | -| test.c:566:17:566:18 | ip | 3.62350191E8 | -| test.c:566:22:566:29 | (...) | 3.62350191E8 | -| test.c:566:22:566:34 | ... * ... | 3.62350191E8 | -| test.c:566:23:566:24 | ip | 3.62350191E8 | -| test.c:566:23:566:28 | ... + ... | 3.62350191E8 | -| test.c:566:28:566:28 | 1 | 1.0 | -| test.c:566:28:566:28 | (unsigned int)... | 1.0 | -| test.c:566:33:566:34 | 17 | 1.0 | -| test.c:566:33:566:34 | (unsigned int)... | 1.0 | -| test.c:566:38:566:39 | 17 | 1.0 | -| test.c:566:38:566:39 | (unsigned int)... | 1.0 | -| test.c:566:38:566:44 | ... * ... | 3.62350191E8 | -| test.c:566:43:566:44 | ip | 3.62350191E8 | -| test.c:566:48:566:55 | (...) | 3.62350191E8 | -| test.c:566:48:566:60 | ... * ... | 3.62350191E8 | -| test.c:566:49:566:50 | ip | 3.62350191E8 | -| test.c:566:49:566:54 | ... + ... | 3.62350191E8 | -| test.c:566:54:566:54 | 1 | 1.0 | -| test.c:566:54:566:54 | (unsigned int)... | 1.0 | -| test.c:566:59:566:60 | 17 | 1.0 | -| test.c:566:59:566:60 | (unsigned int)... | 1.0 | -| test.c:567:15:567:15 | 4 | 1.0 | -| test.c:567:15:567:15 | (unsigned int)... | 1.0 | -| test.c:567:15:567:32 | ... * ... | 7.24700382E8 | -| test.c:567:15:568:32 | ... + ... | 5.251906436709459E17 | -| test.c:567:15:569:32 | ... + ... | 3.806058600911604E26 | -| test.c:567:15:575:28 | ... + ... | 1.1588865682845433E54 | -| test.c:567:19:567:32 | (...) | 7.24700382E8 | -| test.c:567:20:567:21 | ip | 7.24700382E8 | -| test.c:567:20:567:26 | ... * ... | 7.24700382E8 | -| test.c:567:20:567:31 | ... + ... | 7.24700382E8 | -| test.c:567:25:567:26 | 14 | 1.0 | -| test.c:567:25:567:26 | (unsigned int)... | 1.0 | -| test.c:567:30:567:31 | 32 | 1.0 | -| test.c:567:30:567:31 | (unsigned int)... | 1.0 | -| test.c:568:15:568:32 | (...) | 7.24700382E8 | -| test.c:568:16:568:16 | 2 | 1.0 | -| test.c:568:16:568:16 | (unsigned int)... | 1.0 | -| test.c:568:16:568:21 | ... * ... | 7.24700382E8 | -| test.c:568:16:568:26 | ... * ... | 7.24700382E8 | -| test.c:568:16:568:31 | ... + ... | 7.24700382E8 | -| test.c:568:20:568:21 | ip | 7.24700382E8 | -| test.c:568:25:568:26 | 14 | 1.0 | -| test.c:568:25:568:26 | (unsigned int)... | 1.0 | -| test.c:568:30:568:31 | 32 | 1.0 | -| test.c:568:30:568:31 | (unsigned int)... | 1.0 | -| test.c:569:15:569:15 | 2 | 1.0 | -| test.c:569:15:569:15 | (unsigned int)... | 1.0 | -| test.c:569:15:569:32 | ... * ... | 7.24700382E8 | -| test.c:569:19:569:32 | (...) | 7.24700382E8 | -| test.c:569:20:569:21 | ip | 7.24700382E8 | -| test.c:569:20:569:26 | ... * ... | 7.24700382E8 | -| test.c:569:20:569:31 | ... + ... | 7.24700382E8 | -| test.c:569:25:569:26 | 14 | 1.0 | -| test.c:569:25:569:26 | (unsigned int)... | 1.0 | -| test.c:569:30:569:31 | 64 | 1.0 | -| test.c:569:30:569:31 | (unsigned int)... | 1.0 | -| test.c:570:15:575:28 | (...) | 3.044846887031571E27 | -| test.c:570:16:570:27 | (...) | 7.24700382E8 | -| test.c:570:16:570:32 | ... * ... | 7.24700382E8 | -| test.c:570:16:571:65 | ... > ... | 1.0 | -| test.c:570:16:575:27 | ... ? ... : ... | 3.044846887031571E27 | -| test.c:570:17:570:17 | 2 | 1.0 | -| test.c:570:17:570:17 | (unsigned int)... | 1.0 | -| test.c:570:17:570:22 | ... * ... | 7.24700382E8 | -| test.c:570:17:570:26 | ... + ... | 7.24700382E8 | -| test.c:570:21:570:22 | ip | 7.24700382E8 | -| test.c:570:26:570:26 | 1 | 1.0 | -| test.c:570:26:570:26 | (unsigned int)... | 1.0 | -| test.c:570:31:570:32 | 14 | 1.0 | -| test.c:570:31:570:32 | (unsigned int)... | 1.0 | -| test.c:571:15:571:65 | (...) | 5.251906436709459E17 | -| test.c:571:16:571:17 | 14 | 1.0 | -| test.c:571:16:571:17 | (unsigned int)... | 1.0 | -| test.c:571:16:571:28 | ... * ... | 7.24700382E8 | -| test.c:571:16:571:38 | ... > ... | 1.0 | -| test.c:571:16:571:64 | ... ? ... : ... | 5.251906436709459E17 | -| test.c:571:21:571:28 | (...) | 7.24700382E8 | -| test.c:571:22:571:22 | 2 | 1.0 | -| test.c:571:22:571:22 | (unsigned int)... | 1.0 | -| test.c:571:22:571:27 | ... * ... | 7.24700382E8 | -| test.c:571:26:571:27 | ip | 7.24700382E8 | -| test.c:571:32:571:33 | 17 | 1.0 | -| test.c:571:32:571:33 | (unsigned int)... | 1.0 | -| test.c:571:32:571:38 | ... * ... | 7.24700382E8 | -| test.c:571:37:571:38 | ip | 7.24700382E8 | -| test.c:571:42:571:43 | 17 | 1.0 | -| test.c:571:42:571:43 | (unsigned int)... | 1.0 | -| test.c:571:42:571:54 | ... * ... | 7.24700382E8 | -| test.c:571:47:571:54 | (...) | 7.24700382E8 | -| test.c:571:48:571:48 | 2 | 1.0 | -| test.c:571:48:571:48 | (unsigned int)... | 1.0 | -| test.c:571:48:571:53 | ... * ... | 7.24700382E8 | -| test.c:571:52:571:53 | ip | 7.24700382E8 | -| test.c:571:58:571:59 | 17 | 1.0 | -| test.c:571:58:571:59 | (unsigned int)... | 1.0 | -| test.c:571:58:571:64 | ... * ... | 7.24700382E8 | -| test.c:571:63:571:64 | ip | 7.24700382E8 | -| test.c:572:19:572:30 | (...) | 1.449400765E9 | -| test.c:572:19:572:35 | ... * ... | 1.449400765E9 | -| test.c:572:20:572:20 | 2 | 1.0 | -| test.c:572:20:572:20 | (unsigned int)... | 1.0 | -| test.c:572:20:572:25 | ... * ... | 1.449400765E9 | -| test.c:572:20:572:29 | ... + ... | 1.449400765E9 | -| test.c:572:24:572:25 | ip | 1.449400765E9 | -| test.c:572:29:572:29 | 1 | 1.0 | -| test.c:572:29:572:29 | (unsigned int)... | 1.0 | -| test.c:572:34:572:35 | 14 | 1.0 | -| test.c:572:34:572:35 | (unsigned int)... | 1.0 | -| test.c:573:19:573:20 | 14 | 1.0 | -| test.c:573:19:573:20 | (unsigned int)... | 1.0 | -| test.c:573:19:573:31 | ... * ... | 1.449400765E9 | -| test.c:573:19:573:41 | ... > ... | 1.0 | -| test.c:573:19:575:27 | ... ? ... : ... | 2.1007625775825853E18 | -| test.c:573:24:573:31 | (...) | 1.449400765E9 | -| test.c:573:25:573:25 | 2 | 1.0 | -| test.c:573:25:573:25 | (unsigned int)... | 1.0 | -| test.c:573:25:573:30 | ... * ... | 1.449400765E9 | -| test.c:573:29:573:30 | ip | 1.449400765E9 | -| test.c:573:35:573:36 | 17 | 1.0 | -| test.c:573:35:573:36 | (unsigned int)... | 1.0 | -| test.c:573:35:573:41 | ... * ... | 1.449400765E9 | -| test.c:573:40:573:41 | ip | 1.449400765E9 | -| test.c:574:21:574:22 | 14 | 1.0 | -| test.c:574:21:574:22 | (unsigned int)... | 1.0 | -| test.c:574:21:574:33 | ... * ... | 1.449400765E9 | -| test.c:574:26:574:33 | (...) | 1.449400765E9 | -| test.c:574:27:574:27 | 2 | 1.0 | -| test.c:574:27:574:27 | (unsigned int)... | 1.0 | -| test.c:574:27:574:32 | ... * ... | 1.449400765E9 | -| test.c:574:31:574:32 | ip | 1.449400765E9 | -| test.c:575:21:575:22 | 14 | 1.0 | -| test.c:575:21:575:22 | (unsigned int)... | 1.0 | -| test.c:575:21:575:27 | ... * ... | 1.449400765E9 | -| test.c:575:26:575:27 | ip | 1.449400765E9 | -| test.c:576:15:576:16 | 14 | 1.0 | -| test.c:576:15:576:16 | (unsigned int)... | 1.0 | -| test.c:576:15:576:21 | ... * ... | 7.24700382E8 | -| test.c:576:15:576:37 | ... > ... | 1.0 | -| test.c:576:15:578:29 | ... ? ... : ... | 5.251906436709459E17 | -| test.c:576:20:576:21 | ip | 7.24700382E8 | -| test.c:576:25:576:32 | (...) | 7.24700382E8 | -| test.c:576:25:576:37 | ... * ... | 7.24700382E8 | -| test.c:576:26:576:27 | ip | 7.24700382E8 | -| test.c:576:26:576:31 | ... + ... | 7.24700382E8 | -| test.c:576:31:576:31 | 1 | 1.0 | -| test.c:576:31:576:31 | (unsigned int)... | 1.0 | -| test.c:576:36:576:37 | 17 | 1.0 | -| test.c:576:36:576:37 | (unsigned int)... | 1.0 | -| test.c:577:17:577:18 | 14 | 1.0 | -| test.c:577:17:577:18 | (unsigned int)... | 1.0 | -| test.c:577:17:577:23 | ... * ... | 7.24700382E8 | -| test.c:577:22:577:23 | ip | 7.24700382E8 | -| test.c:578:17:578:24 | (...) | 7.24700382E8 | -| test.c:578:17:578:29 | ... * ... | 7.24700382E8 | -| test.c:578:18:578:19 | ip | 7.24700382E8 | -| test.c:578:18:578:23 | ... + ... | 7.24700382E8 | -| test.c:578:23:578:23 | 1 | 1.0 | -| test.c:578:23:578:23 | (unsigned int)... | 1.0 | -| test.c:578:28:578:29 | 14 | 1.0 | -| test.c:578:28:578:29 | (unsigned int)... | 1.0 | -| test.c:579:11:579:11 | 2 | 1.0 | -| test.c:579:11:579:11 | (unsigned int)... | 1.0 | -| test.c:579:11:579:28 | ... * ... | 5.797603059E9 | -| test.c:579:11:599:46 | ... + ... | 9.943431528813442E94 | -| test.c:579:15:579:28 | (...) | 5.797603059E9 | -| test.c:579:16:579:17 | ip | 5.797603059E9 | -| test.c:579:16:579:22 | ... * ... | 5.797603059E9 | -| test.c:579:16:579:27 | ... + ... | 5.797603059E9 | -| test.c:579:21:579:22 | 14 | 1.0 | -| test.c:579:21:579:22 | (unsigned int)... | 1.0 | -| test.c:579:26:579:27 | 32 | 1.0 | -| test.c:579:26:579:27 | (unsigned int)... | 1.0 | -| test.c:580:11:599:46 | (...) | 1.715093535659983E85 | -| test.c:580:12:580:12 | 4 | 1.0 | -| test.c:580:12:580:12 | (unsigned int)... | 1.0 | -| test.c:580:12:580:29 | ... * ... | 5.797603059E9 | -| test.c:580:12:581:30 | ... + ... | 3.361220122972616E19 | -| test.c:580:12:582:30 | ... + ... | 1.9487020066918396E29 | -| test.c:580:12:588:26 | ... + ... | 3.0379516094938436E59 | -| test.c:580:12:589:41 | ... > ... | 1.0 | -| test.c:580:12:599:45 | ... ? ... : ... | 1.715093535659983E85 | -| test.c:580:16:580:29 | (...) | 5.797603059E9 | -| test.c:580:17:580:18 | ip | 5.797603059E9 | -| test.c:580:17:580:23 | ... * ... | 5.797603059E9 | -| test.c:580:17:580:28 | ... + ... | 5.797603059E9 | -| test.c:580:22:580:23 | 14 | 1.0 | -| test.c:580:22:580:23 | (unsigned int)... | 1.0 | -| test.c:580:27:580:28 | 32 | 1.0 | -| test.c:580:27:580:28 | (unsigned int)... | 1.0 | -| test.c:581:13:581:30 | (...) | 5.797603059E9 | -| test.c:581:14:581:14 | 2 | 1.0 | -| test.c:581:14:581:14 | (unsigned int)... | 1.0 | -| test.c:581:14:581:19 | ... * ... | 5.797603059E9 | -| test.c:581:14:581:24 | ... * ... | 5.797603059E9 | -| test.c:581:14:581:29 | ... + ... | 5.797603059E9 | -| test.c:581:18:581:19 | ip | 5.797603059E9 | -| test.c:581:23:581:24 | 14 | 1.0 | -| test.c:581:23:581:24 | (unsigned int)... | 1.0 | -| test.c:581:28:581:29 | 32 | 1.0 | -| test.c:581:28:581:29 | (unsigned int)... | 1.0 | -| test.c:582:13:582:13 | 2 | 1.0 | -| test.c:582:13:582:13 | (unsigned int)... | 1.0 | -| test.c:582:13:582:30 | ... * ... | 5.797603059E9 | -| test.c:582:17:582:30 | (...) | 5.797603059E9 | -| test.c:582:18:582:19 | ip | 5.797603059E9 | -| test.c:582:18:582:24 | ... * ... | 5.797603059E9 | -| test.c:582:18:582:29 | ... + ... | 5.797603059E9 | -| test.c:582:23:582:24 | 14 | 1.0 | -| test.c:582:23:582:24 | (unsigned int)... | 1.0 | -| test.c:582:28:582:29 | 64 | 1.0 | -| test.c:582:28:582:29 | (unsigned int)... | 1.0 | -| test.c:583:13:588:26 | (...) | 1.558961605756818E30 | -| test.c:583:14:583:25 | (...) | 5.797603059E9 | -| test.c:583:14:583:30 | ... * ... | 5.797603059E9 | -| test.c:583:14:584:63 | ... > ... | 1.0 | -| test.c:583:14:588:25 | ... ? ... : ... | 1.558961605756818E30 | -| test.c:583:15:583:15 | 2 | 1.0 | -| test.c:583:15:583:15 | (unsigned int)... | 1.0 | -| test.c:583:15:583:20 | ... * ... | 5.797603059E9 | -| test.c:583:15:583:24 | ... + ... | 5.797603059E9 | -| test.c:583:19:583:20 | ip | 5.797603059E9 | -| test.c:583:24:583:24 | 1 | 1.0 | -| test.c:583:24:583:24 | (unsigned int)... | 1.0 | -| test.c:583:29:583:30 | 14 | 1.0 | -| test.c:583:29:583:30 | (unsigned int)... | 1.0 | -| test.c:584:13:584:63 | (...) | 3.361220122972616E19 | -| test.c:584:14:584:15 | 14 | 1.0 | -| test.c:584:14:584:15 | (unsigned int)... | 1.0 | -| test.c:584:14:584:26 | ... * ... | 5.797603059E9 | -| test.c:584:14:584:36 | ... > ... | 1.0 | -| test.c:584:14:584:62 | ... ? ... : ... | 3.361220122972616E19 | -| test.c:584:19:584:26 | (...) | 5.797603059E9 | -| test.c:584:20:584:20 | 2 | 1.0 | -| test.c:584:20:584:20 | (unsigned int)... | 1.0 | -| test.c:584:20:584:25 | ... * ... | 5.797603059E9 | -| test.c:584:24:584:25 | ip | 5.797603059E9 | -| test.c:584:30:584:31 | 17 | 1.0 | -| test.c:584:30:584:31 | (unsigned int)... | 1.0 | -| test.c:584:30:584:36 | ... * ... | 5.797603059E9 | -| test.c:584:35:584:36 | ip | 5.797603059E9 | -| test.c:584:40:584:41 | 17 | 1.0 | -| test.c:584:40:584:41 | (unsigned int)... | 1.0 | -| test.c:584:40:584:52 | ... * ... | 5.797603059E9 | -| test.c:584:45:584:52 | (...) | 5.797603059E9 | -| test.c:584:46:584:46 | 2 | 1.0 | -| test.c:584:46:584:46 | (unsigned int)... | 1.0 | -| test.c:584:46:584:51 | ... * ... | 5.797603059E9 | -| test.c:584:50:584:51 | ip | 5.797603059E9 | -| test.c:584:56:584:57 | 17 | 1.0 | -| test.c:584:56:584:57 | (unsigned int)... | 1.0 | -| test.c:584:56:584:62 | ... * ... | 5.797603059E9 | -| test.c:584:61:584:62 | ip | 5.797603059E9 | -| test.c:585:17:585:28 | (...) | 1.1595206119E10 | -| test.c:585:17:585:33 | ... * ... | 1.1595206119E10 | -| test.c:585:18:585:18 | 2 | 1.0 | -| test.c:585:18:585:18 | (unsigned int)... | 1.0 | -| test.c:585:18:585:23 | ... * ... | 1.1595206119E10 | -| test.c:585:18:585:27 | ... + ... | 1.1595206119E10 | -| test.c:585:22:585:23 | ip | 1.1595206119E10 | -| test.c:585:27:585:27 | 1 | 1.0 | -| test.c:585:27:585:27 | (unsigned int)... | 1.0 | -| test.c:585:32:585:33 | 14 | 1.0 | -| test.c:585:32:585:33 | (unsigned int)... | 1.0 | -| test.c:586:17:586:18 | 14 | 1.0 | -| test.c:586:17:586:18 | (unsigned int)... | 1.0 | -| test.c:586:17:586:29 | ... * ... | 1.1595206119E10 | -| test.c:586:17:586:39 | ... > ... | 1.0 | -| test.c:586:17:588:25 | ... ? ... : ... | 1.3444880494209504E20 | -| test.c:586:22:586:29 | (...) | 1.1595206119E10 | -| test.c:586:23:586:23 | 2 | 1.0 | -| test.c:586:23:586:23 | (unsigned int)... | 1.0 | -| test.c:586:23:586:28 | ... * ... | 1.1595206119E10 | -| test.c:586:27:586:28 | ip | 1.1595206119E10 | -| test.c:586:33:586:34 | 17 | 1.0 | -| test.c:586:33:586:34 | (unsigned int)... | 1.0 | -| test.c:586:33:586:39 | ... * ... | 1.1595206119E10 | -| test.c:586:38:586:39 | ip | 1.1595206119E10 | -| test.c:587:19:587:20 | 14 | 1.0 | -| test.c:587:19:587:20 | (unsigned int)... | 1.0 | -| test.c:587:19:587:31 | ... * ... | 1.1595206119E10 | -| test.c:587:24:587:31 | (...) | 1.1595206119E10 | -| test.c:587:25:587:25 | 2 | 1.0 | -| test.c:587:25:587:25 | (unsigned int)... | 1.0 | -| test.c:587:25:587:30 | ... * ... | 1.1595206119E10 | -| test.c:587:29:587:30 | ip | 1.1595206119E10 | -| test.c:588:19:588:20 | 14 | 1.0 | -| test.c:588:19:588:20 | (unsigned int)... | 1.0 | -| test.c:588:19:588:25 | ... * ... | 1.1595206119E10 | -| test.c:588:24:588:25 | ip | 1.1595206119E10 | +| test.c:557:32:557:33 | 32 | 1.0 | +| test.c:557:32:557:33 | (unsigned int)... | 1.0 | +| test.c:558:17:558:34 | (...) | 8627385.0 | +| test.c:558:18:558:18 | 2 | 1.0 | +| test.c:558:18:558:18 | (unsigned int)... | 1.0 | +| test.c:558:18:558:23 | ... * ... | 8627385.0 | +| test.c:558:18:558:28 | ... * ... | 8627385.0 | +| test.c:558:18:558:33 | ... + ... | 8627385.0 | +| test.c:558:22:558:23 | ip | 8627385.0 | +| test.c:558:27:558:28 | 14 | 1.0 | +| test.c:558:27:558:28 | (unsigned int)... | 1.0 | +| test.c:558:32:558:33 | 32 | 1.0 | +| test.c:558:32:558:33 | (unsigned int)... | 1.0 | +| test.c:559:17:559:17 | 2 | 1.0 | +| test.c:559:17:559:17 | (unsigned int)... | 1.0 | +| test.c:559:17:559:34 | ... * ... | 8627385.0 | +| test.c:559:21:559:34 | (...) | 8627385.0 | +| test.c:559:22:559:23 | ip | 8627385.0 | +| test.c:559:22:559:28 | ... * ... | 8627385.0 | +| test.c:559:22:559:33 | ... + ... | 8627385.0 | +| test.c:559:27:559:28 | 14 | 1.0 | +| test.c:559:27:559:28 | (unsigned int)... | 1.0 | +| test.c:559:32:559:33 | 64 | 1.0 | +| test.c:559:32:559:33 | (unsigned int)... | 1.0 | +| test.c:560:17:565:30 | (...) | 5.137213315127421E21 | +| test.c:560:18:560:29 | (...) | 8627385.0 | +| test.c:560:18:560:34 | ... * ... | 8627385.0 | +| test.c:560:18:561:67 | ... > ... | 1.0 | +| test.c:560:18:565:29 | ... ? ... : ... | 5.137213315127421E21 | +| test.c:560:19:560:19 | 2 | 1.0 | +| test.c:560:19:560:19 | (unsigned int)... | 1.0 | +| test.c:560:19:560:24 | ... * ... | 8627385.0 | +| test.c:560:19:560:28 | ... + ... | 8627385.0 | +| test.c:560:23:560:24 | ip | 8627385.0 | +| test.c:560:28:560:28 | 1 | 1.0 | +| test.c:560:28:560:28 | (unsigned int)... | 1.0 | +| test.c:560:33:560:34 | 14 | 1.0 | +| test.c:560:33:560:34 | (unsigned int)... | 1.0 | +| test.c:561:17:561:67 | (...) | 7.4431771938225E13 | +| test.c:561:18:561:19 | 14 | 1.0 | +| test.c:561:18:561:19 | (unsigned int)... | 1.0 | +| test.c:561:18:561:30 | ... * ... | 8627385.0 | +| test.c:561:18:561:40 | ... > ... | 1.0 | +| test.c:561:18:561:66 | ... ? ... : ... | 7.4431771938225E13 | +| test.c:561:23:561:30 | (...) | 8627385.0 | +| test.c:561:24:561:24 | 2 | 1.0 | +| test.c:561:24:561:24 | (unsigned int)... | 1.0 | +| test.c:561:24:561:29 | ... * ... | 8627385.0 | +| test.c:561:28:561:29 | ip | 8627385.0 | +| test.c:561:34:561:35 | 17 | 1.0 | +| test.c:561:34:561:35 | (unsigned int)... | 1.0 | +| test.c:561:34:561:40 | ... * ... | 8627385.0 | +| test.c:561:39:561:40 | ip | 8627385.0 | +| test.c:561:44:561:45 | 17 | 1.0 | +| test.c:561:44:561:45 | (unsigned int)... | 1.0 | +| test.c:561:44:561:56 | ... * ... | 8627385.0 | +| test.c:561:49:561:56 | (...) | 8627385.0 | +| test.c:561:50:561:50 | 2 | 1.0 | +| test.c:561:50:561:50 | (unsigned int)... | 1.0 | +| test.c:561:50:561:55 | ... * ... | 8627385.0 | +| test.c:561:54:561:55 | ip | 8627385.0 | +| test.c:561:60:561:61 | 17 | 1.0 | +| test.c:561:60:561:61 | (unsigned int)... | 1.0 | +| test.c:561:60:561:66 | ... * ... | 8627385.0 | +| test.c:561:65:561:66 | ip | 8627385.0 | +| test.c:562:21:562:32 | (...) | 1.7254771E7 | +| test.c:562:21:562:37 | ... * ... | 1.7254771E7 | +| test.c:562:22:562:22 | 2 | 1.0 | +| test.c:562:22:562:22 | (unsigned int)... | 1.0 | +| test.c:562:22:562:27 | ... * ... | 1.7254771E7 | +| test.c:562:22:562:31 | ... + ... | 1.7254771E7 | +| test.c:562:26:562:27 | ip | 1.7254771E7 | +| test.c:562:31:562:31 | 1 | 1.0 | +| test.c:562:31:562:31 | (unsigned int)... | 1.0 | +| test.c:562:36:562:37 | 14 | 1.0 | +| test.c:562:36:562:37 | (unsigned int)... | 1.0 | +| test.c:563:21:563:22 | 14 | 1.0 | +| test.c:563:21:563:22 | (unsigned int)... | 1.0 | +| test.c:563:21:563:33 | ... * ... | 1.7254771E7 | +| test.c:563:21:563:43 | ... > ... | 1.0 | +| test.c:563:21:565:29 | ... ? ... : ... | 2.97727122262441E14 | +| test.c:563:26:563:33 | (...) | 1.7254771E7 | +| test.c:563:27:563:27 | 2 | 1.0 | +| test.c:563:27:563:27 | (unsigned int)... | 1.0 | +| test.c:563:27:563:32 | ... * ... | 1.7254771E7 | +| test.c:563:31:563:32 | ip | 1.7254771E7 | +| test.c:563:37:563:38 | 17 | 1.0 | +| test.c:563:37:563:38 | (unsigned int)... | 1.0 | +| test.c:563:37:563:43 | ... * ... | 1.7254771E7 | +| test.c:563:42:563:43 | ip | 1.7254771E7 | +| test.c:564:23:564:24 | 14 | 1.0 | +| test.c:564:23:564:24 | (unsigned int)... | 1.0 | +| test.c:564:23:564:35 | ... * ... | 1.7254771E7 | +| test.c:564:28:564:35 | (...) | 1.7254771E7 | +| test.c:564:29:564:29 | 2 | 1.0 | +| test.c:564:29:564:29 | (unsigned int)... | 1.0 | +| test.c:564:29:564:34 | ... * ... | 1.7254771E7 | +| test.c:564:33:564:34 | ip | 1.7254771E7 | +| test.c:565:23:565:24 | 14 | 1.0 | +| test.c:565:23:565:24 | (unsigned int)... | 1.0 | +| test.c:565:23:565:29 | ... * ... | 1.7254771E7 | +| test.c:565:28:565:29 | ip | 1.7254771E7 | +| test.c:566:17:566:17 | 2 | 1.0 | +| test.c:566:17:566:17 | (unsigned int)... | 1.0 | +| test.c:566:17:566:22 | ... * ... | 8627385.0 | +| test.c:566:17:566:27 | ... * ... | 8627385.0 | +| test.c:566:17:566:47 | ... + ... | 7.4431771938225E13 | +| test.c:566:21:566:22 | ip | 8627385.0 | +| test.c:566:26:566:27 | 14 | 1.0 | +| test.c:566:26:566:27 | (unsigned int)... | 1.0 | +| test.c:566:31:566:42 | (...) | 8627385.0 | +| test.c:566:31:566:47 | ... * ... | 8627385.0 | +| test.c:566:32:566:32 | 2 | 1.0 | +| test.c:566:32:566:32 | (unsigned int)... | 1.0 | +| test.c:566:32:566:37 | ... * ... | 8627385.0 | +| test.c:566:32:566:41 | ... + ... | 8627385.0 | +| test.c:566:36:566:37 | ip | 8627385.0 | +| test.c:566:41:566:41 | 1 | 1.0 | +| test.c:566:41:566:41 | (unsigned int)... | 1.0 | +| test.c:566:46:566:47 | 17 | 1.0 | +| test.c:566:46:566:47 | (unsigned int)... | 1.0 | +| test.c:567:11:588:30 | (...) | 6.08636382738973E71 | +| test.c:567:12:567:12 | 4 | 1.0 | +| test.c:567:12:567:12 | (unsigned int)... | 1.0 | +| test.c:567:12:567:29 | ... * ... | 6.0391698E7 | +| test.c:567:12:568:30 | ... + ... | 3.647157187323204E15 | +| test.c:567:12:569:30 | ... + ... | 2.2025801541535236E23 | +| test.c:567:12:575:26 | ... + ... | 3.881087564774641E47 | +| test.c:567:12:576:61 | ... > ... | 1.0 | +| test.c:567:12:588:29 | ... ? ... : ... | 6.08636382738973E71 | +| test.c:567:16:567:29 | (...) | 6.0391698E7 | +| test.c:567:17:567:18 | ip | 6.0391698E7 | +| test.c:567:17:567:23 | ... * ... | 6.0391698E7 | +| test.c:567:17:567:28 | ... + ... | 6.0391698E7 | +| test.c:567:22:567:23 | 14 | 1.0 | +| test.c:567:22:567:23 | (unsigned int)... | 1.0 | +| test.c:567:27:567:28 | 32 | 1.0 | +| test.c:567:27:567:28 | (unsigned int)... | 1.0 | +| test.c:568:13:568:30 | (...) | 6.0391698E7 | +| test.c:568:14:568:14 | 2 | 1.0 | +| test.c:568:14:568:14 | (unsigned int)... | 1.0 | +| test.c:568:14:568:19 | ... * ... | 6.0391698E7 | +| test.c:568:14:568:24 | ... * ... | 6.0391698E7 | +| test.c:568:14:568:29 | ... + ... | 6.0391698E7 | +| test.c:568:18:568:19 | ip | 6.0391698E7 | +| test.c:568:23:568:24 | 14 | 1.0 | +| test.c:568:23:568:24 | (unsigned int)... | 1.0 | +| test.c:568:28:568:29 | 32 | 1.0 | +| test.c:568:28:568:29 | (unsigned int)... | 1.0 | +| test.c:569:13:569:13 | 2 | 1.0 | +| test.c:569:13:569:13 | (unsigned int)... | 1.0 | +| test.c:569:13:569:30 | ... * ... | 6.0391698E7 | +| test.c:569:17:569:30 | (...) | 6.0391698E7 | +| test.c:569:18:569:19 | ip | 6.0391698E7 | +| test.c:569:18:569:24 | ... * ... | 6.0391698E7 | +| test.c:569:18:569:29 | ... + ... | 6.0391698E7 | +| test.c:569:23:569:24 | 14 | 1.0 | +| test.c:569:23:569:24 | (unsigned int)... | 1.0 | +| test.c:569:28:569:29 | 64 | 1.0 | +| test.c:569:28:569:29 | (unsigned int)... | 1.0 | +| test.c:570:13:575:26 | (...) | 1.7620641670887053E24 | +| test.c:570:14:570:25 | (...) | 6.0391698E7 | +| test.c:570:14:570:30 | ... * ... | 6.0391698E7 | +| test.c:570:14:571:63 | ... > ... | 1.0 | +| test.c:570:14:575:25 | ... ? ... : ... | 1.7620641670887053E24 | +| test.c:570:15:570:15 | 2 | 1.0 | +| test.c:570:15:570:15 | (unsigned int)... | 1.0 | +| test.c:570:15:570:20 | ... * ... | 6.0391698E7 | +| test.c:570:15:570:24 | ... + ... | 6.0391698E7 | +| test.c:570:19:570:20 | ip | 6.0391698E7 | +| test.c:570:24:570:24 | 1 | 1.0 | +| test.c:570:24:570:24 | (unsigned int)... | 1.0 | +| test.c:570:29:570:30 | 14 | 1.0 | +| test.c:570:29:570:30 | (unsigned int)... | 1.0 | +| test.c:571:13:571:63 | (...) | 3.647157187323204E15 | +| test.c:571:14:571:15 | 14 | 1.0 | +| test.c:571:14:571:15 | (unsigned int)... | 1.0 | +| test.c:571:14:571:26 | ... * ... | 6.0391698E7 | +| test.c:571:14:571:36 | ... > ... | 1.0 | +| test.c:571:14:571:62 | ... ? ... : ... | 3.647157187323204E15 | +| test.c:571:19:571:26 | (...) | 6.0391698E7 | +| test.c:571:20:571:20 | 2 | 1.0 | +| test.c:571:20:571:20 | (unsigned int)... | 1.0 | +| test.c:571:20:571:25 | ... * ... | 6.0391698E7 | +| test.c:571:24:571:25 | ip | 6.0391698E7 | +| test.c:571:30:571:31 | 17 | 1.0 | +| test.c:571:30:571:31 | (unsigned int)... | 1.0 | +| test.c:571:30:571:36 | ... * ... | 6.0391698E7 | +| test.c:571:35:571:36 | ip | 6.0391698E7 | +| test.c:571:40:571:41 | 17 | 1.0 | +| test.c:571:40:571:41 | (unsigned int)... | 1.0 | +| test.c:571:40:571:52 | ... * ... | 6.0391698E7 | +| test.c:571:45:571:52 | (...) | 6.0391698E7 | +| test.c:571:46:571:46 | 2 | 1.0 | +| test.c:571:46:571:46 | (unsigned int)... | 1.0 | +| test.c:571:46:571:51 | ... * ... | 6.0391698E7 | +| test.c:571:50:571:51 | ip | 6.0391698E7 | +| test.c:571:56:571:57 | 17 | 1.0 | +| test.c:571:56:571:57 | (unsigned int)... | 1.0 | +| test.c:571:56:571:62 | ... * ... | 6.0391698E7 | +| test.c:571:61:571:62 | ip | 6.0391698E7 | +| test.c:572:17:572:28 | (...) | 1.20783397E8 | +| test.c:572:17:572:33 | ... * ... | 1.20783397E8 | +| test.c:572:18:572:18 | 2 | 1.0 | +| test.c:572:18:572:18 | (unsigned int)... | 1.0 | +| test.c:572:18:572:23 | ... * ... | 1.20783397E8 | +| test.c:572:18:572:27 | ... + ... | 1.20783397E8 | +| test.c:572:22:572:23 | ip | 1.20783397E8 | +| test.c:572:27:572:27 | 1 | 1.0 | +| test.c:572:27:572:27 | (unsigned int)... | 1.0 | +| test.c:572:32:572:33 | 14 | 1.0 | +| test.c:572:32:572:33 | (unsigned int)... | 1.0 | +| test.c:573:17:573:18 | 14 | 1.0 | +| test.c:573:17:573:18 | (unsigned int)... | 1.0 | +| test.c:573:17:573:29 | ... * ... | 1.20783397E8 | +| test.c:573:17:573:39 | ... > ... | 1.0 | +| test.c:573:17:575:25 | ... ? ... : ... | 1.4588628990859608E16 | +| test.c:573:22:573:29 | (...) | 1.20783397E8 | +| test.c:573:23:573:23 | 2 | 1.0 | +| test.c:573:23:573:23 | (unsigned int)... | 1.0 | +| test.c:573:23:573:28 | ... * ... | 1.20783397E8 | +| test.c:573:27:573:28 | ip | 1.20783397E8 | +| test.c:573:33:573:34 | 17 | 1.0 | +| test.c:573:33:573:34 | (unsigned int)... | 1.0 | +| test.c:573:33:573:39 | ... * ... | 1.20783397E8 | +| test.c:573:38:573:39 | ip | 1.20783397E8 | +| test.c:574:19:574:20 | 14 | 1.0 | +| test.c:574:19:574:20 | (unsigned int)... | 1.0 | +| test.c:574:19:574:31 | ... * ... | 1.20783397E8 | +| test.c:574:24:574:31 | (...) | 1.20783397E8 | +| test.c:574:25:574:25 | 2 | 1.0 | +| test.c:574:25:574:25 | (unsigned int)... | 1.0 | +| test.c:574:25:574:30 | ... * ... | 1.20783397E8 | +| test.c:574:29:574:30 | ip | 1.20783397E8 | +| test.c:575:19:575:20 | 14 | 1.0 | +| test.c:575:19:575:20 | (unsigned int)... | 1.0 | +| test.c:575:19:575:25 | ... * ... | 1.20783397E8 | +| test.c:575:24:575:25 | ip | 1.20783397E8 | +| test.c:576:11:576:61 | (...) | 1.3129766091773648E17 | +| test.c:576:12:576:13 | 14 | 1.0 | +| test.c:576:12:576:13 | (unsigned int)... | 1.0 | +| test.c:576:12:576:18 | ... * ... | 3.62350191E8 | +| test.c:576:12:576:34 | ... > ... | 1.0 | +| test.c:576:12:576:60 | ... ? ... : ... | 1.3129766091773648E17 | +| test.c:576:17:576:18 | ip | 3.62350191E8 | +| test.c:576:22:576:29 | (...) | 3.62350191E8 | +| test.c:576:22:576:34 | ... * ... | 3.62350191E8 | +| test.c:576:23:576:24 | ip | 3.62350191E8 | +| test.c:576:23:576:28 | ... + ... | 3.62350191E8 | +| test.c:576:28:576:28 | 1 | 1.0 | +| test.c:576:28:576:28 | (unsigned int)... | 1.0 | +| test.c:576:33:576:34 | 17 | 1.0 | +| test.c:576:33:576:34 | (unsigned int)... | 1.0 | +| test.c:576:38:576:39 | 17 | 1.0 | +| test.c:576:38:576:39 | (unsigned int)... | 1.0 | +| test.c:576:38:576:44 | ... * ... | 3.62350191E8 | +| test.c:576:43:576:44 | ip | 3.62350191E8 | +| test.c:576:48:576:55 | (...) | 3.62350191E8 | +| test.c:576:48:576:60 | ... * ... | 3.62350191E8 | +| test.c:576:49:576:50 | ip | 3.62350191E8 | +| test.c:576:49:576:54 | ... + ... | 3.62350191E8 | +| test.c:576:54:576:54 | 1 | 1.0 | +| test.c:576:54:576:54 | (unsigned int)... | 1.0 | +| test.c:576:59:576:60 | 17 | 1.0 | +| test.c:576:59:576:60 | (unsigned int)... | 1.0 | +| test.c:577:15:577:15 | 4 | 1.0 | +| test.c:577:15:577:15 | (unsigned int)... | 1.0 | +| test.c:577:15:577:32 | ... * ... | 7.24700382E8 | +| test.c:577:15:578:32 | ... + ... | 5.251906436709459E17 | +| test.c:577:15:579:32 | ... + ... | 3.806058600911604E26 | +| test.c:577:15:585:28 | ... + ... | 1.1588865682845433E54 | +| test.c:577:19:577:32 | (...) | 7.24700382E8 | +| test.c:577:20:577:21 | ip | 7.24700382E8 | +| test.c:577:20:577:26 | ... * ... | 7.24700382E8 | +| test.c:577:20:577:31 | ... + ... | 7.24700382E8 | +| test.c:577:25:577:26 | 14 | 1.0 | +| test.c:577:25:577:26 | (unsigned int)... | 1.0 | +| test.c:577:30:577:31 | 32 | 1.0 | +| test.c:577:30:577:31 | (unsigned int)... | 1.0 | +| test.c:578:15:578:32 | (...) | 7.24700382E8 | +| test.c:578:16:578:16 | 2 | 1.0 | +| test.c:578:16:578:16 | (unsigned int)... | 1.0 | +| test.c:578:16:578:21 | ... * ... | 7.24700382E8 | +| test.c:578:16:578:26 | ... * ... | 7.24700382E8 | +| test.c:578:16:578:31 | ... + ... | 7.24700382E8 | +| test.c:578:20:578:21 | ip | 7.24700382E8 | +| test.c:578:25:578:26 | 14 | 1.0 | +| test.c:578:25:578:26 | (unsigned int)... | 1.0 | +| test.c:578:30:578:31 | 32 | 1.0 | +| test.c:578:30:578:31 | (unsigned int)... | 1.0 | +| test.c:579:15:579:15 | 2 | 1.0 | +| test.c:579:15:579:15 | (unsigned int)... | 1.0 | +| test.c:579:15:579:32 | ... * ... | 7.24700382E8 | +| test.c:579:19:579:32 | (...) | 7.24700382E8 | +| test.c:579:20:579:21 | ip | 7.24700382E8 | +| test.c:579:20:579:26 | ... * ... | 7.24700382E8 | +| test.c:579:20:579:31 | ... + ... | 7.24700382E8 | +| test.c:579:25:579:26 | 14 | 1.0 | +| test.c:579:25:579:26 | (unsigned int)... | 1.0 | +| test.c:579:30:579:31 | 64 | 1.0 | +| test.c:579:30:579:31 | (unsigned int)... | 1.0 | +| test.c:580:15:585:28 | (...) | 3.044846887031571E27 | +| test.c:580:16:580:27 | (...) | 7.24700382E8 | +| test.c:580:16:580:32 | ... * ... | 7.24700382E8 | +| test.c:580:16:581:65 | ... > ... | 1.0 | +| test.c:580:16:585:27 | ... ? ... : ... | 3.044846887031571E27 | +| test.c:580:17:580:17 | 2 | 1.0 | +| test.c:580:17:580:17 | (unsigned int)... | 1.0 | +| test.c:580:17:580:22 | ... * ... | 7.24700382E8 | +| test.c:580:17:580:26 | ... + ... | 7.24700382E8 | +| test.c:580:21:580:22 | ip | 7.24700382E8 | +| test.c:580:26:580:26 | 1 | 1.0 | +| test.c:580:26:580:26 | (unsigned int)... | 1.0 | +| test.c:580:31:580:32 | 14 | 1.0 | +| test.c:580:31:580:32 | (unsigned int)... | 1.0 | +| test.c:581:15:581:65 | (...) | 5.251906436709459E17 | +| test.c:581:16:581:17 | 14 | 1.0 | +| test.c:581:16:581:17 | (unsigned int)... | 1.0 | +| test.c:581:16:581:28 | ... * ... | 7.24700382E8 | +| test.c:581:16:581:38 | ... > ... | 1.0 | +| test.c:581:16:581:64 | ... ? ... : ... | 5.251906436709459E17 | +| test.c:581:21:581:28 | (...) | 7.24700382E8 | +| test.c:581:22:581:22 | 2 | 1.0 | +| test.c:581:22:581:22 | (unsigned int)... | 1.0 | +| test.c:581:22:581:27 | ... * ... | 7.24700382E8 | +| test.c:581:26:581:27 | ip | 7.24700382E8 | +| test.c:581:32:581:33 | 17 | 1.0 | +| test.c:581:32:581:33 | (unsigned int)... | 1.0 | +| test.c:581:32:581:38 | ... * ... | 7.24700382E8 | +| test.c:581:37:581:38 | ip | 7.24700382E8 | +| test.c:581:42:581:43 | 17 | 1.0 | +| test.c:581:42:581:43 | (unsigned int)... | 1.0 | +| test.c:581:42:581:54 | ... * ... | 7.24700382E8 | +| test.c:581:47:581:54 | (...) | 7.24700382E8 | +| test.c:581:48:581:48 | 2 | 1.0 | +| test.c:581:48:581:48 | (unsigned int)... | 1.0 | +| test.c:581:48:581:53 | ... * ... | 7.24700382E8 | +| test.c:581:52:581:53 | ip | 7.24700382E8 | +| test.c:581:58:581:59 | 17 | 1.0 | +| test.c:581:58:581:59 | (unsigned int)... | 1.0 | +| test.c:581:58:581:64 | ... * ... | 7.24700382E8 | +| test.c:581:63:581:64 | ip | 7.24700382E8 | +| test.c:582:19:582:30 | (...) | 1.449400765E9 | +| test.c:582:19:582:35 | ... * ... | 1.449400765E9 | +| test.c:582:20:582:20 | 2 | 1.0 | +| test.c:582:20:582:20 | (unsigned int)... | 1.0 | +| test.c:582:20:582:25 | ... * ... | 1.449400765E9 | +| test.c:582:20:582:29 | ... + ... | 1.449400765E9 | +| test.c:582:24:582:25 | ip | 1.449400765E9 | +| test.c:582:29:582:29 | 1 | 1.0 | +| test.c:582:29:582:29 | (unsigned int)... | 1.0 | +| test.c:582:34:582:35 | 14 | 1.0 | +| test.c:582:34:582:35 | (unsigned int)... | 1.0 | +| test.c:583:19:583:20 | 14 | 1.0 | +| test.c:583:19:583:20 | (unsigned int)... | 1.0 | +| test.c:583:19:583:31 | ... * ... | 1.449400765E9 | +| test.c:583:19:583:41 | ... > ... | 1.0 | +| test.c:583:19:585:27 | ... ? ... : ... | 2.1007625775825853E18 | +| test.c:583:24:583:31 | (...) | 1.449400765E9 | +| test.c:583:25:583:25 | 2 | 1.0 | +| test.c:583:25:583:25 | (unsigned int)... | 1.0 | +| test.c:583:25:583:30 | ... * ... | 1.449400765E9 | +| test.c:583:29:583:30 | ip | 1.449400765E9 | +| test.c:583:35:583:36 | 17 | 1.0 | +| test.c:583:35:583:36 | (unsigned int)... | 1.0 | +| test.c:583:35:583:41 | ... * ... | 1.449400765E9 | +| test.c:583:40:583:41 | ip | 1.449400765E9 | +| test.c:584:21:584:22 | 14 | 1.0 | +| test.c:584:21:584:22 | (unsigned int)... | 1.0 | +| test.c:584:21:584:33 | ... * ... | 1.449400765E9 | +| test.c:584:26:584:33 | (...) | 1.449400765E9 | +| test.c:584:27:584:27 | 2 | 1.0 | +| test.c:584:27:584:27 | (unsigned int)... | 1.0 | +| test.c:584:27:584:32 | ... * ... | 1.449400765E9 | +| test.c:584:31:584:32 | ip | 1.449400765E9 | +| test.c:585:21:585:22 | 14 | 1.0 | +| test.c:585:21:585:22 | (unsigned int)... | 1.0 | +| test.c:585:21:585:27 | ... * ... | 1.449400765E9 | +| test.c:585:26:585:27 | ip | 1.449400765E9 | +| test.c:586:15:586:16 | 14 | 1.0 | +| test.c:586:15:586:16 | (unsigned int)... | 1.0 | +| test.c:586:15:586:21 | ... * ... | 7.24700382E8 | +| test.c:586:15:586:37 | ... > ... | 1.0 | +| test.c:586:15:588:29 | ... ? ... : ... | 5.251906436709459E17 | +| test.c:586:20:586:21 | ip | 7.24700382E8 | +| test.c:586:25:586:32 | (...) | 7.24700382E8 | +| test.c:586:25:586:37 | ... * ... | 7.24700382E8 | +| test.c:586:26:586:27 | ip | 7.24700382E8 | +| test.c:586:26:586:31 | ... + ... | 7.24700382E8 | +| test.c:586:31:586:31 | 1 | 1.0 | +| test.c:586:31:586:31 | (unsigned int)... | 1.0 | +| test.c:586:36:586:37 | 17 | 1.0 | +| test.c:586:36:586:37 | (unsigned int)... | 1.0 | +| test.c:587:17:587:18 | 14 | 1.0 | +| test.c:587:17:587:18 | (unsigned int)... | 1.0 | +| test.c:587:17:587:23 | ... * ... | 7.24700382E8 | +| test.c:587:22:587:23 | ip | 7.24700382E8 | +| test.c:588:17:588:24 | (...) | 7.24700382E8 | +| test.c:588:17:588:29 | ... * ... | 7.24700382E8 | +| test.c:588:18:588:19 | ip | 7.24700382E8 | +| test.c:588:18:588:23 | ... + ... | 7.24700382E8 | +| test.c:588:23:588:23 | 1 | 1.0 | +| test.c:588:23:588:23 | (unsigned int)... | 1.0 | +| test.c:588:28:588:29 | 14 | 1.0 | +| test.c:588:28:588:29 | (unsigned int)... | 1.0 | | test.c:589:11:589:11 | 2 | 1.0 | | test.c:589:11:589:11 | (unsigned int)... | 1.0 | -| test.c:589:11:589:16 | ... * ... | 3.4785618357E10 | -| test.c:589:11:589:21 | ... * ... | 3.4785618357E10 | -| test.c:589:11:589:41 | ... + ... | 1.2100392444788552E21 | -| test.c:589:15:589:16 | ip | 3.4785618357E10 | -| test.c:589:20:589:21 | 14 | 1.0 | -| test.c:589:20:589:21 | (unsigned int)... | 1.0 | -| test.c:589:25:589:36 | (...) | 3.4785618357E10 | -| test.c:589:25:589:41 | ... * ... | 3.4785618357E10 | -| test.c:589:26:589:26 | 2 | 1.0 | -| test.c:589:26:589:26 | (unsigned int)... | 1.0 | -| test.c:589:26:589:31 | ... * ... | 3.4785618357E10 | -| test.c:589:26:589:35 | ... + ... | 3.4785618357E10 | -| test.c:589:30:589:31 | ip | 3.4785618357E10 | -| test.c:589:35:589:35 | 1 | 1.0 | -| test.c:589:35:589:35 | (unsigned int)... | 1.0 | -| test.c:589:40:589:41 | 17 | 1.0 | -| test.c:589:40:589:41 | (unsigned int)... | 1.0 | -| test.c:590:15:590:15 | 4 | 1.0 | -| test.c:590:15:590:15 | (unsigned int)... | 1.0 | -| test.c:590:15:590:32 | ... * ... | 3.4785618357E10 | -| test.c:590:15:591:32 | ... + ... | 1.2100392444788552E21 | -| test.c:590:15:592:32 | ... + ... | 4.209196335543408E31 | -| test.c:590:15:598:28 | ... + ... | 1.417386703353284E64 | -| test.c:590:19:590:32 | (...) | 3.4785618357E10 | -| test.c:590:20:590:21 | ip | 3.4785618357E10 | -| test.c:590:20:590:26 | ... * ... | 3.4785618357E10 | -| test.c:590:20:590:31 | ... + ... | 3.4785618357E10 | -| test.c:590:25:590:26 | 14 | 1.0 | -| test.c:590:25:590:26 | (unsigned int)... | 1.0 | -| test.c:590:30:590:31 | 32 | 1.0 | -| test.c:590:30:590:31 | (unsigned int)... | 1.0 | -| test.c:591:15:591:32 | (...) | 3.4785618357E10 | -| test.c:591:16:591:16 | 2 | 1.0 | -| test.c:591:16:591:16 | (unsigned int)... | 1.0 | -| test.c:591:16:591:21 | ... * ... | 3.4785618357E10 | -| test.c:591:16:591:26 | ... * ... | 3.4785618357E10 | -| test.c:591:16:591:31 | ... + ... | 3.4785618357E10 | -| test.c:591:20:591:21 | ip | 3.4785618357E10 | -| test.c:591:25:591:26 | 14 | 1.0 | -| test.c:591:25:591:26 | (unsigned int)... | 1.0 | -| test.c:591:30:591:31 | 32 | 1.0 | -| test.c:591:30:591:31 | (unsigned int)... | 1.0 | -| test.c:592:15:592:15 | 2 | 1.0 | -| test.c:592:15:592:15 | (unsigned int)... | 1.0 | -| test.c:592:15:592:32 | ... * ... | 3.4785618357E10 | -| test.c:592:19:592:32 | (...) | 3.4785618357E10 | -| test.c:592:20:592:21 | ip | 3.4785618357E10 | -| test.c:592:20:592:26 | ... * ... | 3.4785618357E10 | -| test.c:592:20:592:31 | ... + ... | 3.4785618357E10 | -| test.c:592:25:592:26 | 14 | 1.0 | -| test.c:592:25:592:26 | (unsigned int)... | 1.0 | -| test.c:592:30:592:31 | 64 | 1.0 | -| test.c:592:30:592:31 | (unsigned int)... | 1.0 | -| test.c:593:15:598:28 | (...) | 3.367357068579931E32 | -| test.c:593:16:593:27 | (...) | 3.4785618357E10 | -| test.c:593:16:593:32 | ... * ... | 3.4785618357E10 | -| test.c:593:16:594:65 | ... > ... | 1.0 | -| test.c:593:16:598:27 | ... ? ... : ... | 3.367357068579931E32 | -| test.c:593:17:593:17 | 2 | 1.0 | -| test.c:593:17:593:17 | (unsigned int)... | 1.0 | -| test.c:593:17:593:22 | ... * ... | 3.4785618357E10 | -| test.c:593:17:593:26 | ... + ... | 3.4785618357E10 | -| test.c:593:21:593:22 | ip | 3.4785618357E10 | -| test.c:593:26:593:26 | 1 | 1.0 | -| test.c:593:26:593:26 | (unsigned int)... | 1.0 | -| test.c:593:31:593:32 | 14 | 1.0 | -| test.c:593:31:593:32 | (unsigned int)... | 1.0 | -| test.c:594:15:594:65 | (...) | 1.2100392444788552E21 | -| test.c:594:16:594:17 | 14 | 1.0 | -| test.c:594:16:594:17 | (unsigned int)... | 1.0 | -| test.c:594:16:594:28 | ... * ... | 3.4785618357E10 | -| test.c:594:16:594:38 | ... > ... | 1.0 | -| test.c:594:16:594:64 | ... ? ... : ... | 1.2100392444788552E21 | -| test.c:594:21:594:28 | (...) | 3.4785618357E10 | -| test.c:594:22:594:22 | 2 | 1.0 | -| test.c:594:22:594:22 | (unsigned int)... | 1.0 | -| test.c:594:22:594:27 | ... * ... | 3.4785618357E10 | -| test.c:594:26:594:27 | ip | 3.4785618357E10 | -| test.c:594:32:594:33 | 17 | 1.0 | -| test.c:594:32:594:33 | (unsigned int)... | 1.0 | -| test.c:594:32:594:38 | ... * ... | 3.4785618357E10 | -| test.c:594:37:594:38 | ip | 3.4785618357E10 | -| test.c:594:42:594:43 | 17 | 1.0 | -| test.c:594:42:594:43 | (unsigned int)... | 1.0 | -| test.c:594:42:594:54 | ... * ... | 3.4785618357E10 | -| test.c:594:47:594:54 | (...) | 3.4785618357E10 | -| test.c:594:48:594:48 | 2 | 1.0 | -| test.c:594:48:594:48 | (unsigned int)... | 1.0 | -| test.c:594:48:594:53 | ... * ... | 3.4785618357E10 | -| test.c:594:52:594:53 | ip | 3.4785618357E10 | -| test.c:594:58:594:59 | 17 | 1.0 | -| test.c:594:58:594:59 | (unsigned int)... | 1.0 | -| test.c:594:58:594:64 | ... * ... | 3.4785618357E10 | -| test.c:594:63:594:64 | ip | 3.4785618357E10 | -| test.c:595:19:595:30 | (...) | 6.9571236715E10 | -| test.c:595:19:595:35 | ... * ... | 6.9571236715E10 | -| test.c:595:20:595:20 | 2 | 1.0 | -| test.c:595:20:595:20 | (unsigned int)... | 1.0 | -| test.c:595:20:595:25 | ... * ... | 6.9571236715E10 | -| test.c:595:20:595:29 | ... + ... | 6.9571236715E10 | -| test.c:595:24:595:25 | ip | 6.9571236715E10 | -| test.c:595:29:595:29 | 1 | 1.0 | -| test.c:595:29:595:29 | (unsigned int)... | 1.0 | -| test.c:595:34:595:35 | 14 | 1.0 | -| test.c:595:34:595:35 | (unsigned int)... | 1.0 | -| test.c:596:19:596:20 | 14 | 1.0 | -| test.c:596:19:596:20 | (unsigned int)... | 1.0 | -| test.c:596:19:596:31 | ... * ... | 6.9571236715E10 | -| test.c:596:19:596:41 | ... > ... | 1.0 | -| test.c:596:19:598:27 | ... ? ... : ... | 4.840156978054564E21 | -| test.c:596:24:596:31 | (...) | 6.9571236715E10 | -| test.c:596:25:596:25 | 2 | 1.0 | -| test.c:596:25:596:25 | (unsigned int)... | 1.0 | -| test.c:596:25:596:30 | ... * ... | 6.9571236715E10 | -| test.c:596:29:596:30 | ip | 6.9571236715E10 | -| test.c:596:35:596:36 | 17 | 1.0 | -| test.c:596:35:596:36 | (unsigned int)... | 1.0 | -| test.c:596:35:596:41 | ... * ... | 6.9571236715E10 | -| test.c:596:40:596:41 | ip | 6.9571236715E10 | -| test.c:597:21:597:22 | 14 | 1.0 | -| test.c:597:21:597:22 | (unsigned int)... | 1.0 | -| test.c:597:21:597:33 | ... * ... | 6.9571236715E10 | -| test.c:597:26:597:33 | (...) | 6.9571236715E10 | -| test.c:597:27:597:27 | 2 | 1.0 | -| test.c:597:27:597:27 | (unsigned int)... | 1.0 | -| test.c:597:27:597:32 | ... * ... | 6.9571236715E10 | -| test.c:597:31:597:32 | ip | 6.9571236715E10 | -| test.c:598:21:598:22 | 14 | 1.0 | -| test.c:598:21:598:22 | (unsigned int)... | 1.0 | -| test.c:598:21:598:27 | ... * ... | 6.9571236715E10 | -| test.c:598:26:598:27 | ip | 6.9571236715E10 | -| test.c:599:15:599:15 | 2 | 1.0 | -| test.c:599:15:599:15 | (unsigned int)... | 1.0 | -| test.c:599:15:599:20 | ... * ... | 3.4785618357E10 | -| test.c:599:15:599:25 | ... * ... | 3.4785618357E10 | -| test.c:599:15:599:45 | ... + ... | 1.2100392444788552E21 | -| test.c:599:19:599:20 | ip | 3.4785618357E10 | -| test.c:599:24:599:25 | 14 | 1.0 | -| test.c:599:24:599:25 | (unsigned int)... | 1.0 | -| test.c:599:29:599:40 | (...) | 3.4785618357E10 | -| test.c:599:29:599:45 | ... * ... | 3.4785618357E10 | -| test.c:599:30:599:30 | 2 | 1.0 | -| test.c:599:30:599:30 | (unsigned int)... | 1.0 | -| test.c:599:30:599:35 | ... * ... | 3.4785618357E10 | -| test.c:599:30:599:39 | ... + ... | 3.4785618357E10 | -| test.c:599:34:599:35 | ip | 3.4785618357E10 | -| test.c:599:39:599:39 | 1 | 1.0 | -| test.c:599:39:599:39 | (unsigned int)... | 1.0 | -| test.c:599:44:599:45 | 17 | 1.0 | -| test.c:599:44:599:45 | (unsigned int)... | 1.0 | -| test.c:600:11:600:11 | 4 | 1.0 | -| test.c:600:11:600:11 | (unsigned int)... | 1.0 | -| test.c:600:11:600:28 | ... * ... | 5.797603059E9 | -| test.c:600:11:601:32 | ... + ... | 3.361220122972616E19 | -| test.c:600:11:602:32 | ... + ... | 1.9487020066918396E29 | -| test.c:600:11:608:28 | ... + ... | 3.0379516094938436E59 | -| test.c:600:11:609:63 | ... > ... | 1.0 | -| test.c:600:11:621:27 | ... ? ... : ... | 4.390639451194891E87 | -| test.c:600:15:600:28 | (...) | 5.797603059E9 | -| test.c:600:16:600:17 | ip | 5.797603059E9 | -| test.c:600:16:600:22 | ... * ... | 5.797603059E9 | -| test.c:600:16:600:27 | ... + ... | 5.797603059E9 | -| test.c:600:21:600:22 | 14 | 1.0 | -| test.c:600:21:600:22 | (unsigned int)... | 1.0 | -| test.c:600:26:600:27 | 32 | 1.0 | -| test.c:600:26:600:27 | (unsigned int)... | 1.0 | -| test.c:601:15:601:32 | (...) | 5.797603059E9 | +| test.c:589:11:589:28 | ... * ... | 5.797603059E9 | +| test.c:589:11:609:46 | ... + ... | 9.943431528813442E94 | +| test.c:589:15:589:28 | (...) | 5.797603059E9 | +| test.c:589:16:589:17 | ip | 5.797603059E9 | +| test.c:589:16:589:22 | ... * ... | 5.797603059E9 | +| test.c:589:16:589:27 | ... + ... | 5.797603059E9 | +| test.c:589:21:589:22 | 14 | 1.0 | +| test.c:589:21:589:22 | (unsigned int)... | 1.0 | +| test.c:589:26:589:27 | 32 | 1.0 | +| test.c:589:26:589:27 | (unsigned int)... | 1.0 | +| test.c:590:11:609:46 | (...) | 1.715093535659983E85 | +| test.c:590:12:590:12 | 4 | 1.0 | +| test.c:590:12:590:12 | (unsigned int)... | 1.0 | +| test.c:590:12:590:29 | ... * ... | 5.797603059E9 | +| test.c:590:12:591:30 | ... + ... | 3.361220122972616E19 | +| test.c:590:12:592:30 | ... + ... | 1.9487020066918396E29 | +| test.c:590:12:598:26 | ... + ... | 3.0379516094938436E59 | +| test.c:590:12:599:41 | ... > ... | 1.0 | +| test.c:590:12:609:45 | ... ? ... : ... | 1.715093535659983E85 | +| test.c:590:16:590:29 | (...) | 5.797603059E9 | +| test.c:590:17:590:18 | ip | 5.797603059E9 | +| test.c:590:17:590:23 | ... * ... | 5.797603059E9 | +| test.c:590:17:590:28 | ... + ... | 5.797603059E9 | +| test.c:590:22:590:23 | 14 | 1.0 | +| test.c:590:22:590:23 | (unsigned int)... | 1.0 | +| test.c:590:27:590:28 | 32 | 1.0 | +| test.c:590:27:590:28 | (unsigned int)... | 1.0 | +| test.c:591:13:591:30 | (...) | 5.797603059E9 | +| test.c:591:14:591:14 | 2 | 1.0 | +| test.c:591:14:591:14 | (unsigned int)... | 1.0 | +| test.c:591:14:591:19 | ... * ... | 5.797603059E9 | +| test.c:591:14:591:24 | ... * ... | 5.797603059E9 | +| test.c:591:14:591:29 | ... + ... | 5.797603059E9 | +| test.c:591:18:591:19 | ip | 5.797603059E9 | +| test.c:591:23:591:24 | 14 | 1.0 | +| test.c:591:23:591:24 | (unsigned int)... | 1.0 | +| test.c:591:28:591:29 | 32 | 1.0 | +| test.c:591:28:591:29 | (unsigned int)... | 1.0 | +| test.c:592:13:592:13 | 2 | 1.0 | +| test.c:592:13:592:13 | (unsigned int)... | 1.0 | +| test.c:592:13:592:30 | ... * ... | 5.797603059E9 | +| test.c:592:17:592:30 | (...) | 5.797603059E9 | +| test.c:592:18:592:19 | ip | 5.797603059E9 | +| test.c:592:18:592:24 | ... * ... | 5.797603059E9 | +| test.c:592:18:592:29 | ... + ... | 5.797603059E9 | +| test.c:592:23:592:24 | 14 | 1.0 | +| test.c:592:23:592:24 | (unsigned int)... | 1.0 | +| test.c:592:28:592:29 | 64 | 1.0 | +| test.c:592:28:592:29 | (unsigned int)... | 1.0 | +| test.c:593:13:598:26 | (...) | 1.558961605756818E30 | +| test.c:593:14:593:25 | (...) | 5.797603059E9 | +| test.c:593:14:593:30 | ... * ... | 5.797603059E9 | +| test.c:593:14:594:63 | ... > ... | 1.0 | +| test.c:593:14:598:25 | ... ? ... : ... | 1.558961605756818E30 | +| test.c:593:15:593:15 | 2 | 1.0 | +| test.c:593:15:593:15 | (unsigned int)... | 1.0 | +| test.c:593:15:593:20 | ... * ... | 5.797603059E9 | +| test.c:593:15:593:24 | ... + ... | 5.797603059E9 | +| test.c:593:19:593:20 | ip | 5.797603059E9 | +| test.c:593:24:593:24 | 1 | 1.0 | +| test.c:593:24:593:24 | (unsigned int)... | 1.0 | +| test.c:593:29:593:30 | 14 | 1.0 | +| test.c:593:29:593:30 | (unsigned int)... | 1.0 | +| test.c:594:13:594:63 | (...) | 3.361220122972616E19 | +| test.c:594:14:594:15 | 14 | 1.0 | +| test.c:594:14:594:15 | (unsigned int)... | 1.0 | +| test.c:594:14:594:26 | ... * ... | 5.797603059E9 | +| test.c:594:14:594:36 | ... > ... | 1.0 | +| test.c:594:14:594:62 | ... ? ... : ... | 3.361220122972616E19 | +| test.c:594:19:594:26 | (...) | 5.797603059E9 | +| test.c:594:20:594:20 | 2 | 1.0 | +| test.c:594:20:594:20 | (unsigned int)... | 1.0 | +| test.c:594:20:594:25 | ... * ... | 5.797603059E9 | +| test.c:594:24:594:25 | ip | 5.797603059E9 | +| test.c:594:30:594:31 | 17 | 1.0 | +| test.c:594:30:594:31 | (unsigned int)... | 1.0 | +| test.c:594:30:594:36 | ... * ... | 5.797603059E9 | +| test.c:594:35:594:36 | ip | 5.797603059E9 | +| test.c:594:40:594:41 | 17 | 1.0 | +| test.c:594:40:594:41 | (unsigned int)... | 1.0 | +| test.c:594:40:594:52 | ... * ... | 5.797603059E9 | +| test.c:594:45:594:52 | (...) | 5.797603059E9 | +| test.c:594:46:594:46 | 2 | 1.0 | +| test.c:594:46:594:46 | (unsigned int)... | 1.0 | +| test.c:594:46:594:51 | ... * ... | 5.797603059E9 | +| test.c:594:50:594:51 | ip | 5.797603059E9 | +| test.c:594:56:594:57 | 17 | 1.0 | +| test.c:594:56:594:57 | (unsigned int)... | 1.0 | +| test.c:594:56:594:62 | ... * ... | 5.797603059E9 | +| test.c:594:61:594:62 | ip | 5.797603059E9 | +| test.c:595:17:595:28 | (...) | 1.1595206119E10 | +| test.c:595:17:595:33 | ... * ... | 1.1595206119E10 | +| test.c:595:18:595:18 | 2 | 1.0 | +| test.c:595:18:595:18 | (unsigned int)... | 1.0 | +| test.c:595:18:595:23 | ... * ... | 1.1595206119E10 | +| test.c:595:18:595:27 | ... + ... | 1.1595206119E10 | +| test.c:595:22:595:23 | ip | 1.1595206119E10 | +| test.c:595:27:595:27 | 1 | 1.0 | +| test.c:595:27:595:27 | (unsigned int)... | 1.0 | +| test.c:595:32:595:33 | 14 | 1.0 | +| test.c:595:32:595:33 | (unsigned int)... | 1.0 | +| test.c:596:17:596:18 | 14 | 1.0 | +| test.c:596:17:596:18 | (unsigned int)... | 1.0 | +| test.c:596:17:596:29 | ... * ... | 1.1595206119E10 | +| test.c:596:17:596:39 | ... > ... | 1.0 | +| test.c:596:17:598:25 | ... ? ... : ... | 1.3444880494209504E20 | +| test.c:596:22:596:29 | (...) | 1.1595206119E10 | +| test.c:596:23:596:23 | 2 | 1.0 | +| test.c:596:23:596:23 | (unsigned int)... | 1.0 | +| test.c:596:23:596:28 | ... * ... | 1.1595206119E10 | +| test.c:596:27:596:28 | ip | 1.1595206119E10 | +| test.c:596:33:596:34 | 17 | 1.0 | +| test.c:596:33:596:34 | (unsigned int)... | 1.0 | +| test.c:596:33:596:39 | ... * ... | 1.1595206119E10 | +| test.c:596:38:596:39 | ip | 1.1595206119E10 | +| test.c:597:19:597:20 | 14 | 1.0 | +| test.c:597:19:597:20 | (unsigned int)... | 1.0 | +| test.c:597:19:597:31 | ... * ... | 1.1595206119E10 | +| test.c:597:24:597:31 | (...) | 1.1595206119E10 | +| test.c:597:25:597:25 | 2 | 1.0 | +| test.c:597:25:597:25 | (unsigned int)... | 1.0 | +| test.c:597:25:597:30 | ... * ... | 1.1595206119E10 | +| test.c:597:29:597:30 | ip | 1.1595206119E10 | +| test.c:598:19:598:20 | 14 | 1.0 | +| test.c:598:19:598:20 | (unsigned int)... | 1.0 | +| test.c:598:19:598:25 | ... * ... | 1.1595206119E10 | +| test.c:598:24:598:25 | ip | 1.1595206119E10 | +| test.c:599:11:599:11 | 2 | 1.0 | +| test.c:599:11:599:11 | (unsigned int)... | 1.0 | +| test.c:599:11:599:16 | ... * ... | 3.4785618357E10 | +| test.c:599:11:599:21 | ... * ... | 3.4785618357E10 | +| test.c:599:11:599:41 | ... + ... | 1.2100392444788552E21 | +| test.c:599:15:599:16 | ip | 3.4785618357E10 | +| test.c:599:20:599:21 | 14 | 1.0 | +| test.c:599:20:599:21 | (unsigned int)... | 1.0 | +| test.c:599:25:599:36 | (...) | 3.4785618357E10 | +| test.c:599:25:599:41 | ... * ... | 3.4785618357E10 | +| test.c:599:26:599:26 | 2 | 1.0 | +| test.c:599:26:599:26 | (unsigned int)... | 1.0 | +| test.c:599:26:599:31 | ... * ... | 3.4785618357E10 | +| test.c:599:26:599:35 | ... + ... | 3.4785618357E10 | +| test.c:599:30:599:31 | ip | 3.4785618357E10 | +| test.c:599:35:599:35 | 1 | 1.0 | +| test.c:599:35:599:35 | (unsigned int)... | 1.0 | +| test.c:599:40:599:41 | 17 | 1.0 | +| test.c:599:40:599:41 | (unsigned int)... | 1.0 | +| test.c:600:15:600:15 | 4 | 1.0 | +| test.c:600:15:600:15 | (unsigned int)... | 1.0 | +| test.c:600:15:600:32 | ... * ... | 3.4785618357E10 | +| test.c:600:15:601:32 | ... + ... | 1.2100392444788552E21 | +| test.c:600:15:602:32 | ... + ... | 4.209196335543408E31 | +| test.c:600:15:608:28 | ... + ... | 1.417386703353284E64 | +| test.c:600:19:600:32 | (...) | 3.4785618357E10 | +| test.c:600:20:600:21 | ip | 3.4785618357E10 | +| test.c:600:20:600:26 | ... * ... | 3.4785618357E10 | +| test.c:600:20:600:31 | ... + ... | 3.4785618357E10 | +| test.c:600:25:600:26 | 14 | 1.0 | +| test.c:600:25:600:26 | (unsigned int)... | 1.0 | +| test.c:600:30:600:31 | 32 | 1.0 | +| test.c:600:30:600:31 | (unsigned int)... | 1.0 | +| test.c:601:15:601:32 | (...) | 3.4785618357E10 | | test.c:601:16:601:16 | 2 | 1.0 | | test.c:601:16:601:16 | (unsigned int)... | 1.0 | -| test.c:601:16:601:21 | ... * ... | 5.797603059E9 | -| test.c:601:16:601:26 | ... * ... | 5.797603059E9 | -| test.c:601:16:601:31 | ... + ... | 5.797603059E9 | -| test.c:601:20:601:21 | ip | 5.797603059E9 | +| test.c:601:16:601:21 | ... * ... | 3.4785618357E10 | +| test.c:601:16:601:26 | ... * ... | 3.4785618357E10 | +| test.c:601:16:601:31 | ... + ... | 3.4785618357E10 | +| test.c:601:20:601:21 | ip | 3.4785618357E10 | | test.c:601:25:601:26 | 14 | 1.0 | | test.c:601:25:601:26 | (unsigned int)... | 1.0 | | test.c:601:30:601:31 | 32 | 1.0 | | test.c:601:30:601:31 | (unsigned int)... | 1.0 | | test.c:602:15:602:15 | 2 | 1.0 | | test.c:602:15:602:15 | (unsigned int)... | 1.0 | -| test.c:602:15:602:32 | ... * ... | 5.797603059E9 | -| test.c:602:19:602:32 | (...) | 5.797603059E9 | -| test.c:602:20:602:21 | ip | 5.797603059E9 | -| test.c:602:20:602:26 | ... * ... | 5.797603059E9 | -| test.c:602:20:602:31 | ... + ... | 5.797603059E9 | +| test.c:602:15:602:32 | ... * ... | 3.4785618357E10 | +| test.c:602:19:602:32 | (...) | 3.4785618357E10 | +| test.c:602:20:602:21 | ip | 3.4785618357E10 | +| test.c:602:20:602:26 | ... * ... | 3.4785618357E10 | +| test.c:602:20:602:31 | ... + ... | 3.4785618357E10 | | test.c:602:25:602:26 | 14 | 1.0 | | test.c:602:25:602:26 | (unsigned int)... | 1.0 | | test.c:602:30:602:31 | 64 | 1.0 | | test.c:602:30:602:31 | (unsigned int)... | 1.0 | -| test.c:603:15:608:28 | (...) | 1.558961605756818E30 | -| test.c:603:16:603:27 | (...) | 5.797603059E9 | -| test.c:603:16:603:32 | ... * ... | 5.797603059E9 | +| test.c:603:15:608:28 | (...) | 3.367357068579931E32 | +| test.c:603:16:603:27 | (...) | 3.4785618357E10 | +| test.c:603:16:603:32 | ... * ... | 3.4785618357E10 | | test.c:603:16:604:65 | ... > ... | 1.0 | -| test.c:603:16:608:27 | ... ? ... : ... | 1.558961605756818E30 | +| test.c:603:16:608:27 | ... ? ... : ... | 3.367357068579931E32 | | test.c:603:17:603:17 | 2 | 1.0 | | test.c:603:17:603:17 | (unsigned int)... | 1.0 | -| test.c:603:17:603:22 | ... * ... | 5.797603059E9 | -| test.c:603:17:603:26 | ... + ... | 5.797603059E9 | -| test.c:603:21:603:22 | ip | 5.797603059E9 | +| test.c:603:17:603:22 | ... * ... | 3.4785618357E10 | +| test.c:603:17:603:26 | ... + ... | 3.4785618357E10 | +| test.c:603:21:603:22 | ip | 3.4785618357E10 | | test.c:603:26:603:26 | 1 | 1.0 | | test.c:603:26:603:26 | (unsigned int)... | 1.0 | | test.c:603:31:603:32 | 14 | 1.0 | | test.c:603:31:603:32 | (unsigned int)... | 1.0 | -| test.c:604:15:604:65 | (...) | 3.361220122972616E19 | +| test.c:604:15:604:65 | (...) | 1.2100392444788552E21 | | test.c:604:16:604:17 | 14 | 1.0 | | test.c:604:16:604:17 | (unsigned int)... | 1.0 | -| test.c:604:16:604:28 | ... * ... | 5.797603059E9 | +| test.c:604:16:604:28 | ... * ... | 3.4785618357E10 | | test.c:604:16:604:38 | ... > ... | 1.0 | -| test.c:604:16:604:64 | ... ? ... : ... | 3.361220122972616E19 | -| test.c:604:21:604:28 | (...) | 5.797603059E9 | +| test.c:604:16:604:64 | ... ? ... : ... | 1.2100392444788552E21 | +| test.c:604:21:604:28 | (...) | 3.4785618357E10 | | test.c:604:22:604:22 | 2 | 1.0 | | test.c:604:22:604:22 | (unsigned int)... | 1.0 | -| test.c:604:22:604:27 | ... * ... | 5.797603059E9 | -| test.c:604:26:604:27 | ip | 5.797603059E9 | +| test.c:604:22:604:27 | ... * ... | 3.4785618357E10 | +| test.c:604:26:604:27 | ip | 3.4785618357E10 | | test.c:604:32:604:33 | 17 | 1.0 | | test.c:604:32:604:33 | (unsigned int)... | 1.0 | -| test.c:604:32:604:38 | ... * ... | 5.797603059E9 | -| test.c:604:37:604:38 | ip | 5.797603059E9 | +| test.c:604:32:604:38 | ... * ... | 3.4785618357E10 | +| test.c:604:37:604:38 | ip | 3.4785618357E10 | | test.c:604:42:604:43 | 17 | 1.0 | | test.c:604:42:604:43 | (unsigned int)... | 1.0 | -| test.c:604:42:604:54 | ... * ... | 5.797603059E9 | -| test.c:604:47:604:54 | (...) | 5.797603059E9 | +| test.c:604:42:604:54 | ... * ... | 3.4785618357E10 | +| test.c:604:47:604:54 | (...) | 3.4785618357E10 | | test.c:604:48:604:48 | 2 | 1.0 | | test.c:604:48:604:48 | (unsigned int)... | 1.0 | -| test.c:604:48:604:53 | ... * ... | 5.797603059E9 | -| test.c:604:52:604:53 | ip | 5.797603059E9 | +| test.c:604:48:604:53 | ... * ... | 3.4785618357E10 | +| test.c:604:52:604:53 | ip | 3.4785618357E10 | | test.c:604:58:604:59 | 17 | 1.0 | | test.c:604:58:604:59 | (unsigned int)... | 1.0 | -| test.c:604:58:604:64 | ... * ... | 5.797603059E9 | -| test.c:604:63:604:64 | ip | 5.797603059E9 | -| test.c:605:19:605:30 | (...) | 1.1595206119E10 | -| test.c:605:19:605:35 | ... * ... | 1.1595206119E10 | +| test.c:604:58:604:64 | ... * ... | 3.4785618357E10 | +| test.c:604:63:604:64 | ip | 3.4785618357E10 | +| test.c:605:19:605:30 | (...) | 6.9571236715E10 | +| test.c:605:19:605:35 | ... * ... | 6.9571236715E10 | | test.c:605:20:605:20 | 2 | 1.0 | | test.c:605:20:605:20 | (unsigned int)... | 1.0 | -| test.c:605:20:605:25 | ... * ... | 1.1595206119E10 | -| test.c:605:20:605:29 | ... + ... | 1.1595206119E10 | -| test.c:605:24:605:25 | ip | 1.1595206119E10 | +| test.c:605:20:605:25 | ... * ... | 6.9571236715E10 | +| test.c:605:20:605:29 | ... + ... | 6.9571236715E10 | +| test.c:605:24:605:25 | ip | 6.9571236715E10 | | test.c:605:29:605:29 | 1 | 1.0 | | test.c:605:29:605:29 | (unsigned int)... | 1.0 | | test.c:605:34:605:35 | 14 | 1.0 | | test.c:605:34:605:35 | (unsigned int)... | 1.0 | | test.c:606:19:606:20 | 14 | 1.0 | | test.c:606:19:606:20 | (unsigned int)... | 1.0 | -| test.c:606:19:606:31 | ... * ... | 1.1595206119E10 | +| test.c:606:19:606:31 | ... * ... | 6.9571236715E10 | | test.c:606:19:606:41 | ... > ... | 1.0 | -| test.c:606:19:608:27 | ... ? ... : ... | 1.3444880494209504E20 | -| test.c:606:24:606:31 | (...) | 1.1595206119E10 | +| test.c:606:19:608:27 | ... ? ... : ... | 4.840156978054564E21 | +| test.c:606:24:606:31 | (...) | 6.9571236715E10 | | test.c:606:25:606:25 | 2 | 1.0 | | test.c:606:25:606:25 | (unsigned int)... | 1.0 | -| test.c:606:25:606:30 | ... * ... | 1.1595206119E10 | -| test.c:606:29:606:30 | ip | 1.1595206119E10 | +| test.c:606:25:606:30 | ... * ... | 6.9571236715E10 | +| test.c:606:29:606:30 | ip | 6.9571236715E10 | | test.c:606:35:606:36 | 17 | 1.0 | | test.c:606:35:606:36 | (unsigned int)... | 1.0 | -| test.c:606:35:606:41 | ... * ... | 1.1595206119E10 | -| test.c:606:40:606:41 | ip | 1.1595206119E10 | +| test.c:606:35:606:41 | ... * ... | 6.9571236715E10 | +| test.c:606:40:606:41 | ip | 6.9571236715E10 | | test.c:607:21:607:22 | 14 | 1.0 | | test.c:607:21:607:22 | (unsigned int)... | 1.0 | -| test.c:607:21:607:33 | ... * ... | 1.1595206119E10 | -| test.c:607:26:607:33 | (...) | 1.1595206119E10 | +| test.c:607:21:607:33 | ... * ... | 6.9571236715E10 | +| test.c:607:26:607:33 | (...) | 6.9571236715E10 | | test.c:607:27:607:27 | 2 | 1.0 | | test.c:607:27:607:27 | (unsigned int)... | 1.0 | -| test.c:607:27:607:32 | ... * ... | 1.1595206119E10 | -| test.c:607:31:607:32 | ip | 1.1595206119E10 | +| test.c:607:27:607:32 | ... * ... | 6.9571236715E10 | +| test.c:607:31:607:32 | ip | 6.9571236715E10 | | test.c:608:21:608:22 | 14 | 1.0 | | test.c:608:21:608:22 | (unsigned int)... | 1.0 | -| test.c:608:21:608:27 | ... * ... | 1.1595206119E10 | -| test.c:608:26:608:27 | ip | 1.1595206119E10 | -| test.c:609:13:609:63 | (...) | 1.2100392444788552E21 | -| test.c:609:14:609:15 | 14 | 1.0 | -| test.c:609:14:609:15 | (unsigned int)... | 1.0 | -| test.c:609:14:609:20 | ... * ... | 3.4785618357E10 | -| test.c:609:14:609:36 | ... > ... | 1.0 | -| test.c:609:14:609:62 | ... ? ... : ... | 1.2100392444788552E21 | +| test.c:608:21:608:27 | ... * ... | 6.9571236715E10 | +| test.c:608:26:608:27 | ip | 6.9571236715E10 | +| test.c:609:15:609:15 | 2 | 1.0 | +| test.c:609:15:609:15 | (unsigned int)... | 1.0 | +| test.c:609:15:609:20 | ... * ... | 3.4785618357E10 | +| test.c:609:15:609:25 | ... * ... | 3.4785618357E10 | +| test.c:609:15:609:45 | ... + ... | 1.2100392444788552E21 | | test.c:609:19:609:20 | ip | 3.4785618357E10 | -| test.c:609:24:609:31 | (...) | 3.4785618357E10 | -| test.c:609:24:609:36 | ... * ... | 3.4785618357E10 | -| test.c:609:25:609:26 | ip | 3.4785618357E10 | -| test.c:609:25:609:30 | ... + ... | 3.4785618357E10 | -| test.c:609:30:609:30 | 1 | 1.0 | +| test.c:609:24:609:25 | 14 | 1.0 | +| test.c:609:24:609:25 | (unsigned int)... | 1.0 | +| test.c:609:29:609:40 | (...) | 3.4785618357E10 | +| test.c:609:29:609:45 | ... * ... | 3.4785618357E10 | +| test.c:609:30:609:30 | 2 | 1.0 | | test.c:609:30:609:30 | (unsigned int)... | 1.0 | -| test.c:609:35:609:36 | 17 | 1.0 | -| test.c:609:35:609:36 | (unsigned int)... | 1.0 | -| test.c:609:40:609:41 | 17 | 1.0 | -| test.c:609:40:609:41 | (unsigned int)... | 1.0 | -| test.c:609:40:609:46 | ... * ... | 3.4785618357E10 | -| test.c:609:45:609:46 | ip | 3.4785618357E10 | -| test.c:609:50:609:57 | (...) | 3.4785618357E10 | -| test.c:609:50:609:62 | ... * ... | 3.4785618357E10 | -| test.c:609:51:609:52 | ip | 3.4785618357E10 | -| test.c:609:51:609:56 | ... + ... | 3.4785618357E10 | -| test.c:609:56:609:56 | 1 | 1.0 | -| test.c:609:56:609:56 | (unsigned int)... | 1.0 | -| test.c:609:61:609:62 | 17 | 1.0 | -| test.c:609:61:609:62 | (unsigned int)... | 1.0 | -| test.c:610:13:610:13 | 4 | 1.0 | -| test.c:610:13:610:13 | (unsigned int)... | 1.0 | -| test.c:610:13:610:30 | ... * ... | 6.9571236714E10 | -| test.c:610:13:611:30 | ... + ... | 4.840156977915421E21 | -| test.c:610:13:612:30 | ... + ... | 3.3673570684347266E32 | -| test.c:610:13:618:26 | ... + ... | 9.071274901265435E65 | -| test.c:610:17:610:30 | (...) | 6.9571236714E10 | -| test.c:610:18:610:19 | ip | 6.9571236714E10 | -| test.c:610:18:610:24 | ... * ... | 6.9571236714E10 | -| test.c:610:18:610:29 | ... + ... | 6.9571236714E10 | -| test.c:610:23:610:24 | 14 | 1.0 | -| test.c:610:23:610:24 | (unsigned int)... | 1.0 | -| test.c:610:28:610:29 | 32 | 1.0 | -| test.c:610:28:610:29 | (unsigned int)... | 1.0 | -| test.c:611:13:611:30 | (...) | 6.9571236714E10 | -| test.c:611:14:611:14 | 2 | 1.0 | -| test.c:611:14:611:14 | (unsigned int)... | 1.0 | -| test.c:611:14:611:19 | ... * ... | 6.9571236714E10 | -| test.c:611:14:611:24 | ... * ... | 6.9571236714E10 | -| test.c:611:14:611:29 | ... + ... | 6.9571236714E10 | -| test.c:611:18:611:19 | ip | 6.9571236714E10 | -| test.c:611:23:611:24 | 14 | 1.0 | -| test.c:611:23:611:24 | (unsigned int)... | 1.0 | -| test.c:611:28:611:29 | 32 | 1.0 | -| test.c:611:28:611:29 | (unsigned int)... | 1.0 | -| test.c:612:13:612:13 | 2 | 1.0 | -| test.c:612:13:612:13 | (unsigned int)... | 1.0 | -| test.c:612:13:612:30 | ... * ... | 6.9571236714E10 | -| test.c:612:17:612:30 | (...) | 6.9571236714E10 | -| test.c:612:18:612:19 | ip | 6.9571236714E10 | -| test.c:612:18:612:24 | ... * ... | 6.9571236714E10 | -| test.c:612:18:612:29 | ... + ... | 6.9571236714E10 | -| test.c:612:23:612:24 | 14 | 1.0 | -| test.c:612:23:612:24 | (unsigned int)... | 1.0 | -| test.c:612:28:612:29 | 64 | 1.0 | -| test.c:612:28:612:29 | (unsigned int)... | 1.0 | -| test.c:613:13:618:26 | (...) | 2.693885654805863E33 | -| test.c:613:14:613:25 | (...) | 6.9571236714E10 | -| test.c:613:14:613:30 | ... * ... | 6.9571236714E10 | -| test.c:613:14:614:63 | ... > ... | 1.0 | -| test.c:613:14:618:25 | ... ? ... : ... | 2.693885654805863E33 | -| test.c:613:15:613:15 | 2 | 1.0 | -| test.c:613:15:613:15 | (unsigned int)... | 1.0 | -| test.c:613:15:613:20 | ... * ... | 6.9571236714E10 | -| test.c:613:15:613:24 | ... + ... | 6.9571236714E10 | -| test.c:613:19:613:20 | ip | 6.9571236714E10 | -| test.c:613:24:613:24 | 1 | 1.0 | -| test.c:613:24:613:24 | (unsigned int)... | 1.0 | -| test.c:613:29:613:30 | 14 | 1.0 | -| test.c:613:29:613:30 | (unsigned int)... | 1.0 | -| test.c:614:13:614:63 | (...) | 4.840156977915421E21 | -| test.c:614:14:614:15 | 14 | 1.0 | -| test.c:614:14:614:15 | (unsigned int)... | 1.0 | -| test.c:614:14:614:26 | ... * ... | 6.9571236714E10 | -| test.c:614:14:614:36 | ... > ... | 1.0 | -| test.c:614:14:614:62 | ... ? ... : ... | 4.840156977915421E21 | -| test.c:614:19:614:26 | (...) | 6.9571236714E10 | -| test.c:614:20:614:20 | 2 | 1.0 | -| test.c:614:20:614:20 | (unsigned int)... | 1.0 | -| test.c:614:20:614:25 | ... * ... | 6.9571236714E10 | -| test.c:614:24:614:25 | ip | 6.9571236714E10 | -| test.c:614:30:614:31 | 17 | 1.0 | -| test.c:614:30:614:31 | (unsigned int)... | 1.0 | -| test.c:614:30:614:36 | ... * ... | 6.9571236714E10 | -| test.c:614:35:614:36 | ip | 6.9571236714E10 | -| test.c:614:40:614:41 | 17 | 1.0 | -| test.c:614:40:614:41 | (unsigned int)... | 1.0 | -| test.c:614:40:614:52 | ... * ... | 6.9571236714E10 | -| test.c:614:45:614:52 | (...) | 6.9571236714E10 | -| test.c:614:46:614:46 | 2 | 1.0 | -| test.c:614:46:614:46 | (unsigned int)... | 1.0 | -| test.c:614:46:614:51 | ... * ... | 6.9571236714E10 | -| test.c:614:50:614:51 | ip | 6.9571236714E10 | -| test.c:614:56:614:57 | 17 | 1.0 | -| test.c:614:56:614:57 | (unsigned int)... | 1.0 | -| test.c:614:56:614:62 | ... * ... | 6.9571236714E10 | -| test.c:614:61:614:62 | ip | 6.9571236714E10 | -| test.c:615:17:615:28 | (...) | 1.39142473429E11 | -| test.c:615:17:615:33 | ... * ... | 1.39142473429E11 | -| test.c:615:18:615:18 | 2 | 1.0 | -| test.c:615:18:615:18 | (unsigned int)... | 1.0 | -| test.c:615:18:615:23 | ... * ... | 1.39142473429E11 | -| test.c:615:18:615:27 | ... + ... | 1.39142473429E11 | -| test.c:615:22:615:23 | ip | 1.39142473429E11 | -| test.c:615:27:615:27 | 1 | 1.0 | -| test.c:615:27:615:27 | (unsigned int)... | 1.0 | -| test.c:615:32:615:33 | 14 | 1.0 | -| test.c:615:32:615:33 | (unsigned int)... | 1.0 | -| test.c:616:17:616:18 | 14 | 1.0 | -| test.c:616:17:616:18 | (unsigned int)... | 1.0 | -| test.c:616:17:616:29 | ... * ... | 1.39142473429E11 | -| test.c:616:17:616:39 | ... > ... | 1.0 | -| test.c:616:17:618:25 | ... ? ... : ... | 1.936062791193997E22 | -| test.c:616:22:616:29 | (...) | 1.39142473429E11 | -| test.c:616:23:616:23 | 2 | 1.0 | -| test.c:616:23:616:23 | (unsigned int)... | 1.0 | -| test.c:616:23:616:28 | ... * ... | 1.39142473429E11 | -| test.c:616:27:616:28 | ip | 1.39142473429E11 | -| test.c:616:33:616:34 | 17 | 1.0 | -| test.c:616:33:616:34 | (unsigned int)... | 1.0 | -| test.c:616:33:616:39 | ... * ... | 1.39142473429E11 | -| test.c:616:38:616:39 | ip | 1.39142473429E11 | -| test.c:617:19:617:20 | 14 | 1.0 | -| test.c:617:19:617:20 | (unsigned int)... | 1.0 | -| test.c:617:19:617:31 | ... * ... | 1.39142473429E11 | -| test.c:617:24:617:31 | (...) | 1.39142473429E11 | -| test.c:617:25:617:25 | 2 | 1.0 | -| test.c:617:25:617:25 | (unsigned int)... | 1.0 | -| test.c:617:25:617:30 | ... * ... | 1.39142473429E11 | -| test.c:617:29:617:30 | ip | 1.39142473429E11 | -| test.c:618:19:618:20 | 14 | 1.0 | -| test.c:618:19:618:20 | (unsigned int)... | 1.0 | -| test.c:618:19:618:25 | ... * ... | 1.39142473429E11 | -| test.c:618:24:618:25 | ip | 1.39142473429E11 | -| test.c:619:13:619:14 | 14 | 1.0 | -| test.c:619:13:619:14 | (unsigned int)... | 1.0 | -| test.c:619:13:619:19 | ... * ... | 6.9571236714E10 | -| test.c:619:13:619:35 | ... > ... | 1.0 | -| test.c:619:13:621:27 | ... ? ... : ... | 4.840156977915421E21 | -| test.c:619:18:619:19 | ip | 6.9571236714E10 | -| test.c:619:23:619:30 | (...) | 6.9571236714E10 | -| test.c:619:23:619:35 | ... * ... | 6.9571236714E10 | -| test.c:619:24:619:25 | ip | 6.9571236714E10 | -| test.c:619:24:619:29 | ... + ... | 6.9571236714E10 | -| test.c:619:29:619:29 | 1 | 1.0 | -| test.c:619:29:619:29 | (unsigned int)... | 1.0 | -| test.c:619:34:619:35 | 17 | 1.0 | -| test.c:619:34:619:35 | (unsigned int)... | 1.0 | -| test.c:620:15:620:16 | 14 | 1.0 | -| test.c:620:15:620:16 | (unsigned int)... | 1.0 | -| test.c:620:15:620:21 | ... * ... | 6.9571236714E10 | -| test.c:620:20:620:21 | ip | 6.9571236714E10 | -| test.c:621:15:621:22 | (...) | 6.9571236714E10 | -| test.c:621:15:621:27 | ... * ... | 6.9571236714E10 | -| test.c:621:16:621:17 | ip | 6.9571236714E10 | -| test.c:621:16:621:21 | ... + ... | 6.9571236714E10 | -| test.c:621:21:621:21 | 1 | 1.0 | -| test.c:621:21:621:21 | (unsigned int)... | 1.0 | -| test.c:621:26:621:27 | 14 | 1.0 | -| test.c:621:26:621:27 | (unsigned int)... | 1.0 | -| test.c:622:10:622:23 | special_number | 1.297918419127476E201 | -| test.c:629:10:629:11 | 0 | 1.0 | -| test.c:630:7:630:8 | c1 | 1.0 | -| test.c:630:13:630:13 | x | 1.0 | -| test.c:630:13:630:23 | ... += ... | 1.0 | -| test.c:630:18:630:23 | 748596 | 1.0 | -| test.c:631:7:631:8 | c2 | 1.0 | -| test.c:631:13:631:13 | x | 2.0 | -| test.c:631:13:631:25 | ... += ... | 2.0 | -| test.c:631:18:631:25 | 84652395 | 1.0 | -| test.c:632:7:632:8 | c3 | 1.0 | -| test.c:632:13:632:13 | x | 4.0 | -| test.c:632:13:632:24 | ... += ... | 4.0 | -| test.c:632:18:632:24 | 3675895 | 1.0 | -| test.c:633:7:633:8 | c4 | 1.0 | -| test.c:633:13:633:13 | x | 8.0 | -| test.c:633:13:633:22 | ... += ... | 8.0 | -| test.c:633:18:633:22 | 98634 | 1.0 | -| test.c:634:7:634:8 | c5 | 1.0 | -| test.c:634:13:634:13 | x | 16.0 | -| test.c:634:13:634:24 | ... += ... | 16.0 | -| test.c:634:18:634:24 | 7834985 | 1.0 | -| test.c:635:7:635:8 | c1 | 2.0 | -| test.c:635:7:635:14 | ... && ... | 1.0 | -| test.c:635:13:635:14 | c2 | 2.0 | -| test.c:635:19:635:19 | x | 32.0 | -| test.c:635:19:635:32 | ... += ... | 32.0 | -| test.c:635:24:635:32 | 938457398 | 1.0 | -| test.c:636:7:636:8 | c1 | 3.0 | -| test.c:636:7:636:14 | ... && ... | 1.0 | -| test.c:636:13:636:14 | c3 | 2.0 | -| test.c:636:19:636:19 | x | 64.0 | -| test.c:636:19:636:31 | ... += ... | 64.0 | -| test.c:636:24:636:31 | 73895648 | 1.0 | -| test.c:637:7:637:8 | c1 | 4.0 | -| test.c:637:7:637:14 | ... && ... | 1.0 | -| test.c:637:13:637:14 | c4 | 2.0 | -| test.c:637:19:637:19 | x | 128.0 | -| test.c:637:19:637:31 | ... += ... | 128.0 | -| test.c:637:24:637:31 | 12345432 | 1.0 | -| test.c:638:7:638:8 | c1 | 5.0 | -| test.c:638:7:638:14 | ... && ... | 1.0 | -| test.c:638:13:638:14 | c5 | 2.0 | -| test.c:638:19:638:19 | x | 256.0 | -| test.c:638:19:638:28 | ... += ... | 256.0 | -| test.c:638:24:638:28 | 38847 | 1.0 | -| test.c:639:7:639:8 | c2 | 5.0 | -| test.c:639:7:639:14 | ... && ... | 1.0 | -| test.c:639:13:639:14 | c3 | 5.0 | -| test.c:639:19:639:19 | x | 512.0 | -| test.c:639:19:639:26 | ... += ... | 512.0 | -| test.c:639:24:639:26 | 234 | 1.0 | -| test.c:641:11:641:11 | x | 1024.0 | -| test.c:641:11:641:15 | ... + ... | 1048576.0 | -| test.c:641:11:641:19 | ... + ... | 1.073741824E9 | -| test.c:641:11:641:23 | ... + ... | 1.099511627776E12 | -| test.c:641:11:641:27 | ... + ... | 1.125899906842624E15 | -| test.c:641:11:641:31 | ... + ... | 1.152921504606847E18 | -| test.c:641:11:641:35 | ... + ... | 1.1805916207174113E21 | -| test.c:641:11:641:39 | ... + ... | 1.2089258196146292E24 | -| test.c:641:11:641:43 | ... + ... | 1.2379400392853803E27 | -| test.c:641:11:641:47 | ... + ... | 1.2676506002282294E30 | -| test.c:641:11:641:51 | ... + ... | 1.298074214633707E33 | -| test.c:641:11:641:55 | ... + ... | 1.329227995784916E36 | -| test.c:641:15:641:15 | x | 1024.0 | -| test.c:641:19:641:19 | x | 1024.0 | -| test.c:641:23:641:23 | x | 1024.0 | -| test.c:641:27:641:27 | x | 1024.0 | -| test.c:641:31:641:31 | x | 1024.0 | -| test.c:641:35:641:35 | x | 1024.0 | -| test.c:641:39:641:39 | x | 1024.0 | -| test.c:641:43:641:43 | x | 1024.0 | -| test.c:641:47:641:47 | x | 1024.0 | -| test.c:641:51:641:51 | x | 1024.0 | -| test.c:641:55:641:55 | x | 1024.0 | -| test.c:642:10:642:10 | y | 1.329227995784916E36 | -| test.c:647:20:647:20 | x | 1.0 | -| test.c:647:20:647:26 | ... < ... | 1.0 | -| test.c:647:20:647:36 | ... ? ... : ... | 1.0 | -| test.c:647:24:647:26 | 100 | 1.0 | -| test.c:647:24:647:26 | (unsigned int)... | 1.0 | -| test.c:647:30:647:30 | x | 1.0 | -| test.c:647:34:647:36 | 100 | 1.0 | -| test.c:647:34:647:36 | (unsigned int)... | 1.0 | -| test.c:650:3:650:4 | y1 | 1.0 | -| test.c:650:9:650:11 | ++ ... | 1.0 | -| test.c:650:11:650:11 | y | 1.0 | -| test.c:651:3:651:4 | y2 | 1.0 | -| test.c:651:19:651:19 | 3 | 1.0 | -| test.c:651:19:651:19 | (unsigned int)... | 1.0 | -| test.c:660:3:660:3 | i | 1.0 | -| test.c:660:3:660:8 | ... = ... | 1.0 | -| test.c:660:7:660:8 | 10 | 1.0 | -| test.c:661:7:661:7 | i | 1.0 | -| test.c:663:3:663:3 | i | 1.0 | -| test.c:663:3:663:8 | ... = ... | 1.0 | -| test.c:663:7:663:8 | 10 | 1.0 | -| test.c:664:3:664:3 | i | 1.0 | -| test.c:664:3:664:9 | ... += ... | 1.0 | -| test.c:664:8:664:9 | 10 | 1.0 | -| test.c:665:7:665:7 | i | 1.0 | -| test.c:667:3:667:3 | i | 1.0 | -| test.c:667:3:667:8 | ... = ... | 1.0 | -| test.c:667:7:667:8 | 40 | 1.0 | -| test.c:668:3:668:3 | i | 1.0 | -| test.c:668:3:668:9 | ... -= ... | 1.0 | -| test.c:668:8:668:9 | 10 | 1.0 | -| test.c:669:7:669:7 | i | 1.0 | -| test.c:671:3:671:3 | i | 1.0 | -| test.c:671:3:671:12 | ... = ... | 1.0 | -| test.c:671:7:671:7 | j | 1.0 | -| test.c:671:7:671:12 | ... = ... | 1.0 | -| test.c:671:11:671:12 | 40 | 1.0 | -| test.c:672:7:672:7 | i | 1.0 | +| test.c:609:30:609:35 | ... * ... | 3.4785618357E10 | +| test.c:609:30:609:39 | ... + ... | 3.4785618357E10 | +| test.c:609:34:609:35 | ip | 3.4785618357E10 | +| test.c:609:39:609:39 | 1 | 1.0 | +| test.c:609:39:609:39 | (unsigned int)... | 1.0 | +| test.c:609:44:609:45 | 17 | 1.0 | +| test.c:609:44:609:45 | (unsigned int)... | 1.0 | +| test.c:610:11:610:11 | 4 | 1.0 | +| test.c:610:11:610:11 | (unsigned int)... | 1.0 | +| test.c:610:11:610:28 | ... * ... | 5.797603059E9 | +| test.c:610:11:611:32 | ... + ... | 3.361220122972616E19 | +| test.c:610:11:612:32 | ... + ... | 1.9487020066918396E29 | +| test.c:610:11:618:28 | ... + ... | 3.0379516094938436E59 | +| test.c:610:11:619:63 | ... > ... | 1.0 | +| test.c:610:11:631:27 | ... ? ... : ... | 4.390639451194891E87 | +| test.c:610:15:610:28 | (...) | 5.797603059E9 | +| test.c:610:16:610:17 | ip | 5.797603059E9 | +| test.c:610:16:610:22 | ... * ... | 5.797603059E9 | +| test.c:610:16:610:27 | ... + ... | 5.797603059E9 | +| test.c:610:21:610:22 | 14 | 1.0 | +| test.c:610:21:610:22 | (unsigned int)... | 1.0 | +| test.c:610:26:610:27 | 32 | 1.0 | +| test.c:610:26:610:27 | (unsigned int)... | 1.0 | +| test.c:611:15:611:32 | (...) | 5.797603059E9 | +| test.c:611:16:611:16 | 2 | 1.0 | +| test.c:611:16:611:16 | (unsigned int)... | 1.0 | +| test.c:611:16:611:21 | ... * ... | 5.797603059E9 | +| test.c:611:16:611:26 | ... * ... | 5.797603059E9 | +| test.c:611:16:611:31 | ... + ... | 5.797603059E9 | +| test.c:611:20:611:21 | ip | 5.797603059E9 | +| test.c:611:25:611:26 | 14 | 1.0 | +| test.c:611:25:611:26 | (unsigned int)... | 1.0 | +| test.c:611:30:611:31 | 32 | 1.0 | +| test.c:611:30:611:31 | (unsigned int)... | 1.0 | +| test.c:612:15:612:15 | 2 | 1.0 | +| test.c:612:15:612:15 | (unsigned int)... | 1.0 | +| test.c:612:15:612:32 | ... * ... | 5.797603059E9 | +| test.c:612:19:612:32 | (...) | 5.797603059E9 | +| test.c:612:20:612:21 | ip | 5.797603059E9 | +| test.c:612:20:612:26 | ... * ... | 5.797603059E9 | +| test.c:612:20:612:31 | ... + ... | 5.797603059E9 | +| test.c:612:25:612:26 | 14 | 1.0 | +| test.c:612:25:612:26 | (unsigned int)... | 1.0 | +| test.c:612:30:612:31 | 64 | 1.0 | +| test.c:612:30:612:31 | (unsigned int)... | 1.0 | +| test.c:613:15:618:28 | (...) | 1.558961605756818E30 | +| test.c:613:16:613:27 | (...) | 5.797603059E9 | +| test.c:613:16:613:32 | ... * ... | 5.797603059E9 | +| test.c:613:16:614:65 | ... > ... | 1.0 | +| test.c:613:16:618:27 | ... ? ... : ... | 1.558961605756818E30 | +| test.c:613:17:613:17 | 2 | 1.0 | +| test.c:613:17:613:17 | (unsigned int)... | 1.0 | +| test.c:613:17:613:22 | ... * ... | 5.797603059E9 | +| test.c:613:17:613:26 | ... + ... | 5.797603059E9 | +| test.c:613:21:613:22 | ip | 5.797603059E9 | +| test.c:613:26:613:26 | 1 | 1.0 | +| test.c:613:26:613:26 | (unsigned int)... | 1.0 | +| test.c:613:31:613:32 | 14 | 1.0 | +| test.c:613:31:613:32 | (unsigned int)... | 1.0 | +| test.c:614:15:614:65 | (...) | 3.361220122972616E19 | +| test.c:614:16:614:17 | 14 | 1.0 | +| test.c:614:16:614:17 | (unsigned int)... | 1.0 | +| test.c:614:16:614:28 | ... * ... | 5.797603059E9 | +| test.c:614:16:614:38 | ... > ... | 1.0 | +| test.c:614:16:614:64 | ... ? ... : ... | 3.361220122972616E19 | +| test.c:614:21:614:28 | (...) | 5.797603059E9 | +| test.c:614:22:614:22 | 2 | 1.0 | +| test.c:614:22:614:22 | (unsigned int)... | 1.0 | +| test.c:614:22:614:27 | ... * ... | 5.797603059E9 | +| test.c:614:26:614:27 | ip | 5.797603059E9 | +| test.c:614:32:614:33 | 17 | 1.0 | +| test.c:614:32:614:33 | (unsigned int)... | 1.0 | +| test.c:614:32:614:38 | ... * ... | 5.797603059E9 | +| test.c:614:37:614:38 | ip | 5.797603059E9 | +| test.c:614:42:614:43 | 17 | 1.0 | +| test.c:614:42:614:43 | (unsigned int)... | 1.0 | +| test.c:614:42:614:54 | ... * ... | 5.797603059E9 | +| test.c:614:47:614:54 | (...) | 5.797603059E9 | +| test.c:614:48:614:48 | 2 | 1.0 | +| test.c:614:48:614:48 | (unsigned int)... | 1.0 | +| test.c:614:48:614:53 | ... * ... | 5.797603059E9 | +| test.c:614:52:614:53 | ip | 5.797603059E9 | +| test.c:614:58:614:59 | 17 | 1.0 | +| test.c:614:58:614:59 | (unsigned int)... | 1.0 | +| test.c:614:58:614:64 | ... * ... | 5.797603059E9 | +| test.c:614:63:614:64 | ip | 5.797603059E9 | +| test.c:615:19:615:30 | (...) | 1.1595206119E10 | +| test.c:615:19:615:35 | ... * ... | 1.1595206119E10 | +| test.c:615:20:615:20 | 2 | 1.0 | +| test.c:615:20:615:20 | (unsigned int)... | 1.0 | +| test.c:615:20:615:25 | ... * ... | 1.1595206119E10 | +| test.c:615:20:615:29 | ... + ... | 1.1595206119E10 | +| test.c:615:24:615:25 | ip | 1.1595206119E10 | +| test.c:615:29:615:29 | 1 | 1.0 | +| test.c:615:29:615:29 | (unsigned int)... | 1.0 | +| test.c:615:34:615:35 | 14 | 1.0 | +| test.c:615:34:615:35 | (unsigned int)... | 1.0 | +| test.c:616:19:616:20 | 14 | 1.0 | +| test.c:616:19:616:20 | (unsigned int)... | 1.0 | +| test.c:616:19:616:31 | ... * ... | 1.1595206119E10 | +| test.c:616:19:616:41 | ... > ... | 1.0 | +| test.c:616:19:618:27 | ... ? ... : ... | 1.3444880494209504E20 | +| test.c:616:24:616:31 | (...) | 1.1595206119E10 | +| test.c:616:25:616:25 | 2 | 1.0 | +| test.c:616:25:616:25 | (unsigned int)... | 1.0 | +| test.c:616:25:616:30 | ... * ... | 1.1595206119E10 | +| test.c:616:29:616:30 | ip | 1.1595206119E10 | +| test.c:616:35:616:36 | 17 | 1.0 | +| test.c:616:35:616:36 | (unsigned int)... | 1.0 | +| test.c:616:35:616:41 | ... * ... | 1.1595206119E10 | +| test.c:616:40:616:41 | ip | 1.1595206119E10 | +| test.c:617:21:617:22 | 14 | 1.0 | +| test.c:617:21:617:22 | (unsigned int)... | 1.0 | +| test.c:617:21:617:33 | ... * ... | 1.1595206119E10 | +| test.c:617:26:617:33 | (...) | 1.1595206119E10 | +| test.c:617:27:617:27 | 2 | 1.0 | +| test.c:617:27:617:27 | (unsigned int)... | 1.0 | +| test.c:617:27:617:32 | ... * ... | 1.1595206119E10 | +| test.c:617:31:617:32 | ip | 1.1595206119E10 | +| test.c:618:21:618:22 | 14 | 1.0 | +| test.c:618:21:618:22 | (unsigned int)... | 1.0 | +| test.c:618:21:618:27 | ... * ... | 1.1595206119E10 | +| test.c:618:26:618:27 | ip | 1.1595206119E10 | +| test.c:619:13:619:63 | (...) | 1.2100392444788552E21 | +| test.c:619:14:619:15 | 14 | 1.0 | +| test.c:619:14:619:15 | (unsigned int)... | 1.0 | +| test.c:619:14:619:20 | ... * ... | 3.4785618357E10 | +| test.c:619:14:619:36 | ... > ... | 1.0 | +| test.c:619:14:619:62 | ... ? ... : ... | 1.2100392444788552E21 | +| test.c:619:19:619:20 | ip | 3.4785618357E10 | +| test.c:619:24:619:31 | (...) | 3.4785618357E10 | +| test.c:619:24:619:36 | ... * ... | 3.4785618357E10 | +| test.c:619:25:619:26 | ip | 3.4785618357E10 | +| test.c:619:25:619:30 | ... + ... | 3.4785618357E10 | +| test.c:619:30:619:30 | 1 | 1.0 | +| test.c:619:30:619:30 | (unsigned int)... | 1.0 | +| test.c:619:35:619:36 | 17 | 1.0 | +| test.c:619:35:619:36 | (unsigned int)... | 1.0 | +| test.c:619:40:619:41 | 17 | 1.0 | +| test.c:619:40:619:41 | (unsigned int)... | 1.0 | +| test.c:619:40:619:46 | ... * ... | 3.4785618357E10 | +| test.c:619:45:619:46 | ip | 3.4785618357E10 | +| test.c:619:50:619:57 | (...) | 3.4785618357E10 | +| test.c:619:50:619:62 | ... * ... | 3.4785618357E10 | +| test.c:619:51:619:52 | ip | 3.4785618357E10 | +| test.c:619:51:619:56 | ... + ... | 3.4785618357E10 | +| test.c:619:56:619:56 | 1 | 1.0 | +| test.c:619:56:619:56 | (unsigned int)... | 1.0 | +| test.c:619:61:619:62 | 17 | 1.0 | +| test.c:619:61:619:62 | (unsigned int)... | 1.0 | +| test.c:620:13:620:13 | 4 | 1.0 | +| test.c:620:13:620:13 | (unsigned int)... | 1.0 | +| test.c:620:13:620:30 | ... * ... | 6.9571236714E10 | +| test.c:620:13:621:30 | ... + ... | 4.840156977915421E21 | +| test.c:620:13:622:30 | ... + ... | 3.3673570684347266E32 | +| test.c:620:13:628:26 | ... + ... | 9.071274901265435E65 | +| test.c:620:17:620:30 | (...) | 6.9571236714E10 | +| test.c:620:18:620:19 | ip | 6.9571236714E10 | +| test.c:620:18:620:24 | ... * ... | 6.9571236714E10 | +| test.c:620:18:620:29 | ... + ... | 6.9571236714E10 | +| test.c:620:23:620:24 | 14 | 1.0 | +| test.c:620:23:620:24 | (unsigned int)... | 1.0 | +| test.c:620:28:620:29 | 32 | 1.0 | +| test.c:620:28:620:29 | (unsigned int)... | 1.0 | +| test.c:621:13:621:30 | (...) | 6.9571236714E10 | +| test.c:621:14:621:14 | 2 | 1.0 | +| test.c:621:14:621:14 | (unsigned int)... | 1.0 | +| test.c:621:14:621:19 | ... * ... | 6.9571236714E10 | +| test.c:621:14:621:24 | ... * ... | 6.9571236714E10 | +| test.c:621:14:621:29 | ... + ... | 6.9571236714E10 | +| test.c:621:18:621:19 | ip | 6.9571236714E10 | +| test.c:621:23:621:24 | 14 | 1.0 | +| test.c:621:23:621:24 | (unsigned int)... | 1.0 | +| test.c:621:28:621:29 | 32 | 1.0 | +| test.c:621:28:621:29 | (unsigned int)... | 1.0 | +| test.c:622:13:622:13 | 2 | 1.0 | +| test.c:622:13:622:13 | (unsigned int)... | 1.0 | +| test.c:622:13:622:30 | ... * ... | 6.9571236714E10 | +| test.c:622:17:622:30 | (...) | 6.9571236714E10 | +| test.c:622:18:622:19 | ip | 6.9571236714E10 | +| test.c:622:18:622:24 | ... * ... | 6.9571236714E10 | +| test.c:622:18:622:29 | ... + ... | 6.9571236714E10 | +| test.c:622:23:622:24 | 14 | 1.0 | +| test.c:622:23:622:24 | (unsigned int)... | 1.0 | +| test.c:622:28:622:29 | 64 | 1.0 | +| test.c:622:28:622:29 | (unsigned int)... | 1.0 | +| test.c:623:13:628:26 | (...) | 2.693885654805863E33 | +| test.c:623:14:623:25 | (...) | 6.9571236714E10 | +| test.c:623:14:623:30 | ... * ... | 6.9571236714E10 | +| test.c:623:14:624:63 | ... > ... | 1.0 | +| test.c:623:14:628:25 | ... ? ... : ... | 2.693885654805863E33 | +| test.c:623:15:623:15 | 2 | 1.0 | +| test.c:623:15:623:15 | (unsigned int)... | 1.0 | +| test.c:623:15:623:20 | ... * ... | 6.9571236714E10 | +| test.c:623:15:623:24 | ... + ... | 6.9571236714E10 | +| test.c:623:19:623:20 | ip | 6.9571236714E10 | +| test.c:623:24:623:24 | 1 | 1.0 | +| test.c:623:24:623:24 | (unsigned int)... | 1.0 | +| test.c:623:29:623:30 | 14 | 1.0 | +| test.c:623:29:623:30 | (unsigned int)... | 1.0 | +| test.c:624:13:624:63 | (...) | 4.840156977915421E21 | +| test.c:624:14:624:15 | 14 | 1.0 | +| test.c:624:14:624:15 | (unsigned int)... | 1.0 | +| test.c:624:14:624:26 | ... * ... | 6.9571236714E10 | +| test.c:624:14:624:36 | ... > ... | 1.0 | +| test.c:624:14:624:62 | ... ? ... : ... | 4.840156977915421E21 | +| test.c:624:19:624:26 | (...) | 6.9571236714E10 | +| test.c:624:20:624:20 | 2 | 1.0 | +| test.c:624:20:624:20 | (unsigned int)... | 1.0 | +| test.c:624:20:624:25 | ... * ... | 6.9571236714E10 | +| test.c:624:24:624:25 | ip | 6.9571236714E10 | +| test.c:624:30:624:31 | 17 | 1.0 | +| test.c:624:30:624:31 | (unsigned int)... | 1.0 | +| test.c:624:30:624:36 | ... * ... | 6.9571236714E10 | +| test.c:624:35:624:36 | ip | 6.9571236714E10 | +| test.c:624:40:624:41 | 17 | 1.0 | +| test.c:624:40:624:41 | (unsigned int)... | 1.0 | +| test.c:624:40:624:52 | ... * ... | 6.9571236714E10 | +| test.c:624:45:624:52 | (...) | 6.9571236714E10 | +| test.c:624:46:624:46 | 2 | 1.0 | +| test.c:624:46:624:46 | (unsigned int)... | 1.0 | +| test.c:624:46:624:51 | ... * ... | 6.9571236714E10 | +| test.c:624:50:624:51 | ip | 6.9571236714E10 | +| test.c:624:56:624:57 | 17 | 1.0 | +| test.c:624:56:624:57 | (unsigned int)... | 1.0 | +| test.c:624:56:624:62 | ... * ... | 6.9571236714E10 | +| test.c:624:61:624:62 | ip | 6.9571236714E10 | +| test.c:625:17:625:28 | (...) | 1.39142473429E11 | +| test.c:625:17:625:33 | ... * ... | 1.39142473429E11 | +| test.c:625:18:625:18 | 2 | 1.0 | +| test.c:625:18:625:18 | (unsigned int)... | 1.0 | +| test.c:625:18:625:23 | ... * ... | 1.39142473429E11 | +| test.c:625:18:625:27 | ... + ... | 1.39142473429E11 | +| test.c:625:22:625:23 | ip | 1.39142473429E11 | +| test.c:625:27:625:27 | 1 | 1.0 | +| test.c:625:27:625:27 | (unsigned int)... | 1.0 | +| test.c:625:32:625:33 | 14 | 1.0 | +| test.c:625:32:625:33 | (unsigned int)... | 1.0 | +| test.c:626:17:626:18 | 14 | 1.0 | +| test.c:626:17:626:18 | (unsigned int)... | 1.0 | +| test.c:626:17:626:29 | ... * ... | 1.39142473429E11 | +| test.c:626:17:626:39 | ... > ... | 1.0 | +| test.c:626:17:628:25 | ... ? ... : ... | 1.936062791193997E22 | +| test.c:626:22:626:29 | (...) | 1.39142473429E11 | +| test.c:626:23:626:23 | 2 | 1.0 | +| test.c:626:23:626:23 | (unsigned int)... | 1.0 | +| test.c:626:23:626:28 | ... * ... | 1.39142473429E11 | +| test.c:626:27:626:28 | ip | 1.39142473429E11 | +| test.c:626:33:626:34 | 17 | 1.0 | +| test.c:626:33:626:34 | (unsigned int)... | 1.0 | +| test.c:626:33:626:39 | ... * ... | 1.39142473429E11 | +| test.c:626:38:626:39 | ip | 1.39142473429E11 | +| test.c:627:19:627:20 | 14 | 1.0 | +| test.c:627:19:627:20 | (unsigned int)... | 1.0 | +| test.c:627:19:627:31 | ... * ... | 1.39142473429E11 | +| test.c:627:24:627:31 | (...) | 1.39142473429E11 | +| test.c:627:25:627:25 | 2 | 1.0 | +| test.c:627:25:627:25 | (unsigned int)... | 1.0 | +| test.c:627:25:627:30 | ... * ... | 1.39142473429E11 | +| test.c:627:29:627:30 | ip | 1.39142473429E11 | +| test.c:628:19:628:20 | 14 | 1.0 | +| test.c:628:19:628:20 | (unsigned int)... | 1.0 | +| test.c:628:19:628:25 | ... * ... | 1.39142473429E11 | +| test.c:628:24:628:25 | ip | 1.39142473429E11 | +| test.c:629:13:629:14 | 14 | 1.0 | +| test.c:629:13:629:14 | (unsigned int)... | 1.0 | +| test.c:629:13:629:19 | ... * ... | 6.9571236714E10 | +| test.c:629:13:629:35 | ... > ... | 1.0 | +| test.c:629:13:631:27 | ... ? ... : ... | 4.840156977915421E21 | +| test.c:629:18:629:19 | ip | 6.9571236714E10 | +| test.c:629:23:629:30 | (...) | 6.9571236714E10 | +| test.c:629:23:629:35 | ... * ... | 6.9571236714E10 | +| test.c:629:24:629:25 | ip | 6.9571236714E10 | +| test.c:629:24:629:29 | ... + ... | 6.9571236714E10 | +| test.c:629:29:629:29 | 1 | 1.0 | +| test.c:629:29:629:29 | (unsigned int)... | 1.0 | +| test.c:629:34:629:35 | 17 | 1.0 | +| test.c:629:34:629:35 | (unsigned int)... | 1.0 | +| test.c:630:15:630:16 | 14 | 1.0 | +| test.c:630:15:630:16 | (unsigned int)... | 1.0 | +| test.c:630:15:630:21 | ... * ... | 6.9571236714E10 | +| test.c:630:20:630:21 | ip | 6.9571236714E10 | +| test.c:631:15:631:22 | (...) | 6.9571236714E10 | +| test.c:631:15:631:27 | ... * ... | 6.9571236714E10 | +| test.c:631:16:631:17 | ip | 6.9571236714E10 | +| test.c:631:16:631:21 | ... + ... | 6.9571236714E10 | +| test.c:631:21:631:21 | 1 | 1.0 | +| test.c:631:21:631:21 | (unsigned int)... | 1.0 | +| test.c:631:26:631:27 | 14 | 1.0 | +| test.c:631:26:631:27 | (unsigned int)... | 1.0 | +| test.c:632:10:632:23 | special_number | 1.297918419127476E201 | +| test.c:639:10:639:11 | 0 | 1.0 | +| test.c:640:7:640:8 | c1 | 1.0 | +| test.c:640:13:640:13 | x | 1.0 | +| test.c:640:13:640:23 | ... += ... | 1.0 | +| test.c:640:18:640:23 | 748596 | 1.0 | +| test.c:641:7:641:8 | c2 | 1.0 | +| test.c:641:13:641:13 | x | 2.0 | +| test.c:641:13:641:25 | ... += ... | 2.0 | +| test.c:641:18:641:25 | 84652395 | 1.0 | +| test.c:642:7:642:8 | c3 | 1.0 | +| test.c:642:13:642:13 | x | 4.0 | +| test.c:642:13:642:24 | ... += ... | 4.0 | +| test.c:642:18:642:24 | 3675895 | 1.0 | +| test.c:643:7:643:8 | c4 | 1.0 | +| test.c:643:13:643:13 | x | 8.0 | +| test.c:643:13:643:22 | ... += ... | 8.0 | +| test.c:643:18:643:22 | 98634 | 1.0 | +| test.c:644:7:644:8 | c5 | 1.0 | +| test.c:644:13:644:13 | x | 16.0 | +| test.c:644:13:644:24 | ... += ... | 16.0 | +| test.c:644:18:644:24 | 7834985 | 1.0 | +| test.c:645:7:645:8 | c1 | 2.0 | +| test.c:645:7:645:14 | ... && ... | 1.0 | +| test.c:645:13:645:14 | c2 | 2.0 | +| test.c:645:19:645:19 | x | 32.0 | +| test.c:645:19:645:32 | ... += ... | 32.0 | +| test.c:645:24:645:32 | 938457398 | 1.0 | +| test.c:646:7:646:8 | c1 | 3.0 | +| test.c:646:7:646:14 | ... && ... | 1.0 | +| test.c:646:13:646:14 | c3 | 2.0 | +| test.c:646:19:646:19 | x | 64.0 | +| test.c:646:19:646:31 | ... += ... | 64.0 | +| test.c:646:24:646:31 | 73895648 | 1.0 | +| test.c:647:7:647:8 | c1 | 4.0 | +| test.c:647:7:647:14 | ... && ... | 1.0 | +| test.c:647:13:647:14 | c4 | 2.0 | +| test.c:647:19:647:19 | x | 128.0 | +| test.c:647:19:647:31 | ... += ... | 128.0 | +| test.c:647:24:647:31 | 12345432 | 1.0 | +| test.c:648:7:648:8 | c1 | 5.0 | +| test.c:648:7:648:14 | ... && ... | 1.0 | +| test.c:648:13:648:14 | c5 | 2.0 | +| test.c:648:19:648:19 | x | 256.0 | +| test.c:648:19:648:28 | ... += ... | 256.0 | +| test.c:648:24:648:28 | 38847 | 1.0 | +| test.c:649:7:649:8 | c2 | 5.0 | +| test.c:649:7:649:14 | ... && ... | 1.0 | +| test.c:649:13:649:14 | c3 | 5.0 | +| test.c:649:19:649:19 | x | 512.0 | +| test.c:649:19:649:26 | ... += ... | 512.0 | +| test.c:649:24:649:26 | 234 | 1.0 | +| test.c:651:11:651:11 | x | 1024.0 | +| test.c:651:11:651:15 | ... + ... | 1048576.0 | +| test.c:651:11:651:19 | ... + ... | 1.073741824E9 | +| test.c:651:11:651:23 | ... + ... | 1.099511627776E12 | +| test.c:651:11:651:27 | ... + ... | 1.125899906842624E15 | +| test.c:651:11:651:31 | ... + ... | 1.152921504606847E18 | +| test.c:651:11:651:35 | ... + ... | 1.1805916207174113E21 | +| test.c:651:11:651:39 | ... + ... | 1.2089258196146292E24 | +| test.c:651:11:651:43 | ... + ... | 1.2379400392853803E27 | +| test.c:651:11:651:47 | ... + ... | 1.2676506002282294E30 | +| test.c:651:11:651:51 | ... + ... | 1.298074214633707E33 | +| test.c:651:11:651:55 | ... + ... | 1.329227995784916E36 | +| test.c:651:15:651:15 | x | 1024.0 | +| test.c:651:19:651:19 | x | 1024.0 | +| test.c:651:23:651:23 | x | 1024.0 | +| test.c:651:27:651:27 | x | 1024.0 | +| test.c:651:31:651:31 | x | 1024.0 | +| test.c:651:35:651:35 | x | 1024.0 | +| test.c:651:39:651:39 | x | 1024.0 | +| test.c:651:43:651:43 | x | 1024.0 | +| test.c:651:47:651:47 | x | 1024.0 | +| test.c:651:51:651:51 | x | 1024.0 | +| test.c:651:55:651:55 | x | 1024.0 | +| test.c:652:10:652:10 | y | 1.329227995784916E36 | +| test.c:657:20:657:20 | x | 1.0 | +| test.c:657:20:657:26 | ... < ... | 1.0 | +| test.c:657:20:657:36 | ... ? ... : ... | 1.0 | +| test.c:657:24:657:26 | 100 | 1.0 | +| test.c:657:24:657:26 | (unsigned int)... | 1.0 | +| test.c:657:30:657:30 | x | 1.0 | +| test.c:657:34:657:36 | 100 | 1.0 | +| test.c:657:34:657:36 | (unsigned int)... | 1.0 | +| test.c:660:3:660:4 | y1 | 1.0 | +| test.c:660:9:660:11 | ++ ... | 1.0 | +| test.c:660:11:660:11 | y | 1.0 | +| test.c:661:3:661:4 | y2 | 1.0 | +| test.c:661:19:661:19 | 3 | 1.0 | +| test.c:661:19:661:19 | (unsigned int)... | 1.0 | +| test.c:670:3:670:3 | i | 1.0 | +| test.c:670:3:670:8 | ... = ... | 1.0 | +| test.c:670:7:670:8 | 10 | 1.0 | +| test.c:671:7:671:7 | i | 1.0 | +| test.c:673:3:673:3 | i | 1.0 | +| test.c:673:3:673:8 | ... = ... | 1.0 | +| test.c:673:7:673:8 | 10 | 1.0 | | test.c:674:3:674:3 | i | 1.0 | -| test.c:674:3:674:15 | ... = ... | 1.0 | -| test.c:674:7:674:15 | (...) | 1.0 | -| test.c:674:8:674:8 | j | 1.0 | -| test.c:674:8:674:14 | ... += ... | 1.0 | -| test.c:674:13:674:14 | 10 | 1.0 | +| test.c:674:3:674:9 | ... += ... | 1.0 | +| test.c:674:8:674:9 | 10 | 1.0 | | test.c:675:7:675:7 | i | 1.0 | | test.c:677:3:677:3 | i | 1.0 | -| test.c:677:3:677:20 | ... = ... | 1.0 | -| test.c:677:7:677:8 | 20 | 1.0 | -| test.c:677:7:677:20 | ... + ... | 1.0 | -| test.c:677:12:677:20 | (...) | 1.0 | -| test.c:677:13:677:13 | j | 1.0 | -| test.c:677:13:677:19 | ... -= ... | 1.0 | -| test.c:677:18:677:19 | 10 | 1.0 | -| test.c:678:7:678:7 | i | 1.0 | -| test.c:683:14:683:15 | 0 | 1.0 | -| test.c:685:7:685:7 | 3 | 1.0 | -| test.c:685:7:685:7 | (unsigned int)... | 1.0 | -| test.c:685:7:685:12 | ... <= ... | 1.0 | -| test.c:685:7:685:23 | ... && ... | 1.0 | -| test.c:685:7:685:33 | ... && ... | 1.0 | -| test.c:685:7:685:44 | ... && ... | 1.0 | -| test.c:685:12:685:12 | a | 1.0 | -| test.c:685:17:685:17 | a | 1.0 | -| test.c:685:17:685:23 | ... <= ... | 1.0 | -| test.c:685:22:685:23 | 11 | 1.0 | -| test.c:685:22:685:23 | (unsigned int)... | 1.0 | -| test.c:685:28:685:28 | 5 | 1.0 | -| test.c:685:28:685:28 | (unsigned int)... | 1.0 | -| test.c:685:28:685:33 | ... <= ... | 1.0 | -| test.c:685:33:685:33 | b | 1.0 | -| test.c:685:38:685:38 | b | 1.0 | -| test.c:685:38:685:44 | ... <= ... | 1.0 | -| test.c:685:43:685:44 | 23 | 1.0 | -| test.c:685:43:685:44 | (unsigned int)... | 1.0 | -| test.c:686:13:686:13 | a | 1.0 | -| test.c:686:13:686:15 | (int)... | 1.0 | -| test.c:686:13:686:15 | ... * ... | 1.0 | -| test.c:686:15:686:15 | b | 1.0 | -| test.c:687:5:687:9 | total | 1.0 | -| test.c:687:5:687:14 | ... += ... | 1.0 | -| test.c:687:14:687:14 | r | 1.0 | -| test.c:689:7:689:7 | 3 | 1.0 | -| test.c:689:7:689:7 | (unsigned int)... | 1.0 | -| test.c:689:7:689:12 | ... <= ... | 1.0 | -| test.c:689:7:689:23 | ... && ... | 1.0 | -| test.c:689:7:689:33 | ... && ... | 1.0 | -| test.c:689:7:689:44 | ... && ... | 1.0 | -| test.c:689:12:689:12 | a | 2.0 | -| test.c:689:17:689:17 | a | 2.0 | -| test.c:689:17:689:23 | ... <= ... | 1.0 | -| test.c:689:22:689:23 | 11 | 1.0 | -| test.c:689:22:689:23 | (unsigned int)... | 1.0 | -| test.c:689:28:689:28 | 0 | 1.0 | -| test.c:689:28:689:28 | (unsigned int)... | 1.0 | -| test.c:689:28:689:33 | ... <= ... | 1.0 | -| test.c:689:33:689:33 | b | 3.0 | -| test.c:689:38:689:38 | b | 3.0 | -| test.c:689:38:689:44 | ... <= ... | 1.0 | -| test.c:689:43:689:44 | 23 | 1.0 | -| test.c:689:43:689:44 | (unsigned int)... | 1.0 | -| test.c:690:13:690:13 | a | 2.0 | -| test.c:690:13:690:15 | (int)... | 6.0 | -| test.c:690:13:690:15 | ... * ... | 6.0 | -| test.c:690:15:690:15 | b | 3.0 | -| test.c:691:5:691:9 | total | 2.0 | -| test.c:691:5:691:14 | ... += ... | 12.0 | -| test.c:691:14:691:14 | r | 6.0 | -| test.c:693:7:693:7 | 3 | 1.0 | -| test.c:693:7:693:7 | (unsigned int)... | 1.0 | -| test.c:693:7:693:12 | ... <= ... | 1.0 | -| test.c:693:7:693:23 | ... && ... | 1.0 | -| test.c:693:7:693:34 | ... && ... | 1.0 | -| test.c:693:7:693:45 | ... && ... | 1.0 | -| test.c:693:12:693:12 | a | 3.0 | -| test.c:693:17:693:17 | a | 3.0 | -| test.c:693:17:693:23 | ... <= ... | 1.0 | -| test.c:693:22:693:23 | 11 | 1.0 | -| test.c:693:22:693:23 | (unsigned int)... | 1.0 | -| test.c:693:28:693:29 | 13 | 1.0 | -| test.c:693:28:693:29 | (unsigned int)... | 1.0 | -| test.c:693:28:693:34 | ... <= ... | 1.0 | -| test.c:693:34:693:34 | b | 7.0 | -| test.c:693:39:693:39 | b | 7.0 | -| test.c:693:39:693:45 | ... <= ... | 1.0 | -| test.c:693:44:693:45 | 23 | 1.0 | -| test.c:693:44:693:45 | (unsigned int)... | 1.0 | -| test.c:694:13:694:13 | a | 3.0 | -| test.c:694:13:694:15 | (int)... | 21.0 | -| test.c:694:13:694:15 | ... * ... | 21.0 | -| test.c:694:15:694:15 | b | 7.0 | -| test.c:695:5:695:9 | total | 14.0 | -| test.c:695:5:695:14 | ... += ... | 294.0 | -| test.c:695:14:695:14 | r | 21.0 | -| test.c:698:10:698:14 | total | 308.0 | -| test.c:702:14:702:15 | 0 | 1.0 | -| test.c:704:7:704:7 | 5 | 1.0 | -| test.c:704:7:704:7 | (unsigned int)... | 1.0 | -| test.c:704:7:704:12 | ... <= ... | 1.0 | -| test.c:704:7:704:23 | ... && ... | 1.0 | -| test.c:704:12:704:12 | b | 1.0 | -| test.c:704:17:704:17 | b | 1.0 | -| test.c:704:17:704:23 | ... <= ... | 1.0 | -| test.c:704:22:704:23 | 23 | 1.0 | -| test.c:704:22:704:23 | (unsigned int)... | 1.0 | -| test.c:705:13:705:14 | 11 | 1.0 | -| test.c:705:13:705:14 | (unsigned int)... | 1.0 | -| test.c:705:13:705:16 | (int)... | 1.0 | -| test.c:705:13:705:16 | ... * ... | 1.0 | -| test.c:705:16:705:16 | b | 1.0 | -| test.c:706:5:706:9 | total | 1.0 | -| test.c:706:5:706:14 | ... += ... | 1.0 | -| test.c:706:14:706:14 | r | 1.0 | -| test.c:708:7:708:7 | 0 | 1.0 | -| test.c:708:7:708:7 | (unsigned int)... | 1.0 | -| test.c:708:7:708:12 | ... <= ... | 1.0 | -| test.c:708:7:708:23 | ... && ... | 1.0 | -| test.c:708:12:708:12 | b | 2.0 | -| test.c:708:17:708:17 | b | 2.0 | -| test.c:708:17:708:23 | ... <= ... | 1.0 | -| test.c:708:22:708:23 | 23 | 1.0 | -| test.c:708:22:708:23 | (unsigned int)... | 1.0 | -| test.c:709:13:709:14 | 11 | 1.0 | -| test.c:709:13:709:14 | (unsigned int)... | 1.0 | -| test.c:709:13:709:16 | (int)... | 2.0 | -| test.c:709:13:709:16 | ... * ... | 2.0 | -| test.c:709:16:709:16 | b | 2.0 | -| test.c:710:5:710:9 | total | 2.0 | -| test.c:710:5:710:14 | ... += ... | 4.0 | -| test.c:710:14:710:14 | r | 2.0 | -| test.c:712:7:712:8 | 13 | 1.0 | -| test.c:712:7:712:8 | (unsigned int)... | 1.0 | -| test.c:712:7:712:13 | ... <= ... | 1.0 | -| test.c:712:7:712:24 | ... && ... | 1.0 | -| test.c:712:13:712:13 | b | 3.0 | -| test.c:712:18:712:18 | b | 3.0 | -| test.c:712:18:712:24 | ... <= ... | 1.0 | -| test.c:712:23:712:24 | 23 | 1.0 | -| test.c:712:23:712:24 | (unsigned int)... | 1.0 | -| test.c:713:13:713:14 | 11 | 1.0 | -| test.c:713:13:713:14 | (unsigned int)... | 1.0 | -| test.c:713:13:713:16 | (int)... | 3.0 | -| test.c:713:13:713:16 | ... * ... | 3.0 | -| test.c:713:16:713:16 | b | 3.0 | -| test.c:714:5:714:9 | total | 6.0 | -| test.c:714:5:714:14 | ... += ... | 18.0 | -| test.c:714:14:714:14 | r | 3.0 | -| test.c:717:10:717:14 | total | 24.0 | -| test.c:722:3:722:3 | x | 1.0 | -| test.c:722:3:722:22 | ... = ... | 1.0 | -| test.c:722:7:722:7 | y | 1.0 | -| test.c:722:7:722:22 | ... = ... | 1.0 | -| test.c:722:11:722:22 | 1000000003 | 1.0 | -| test.c:723:3:723:4 | xy | 1.0 | -| test.c:723:3:723:12 | ... = ... | 1.0 | -| test.c:723:8:723:8 | x | 1.0 | -| test.c:723:8:723:12 | ... * ... | 1.0 | -| test.c:723:12:723:12 | y | 1.0 | -| test.c:724:10:724:11 | xy | 1.0 | -| test.c:729:3:729:3 | x | 1.0 | -| test.c:729:3:729:14 | ... = ... | 1.0 | -| test.c:729:7:729:14 | 274177 | 1.0 | -| test.c:730:3:730:3 | y | 1.0 | -| test.c:730:3:730:22 | ... = ... | 1.0 | -| test.c:730:7:730:22 | 67280421310721 | 1.0 | -| test.c:731:3:731:4 | xy | 1.0 | -| test.c:731:3:731:12 | ... = ... | 1.0 | -| test.c:731:8:731:8 | x | 1.0 | -| test.c:731:8:731:12 | ... * ... | 1.0 | -| test.c:731:12:731:12 | y | 1.0 | -| test.c:732:10:732:11 | xy | 1.0 | -| test.c:736:7:736:8 | ui | 1.0 | -| test.c:736:7:736:14 | ... >= ... | 1.0 | -| test.c:736:13:736:14 | 10 | 1.0 | -| test.c:736:13:736:14 | (unsigned int)... | 1.0 | -| test.c:737:28:737:44 | (unsigned long)... | 1.0 | -| test.c:737:28:737:49 | ... * ... | 1.0 | -| test.c:737:43:737:44 | ui | 1.0 | -| test.c:737:48:737:49 | (unsigned long)... | 1.0 | -| test.c:737:48:737:49 | ui | 1.0 | -| test.c:738:12:738:17 | result | 1.0 | -| test.c:740:7:740:8 | ul | 1.0 | -| test.c:740:7:740:14 | ... >= ... | 1.0 | -| test.c:740:13:740:14 | 10 | 1.0 | -| test.c:740:13:740:14 | (unsigned long)... | 1.0 | -| test.c:741:28:741:29 | ul | 1.0 | -| test.c:741:28:741:34 | ... * ... | 1.0 | -| test.c:741:33:741:34 | ul | 1.0 | -| test.c:742:12:742:17 | result | 1.0 | -| test.c:744:10:744:10 | 0 | 1.0 | -| test.c:744:10:744:10 | (unsigned long)... | 1.0 | -| test.c:748:7:748:8 | ui | 1.0 | -| test.c:748:7:748:14 | ... <= ... | 1.0 | -| test.c:748:7:748:25 | ... && ... | 1.0 | -| test.c:748:13:748:14 | 10 | 1.0 | -| test.c:748:13:748:14 | (unsigned int)... | 1.0 | -| test.c:748:19:748:20 | ui | 1.0 | -| test.c:748:19:748:25 | ... >= ... | 1.0 | -| test.c:748:25:748:25 | 2 | 1.0 | -| test.c:748:25:748:25 | (unsigned int)... | 1.0 | -| test.c:749:5:749:6 | ui | 1.0 | -| test.c:749:5:749:16 | ... *= ... | 1.0 | -| test.c:749:11:749:12 | ui | 1.0 | -| test.c:749:11:749:16 | ... + ... | 1.0 | -| test.c:749:16:749:16 | 0 | 1.0 | -| test.c:749:16:749:16 | (unsigned int)... | 1.0 | -| test.c:750:12:750:13 | (unsigned long)... | 1.0 | -| test.c:750:12:750:13 | ui | 1.0 | -| test.c:753:26:753:27 | 10 | 1.0 | -| test.c:753:26:753:27 | (unsigned int)... | 1.0 | -| test.c:754:3:754:9 | uiconst | 1.0 | -| test.c:754:3:754:14 | ... *= ... | 1.0 | -| test.c:754:14:754:14 | 4 | 1.0 | -| test.c:754:14:754:14 | (unsigned int)... | 1.0 | -| test.c:756:27:756:28 | 10 | 1.0 | -| test.c:756:27:756:28 | (unsigned long)... | 1.0 | -| test.c:757:3:757:9 | ulconst | 1.0 | -| test.c:757:3:757:14 | ... *= ... | 1.0 | -| test.c:757:14:757:14 | 4 | 1.0 | -| test.c:757:14:757:14 | (unsigned long)... | 1.0 | -| test.c:758:10:758:16 | (unsigned long)... | 1.0 | -| test.c:758:10:758:16 | uiconst | 1.0 | -| test.c:758:10:758:26 | ... + ... | 1.0 | -| test.c:758:20:758:26 | ulconst | 1.0 | -| test.c:762:7:762:7 | i | 1.0 | -| test.c:762:7:762:13 | ... >= ... | 1.0 | -| test.c:762:7:762:23 | ... && ... | 1.0 | -| test.c:762:12:762:13 | - ... | 1.0 | -| test.c:762:13:762:13 | 1 | 1.0 | -| test.c:762:18:762:18 | i | 1.0 | -| test.c:762:18:762:23 | ... <= ... | 1.0 | -| test.c:762:23:762:23 | 2 | 1.0 | -| test.c:763:5:763:5 | i | 1.0 | -| test.c:763:5:763:13 | ... = ... | 1.0 | -| test.c:763:9:763:9 | 5 | 1.0 | -| test.c:763:9:763:13 | ... * ... | 1.0 | -| test.c:763:13:763:13 | i | 1.0 | -| test.c:764:9:764:9 | i | 1.0 | -| test.c:766:5:766:5 | i | 1.0 | -| test.c:766:5:766:14 | ... = ... | 1.0 | -| test.c:766:9:766:9 | i | 1.0 | -| test.c:766:9:766:14 | ... * ... | 1.0 | -| test.c:766:13:766:14 | - ... | 1.0 | -| test.c:766:14:766:14 | 3 | 1.0 | -| test.c:767:9:767:9 | i | 1.0 | -| test.c:769:5:769:5 | i | 1.0 | -| test.c:769:5:769:10 | ... *= ... | 1.0 | -| test.c:769:10:769:10 | 7 | 1.0 | -| test.c:770:9:770:9 | i | 1.0 | -| test.c:772:5:772:5 | i | 1.0 | -| test.c:772:5:772:12 | ... *= ... | 1.0 | -| test.c:772:10:772:12 | - ... | 1.0 | -| test.c:772:11:772:12 | 11 | 1.0 | -| test.c:773:9:773:9 | i | 1.0 | -| test.c:775:7:775:7 | i | 2.0 | -| test.c:775:7:775:13 | ... == ... | 1.0 | -| test.c:775:12:775:13 | - ... | 1.0 | -| test.c:775:13:775:13 | 1 | 1.0 | +| test.c:677:3:677:8 | ... = ... | 1.0 | +| test.c:677:7:677:8 | 40 | 1.0 | +| test.c:678:3:678:3 | i | 1.0 | +| test.c:678:3:678:9 | ... -= ... | 1.0 | +| test.c:678:8:678:9 | 10 | 1.0 | +| test.c:679:7:679:7 | i | 1.0 | +| test.c:681:3:681:3 | i | 1.0 | +| test.c:681:3:681:12 | ... = ... | 1.0 | +| test.c:681:7:681:7 | j | 1.0 | +| test.c:681:7:681:12 | ... = ... | 1.0 | +| test.c:681:11:681:12 | 40 | 1.0 | +| test.c:682:7:682:7 | i | 1.0 | +| test.c:684:3:684:3 | i | 1.0 | +| test.c:684:3:684:15 | ... = ... | 1.0 | +| test.c:684:7:684:15 | (...) | 1.0 | +| test.c:684:8:684:8 | j | 1.0 | +| test.c:684:8:684:14 | ... += ... | 1.0 | +| test.c:684:13:684:14 | 10 | 1.0 | +| test.c:685:7:685:7 | i | 1.0 | +| test.c:687:3:687:3 | i | 1.0 | +| test.c:687:3:687:20 | ... = ... | 1.0 | +| test.c:687:7:687:8 | 20 | 1.0 | +| test.c:687:7:687:20 | ... + ... | 1.0 | +| test.c:687:12:687:20 | (...) | 1.0 | +| test.c:687:13:687:13 | j | 1.0 | +| test.c:687:13:687:19 | ... -= ... | 1.0 | +| test.c:687:18:687:19 | 10 | 1.0 | +| test.c:688:7:688:7 | i | 1.0 | +| test.c:693:14:693:15 | 0 | 1.0 | +| test.c:695:7:695:7 | 3 | 1.0 | +| test.c:695:7:695:7 | (unsigned int)... | 1.0 | +| test.c:695:7:695:12 | ... <= ... | 1.0 | +| test.c:695:7:695:23 | ... && ... | 1.0 | +| test.c:695:7:695:33 | ... && ... | 1.0 | +| test.c:695:7:695:44 | ... && ... | 1.0 | +| test.c:695:12:695:12 | a | 1.0 | +| test.c:695:17:695:17 | a | 1.0 | +| test.c:695:17:695:23 | ... <= ... | 1.0 | +| test.c:695:22:695:23 | 11 | 1.0 | +| test.c:695:22:695:23 | (unsigned int)... | 1.0 | +| test.c:695:28:695:28 | 5 | 1.0 | +| test.c:695:28:695:28 | (unsigned int)... | 1.0 | +| test.c:695:28:695:33 | ... <= ... | 1.0 | +| test.c:695:33:695:33 | b | 1.0 | +| test.c:695:38:695:38 | b | 1.0 | +| test.c:695:38:695:44 | ... <= ... | 1.0 | +| test.c:695:43:695:44 | 23 | 1.0 | +| test.c:695:43:695:44 | (unsigned int)... | 1.0 | +| test.c:696:13:696:13 | a | 1.0 | +| test.c:696:13:696:15 | (int)... | 1.0 | +| test.c:696:13:696:15 | ... * ... | 1.0 | +| test.c:696:15:696:15 | b | 1.0 | +| test.c:697:5:697:9 | total | 1.0 | +| test.c:697:5:697:14 | ... += ... | 1.0 | +| test.c:697:14:697:14 | r | 1.0 | +| test.c:699:7:699:7 | 3 | 1.0 | +| test.c:699:7:699:7 | (unsigned int)... | 1.0 | +| test.c:699:7:699:12 | ... <= ... | 1.0 | +| test.c:699:7:699:23 | ... && ... | 1.0 | +| test.c:699:7:699:33 | ... && ... | 1.0 | +| test.c:699:7:699:44 | ... && ... | 1.0 | +| test.c:699:12:699:12 | a | 2.0 | +| test.c:699:17:699:17 | a | 2.0 | +| test.c:699:17:699:23 | ... <= ... | 1.0 | +| test.c:699:22:699:23 | 11 | 1.0 | +| test.c:699:22:699:23 | (unsigned int)... | 1.0 | +| test.c:699:28:699:28 | 0 | 1.0 | +| test.c:699:28:699:28 | (unsigned int)... | 1.0 | +| test.c:699:28:699:33 | ... <= ... | 1.0 | +| test.c:699:33:699:33 | b | 3.0 | +| test.c:699:38:699:38 | b | 3.0 | +| test.c:699:38:699:44 | ... <= ... | 1.0 | +| test.c:699:43:699:44 | 23 | 1.0 | +| test.c:699:43:699:44 | (unsigned int)... | 1.0 | +| test.c:700:13:700:13 | a | 2.0 | +| test.c:700:13:700:15 | (int)... | 6.0 | +| test.c:700:13:700:15 | ... * ... | 6.0 | +| test.c:700:15:700:15 | b | 3.0 | +| test.c:701:5:701:9 | total | 2.0 | +| test.c:701:5:701:14 | ... += ... | 12.0 | +| test.c:701:14:701:14 | r | 6.0 | +| test.c:703:7:703:7 | 3 | 1.0 | +| test.c:703:7:703:7 | (unsigned int)... | 1.0 | +| test.c:703:7:703:12 | ... <= ... | 1.0 | +| test.c:703:7:703:23 | ... && ... | 1.0 | +| test.c:703:7:703:34 | ... && ... | 1.0 | +| test.c:703:7:703:45 | ... && ... | 1.0 | +| test.c:703:12:703:12 | a | 3.0 | +| test.c:703:17:703:17 | a | 3.0 | +| test.c:703:17:703:23 | ... <= ... | 1.0 | +| test.c:703:22:703:23 | 11 | 1.0 | +| test.c:703:22:703:23 | (unsigned int)... | 1.0 | +| test.c:703:28:703:29 | 13 | 1.0 | +| test.c:703:28:703:29 | (unsigned int)... | 1.0 | +| test.c:703:28:703:34 | ... <= ... | 1.0 | +| test.c:703:34:703:34 | b | 7.0 | +| test.c:703:39:703:39 | b | 7.0 | +| test.c:703:39:703:45 | ... <= ... | 1.0 | +| test.c:703:44:703:45 | 23 | 1.0 | +| test.c:703:44:703:45 | (unsigned int)... | 1.0 | +| test.c:704:13:704:13 | a | 3.0 | +| test.c:704:13:704:15 | (int)... | 21.0 | +| test.c:704:13:704:15 | ... * ... | 21.0 | +| test.c:704:15:704:15 | b | 7.0 | +| test.c:705:5:705:9 | total | 14.0 | +| test.c:705:5:705:14 | ... += ... | 294.0 | +| test.c:705:14:705:14 | r | 21.0 | +| test.c:708:10:708:14 | total | 308.0 | +| test.c:712:14:712:15 | 0 | 1.0 | +| test.c:714:7:714:7 | 5 | 1.0 | +| test.c:714:7:714:7 | (unsigned int)... | 1.0 | +| test.c:714:7:714:12 | ... <= ... | 1.0 | +| test.c:714:7:714:23 | ... && ... | 1.0 | +| test.c:714:12:714:12 | b | 1.0 | +| test.c:714:17:714:17 | b | 1.0 | +| test.c:714:17:714:23 | ... <= ... | 1.0 | +| test.c:714:22:714:23 | 23 | 1.0 | +| test.c:714:22:714:23 | (unsigned int)... | 1.0 | +| test.c:715:13:715:14 | 11 | 1.0 | +| test.c:715:13:715:14 | (unsigned int)... | 1.0 | +| test.c:715:13:715:16 | (int)... | 1.0 | +| test.c:715:13:715:16 | ... * ... | 1.0 | +| test.c:715:16:715:16 | b | 1.0 | +| test.c:716:5:716:9 | total | 1.0 | +| test.c:716:5:716:14 | ... += ... | 1.0 | +| test.c:716:14:716:14 | r | 1.0 | +| test.c:718:7:718:7 | 0 | 1.0 | +| test.c:718:7:718:7 | (unsigned int)... | 1.0 | +| test.c:718:7:718:12 | ... <= ... | 1.0 | +| test.c:718:7:718:23 | ... && ... | 1.0 | +| test.c:718:12:718:12 | b | 2.0 | +| test.c:718:17:718:17 | b | 2.0 | +| test.c:718:17:718:23 | ... <= ... | 1.0 | +| test.c:718:22:718:23 | 23 | 1.0 | +| test.c:718:22:718:23 | (unsigned int)... | 1.0 | +| test.c:719:13:719:14 | 11 | 1.0 | +| test.c:719:13:719:14 | (unsigned int)... | 1.0 | +| test.c:719:13:719:16 | (int)... | 2.0 | +| test.c:719:13:719:16 | ... * ... | 2.0 | +| test.c:719:16:719:16 | b | 2.0 | +| test.c:720:5:720:9 | total | 2.0 | +| test.c:720:5:720:14 | ... += ... | 4.0 | +| test.c:720:14:720:14 | r | 2.0 | +| test.c:722:7:722:8 | 13 | 1.0 | +| test.c:722:7:722:8 | (unsigned int)... | 1.0 | +| test.c:722:7:722:13 | ... <= ... | 1.0 | +| test.c:722:7:722:24 | ... && ... | 1.0 | +| test.c:722:13:722:13 | b | 3.0 | +| test.c:722:18:722:18 | b | 3.0 | +| test.c:722:18:722:24 | ... <= ... | 1.0 | +| test.c:722:23:722:24 | 23 | 1.0 | +| test.c:722:23:722:24 | (unsigned int)... | 1.0 | +| test.c:723:13:723:14 | 11 | 1.0 | +| test.c:723:13:723:14 | (unsigned int)... | 1.0 | +| test.c:723:13:723:16 | (int)... | 3.0 | +| test.c:723:13:723:16 | ... * ... | 3.0 | +| test.c:723:16:723:16 | b | 3.0 | +| test.c:724:5:724:9 | total | 6.0 | +| test.c:724:5:724:14 | ... += ... | 18.0 | +| test.c:724:14:724:14 | r | 3.0 | +| test.c:727:10:727:14 | total | 24.0 | +| test.c:732:3:732:3 | x | 1.0 | +| test.c:732:3:732:22 | ... = ... | 1.0 | +| test.c:732:7:732:7 | y | 1.0 | +| test.c:732:7:732:22 | ... = ... | 1.0 | +| test.c:732:11:732:22 | 1000000003 | 1.0 | +| test.c:733:3:733:4 | xy | 1.0 | +| test.c:733:3:733:12 | ... = ... | 1.0 | +| test.c:733:8:733:8 | x | 1.0 | +| test.c:733:8:733:12 | ... * ... | 1.0 | +| test.c:733:12:733:12 | y | 1.0 | +| test.c:734:10:734:11 | xy | 1.0 | +| test.c:739:3:739:3 | x | 1.0 | +| test.c:739:3:739:14 | ... = ... | 1.0 | +| test.c:739:7:739:14 | 274177 | 1.0 | +| test.c:740:3:740:3 | y | 1.0 | +| test.c:740:3:740:22 | ... = ... | 1.0 | +| test.c:740:7:740:22 | 67280421310721 | 1.0 | +| test.c:741:3:741:4 | xy | 1.0 | +| test.c:741:3:741:12 | ... = ... | 1.0 | +| test.c:741:8:741:8 | x | 1.0 | +| test.c:741:8:741:12 | ... * ... | 1.0 | +| test.c:741:12:741:12 | y | 1.0 | +| test.c:742:10:742:11 | xy | 1.0 | +| test.c:746:7:746:8 | ui | 1.0 | +| test.c:746:7:746:14 | ... >= ... | 1.0 | +| test.c:746:13:746:14 | 10 | 1.0 | +| test.c:746:13:746:14 | (unsigned int)... | 1.0 | +| test.c:747:28:747:44 | (unsigned long)... | 1.0 | +| test.c:747:28:747:49 | ... * ... | 1.0 | +| test.c:747:43:747:44 | ui | 1.0 | +| test.c:747:48:747:49 | (unsigned long)... | 1.0 | +| test.c:747:48:747:49 | ui | 1.0 | +| test.c:748:12:748:17 | result | 1.0 | +| test.c:750:7:750:8 | ul | 1.0 | +| test.c:750:7:750:14 | ... >= ... | 1.0 | +| test.c:750:13:750:14 | 10 | 1.0 | +| test.c:750:13:750:14 | (unsigned long)... | 1.0 | +| test.c:751:28:751:29 | ul | 1.0 | +| test.c:751:28:751:34 | ... * ... | 1.0 | +| test.c:751:33:751:34 | ul | 1.0 | +| test.c:752:12:752:17 | result | 1.0 | +| test.c:754:10:754:10 | 0 | 1.0 | +| test.c:754:10:754:10 | (unsigned long)... | 1.0 | +| test.c:758:7:758:8 | ui | 1.0 | +| test.c:758:7:758:14 | ... <= ... | 1.0 | +| test.c:758:7:758:25 | ... && ... | 1.0 | +| test.c:758:13:758:14 | 10 | 1.0 | +| test.c:758:13:758:14 | (unsigned int)... | 1.0 | +| test.c:758:19:758:20 | ui | 1.0 | +| test.c:758:19:758:25 | ... >= ... | 1.0 | +| test.c:758:25:758:25 | 2 | 1.0 | +| test.c:758:25:758:25 | (unsigned int)... | 1.0 | +| test.c:759:5:759:6 | ui | 1.0 | +| test.c:759:5:759:16 | ... *= ... | 1.0 | +| test.c:759:11:759:12 | ui | 1.0 | +| test.c:759:11:759:16 | ... + ... | 1.0 | +| test.c:759:16:759:16 | 0 | 1.0 | +| test.c:759:16:759:16 | (unsigned int)... | 1.0 | +| test.c:760:12:760:13 | (unsigned long)... | 1.0 | +| test.c:760:12:760:13 | ui | 1.0 | +| test.c:763:26:763:27 | 10 | 1.0 | +| test.c:763:26:763:27 | (unsigned int)... | 1.0 | +| test.c:764:3:764:9 | uiconst | 1.0 | +| test.c:764:3:764:14 | ... *= ... | 1.0 | +| test.c:764:14:764:14 | 4 | 1.0 | +| test.c:764:14:764:14 | (unsigned int)... | 1.0 | +| test.c:766:27:766:28 | 10 | 1.0 | +| test.c:766:27:766:28 | (unsigned long)... | 1.0 | +| test.c:767:3:767:9 | ulconst | 1.0 | +| test.c:767:3:767:14 | ... *= ... | 1.0 | +| test.c:767:14:767:14 | 4 | 1.0 | +| test.c:767:14:767:14 | (unsigned long)... | 1.0 | +| test.c:768:10:768:16 | (unsigned long)... | 1.0 | +| test.c:768:10:768:16 | uiconst | 1.0 | +| test.c:768:10:768:26 | ... + ... | 1.0 | +| test.c:768:20:768:26 | ulconst | 1.0 | +| test.c:772:7:772:7 | i | 1.0 | +| test.c:772:7:772:13 | ... >= ... | 1.0 | +| test.c:772:7:772:23 | ... && ... | 1.0 | +| test.c:772:12:772:13 | - ... | 1.0 | +| test.c:772:13:772:13 | 1 | 1.0 | +| test.c:772:18:772:18 | i | 1.0 | +| test.c:772:18:772:23 | ... <= ... | 1.0 | +| test.c:772:23:772:23 | 2 | 1.0 | +| test.c:773:5:773:5 | i | 1.0 | +| test.c:773:5:773:13 | ... = ... | 1.0 | +| test.c:773:9:773:9 | 5 | 1.0 | +| test.c:773:9:773:13 | ... * ... | 1.0 | +| test.c:773:13:773:13 | i | 1.0 | +| test.c:774:9:774:9 | i | 1.0 | | test.c:776:5:776:5 | i | 1.0 | -| test.c:776:5:776:27 | ... = ... | 2.0 | -| test.c:776:9:776:9 | i | 2.0 | -| test.c:776:9:776:27 | ... * ... | 2.0 | -| test.c:776:13:776:27 | (int)... | 1.0 | -| test.c:776:18:776:27 | 4294967295 | 1.0 | -| test.c:777:9:777:9 | i | 2.0 | -| test.c:779:3:779:3 | i | 1.0 | -| test.c:779:3:779:12 | ... = ... | 4.0 | -| test.c:779:7:779:7 | i | 4.0 | -| test.c:779:7:779:12 | ... * ... | 4.0 | -| test.c:779:11:779:12 | - ... | 1.0 | -| test.c:779:12:779:12 | 1 | 1.0 | -| test.c:780:10:780:10 | i | 4.0 | -| test.c:782:20:782:20 | 1 | 1.0 | -| test.c:782:20:782:20 | (signed char)... | 1.0 | -| test.c:783:3:783:3 | i | 1.0 | -| test.c:783:3:783:17 | ... = ... | 1.0 | -| test.c:783:7:783:17 | (...) | 1.0 | -| test.c:783:7:783:17 | (int)... | 1.0 | -| test.c:783:8:783:11 | * ... | 1.0 | -| test.c:783:8:783:16 | ... *= ... | 1.0 | -| test.c:783:10:783:11 | sc | 1.0 | -| test.c:783:16:783:16 | 2 | 1.0 | -| test.c:785:7:785:7 | i | 1.0 | -| test.c:787:10:787:10 | 0 | 1.0 | -| test.c:792:7:792:7 | (int)... | 1.0 | -| test.c:792:7:792:7 | n | 1.0 | -| test.c:794:7:794:7 | n | 1.0 | -| test.c:794:7:794:11 | ... > ... | 1.0 | -| test.c:794:11:794:11 | 0 | 1.0 | -| test.c:794:11:794:11 | (unsigned int)... | 1.0 | -| test.c:795:9:795:9 | (int)... | 1.0 | -| test.c:795:9:795:9 | n | 1.0 | -| test.c:798:7:798:7 | n | 2.0 | -| test.c:798:7:798:12 | ... != ... | 1.0 | -| test.c:798:12:798:12 | 0 | 1.0 | -| test.c:798:12:798:12 | (unsigned int)... | 1.0 | -| test.c:799:9:799:9 | (int)... | 2.0 | -| test.c:799:9:799:9 | n | 2.0 | -| test.c:801:9:801:9 | (int)... | 2.0 | -| test.c:801:9:801:9 | n | 2.0 | -| test.c:804:7:804:8 | ! ... | 1.0 | -| test.c:804:8:804:8 | n | 4.0 | -| test.c:805:9:805:9 | (int)... | 4.0 | -| test.c:805:9:805:9 | n | 4.0 | -| test.c:807:9:807:9 | (int)... | 4.0 | -| test.c:807:9:807:9 | n | 4.0 | -| test.c:810:10:810:10 | n | 13.0 | -| test.c:810:10:810:15 | ... != ... | 1.0 | -| test.c:810:15:810:15 | 0 | 1.0 | -| test.c:810:15:810:15 | (unsigned int)... | 1.0 | -| test.c:811:5:811:5 | n | 13.0 | -| test.c:811:5:811:7 | ... -- | 13.0 | -| test.c:814:7:814:7 | (int)... | 13.0 | -| test.c:814:7:814:7 | n | 13.0 | -| test.c:818:7:818:7 | (int)... | 1.0 | -| test.c:818:7:818:7 | n | 1.0 | -| test.c:818:7:818:11 | ... < ... | 1.0 | -| test.c:818:11:818:11 | 0 | 1.0 | -| test.c:821:7:821:7 | (int)... | 1.0 | -| test.c:821:7:821:7 | n | 1.0 | -| test.c:821:7:821:12 | ... == ... | 1.0 | -| test.c:821:12:821:12 | 0 | 1.0 | -| test.c:822:9:822:9 | (int)... | 1.0 | -| test.c:822:9:822:9 | n | 1.0 | -| test.c:824:9:824:9 | (int)... | 1.0 | -| test.c:824:9:824:9 | n | 1.0 | -| test.c:827:7:827:7 | n | 2.0 | -| test.c:828:9:828:9 | (int)... | 2.0 | -| test.c:828:9:828:9 | n | 2.0 | -| test.c:830:9:830:9 | (int)... | 2.0 | -| test.c:830:9:830:9 | n | 2.0 | -| test.c:833:10:833:10 | (int)... | 13.0 | -| test.c:833:10:833:10 | n | 12.0 | -| test.c:833:10:833:15 | ... != ... | 1.0 | -| test.c:833:15:833:15 | 0 | 1.0 | -| test.c:834:5:834:5 | n | 12.0 | -| test.c:834:5:834:7 | ... -- | 12.0 | -| test.c:837:7:837:7 | (int)... | 12.0 | -| test.c:837:7:837:7 | n | 12.0 | -| test.c:841:7:841:7 | (int)... | 1.0 | -| test.c:841:7:841:7 | n | 1.0 | -| test.c:841:7:841:12 | ... != ... | 1.0 | -| test.c:841:12:841:12 | 0 | 1.0 | -| test.c:842:9:842:9 | (int)... | 1.0 | -| test.c:842:9:842:9 | n | 1.0 | -| test.c:842:9:842:14 | ... >= ... | 1.0 | -| test.c:842:14:842:14 | 0 | 1.0 | -| test.c:843:11:843:11 | (int)... | 1.0 | -| test.c:843:11:843:11 | n | 1.0 | -| test.c:847:7:847:7 | (int)... | 2.0 | -| test.c:847:7:847:7 | n | 2.0 | -| test.c:847:7:847:12 | ... >= ... | 1.0 | -| test.c:847:12:847:12 | 5 | 1.0 | -| test.c:848:9:848:9 | 2 | 1.0 | -| test.c:848:9:848:13 | ... * ... | 2.0 | -| test.c:848:9:848:18 | ... - ... | 2.0 | -| test.c:848:9:848:23 | ... == ... | 1.0 | -| test.c:848:13:848:13 | (int)... | 2.0 | -| test.c:848:13:848:13 | n | 2.0 | -| test.c:848:17:848:18 | 10 | 1.0 | -| test.c:848:23:848:23 | 0 | 1.0 | -| test.c:851:9:851:9 | (int)... | 2.0 | -| test.c:851:9:851:9 | n | 2.0 | -| test.c:854:7:854:7 | (int)... | 3.0 | -| test.c:854:7:854:7 | n | 3.0 | -| test.c:854:7:854:17 | ... != ... | 1.0 | -| test.c:854:7:854:32 | ... && ... | 1.0 | -| test.c:854:12:854:17 | - ... | 1.0 | -| test.c:854:13:854:17 | 32768 | 1.0 | -| test.c:854:22:854:22 | (int)... | 3.0 | -| test.c:854:22:854:22 | n | 3.0 | -| test.c:854:22:854:32 | ... != ... | 1.0 | -| test.c:854:27:854:32 | - ... | 1.0 | -| test.c:854:28:854:32 | 32767 | 1.0 | -| test.c:855:9:855:9 | (int)... | 3.0 | -| test.c:855:9:855:9 | n | 3.0 | -| test.c:858:7:858:7 | (int)... | 4.0 | -| test.c:858:7:858:7 | n | 4.0 | -| test.c:858:7:858:12 | ... >= ... | 1.0 | -| test.c:858:12:858:12 | 0 | 1.0 | -| test.c:859:5:859:5 | n | 4.0 | -| test.c:859:5:859:14 | ... ? ... : ... | 16.0 | -| test.c:859:10:859:10 | (int)... | 4.0 | -| test.c:859:10:859:10 | n | 4.0 | -| test.c:859:14:859:14 | (int)... | 4.0 | -| test.c:859:14:859:14 | n | 4.0 | -| test.c:860:5:860:6 | ! ... | 1.0 | -| test.c:860:5:860:14 | ... ? ... : ... | 64.0 | -| test.c:860:6:860:6 | n | 8.0 | -| test.c:860:10:860:10 | (int)... | 8.0 | -| test.c:860:10:860:10 | n | 8.0 | -| test.c:860:14:860:14 | (int)... | 8.0 | -| test.c:860:14:860:14 | n | 8.0 | -| test.c:871:7:871:8 | (unsigned long)... | 1.0 | -| test.c:871:7:871:8 | ss | 1.0 | -| test.c:871:7:871:22 | ... < ... | 1.0 | -| test.c:871:12:871:22 | sizeof(int) | 1.0 | -| test.c:872:9:872:10 | (int)... | 1.0 | -| test.c:872:9:872:10 | ss | 1.0 | -| test.c:875:7:875:8 | (int)... | 2.0 | -| test.c:875:7:875:8 | ss | 2.0 | -| test.c:875:7:875:17 | ... < ... | 1.0 | -| test.c:875:12:875:17 | 32769 | 1.0 | -| test.c:876:9:876:10 | (int)... | 2.0 | -| test.c:876:9:876:10 | ss | 2.0 | -| test.c:879:7:879:15 | (int)... | 1.0 | -| test.c:879:7:879:15 | (short)... | 1.0 | -| test.c:879:7:879:20 | ... >= ... | 1.0 | -| test.c:879:14:879:15 | us | 1.0 | -| test.c:879:20:879:20 | 0 | 1.0 | -| test.c:880:9:880:10 | (int)... | 1.0 | -| test.c:880:9:880:10 | us | 1.0 | -| test.c:883:7:883:15 | (int)... | 2.0 | -| test.c:883:7:883:15 | (short)... | 2.0 | -| test.c:883:7:883:21 | ... >= ... | 1.0 | -| test.c:883:14:883:15 | us | 2.0 | -| test.c:883:20:883:21 | - ... | 1.0 | -| test.c:883:21:883:21 | 1 | 1.0 | -| test.c:884:9:884:10 | (int)... | 2.0 | -| test.c:884:9:884:10 | us | 2.0 | -| test.c:887:7:887:8 | (unsigned long)... | 3.0 | -| test.c:887:7:887:8 | ss | 3.0 | -| test.c:887:7:887:23 | ... >= ... | 1.0 | -| test.c:887:13:887:23 | sizeof(int) | 1.0 | -| test.c:888:9:888:10 | (int)... | 3.0 | -| test.c:888:9:888:10 | ss | 3.0 | -| test.c:891:7:891:8 | (int)... | 4.0 | -| test.c:891:7:891:8 | ss | 4.0 | -| test.c:891:7:891:12 | (unsigned long)... | 4.0 | -| test.c:891:7:891:12 | ... + ... | 4.0 | -| test.c:891:7:891:26 | ... < ... | 1.0 | -| test.c:891:12:891:12 | 1 | 1.0 | -| test.c:891:16:891:26 | sizeof(int) | 1.0 | -| test.c:892:9:892:10 | (int)... | 4.0 | -| test.c:892:9:892:10 | ss | 4.0 | -| test.c:898:8:898:8 | s | 1.0 | -| test.c:898:8:898:12 | ... = ... | 1.0 | -| test.c:898:12:898:12 | 0 | 1.0 | -| test.c:898:15:898:15 | s | 13.0 | -| test.c:898:15:898:20 | ... < ... | 1.0 | -| test.c:898:19:898:20 | 10 | 1.0 | -| test.c:898:23:898:23 | s | 13.0 | -| test.c:898:23:898:25 | ... ++ | 13.0 | -| test.c:899:18:899:18 | s | 13.0 | -| test.c:899:18:899:22 | ... + ... | 13.0 | -| test.c:899:22:899:22 | s | 13.0 | -| test.c:900:9:900:14 | result | 13.0 | -| test.c:905:10:905:11 | 0 | 1.0 | -| test.c:906:7:906:7 | i | 1.0 | -| test.c:906:7:906:11 | ... < ... | 1.0 | -| test.c:906:11:906:11 | 0 | 1.0 | -| test.c:907:9:907:9 | i | 1.0 | -| test.c:910:20:910:20 | 0 | 1.0 | -| test.c:910:20:910:20 | (unsigned int)... | 1.0 | -| test.c:911:7:911:7 | u | 1.0 | -| test.c:911:7:911:11 | ... < ... | 1.0 | -| test.c:911:11:911:11 | 0 | 1.0 | -| test.c:911:11:911:11 | (unsigned int)... | 1.0 | -| test.c:912:9:912:9 | (int)... | 1.0 | -| test.c:912:9:912:9 | u | 1.0 | -| test.c:917:12:917:12 | s | 1.0 | -| test.c:917:12:917:16 | ... % ... | 1.0 | -| test.c:917:16:917:16 | 5 | 1.0 | -| test.c:918:7:918:8 | s2 | 1.0 | -| test.c:923:7:923:7 | x | 1.0 | -| test.c:924:9:924:9 | y | 1.0 | -| test.c:924:9:924:14 | ... != ... | 1.0 | -| test.c:924:14:924:14 | 0 | 1.0 | -| test.c:925:12:925:12 | 0 | 1.0 | -| test.c:928:7:928:7 | y | 2.0 | -| test.c:937:7:937:7 | x | 1.0 | -| test.c:937:7:937:13 | ... >= ... | 1.0 | -| test.c:937:12:937:13 | 10 | 1.0 | -| test.c:942:7:942:7 | x | 13.0 | -| test.c:947:16:947:26 | 2147483647 | 1.0 | -| test.c:948:16:948:19 | 256 | 1.0 | -| test.c:949:7:949:13 | (...) | 1.0 | -| test.c:949:7:949:20 | ... <= ... | 1.0 | -| test.c:949:8:949:8 | x | 1.0 | -| test.c:949:8:949:12 | ... + ... | 1.0 | -| test.c:949:12:949:12 | y | 1.0 | -| test.c:949:18:949:20 | 512 | 1.0 | -| test.c:950:9:950:9 | x | 1.0 | -| test.c:951:9:951:9 | y | 1.0 | +| test.c:776:5:776:14 | ... = ... | 1.0 | +| test.c:776:9:776:9 | i | 1.0 | +| test.c:776:9:776:14 | ... * ... | 1.0 | +| test.c:776:13:776:14 | - ... | 1.0 | +| test.c:776:14:776:14 | 3 | 1.0 | +| test.c:777:9:777:9 | i | 1.0 | +| test.c:779:5:779:5 | i | 1.0 | +| test.c:779:5:779:10 | ... *= ... | 1.0 | +| test.c:779:10:779:10 | 7 | 1.0 | +| test.c:780:9:780:9 | i | 1.0 | +| test.c:782:5:782:5 | i | 1.0 | +| test.c:782:5:782:12 | ... *= ... | 1.0 | +| test.c:782:10:782:12 | - ... | 1.0 | +| test.c:782:11:782:12 | 11 | 1.0 | +| test.c:783:9:783:9 | i | 1.0 | +| test.c:785:7:785:7 | i | 2.0 | +| test.c:785:7:785:13 | ... == ... | 1.0 | +| test.c:785:12:785:13 | - ... | 1.0 | +| test.c:785:13:785:13 | 1 | 1.0 | +| test.c:786:5:786:5 | i | 1.0 | +| test.c:786:5:786:27 | ... = ... | 2.0 | +| test.c:786:9:786:9 | i | 2.0 | +| test.c:786:9:786:27 | ... * ... | 2.0 | +| test.c:786:13:786:27 | (int)... | 1.0 | +| test.c:786:18:786:27 | 4294967295 | 1.0 | +| test.c:787:9:787:9 | i | 2.0 | +| test.c:789:3:789:3 | i | 1.0 | +| test.c:789:3:789:12 | ... = ... | 4.0 | +| test.c:789:7:789:7 | i | 4.0 | +| test.c:789:7:789:12 | ... * ... | 4.0 | +| test.c:789:11:789:12 | - ... | 1.0 | +| test.c:789:12:789:12 | 1 | 1.0 | +| test.c:790:10:790:10 | i | 4.0 | +| test.c:792:20:792:20 | 1 | 1.0 | +| test.c:792:20:792:20 | (signed char)... | 1.0 | +| test.c:793:3:793:3 | i | 1.0 | +| test.c:793:3:793:17 | ... = ... | 1.0 | +| test.c:793:7:793:17 | (...) | 1.0 | +| test.c:793:7:793:17 | (int)... | 1.0 | +| test.c:793:8:793:11 | * ... | 1.0 | +| test.c:793:8:793:16 | ... *= ... | 1.0 | +| test.c:793:10:793:11 | sc | 1.0 | +| test.c:793:16:793:16 | 2 | 1.0 | +| test.c:795:7:795:7 | i | 1.0 | +| test.c:797:10:797:10 | 0 | 1.0 | +| test.c:802:7:802:7 | (int)... | 1.0 | +| test.c:802:7:802:7 | n | 1.0 | +| test.c:804:7:804:7 | n | 1.0 | +| test.c:804:7:804:11 | ... > ... | 1.0 | +| test.c:804:11:804:11 | 0 | 1.0 | +| test.c:804:11:804:11 | (unsigned int)... | 1.0 | +| test.c:805:9:805:9 | (int)... | 1.0 | +| test.c:805:9:805:9 | n | 1.0 | +| test.c:808:7:808:7 | n | 2.0 | +| test.c:808:7:808:12 | ... != ... | 1.0 | +| test.c:808:12:808:12 | 0 | 1.0 | +| test.c:808:12:808:12 | (unsigned int)... | 1.0 | +| test.c:809:9:809:9 | (int)... | 2.0 | +| test.c:809:9:809:9 | n | 2.0 | +| test.c:811:9:811:9 | (int)... | 2.0 | +| test.c:811:9:811:9 | n | 2.0 | +| test.c:814:7:814:8 | ! ... | 1.0 | +| test.c:814:8:814:8 | n | 4.0 | +| test.c:815:9:815:9 | (int)... | 4.0 | +| test.c:815:9:815:9 | n | 4.0 | +| test.c:817:9:817:9 | (int)... | 4.0 | +| test.c:817:9:817:9 | n | 4.0 | +| test.c:820:10:820:10 | n | 13.0 | +| test.c:820:10:820:15 | ... != ... | 1.0 | +| test.c:820:15:820:15 | 0 | 1.0 | +| test.c:820:15:820:15 | (unsigned int)... | 1.0 | +| test.c:821:5:821:5 | n | 13.0 | +| test.c:821:5:821:7 | ... -- | 13.0 | +| test.c:824:7:824:7 | (int)... | 13.0 | +| test.c:824:7:824:7 | n | 13.0 | +| test.c:828:7:828:7 | (int)... | 1.0 | +| test.c:828:7:828:7 | n | 1.0 | +| test.c:828:7:828:11 | ... < ... | 1.0 | +| test.c:828:11:828:11 | 0 | 1.0 | +| test.c:831:7:831:7 | (int)... | 1.0 | +| test.c:831:7:831:7 | n | 1.0 | +| test.c:831:7:831:12 | ... == ... | 1.0 | +| test.c:831:12:831:12 | 0 | 1.0 | +| test.c:832:9:832:9 | (int)... | 1.0 | +| test.c:832:9:832:9 | n | 1.0 | +| test.c:834:9:834:9 | (int)... | 1.0 | +| test.c:834:9:834:9 | n | 1.0 | +| test.c:837:7:837:7 | n | 2.0 | +| test.c:838:9:838:9 | (int)... | 2.0 | +| test.c:838:9:838:9 | n | 2.0 | +| test.c:840:9:840:9 | (int)... | 2.0 | +| test.c:840:9:840:9 | n | 2.0 | +| test.c:843:10:843:10 | (int)... | 13.0 | +| test.c:843:10:843:10 | n | 12.0 | +| test.c:843:10:843:15 | ... != ... | 1.0 | +| test.c:843:15:843:15 | 0 | 1.0 | +| test.c:844:5:844:5 | n | 12.0 | +| test.c:844:5:844:7 | ... -- | 12.0 | +| test.c:847:7:847:7 | (int)... | 12.0 | +| test.c:847:7:847:7 | n | 12.0 | +| test.c:851:7:851:7 | (int)... | 1.0 | +| test.c:851:7:851:7 | n | 1.0 | +| test.c:851:7:851:12 | ... != ... | 1.0 | +| test.c:851:12:851:12 | 0 | 1.0 | +| test.c:852:9:852:9 | (int)... | 1.0 | +| test.c:852:9:852:9 | n | 1.0 | +| test.c:852:9:852:14 | ... >= ... | 1.0 | +| test.c:852:14:852:14 | 0 | 1.0 | +| test.c:853:11:853:11 | (int)... | 1.0 | +| test.c:853:11:853:11 | n | 1.0 | +| test.c:857:7:857:7 | (int)... | 2.0 | +| test.c:857:7:857:7 | n | 2.0 | +| test.c:857:7:857:12 | ... >= ... | 1.0 | +| test.c:857:12:857:12 | 5 | 1.0 | +| test.c:858:9:858:9 | 2 | 1.0 | +| test.c:858:9:858:13 | ... * ... | 2.0 | +| test.c:858:9:858:18 | ... - ... | 2.0 | +| test.c:858:9:858:23 | ... == ... | 1.0 | +| test.c:858:13:858:13 | (int)... | 2.0 | +| test.c:858:13:858:13 | n | 2.0 | +| test.c:858:17:858:18 | 10 | 1.0 | +| test.c:858:23:858:23 | 0 | 1.0 | +| test.c:861:9:861:9 | (int)... | 2.0 | +| test.c:861:9:861:9 | n | 2.0 | +| test.c:864:7:864:7 | (int)... | 3.0 | +| test.c:864:7:864:7 | n | 3.0 | +| test.c:864:7:864:17 | ... != ... | 1.0 | +| test.c:864:7:864:32 | ... && ... | 1.0 | +| test.c:864:12:864:17 | - ... | 1.0 | +| test.c:864:13:864:17 | 32768 | 1.0 | +| test.c:864:22:864:22 | (int)... | 3.0 | +| test.c:864:22:864:22 | n | 3.0 | +| test.c:864:22:864:32 | ... != ... | 1.0 | +| test.c:864:27:864:32 | - ... | 1.0 | +| test.c:864:28:864:32 | 32767 | 1.0 | +| test.c:865:9:865:9 | (int)... | 3.0 | +| test.c:865:9:865:9 | n | 3.0 | +| test.c:868:7:868:7 | (int)... | 4.0 | +| test.c:868:7:868:7 | n | 4.0 | +| test.c:868:7:868:12 | ... >= ... | 1.0 | +| test.c:868:12:868:12 | 0 | 1.0 | +| test.c:869:5:869:5 | n | 4.0 | +| test.c:869:5:869:14 | ... ? ... : ... | 16.0 | +| test.c:869:10:869:10 | (int)... | 4.0 | +| test.c:869:10:869:10 | n | 4.0 | +| test.c:869:14:869:14 | (int)... | 4.0 | +| test.c:869:14:869:14 | n | 4.0 | +| test.c:870:5:870:6 | ! ... | 1.0 | +| test.c:870:5:870:14 | ... ? ... : ... | 64.0 | +| test.c:870:6:870:6 | n | 8.0 | +| test.c:870:10:870:10 | (int)... | 8.0 | +| test.c:870:10:870:10 | n | 8.0 | +| test.c:870:14:870:14 | (int)... | 8.0 | +| test.c:870:14:870:14 | n | 8.0 | +| test.c:881:7:881:8 | (unsigned long)... | 1.0 | +| test.c:881:7:881:8 | ss | 1.0 | +| test.c:881:7:881:22 | ... < ... | 1.0 | +| test.c:881:12:881:22 | sizeof(int) | 1.0 | +| test.c:882:9:882:10 | (int)... | 1.0 | +| test.c:882:9:882:10 | ss | 1.0 | +| test.c:885:7:885:8 | (int)... | 2.0 | +| test.c:885:7:885:8 | ss | 2.0 | +| test.c:885:7:885:17 | ... < ... | 1.0 | +| test.c:885:12:885:17 | 32769 | 1.0 | +| test.c:886:9:886:10 | (int)... | 2.0 | +| test.c:886:9:886:10 | ss | 2.0 | +| test.c:889:7:889:15 | (int)... | 1.0 | +| test.c:889:7:889:15 | (short)... | 1.0 | +| test.c:889:7:889:20 | ... >= ... | 1.0 | +| test.c:889:14:889:15 | us | 1.0 | +| test.c:889:20:889:20 | 0 | 1.0 | +| test.c:890:9:890:10 | (int)... | 1.0 | +| test.c:890:9:890:10 | us | 1.0 | +| test.c:893:7:893:15 | (int)... | 2.0 | +| test.c:893:7:893:15 | (short)... | 2.0 | +| test.c:893:7:893:21 | ... >= ... | 1.0 | +| test.c:893:14:893:15 | us | 2.0 | +| test.c:893:20:893:21 | - ... | 1.0 | +| test.c:893:21:893:21 | 1 | 1.0 | +| test.c:894:9:894:10 | (int)... | 2.0 | +| test.c:894:9:894:10 | us | 2.0 | +| test.c:897:7:897:8 | (unsigned long)... | 3.0 | +| test.c:897:7:897:8 | ss | 3.0 | +| test.c:897:7:897:23 | ... >= ... | 1.0 | +| test.c:897:13:897:23 | sizeof(int) | 1.0 | +| test.c:898:9:898:10 | (int)... | 3.0 | +| test.c:898:9:898:10 | ss | 3.0 | +| test.c:901:7:901:8 | (int)... | 4.0 | +| test.c:901:7:901:8 | ss | 4.0 | +| test.c:901:7:901:12 | (unsigned long)... | 4.0 | +| test.c:901:7:901:12 | ... + ... | 4.0 | +| test.c:901:7:901:26 | ... < ... | 1.0 | +| test.c:901:12:901:12 | 1 | 1.0 | +| test.c:901:16:901:26 | sizeof(int) | 1.0 | +| test.c:902:9:902:10 | (int)... | 4.0 | +| test.c:902:9:902:10 | ss | 4.0 | +| test.c:908:8:908:8 | s | 1.0 | +| test.c:908:8:908:12 | ... = ... | 1.0 | +| test.c:908:12:908:12 | 0 | 1.0 | +| test.c:908:15:908:15 | s | 13.0 | +| test.c:908:15:908:20 | ... < ... | 1.0 | +| test.c:908:19:908:20 | 10 | 1.0 | +| test.c:908:23:908:23 | s | 13.0 | +| test.c:908:23:908:25 | ... ++ | 13.0 | +| test.c:909:18:909:18 | s | 13.0 | +| test.c:909:18:909:22 | ... + ... | 13.0 | +| test.c:909:22:909:22 | s | 13.0 | +| test.c:910:9:910:14 | result | 13.0 | +| test.c:915:10:915:11 | 0 | 1.0 | +| test.c:916:7:916:7 | i | 1.0 | +| test.c:916:7:916:11 | ... < ... | 1.0 | +| test.c:916:11:916:11 | 0 | 1.0 | +| test.c:917:9:917:9 | i | 1.0 | +| test.c:920:20:920:20 | 0 | 1.0 | +| test.c:920:20:920:20 | (unsigned int)... | 1.0 | +| test.c:921:7:921:7 | u | 1.0 | +| test.c:921:7:921:11 | ... < ... | 1.0 | +| test.c:921:11:921:11 | 0 | 1.0 | +| test.c:921:11:921:11 | (unsigned int)... | 1.0 | +| test.c:922:9:922:9 | (int)... | 1.0 | +| test.c:922:9:922:9 | u | 1.0 | +| test.c:927:12:927:12 | s | 1.0 | +| test.c:927:12:927:16 | ... % ... | 1.0 | +| test.c:927:16:927:16 | 5 | 1.0 | +| test.c:928:7:928:8 | s2 | 1.0 | +| test.c:933:7:933:7 | x | 1.0 | +| test.c:934:9:934:9 | y | 1.0 | +| test.c:934:9:934:14 | ... != ... | 1.0 | +| test.c:934:14:934:14 | 0 | 1.0 | +| test.c:935:12:935:12 | 0 | 1.0 | +| test.c:938:7:938:7 | y | 2.0 | +| test.c:947:7:947:7 | x | 1.0 | +| test.c:947:7:947:13 | ... >= ... | 1.0 | +| test.c:947:12:947:13 | 10 | 1.0 | +| test.c:952:7:952:7 | x | 13.0 | +| test.c:957:16:957:26 | 2147483647 | 1.0 | +| test.c:958:16:958:19 | 256 | 1.0 | +| test.c:959:7:959:13 | (...) | 1.0 | +| test.c:959:7:959:20 | ... <= ... | 1.0 | +| test.c:959:8:959:8 | x | 1.0 | +| test.c:959:8:959:12 | ... + ... | 1.0 | +| test.c:959:12:959:12 | y | 1.0 | +| test.c:959:18:959:20 | 512 | 1.0 | +| test.c:960:9:960:9 | x | 1.0 | +| test.c:961:9:961:9 | y | 1.0 | | test.cpp:9:11:9:12 | - ... | 1.0 | | test.cpp:9:12:9:12 | 1 | 1.0 | | test.cpp:10:7:10:7 | (bool)... | 1.0 | diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryLower.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryLower.expected index 48925507106..3edc677b717 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryLower.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryLower.expected @@ -1,148 +1,148 @@ | test.c:154:10:154:40 | ... ? ... : ... | -1.0 | 1.0 | -1.0 | -| test.c:357:8:357:23 | ... ? ... : ... | 0.0 | 0.0 | 10.0 | -| test.c:358:8:358:24 | ... ? ... : ... | 0.0 | 10.0 | 0.0 | -| test.c:366:10:366:15 | ... ? ... : ... | 0.0 | 0.0 | 5.0 | -| test.c:367:10:367:17 | ... ? ... : ... | 0.0 | 0.0 | 500.0 | -| test.c:368:10:368:21 | ... ? ... : ... | 1.0 | 1.0 | 500.0 | -| test.c:369:10:369:36 | ... ? ... : ... | 0.0 | 1.0 | 5.0 | -| test.c:370:10:370:38 | ... ? ... : ... | 0.0 | 1.0 | 500.0 | -| test.c:371:10:371:39 | ... ? ... : ... | 1.0 | 1.0 | 500.0 | -| test.c:379:8:379:24 | ... ? ... : ... | 101.0 | 101.0 | 110.0 | -| test.c:380:8:380:25 | ... ? ... : ... | 101.0 | 110.0 | 101.0 | -| test.c:385:10:385:21 | ... ? ... : ... | 0.0 | 0.0 | 5.0 | -| test.c:386:10:386:21 | ... ? ... : ... | 100.0 | 100.0 | 5.0 | -| test.c:387:10:387:38 | ... ? ... : ... | 0.0 | 100.0 | 5.0 | -| test.c:394:14:394:108 | ... ? ... : ... | 0.14333887 | 0.14333887 | 0.40496805 | -| test.c:394:18:394:95 | ... ? ... : ... | 0.14333887 | 0.14333887 | 0.21540225 | -| test.c:394:22:394:82 | ... ? ... : ... | 0.14333887 | 0.14333887 | 0.39206458 | -| test.c:394:26:394:69 | ... ? ... : ... | 0.14333887 | 0.14333887 | 0.35279203 | -| test.c:394:30:394:56 | ... ? ... : ... | 0.14333887 | 0.47438827 | 0.14333887 | -| test.c:395:14:395:108 | ... ? ... : ... | 0.22247853 | 0.22247853 | 0.5297741 | -| test.c:395:18:395:95 | ... ? ... : ... | 0.22247853 | 0.22247853 | 0.59270465 | -| test.c:395:22:395:82 | ... ? ... : ... | 0.22247853 | 0.22247853 | 0.32661893 | -| test.c:395:26:395:69 | ... ? ... : ... | 0.22247853 | 0.34183348 | 0.22247853 | -| test.c:395:30:395:56 | ... ? ... : ... | 0.34183348 | 0.34183348 | 0.3533464 | -| test.c:396:14:396:108 | ... ? ... : ... | 0.05121256 | 0.05121256 | 0.67981451 | -| test.c:396:18:396:95 | ... ? ... : ... | 0.05121256 | 0.05121256 | 0.79310745 | -| test.c:396:22:396:82 | ... ? ... : ... | 0.05121256 | 0.31235514 | 0.05121256 | -| test.c:396:26:396:69 | ... ? ... : ... | 0.31235514 | 0.31478084 | 0.31235514 | -| test.c:396:30:396:56 | ... ? ... : ... | 0.31478084 | 0.77429603 | 0.31478084 | -| test.c:397:14:397:108 | ... ? ... : ... | 0.36976948 | 0.36976948 | 0.83866835 | -| test.c:397:18:397:95 | ... ? ... : ... | 0.36976948 | 0.44729556 | 0.36976948 | -| test.c:397:22:397:82 | ... ? ... : ... | 0.44729556 | 0.44729556 | 0.59952732 | -| test.c:397:26:397:69 | ... ? ... : ... | 0.44729556 | 0.44729556 | 0.98997262 | -| test.c:397:30:397:56 | ... ? ... : ... | 0.44729556 | 0.44729556 | 0.80599202 | -| test.c:398:14:398:108 | ... ? ... : ... | 0.10597712 | 0.10597712 | 0.68734874 | -| test.c:398:18:398:95 | ... ? ... : ... | 0.10597712 | 0.10597712 | 0.72485966 | -| test.c:398:22:398:82 | ... ? ... : ... | 0.10597712 | 0.10597712 | 0.21778426 | -| test.c:398:26:398:69 | ... ? ... : ... | 0.10597712 | 0.49311828 | 0.10597712 | -| test.c:398:30:398:56 | ... ? ... : ... | 0.49311828 | 0.49311828 | 0.90389911 | -| test.c:399:14:399:108 | ... ? ... : ... | 0.1078665 | 0.1078665 | 0.58440865 | -| test.c:399:18:399:95 | ... ? ... : ... | 0.1078665 | 0.1078665 | 0.34808892 | -| test.c:399:22:399:82 | ... ? ... : ... | 0.1078665 | 0.1078665 | 0.76164052 | -| test.c:399:26:399:69 | ... ? ... : ... | 0.1078665 | 0.1078665 | 0.11884576 | -| test.c:399:30:399:56 | ... ? ... : ... | 0.1078665 | 0.47452848 | 0.1078665 | -| test.c:400:14:400:108 | ... ? ... : ... | 0.02524326 | 0.02524326 | 0.36232384 | -| test.c:400:18:400:95 | ... ? ... : ... | 0.02524326 | 0.02524326 | 0.85235179 | -| test.c:400:22:400:82 | ... ? ... : ... | 0.02524326 | 0.02524326 | 0.12516558 | -| test.c:400:26:400:69 | ... ? ... : ... | 0.02524326 | 0.02524326 | 0.95823075 | -| test.c:400:30:400:56 | ... ? ... : ... | 0.02524326 | 0.02524326 | 0.82905046 | -| test.c:401:14:401:108 | ... ? ... : ... | 0.14963485 | 0.14963485 | 0.84331272 | -| test.c:401:18:401:95 | ... ? ... : ... | 0.14963485 | 0.14963485 | 0.48640909 | -| test.c:401:22:401:82 | ... ? ... : ... | 0.14963485 | 0.14963485 | 0.45041108 | -| test.c:401:26:401:69 | ... ? ... : ... | 0.14963485 | 0.32876044 | 0.14963485 | -| test.c:401:30:401:56 | ... ? ... : ... | 0.32876044 | 0.38708626 | 0.32876044 | -| test.c:402:14:402:108 | ... ? ... : ... | 0.05328182 | 0.14800508 | 0.05328182 | -| test.c:402:18:402:95 | ... ? ... : ... | 0.14800508 | 0.14800508 | 0.37428143 | -| test.c:402:22:402:82 | ... ? ... : ... | 0.14800508 | 0.15755063 | 0.14800508 | -| test.c:402:26:402:69 | ... ? ... : ... | 0.15755063 | 0.15755063 | 0.26428481 | -| test.c:402:30:402:56 | ... ? ... : ... | 0.15755063 | 0.15755063 | 0.77086833 | -| test.c:403:14:403:108 | ... ? ... : ... | 0.27643238 | 0.27643238 | 0.69072144 | -| test.c:403:18:403:95 | ... ? ... : ... | 0.27643238 | 0.27643238 | 0.39468857 | -| test.c:403:22:403:82 | ... ? ... : ... | 0.27643238 | 0.27643238 | 0.55679274 | -| test.c:403:26:403:69 | ... ? ... : ... | 0.27643238 | 0.41736536 | 0.27643238 | -| test.c:403:30:403:56 | ... ? ... : ... | 0.41736536 | 0.41736536 | 0.76826628 | -| test.c:404:14:404:108 | ... ? ... : ... | 0.2051911 | 0.2051911 | 0.81372798 | -| test.c:404:18:404:95 | ... ? ... : ... | 0.2051911 | 0.2051911 | 0.88745559 | -| test.c:404:22:404:82 | ... ? ... : ... | 0.2051911 | 0.29904824 | 0.2051911 | -| test.c:404:26:404:69 | ... ? ... : ... | 0.29904824 | 0.29904824 | 0.76242583 | -| test.c:404:30:404:56 | ... ? ... : ... | 0.29904824 | 0.88955345 | 0.29904824 | -| test.c:405:14:405:108 | ... ? ... : ... | 0.13204114 | 0.13204114 | 0.42762647 | -| test.c:405:18:405:95 | ... ? ... : ... | 0.13204114 | 0.13204114 | 0.52031241 | -| test.c:405:22:405:82 | ... ? ... : ... | 0.13204114 | 0.42186276 | 0.13204114 | -| test.c:405:26:405:69 | ... ? ... : ... | 0.42186276 | 0.42186276 | 0.44996679 | -| test.c:405:30:405:56 | ... ? ... : ... | 0.42186276 | 0.42186276 | 0.53843358 | -| test.c:447:4:621:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:447:5:449:49 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:450:6:532:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:451:8:469:41 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:454:10:458:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:454:31:454:79 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:456:13:458:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:463:12:468:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:464:12:464:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:466:15:468:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:470:6:489:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:473:8:477:19 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:473:29:473:77 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:475:11:477:19 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:478:6:478:54 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:482:10:486:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:482:31:482:79 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:484:13:486:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:487:9:489:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:491:10:510:43 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:494:12:499:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:495:12:495:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:497:15:499:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:504:14:509:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:505:14:505:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:507:17:509:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:511:9:532:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:367:8:367:23 | ... ? ... : ... | 0.0 | 0.0 | 10.0 | +| test.c:368:8:368:24 | ... ? ... : ... | 0.0 | 10.0 | 0.0 | +| test.c:376:10:376:15 | ... ? ... : ... | 0.0 | 0.0 | 5.0 | +| test.c:377:10:377:17 | ... ? ... : ... | 0.0 | 0.0 | 500.0 | +| test.c:378:10:378:21 | ... ? ... : ... | 1.0 | 1.0 | 500.0 | +| test.c:379:10:379:36 | ... ? ... : ... | 0.0 | 1.0 | 5.0 | +| test.c:380:10:380:38 | ... ? ... : ... | 0.0 | 1.0 | 500.0 | +| test.c:381:10:381:39 | ... ? ... : ... | 1.0 | 1.0 | 500.0 | +| test.c:389:8:389:24 | ... ? ... : ... | 101.0 | 101.0 | 110.0 | +| test.c:390:8:390:25 | ... ? ... : ... | 101.0 | 110.0 | 101.0 | +| test.c:395:10:395:21 | ... ? ... : ... | 0.0 | 0.0 | 5.0 | +| test.c:396:10:396:21 | ... ? ... : ... | 100.0 | 100.0 | 5.0 | +| test.c:397:10:397:38 | ... ? ... : ... | 0.0 | 100.0 | 5.0 | +| test.c:404:14:404:108 | ... ? ... : ... | 0.14333887 | 0.14333887 | 0.40496805 | +| test.c:404:18:404:95 | ... ? ... : ... | 0.14333887 | 0.14333887 | 0.21540225 | +| test.c:404:22:404:82 | ... ? ... : ... | 0.14333887 | 0.14333887 | 0.39206458 | +| test.c:404:26:404:69 | ... ? ... : ... | 0.14333887 | 0.14333887 | 0.35279203 | +| test.c:404:30:404:56 | ... ? ... : ... | 0.14333887 | 0.47438827 | 0.14333887 | +| test.c:405:14:405:108 | ... ? ... : ... | 0.22247853 | 0.22247853 | 0.5297741 | +| test.c:405:18:405:95 | ... ? ... : ... | 0.22247853 | 0.22247853 | 0.59270465 | +| test.c:405:22:405:82 | ... ? ... : ... | 0.22247853 | 0.22247853 | 0.32661893 | +| test.c:405:26:405:69 | ... ? ... : ... | 0.22247853 | 0.34183348 | 0.22247853 | +| test.c:405:30:405:56 | ... ? ... : ... | 0.34183348 | 0.34183348 | 0.3533464 | +| test.c:406:14:406:108 | ... ? ... : ... | 0.05121256 | 0.05121256 | 0.67981451 | +| test.c:406:18:406:95 | ... ? ... : ... | 0.05121256 | 0.05121256 | 0.79310745 | +| test.c:406:22:406:82 | ... ? ... : ... | 0.05121256 | 0.31235514 | 0.05121256 | +| test.c:406:26:406:69 | ... ? ... : ... | 0.31235514 | 0.31478084 | 0.31235514 | +| test.c:406:30:406:56 | ... ? ... : ... | 0.31478084 | 0.77429603 | 0.31478084 | +| test.c:407:14:407:108 | ... ? ... : ... | 0.36976948 | 0.36976948 | 0.83866835 | +| test.c:407:18:407:95 | ... ? ... : ... | 0.36976948 | 0.44729556 | 0.36976948 | +| test.c:407:22:407:82 | ... ? ... : ... | 0.44729556 | 0.44729556 | 0.59952732 | +| test.c:407:26:407:69 | ... ? ... : ... | 0.44729556 | 0.44729556 | 0.98997262 | +| test.c:407:30:407:56 | ... ? ... : ... | 0.44729556 | 0.44729556 | 0.80599202 | +| test.c:408:14:408:108 | ... ? ... : ... | 0.10597712 | 0.10597712 | 0.68734874 | +| test.c:408:18:408:95 | ... ? ... : ... | 0.10597712 | 0.10597712 | 0.72485966 | +| test.c:408:22:408:82 | ... ? ... : ... | 0.10597712 | 0.10597712 | 0.21778426 | +| test.c:408:26:408:69 | ... ? ... : ... | 0.10597712 | 0.49311828 | 0.10597712 | +| test.c:408:30:408:56 | ... ? ... : ... | 0.49311828 | 0.49311828 | 0.90389911 | +| test.c:409:14:409:108 | ... ? ... : ... | 0.1078665 | 0.1078665 | 0.58440865 | +| test.c:409:18:409:95 | ... ? ... : ... | 0.1078665 | 0.1078665 | 0.34808892 | +| test.c:409:22:409:82 | ... ? ... : ... | 0.1078665 | 0.1078665 | 0.76164052 | +| test.c:409:26:409:69 | ... ? ... : ... | 0.1078665 | 0.1078665 | 0.11884576 | +| test.c:409:30:409:56 | ... ? ... : ... | 0.1078665 | 0.47452848 | 0.1078665 | +| test.c:410:14:410:108 | ... ? ... : ... | 0.02524326 | 0.02524326 | 0.36232384 | +| test.c:410:18:410:95 | ... ? ... : ... | 0.02524326 | 0.02524326 | 0.85235179 | +| test.c:410:22:410:82 | ... ? ... : ... | 0.02524326 | 0.02524326 | 0.12516558 | +| test.c:410:26:410:69 | ... ? ... : ... | 0.02524326 | 0.02524326 | 0.95823075 | +| test.c:410:30:410:56 | ... ? ... : ... | 0.02524326 | 0.02524326 | 0.82905046 | +| test.c:411:14:411:108 | ... ? ... : ... | 0.14963485 | 0.14963485 | 0.84331272 | +| test.c:411:18:411:95 | ... ? ... : ... | 0.14963485 | 0.14963485 | 0.48640909 | +| test.c:411:22:411:82 | ... ? ... : ... | 0.14963485 | 0.14963485 | 0.45041108 | +| test.c:411:26:411:69 | ... ? ... : ... | 0.14963485 | 0.32876044 | 0.14963485 | +| test.c:411:30:411:56 | ... ? ... : ... | 0.32876044 | 0.38708626 | 0.32876044 | +| test.c:412:14:412:108 | ... ? ... : ... | 0.05328182 | 0.14800508 | 0.05328182 | +| test.c:412:18:412:95 | ... ? ... : ... | 0.14800508 | 0.14800508 | 0.37428143 | +| test.c:412:22:412:82 | ... ? ... : ... | 0.14800508 | 0.15755063 | 0.14800508 | +| test.c:412:26:412:69 | ... ? ... : ... | 0.15755063 | 0.15755063 | 0.26428481 | +| test.c:412:30:412:56 | ... ? ... : ... | 0.15755063 | 0.15755063 | 0.77086833 | +| test.c:413:14:413:108 | ... ? ... : ... | 0.27643238 | 0.27643238 | 0.69072144 | +| test.c:413:18:413:95 | ... ? ... : ... | 0.27643238 | 0.27643238 | 0.39468857 | +| test.c:413:22:413:82 | ... ? ... : ... | 0.27643238 | 0.27643238 | 0.55679274 | +| test.c:413:26:413:69 | ... ? ... : ... | 0.27643238 | 0.41736536 | 0.27643238 | +| test.c:413:30:413:56 | ... ? ... : ... | 0.41736536 | 0.41736536 | 0.76826628 | +| test.c:414:14:414:108 | ... ? ... : ... | 0.2051911 | 0.2051911 | 0.81372798 | +| test.c:414:18:414:95 | ... ? ... : ... | 0.2051911 | 0.2051911 | 0.88745559 | +| test.c:414:22:414:82 | ... ? ... : ... | 0.2051911 | 0.29904824 | 0.2051911 | +| test.c:414:26:414:69 | ... ? ... : ... | 0.29904824 | 0.29904824 | 0.76242583 | +| test.c:414:30:414:56 | ... ? ... : ... | 0.29904824 | 0.88955345 | 0.29904824 | +| test.c:415:14:415:108 | ... ? ... : ... | 0.13204114 | 0.13204114 | 0.42762647 | +| test.c:415:18:415:95 | ... ? ... : ... | 0.13204114 | 0.13204114 | 0.52031241 | +| test.c:415:22:415:82 | ... ? ... : ... | 0.13204114 | 0.42186276 | 0.13204114 | +| test.c:415:26:415:69 | ... ? ... : ... | 0.42186276 | 0.42186276 | 0.44996679 | +| test.c:415:30:415:56 | ... ? ... : ... | 0.42186276 | 0.42186276 | 0.53843358 | +| test.c:457:4:631:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:457:5:459:49 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:460:6:542:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:461:8:479:41 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:464:10:468:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:464:31:464:79 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:466:13:468:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:473:12:478:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:474:12:474:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:476:15:478:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:480:6:499:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:483:8:487:19 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:483:29:483:77 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:485:11:487:19 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:488:6:488:54 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:492:10:496:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:492:31:492:79 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:494:13:496:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:497:9:499:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:501:10:520:43 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:504:12:509:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:505:12:505:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:507:15:509:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | | test.c:514:14:519:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | | test.c:515:14:515:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | | test.c:517:17:519:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:520:12:520:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:524:12:529:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:525:12:525:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:527:15:529:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:530:11:532:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:533:9:535:51 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:536:9:621:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:537:14:556:47 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:540:16:545:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:541:16:541:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:543:19:545:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:550:18:555:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:551:18:551:66 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:553:21:555:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:557:12:578:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:560:14:565:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:561:14:561:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:563:17:565:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:566:12:566:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:570:16:575:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:571:16:571:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:573:19:575:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:576:15:578:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:580:12:599:45 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:583:14:588:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:584:14:584:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:586:17:588:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:593:16:598:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:594:16:594:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:596:19:598:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:600:11:621:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:521:9:542:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:524:14:529:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:525:14:525:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:527:17:529:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:530:12:530:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:534:12:539:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:535:12:535:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:537:15:539:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:540:11:542:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:543:9:545:51 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:546:9:631:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:547:14:566:47 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:550:16:555:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:551:16:551:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:553:19:555:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:560:18:565:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:561:18:561:66 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:563:21:565:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:567:12:588:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:570:14:575:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:571:14:571:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:573:17:575:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:576:12:576:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:580:16:585:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:581:16:581:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:583:19:585:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:586:15:588:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:590:12:609:45 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:593:14:598:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:594:14:594:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:596:17:598:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | | test.c:603:16:608:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | | test.c:604:16:604:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | | test.c:606:19:608:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:609:14:609:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:613:14:618:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:614:14:614:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:616:17:618:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:619:13:621:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:647:20:647:36 | ... ? ... : ... | 0.0 | 0.0 | 100.0 | -| test.c:859:5:859:14 | ... ? ... : ... | 0.0 | 1.0 | 0.0 | -| test.c:860:5:860:14 | ... ? ... : ... | 0.0 | 0.0 | 1.0 | +| test.c:610:11:631:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:613:16:618:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:614:16:614:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:616:19:618:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:619:14:619:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:623:14:628:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:624:14:624:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:626:17:628:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:629:13:631:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:657:20:657:36 | ... ? ... : ... | 0.0 | 0.0 | 100.0 | +| test.c:869:5:869:14 | ... ? ... : ... | 0.0 | 1.0 | 0.0 | +| test.c:870:5:870:14 | ... ? ... : ... | 0.0 | 0.0 | 1.0 | | test.cpp:121:3:121:12 | ... ? ... : ... | 0.0 | 1.0 | 0.0 | | test.cpp:122:3:122:12 | ... ? ... : ... | 0.0 | 0.0 | 1.0 | diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryUpper.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryUpper.expected index 9c5dec067a6..9ffdab9467c 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryUpper.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryUpper.expected @@ -1,148 +1,148 @@ | test.c:154:10:154:40 | ... ? ... : ... | 2.147483647E9 | 2.147483647E9 | -1.0 | -| test.c:357:8:357:23 | ... ? ... : ... | 99.0 | 99.0 | 10.0 | -| test.c:358:8:358:24 | ... ? ... : ... | 99.0 | 10.0 | 99.0 | -| test.c:366:10:366:15 | ... ? ... : ... | 299.0 | 299.0 | 5.0 | -| test.c:367:10:367:17 | ... ? ... : ... | 500.0 | 299.0 | 500.0 | -| test.c:368:10:368:21 | ... ? ... : ... | 300.0 | 300.0 | 500.0 | -| test.c:369:10:369:36 | ... ? ... : ... | 255.0 | 300.0 | 5.0 | -| test.c:370:10:370:38 | ... ? ... : ... | 500.0 | 300.0 | 500.0 | -| test.c:371:10:371:39 | ... ? ... : ... | 300.0 | 300.0 | 500.0 | -| test.c:379:8:379:24 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 110.0 | -| test.c:380:8:380:25 | ... ? ... : ... | 4.294967295E9 | 110.0 | 4.294967295E9 | -| test.c:385:10:385:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 5.0 | -| test.c:386:10:386:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 5.0 | -| test.c:387:10:387:38 | ... ? ... : ... | 255.0 | 4.294967295E9 | 5.0 | -| test.c:394:14:394:108 | ... ? ... : ... | 0.47438827 | 0.47438827 | 0.40496805 | -| test.c:394:18:394:95 | ... ? ... : ... | 0.47438827 | 0.47438827 | 0.21540225 | -| test.c:394:22:394:82 | ... ? ... : ... | 0.47438827 | 0.47438827 | 0.39206458 | -| test.c:394:26:394:69 | ... ? ... : ... | 0.47438827 | 0.47438827 | 0.35279203 | -| test.c:394:30:394:56 | ... ? ... : ... | 0.47438827 | 0.47438827 | 0.14333887 | -| test.c:395:14:395:108 | ... ? ... : ... | 0.59270465 | 0.59270465 | 0.5297741 | -| test.c:395:18:395:95 | ... ? ... : ... | 0.59270465 | 0.3533464 | 0.59270465 | -| test.c:395:22:395:82 | ... ? ... : ... | 0.3533464 | 0.3533464 | 0.32661893 | -| test.c:395:26:395:69 | ... ? ... : ... | 0.3533464 | 0.3533464 | 0.22247853 | -| test.c:395:30:395:56 | ... ? ... : ... | 0.3533464 | 0.34183348 | 0.3533464 | -| test.c:396:14:396:108 | ... ? ... : ... | 0.79310745 | 0.79310745 | 0.67981451 | -| test.c:396:18:396:95 | ... ? ... : ... | 0.79310745 | 0.77429603 | 0.79310745 | -| test.c:396:22:396:82 | ... ? ... : ... | 0.77429603 | 0.77429603 | 0.05121256 | -| test.c:396:26:396:69 | ... ? ... : ... | 0.77429603 | 0.77429603 | 0.31235514 | -| test.c:396:30:396:56 | ... ? ... : ... | 0.77429603 | 0.77429603 | 0.31478084 | -| test.c:397:14:397:108 | ... ? ... : ... | 0.98997262 | 0.98997262 | 0.83866835 | -| test.c:397:18:397:95 | ... ? ... : ... | 0.98997262 | 0.98997262 | 0.36976948 | -| test.c:397:22:397:82 | ... ? ... : ... | 0.98997262 | 0.98997262 | 0.59952732 | -| test.c:397:26:397:69 | ... ? ... : ... | 0.98997262 | 0.80599202 | 0.98997262 | -| test.c:397:30:397:56 | ... ? ... : ... | 0.80599202 | 0.44729556 | 0.80599202 | -| test.c:398:14:398:108 | ... ? ... : ... | 0.90389911 | 0.90389911 | 0.68734874 | -| test.c:398:18:398:95 | ... ? ... : ... | 0.90389911 | 0.90389911 | 0.72485966 | -| test.c:398:22:398:82 | ... ? ... : ... | 0.90389911 | 0.90389911 | 0.21778426 | -| test.c:398:26:398:69 | ... ? ... : ... | 0.90389911 | 0.90389911 | 0.10597712 | -| test.c:398:30:398:56 | ... ? ... : ... | 0.90389911 | 0.49311828 | 0.90389911 | -| test.c:399:14:399:108 | ... ? ... : ... | 0.76164052 | 0.76164052 | 0.58440865 | -| test.c:399:18:399:95 | ... ? ... : ... | 0.76164052 | 0.76164052 | 0.34808892 | -| test.c:399:22:399:82 | ... ? ... : ... | 0.76164052 | 0.47452848 | 0.76164052 | -| test.c:399:26:399:69 | ... ? ... : ... | 0.47452848 | 0.47452848 | 0.11884576 | -| test.c:399:30:399:56 | ... ? ... : ... | 0.47452848 | 0.47452848 | 0.1078665 | -| test.c:400:14:400:108 | ... ? ... : ... | 0.95823075 | 0.95823075 | 0.36232384 | -| test.c:400:18:400:95 | ... ? ... : ... | 0.95823075 | 0.95823075 | 0.85235179 | -| test.c:400:22:400:82 | ... ? ... : ... | 0.95823075 | 0.95823075 | 0.12516558 | -| test.c:400:26:400:69 | ... ? ... : ... | 0.95823075 | 0.82905046 | 0.95823075 | -| test.c:400:30:400:56 | ... ? ... : ... | 0.82905046 | 0.02524326 | 0.82905046 | -| test.c:401:14:401:108 | ... ? ... : ... | 0.84331272 | 0.48640909 | 0.84331272 | -| test.c:401:18:401:95 | ... ? ... : ... | 0.48640909 | 0.45041108 | 0.48640909 | -| test.c:401:22:401:82 | ... ? ... : ... | 0.45041108 | 0.38708626 | 0.45041108 | -| test.c:401:26:401:69 | ... ? ... : ... | 0.38708626 | 0.38708626 | 0.14963485 | -| test.c:401:30:401:56 | ... ? ... : ... | 0.38708626 | 0.38708626 | 0.32876044 | -| test.c:402:14:402:108 | ... ? ... : ... | 0.77086833 | 0.77086833 | 0.05328182 | -| test.c:402:18:402:95 | ... ? ... : ... | 0.77086833 | 0.77086833 | 0.37428143 | -| test.c:402:22:402:82 | ... ? ... : ... | 0.77086833 | 0.77086833 | 0.14800508 | -| test.c:402:26:402:69 | ... ? ... : ... | 0.77086833 | 0.77086833 | 0.26428481 | -| test.c:402:30:402:56 | ... ? ... : ... | 0.77086833 | 0.15755063 | 0.77086833 | -| test.c:403:14:403:108 | ... ? ... : ... | 0.76826628 | 0.76826628 | 0.69072144 | -| test.c:403:18:403:95 | ... ? ... : ... | 0.76826628 | 0.76826628 | 0.39468857 | -| test.c:403:22:403:82 | ... ? ... : ... | 0.76826628 | 0.76826628 | 0.55679274 | -| test.c:403:26:403:69 | ... ? ... : ... | 0.76826628 | 0.76826628 | 0.27643238 | -| test.c:403:30:403:56 | ... ? ... : ... | 0.76826628 | 0.41736536 | 0.76826628 | -| test.c:404:14:404:108 | ... ? ... : ... | 0.88955345 | 0.88955345 | 0.81372798 | -| test.c:404:18:404:95 | ... ? ... : ... | 0.88955345 | 0.88955345 | 0.88745559 | -| test.c:404:22:404:82 | ... ? ... : ... | 0.88955345 | 0.88955345 | 0.2051911 | -| test.c:404:26:404:69 | ... ? ... : ... | 0.88955345 | 0.88955345 | 0.76242583 | -| test.c:404:30:404:56 | ... ? ... : ... | 0.88955345 | 0.88955345 | 0.29904824 | -| test.c:405:14:405:108 | ... ? ... : ... | 0.53843358 | 0.53843358 | 0.42762647 | -| test.c:405:18:405:95 | ... ? ... : ... | 0.53843358 | 0.53843358 | 0.52031241 | -| test.c:405:22:405:82 | ... ? ... : ... | 0.53843358 | 0.53843358 | 0.13204114 | -| test.c:405:26:405:69 | ... ? ... : ... | 0.53843358 | 0.53843358 | 0.44996679 | -| test.c:405:30:405:56 | ... ? ... : ... | 0.53843358 | 0.42186276 | 0.53843358 | -| test.c:447:4:621:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:447:5:449:49 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:450:6:532:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:451:8:469:41 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:454:10:458:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:454:31:454:79 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:456:13:458:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:463:12:468:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:464:12:464:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:466:15:468:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:470:6:489:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:473:8:477:19 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:473:29:473:77 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:475:11:477:19 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:478:6:478:54 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:482:10:486:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:482:31:482:79 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:484:13:486:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:487:9:489:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:491:10:510:43 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:494:12:499:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:495:12:495:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:497:15:499:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:504:14:509:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:505:14:505:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:507:17:509:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:511:9:532:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:367:8:367:23 | ... ? ... : ... | 99.0 | 99.0 | 10.0 | +| test.c:368:8:368:24 | ... ? ... : ... | 99.0 | 10.0 | 99.0 | +| test.c:376:10:376:15 | ... ? ... : ... | 299.0 | 299.0 | 5.0 | +| test.c:377:10:377:17 | ... ? ... : ... | 500.0 | 299.0 | 500.0 | +| test.c:378:10:378:21 | ... ? ... : ... | 300.0 | 300.0 | 500.0 | +| test.c:379:10:379:36 | ... ? ... : ... | 255.0 | 300.0 | 5.0 | +| test.c:380:10:380:38 | ... ? ... : ... | 500.0 | 300.0 | 500.0 | +| test.c:381:10:381:39 | ... ? ... : ... | 300.0 | 300.0 | 500.0 | +| test.c:389:8:389:24 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 110.0 | +| test.c:390:8:390:25 | ... ? ... : ... | 4.294967295E9 | 110.0 | 4.294967295E9 | +| test.c:395:10:395:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 5.0 | +| test.c:396:10:396:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 5.0 | +| test.c:397:10:397:38 | ... ? ... : ... | 255.0 | 4.294967295E9 | 5.0 | +| test.c:404:14:404:108 | ... ? ... : ... | 0.47438827 | 0.47438827 | 0.40496805 | +| test.c:404:18:404:95 | ... ? ... : ... | 0.47438827 | 0.47438827 | 0.21540225 | +| test.c:404:22:404:82 | ... ? ... : ... | 0.47438827 | 0.47438827 | 0.39206458 | +| test.c:404:26:404:69 | ... ? ... : ... | 0.47438827 | 0.47438827 | 0.35279203 | +| test.c:404:30:404:56 | ... ? ... : ... | 0.47438827 | 0.47438827 | 0.14333887 | +| test.c:405:14:405:108 | ... ? ... : ... | 0.59270465 | 0.59270465 | 0.5297741 | +| test.c:405:18:405:95 | ... ? ... : ... | 0.59270465 | 0.3533464 | 0.59270465 | +| test.c:405:22:405:82 | ... ? ... : ... | 0.3533464 | 0.3533464 | 0.32661893 | +| test.c:405:26:405:69 | ... ? ... : ... | 0.3533464 | 0.3533464 | 0.22247853 | +| test.c:405:30:405:56 | ... ? ... : ... | 0.3533464 | 0.34183348 | 0.3533464 | +| test.c:406:14:406:108 | ... ? ... : ... | 0.79310745 | 0.79310745 | 0.67981451 | +| test.c:406:18:406:95 | ... ? ... : ... | 0.79310745 | 0.77429603 | 0.79310745 | +| test.c:406:22:406:82 | ... ? ... : ... | 0.77429603 | 0.77429603 | 0.05121256 | +| test.c:406:26:406:69 | ... ? ... : ... | 0.77429603 | 0.77429603 | 0.31235514 | +| test.c:406:30:406:56 | ... ? ... : ... | 0.77429603 | 0.77429603 | 0.31478084 | +| test.c:407:14:407:108 | ... ? ... : ... | 0.98997262 | 0.98997262 | 0.83866835 | +| test.c:407:18:407:95 | ... ? ... : ... | 0.98997262 | 0.98997262 | 0.36976948 | +| test.c:407:22:407:82 | ... ? ... : ... | 0.98997262 | 0.98997262 | 0.59952732 | +| test.c:407:26:407:69 | ... ? ... : ... | 0.98997262 | 0.80599202 | 0.98997262 | +| test.c:407:30:407:56 | ... ? ... : ... | 0.80599202 | 0.44729556 | 0.80599202 | +| test.c:408:14:408:108 | ... ? ... : ... | 0.90389911 | 0.90389911 | 0.68734874 | +| test.c:408:18:408:95 | ... ? ... : ... | 0.90389911 | 0.90389911 | 0.72485966 | +| test.c:408:22:408:82 | ... ? ... : ... | 0.90389911 | 0.90389911 | 0.21778426 | +| test.c:408:26:408:69 | ... ? ... : ... | 0.90389911 | 0.90389911 | 0.10597712 | +| test.c:408:30:408:56 | ... ? ... : ... | 0.90389911 | 0.49311828 | 0.90389911 | +| test.c:409:14:409:108 | ... ? ... : ... | 0.76164052 | 0.76164052 | 0.58440865 | +| test.c:409:18:409:95 | ... ? ... : ... | 0.76164052 | 0.76164052 | 0.34808892 | +| test.c:409:22:409:82 | ... ? ... : ... | 0.76164052 | 0.47452848 | 0.76164052 | +| test.c:409:26:409:69 | ... ? ... : ... | 0.47452848 | 0.47452848 | 0.11884576 | +| test.c:409:30:409:56 | ... ? ... : ... | 0.47452848 | 0.47452848 | 0.1078665 | +| test.c:410:14:410:108 | ... ? ... : ... | 0.95823075 | 0.95823075 | 0.36232384 | +| test.c:410:18:410:95 | ... ? ... : ... | 0.95823075 | 0.95823075 | 0.85235179 | +| test.c:410:22:410:82 | ... ? ... : ... | 0.95823075 | 0.95823075 | 0.12516558 | +| test.c:410:26:410:69 | ... ? ... : ... | 0.95823075 | 0.82905046 | 0.95823075 | +| test.c:410:30:410:56 | ... ? ... : ... | 0.82905046 | 0.02524326 | 0.82905046 | +| test.c:411:14:411:108 | ... ? ... : ... | 0.84331272 | 0.48640909 | 0.84331272 | +| test.c:411:18:411:95 | ... ? ... : ... | 0.48640909 | 0.45041108 | 0.48640909 | +| test.c:411:22:411:82 | ... ? ... : ... | 0.45041108 | 0.38708626 | 0.45041108 | +| test.c:411:26:411:69 | ... ? ... : ... | 0.38708626 | 0.38708626 | 0.14963485 | +| test.c:411:30:411:56 | ... ? ... : ... | 0.38708626 | 0.38708626 | 0.32876044 | +| test.c:412:14:412:108 | ... ? ... : ... | 0.77086833 | 0.77086833 | 0.05328182 | +| test.c:412:18:412:95 | ... ? ... : ... | 0.77086833 | 0.77086833 | 0.37428143 | +| test.c:412:22:412:82 | ... ? ... : ... | 0.77086833 | 0.77086833 | 0.14800508 | +| test.c:412:26:412:69 | ... ? ... : ... | 0.77086833 | 0.77086833 | 0.26428481 | +| test.c:412:30:412:56 | ... ? ... : ... | 0.77086833 | 0.15755063 | 0.77086833 | +| test.c:413:14:413:108 | ... ? ... : ... | 0.76826628 | 0.76826628 | 0.69072144 | +| test.c:413:18:413:95 | ... ? ... : ... | 0.76826628 | 0.76826628 | 0.39468857 | +| test.c:413:22:413:82 | ... ? ... : ... | 0.76826628 | 0.76826628 | 0.55679274 | +| test.c:413:26:413:69 | ... ? ... : ... | 0.76826628 | 0.76826628 | 0.27643238 | +| test.c:413:30:413:56 | ... ? ... : ... | 0.76826628 | 0.41736536 | 0.76826628 | +| test.c:414:14:414:108 | ... ? ... : ... | 0.88955345 | 0.88955345 | 0.81372798 | +| test.c:414:18:414:95 | ... ? ... : ... | 0.88955345 | 0.88955345 | 0.88745559 | +| test.c:414:22:414:82 | ... ? ... : ... | 0.88955345 | 0.88955345 | 0.2051911 | +| test.c:414:26:414:69 | ... ? ... : ... | 0.88955345 | 0.88955345 | 0.76242583 | +| test.c:414:30:414:56 | ... ? ... : ... | 0.88955345 | 0.88955345 | 0.29904824 | +| test.c:415:14:415:108 | ... ? ... : ... | 0.53843358 | 0.53843358 | 0.42762647 | +| test.c:415:18:415:95 | ... ? ... : ... | 0.53843358 | 0.53843358 | 0.52031241 | +| test.c:415:22:415:82 | ... ? ... : ... | 0.53843358 | 0.53843358 | 0.13204114 | +| test.c:415:26:415:69 | ... ? ... : ... | 0.53843358 | 0.53843358 | 0.44996679 | +| test.c:415:30:415:56 | ... ? ... : ... | 0.53843358 | 0.42186276 | 0.53843358 | +| test.c:457:4:631:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:457:5:459:49 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:460:6:542:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:461:8:479:41 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:464:10:468:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:464:31:464:79 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:466:13:468:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:473:12:478:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:474:12:474:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:476:15:478:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:480:6:499:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:483:8:487:19 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:483:29:483:77 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:485:11:487:19 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:488:6:488:54 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:492:10:496:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:492:31:492:79 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:494:13:496:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:497:9:499:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:501:10:520:43 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:504:12:509:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:505:12:505:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:507:15:509:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | | test.c:514:14:519:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | | test.c:515:14:515:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | | test.c:517:17:519:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:520:12:520:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:524:12:529:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:525:12:525:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:527:15:529:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:530:11:532:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:533:9:535:51 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:536:9:621:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:537:14:556:47 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:540:16:545:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:541:16:541:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:543:19:545:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:550:18:555:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:551:18:551:66 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:553:21:555:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:557:12:578:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:560:14:565:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:561:14:561:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:563:17:565:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:566:12:566:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:570:16:575:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:571:16:571:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:573:19:575:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:576:15:578:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:580:12:599:45 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:583:14:588:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:584:14:584:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:586:17:588:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:593:16:598:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:594:16:594:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:596:19:598:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:600:11:621:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:521:9:542:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:524:14:529:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:525:14:525:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:527:17:529:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:530:12:530:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:534:12:539:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:535:12:535:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:537:15:539:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:540:11:542:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:543:9:545:51 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:546:9:631:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:547:14:566:47 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:550:16:555:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:551:16:551:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:553:19:555:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:560:18:565:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:561:18:561:66 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:563:21:565:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:567:12:588:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:570:14:575:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:571:14:571:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:573:17:575:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:576:12:576:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:580:16:585:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:581:16:581:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:583:19:585:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:586:15:588:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:590:12:609:45 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:593:14:598:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:594:14:594:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:596:17:598:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | | test.c:603:16:608:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | | test.c:604:16:604:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | | test.c:606:19:608:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:609:14:609:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:613:14:618:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:614:14:614:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:616:17:618:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:619:13:621:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:647:20:647:36 | ... ? ... : ... | 100.0 | 99.0 | 100.0 | -| test.c:859:5:859:14 | ... ? ... : ... | 32767.0 | 32767.0 | 0.0 | -| test.c:860:5:860:14 | ... ? ... : ... | 32767.0 | 0.0 | 32767.0 | +| test.c:610:11:631:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:613:16:618:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:614:16:614:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:616:19:618:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:619:14:619:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:623:14:628:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:624:14:624:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:626:17:628:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:629:13:631:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:657:20:657:36 | ... ? ... : ... | 100.0 | 99.0 | 100.0 | +| test.c:869:5:869:14 | ... ? ... : ... | 32767.0 | 32767.0 | 0.0 | +| test.c:870:5:870:14 | ... ? ... : ... | 32767.0 | 0.0 | 32767.0 | | test.cpp:121:3:121:12 | ... ? ... : ... | 32767.0 | 32767.0 | 0.0 | | test.cpp:122:3:122:12 | ... ? ... : ... | 32767.0 | 0.0 | 32767.0 | diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c index 3cb3c761f47..bb6dc63e570 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c @@ -333,6 +333,16 @@ int test_mult05(int a, int b) { return total; } +// Tests for shift operators. +unsigned long long test_shift(unsigned long long a) { + // `odd` is the largest odd integer that can be represented by a double. + unsigned long long odd = 9007199254740992 - 1; // 2^53 - 1 + // Shifting right by by 1 give an upper bound that is half of `odd` rounded down. + unsigned long long shifted = odd >> 1; + + return shifted; +} + int test16(int x) { int d, i = 0; if (x < 0) { diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/upperBound.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/upperBound.expected index 7b056a8a3ee..cb182416e38 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/upperBound.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/upperBound.expected @@ -350,118 +350,70 @@ | test.c:330:5:330:9 | total | 2147483647 | | test.c:330:14:330:14 | r | 2147483647 | | test.c:333:10:333:14 | total | 2147483647 | -| test.c:338:7:338:7 | x | 2147483647 | -| test.c:342:10:342:10 | i | 7 | -| test.c:343:5:343:5 | i | 2 | -| test.c:345:3:345:3 | d | 2147483647 | -| test.c:345:7:345:7 | i | 7 | -| test.c:346:7:346:7 | x | 2147483647 | -| test.c:347:9:347:9 | d | 7 | -| test.c:347:14:347:14 | x | -1 | -| test.c:357:3:357:4 | y1 | 4294967295 | -| test.c:357:8:357:8 | x | 4294967295 | -| test.c:357:18:357:18 | x | 99 | -| test.c:358:3:358:4 | y2 | 4294967295 | -| test.c:358:8:358:8 | x | 4294967295 | -| test.c:358:24:358:24 | x | 99 | -| test.c:359:3:359:4 | y3 | 4294967295 | -| test.c:360:3:360:4 | y4 | 4294967295 | -| test.c:361:3:361:4 | y5 | 4294967295 | -| test.c:362:3:362:4 | y6 | 4294967295 | -| test.c:363:3:363:4 | y7 | 4294967295 | -| test.c:364:3:364:4 | y8 | 4294967295 | -| test.c:365:7:365:7 | x | 4294967295 | -| test.c:366:5:366:6 | y3 | 4294967295 | -| test.c:366:10:366:10 | x | 299 | -| test.c:367:5:367:6 | y4 | 4294967295 | -| test.c:367:10:367:10 | x | 299 | -| test.c:368:5:368:6 | y5 | 4294967295 | -| test.c:368:11:368:11 | x | 299 | -| test.c:369:5:369:6 | y6 | 4294967295 | -| test.c:369:27:369:27 | x | 299 | -| test.c:370:5:370:6 | y7 | 4294967295 | -| test.c:370:27:370:27 | x | 299 | -| test.c:371:5:371:6 | y8 | 4294967295 | -| test.c:371:28:371:28 | x | 299 | -| test.c:373:10:373:11 | y1 | 99 | -| test.c:373:15:373:16 | y2 | 99 | -| test.c:373:20:373:21 | y3 | 299 | -| test.c:373:25:373:26 | y4 | 500 | -| test.c:373:30:373:31 | y5 | 300 | -| test.c:373:35:373:36 | y6 | 255 | -| test.c:373:40:373:41 | y7 | 500 | -| test.c:373:45:373:46 | y8 | 300 | -| test.c:379:3:379:4 | y1 | 4294967295 | -| test.c:379:8:379:8 | x | 4294967295 | -| test.c:379:18:379:18 | x | 4294967295 | -| test.c:380:3:380:4 | y2 | 4294967295 | -| test.c:380:8:380:8 | x | 4294967295 | -| test.c:380:25:380:25 | x | 4294967295 | -| test.c:381:3:381:4 | y3 | 4294967295 | -| test.c:382:3:382:4 | y4 | 4294967295 | -| test.c:383:3:383:4 | y5 | 4294967295 | -| test.c:384:7:384:7 | x | 4294967295 | -| test.c:385:5:385:6 | y3 | 4294967295 | -| test.c:385:11:385:11 | x | 4294967295 | -| test.c:386:5:386:6 | y4 | 4294967295 | -| test.c:386:11:386:11 | x | 4294967295 | -| test.c:387:5:387:6 | y5 | 4294967295 | -| test.c:387:27:387:27 | x | 4294967295 | -| test.c:389:10:389:11 | y1 | 4294967295 | -| test.c:389:15:389:16 | y2 | 4294967295 | -| test.c:389:20:389:21 | y3 | 4294967295 | -| test.c:389:25:389:26 | y4 | 4294967295 | -| test.c:389:30:389:31 | y5 | 1000 | -| test.c:394:14:394:14 | m | Infinity | -| test.c:394:18:394:18 | n | Infinity | -| test.c:394:22:394:22 | o | Infinity | -| test.c:394:26:394:26 | p | Infinity | -| test.c:394:30:394:30 | q | Infinity | -| test.c:395:14:395:14 | m | Infinity | -| test.c:395:18:395:18 | n | Infinity | -| test.c:395:22:395:22 | o | Infinity | -| test.c:395:26:395:26 | p | Infinity | -| test.c:395:30:395:30 | q | Infinity | -| test.c:396:14:396:14 | m | Infinity | -| test.c:396:18:396:18 | n | Infinity | -| test.c:396:22:396:22 | o | Infinity | -| test.c:396:26:396:26 | p | Infinity | -| test.c:396:30:396:30 | q | Infinity | -| test.c:397:14:397:14 | m | Infinity | -| test.c:397:18:397:18 | n | Infinity | -| test.c:397:22:397:22 | o | Infinity | -| test.c:397:26:397:26 | p | Infinity | -| test.c:397:30:397:30 | q | Infinity | -| test.c:398:14:398:14 | m | Infinity | -| test.c:398:18:398:18 | n | Infinity | -| test.c:398:22:398:22 | o | Infinity | -| test.c:398:26:398:26 | p | Infinity | -| test.c:398:30:398:30 | q | Infinity | -| test.c:399:14:399:14 | m | Infinity | -| test.c:399:18:399:18 | n | Infinity | -| test.c:399:22:399:22 | o | Infinity | -| test.c:399:26:399:26 | p | Infinity | -| test.c:399:30:399:30 | q | Infinity | -| test.c:400:14:400:14 | m | Infinity | -| test.c:400:18:400:18 | n | Infinity | -| test.c:400:22:400:22 | o | Infinity | -| test.c:400:26:400:26 | p | Infinity | -| test.c:400:30:400:30 | q | Infinity | -| test.c:401:14:401:14 | m | Infinity | -| test.c:401:18:401:18 | n | Infinity | -| test.c:401:22:401:22 | o | Infinity | -| test.c:401:26:401:26 | p | Infinity | -| test.c:401:30:401:30 | q | Infinity | -| test.c:402:14:402:14 | m | Infinity | -| test.c:402:18:402:18 | n | Infinity | -| test.c:402:22:402:22 | o | Infinity | -| test.c:402:26:402:26 | p | Infinity | -| test.c:402:30:402:30 | q | Infinity | -| test.c:403:14:403:14 | m | Infinity | -| test.c:403:18:403:18 | n | Infinity | -| test.c:403:22:403:22 | o | Infinity | -| test.c:403:26:403:26 | p | Infinity | -| test.c:403:30:403:30 | q | Infinity | +| test.c:341:32:341:34 | odd | 9007199254740991 | +| test.c:343:10:343:16 | shifted | 4503599627370495.5 | +| test.c:348:7:348:7 | x | 2147483647 | +| test.c:352:10:352:10 | i | 7 | +| test.c:353:5:353:5 | i | 2 | +| test.c:355:3:355:3 | d | 2147483647 | +| test.c:355:7:355:7 | i | 7 | +| test.c:356:7:356:7 | x | 2147483647 | +| test.c:357:9:357:9 | d | 7 | +| test.c:357:14:357:14 | x | -1 | +| test.c:367:3:367:4 | y1 | 4294967295 | +| test.c:367:8:367:8 | x | 4294967295 | +| test.c:367:18:367:18 | x | 99 | +| test.c:368:3:368:4 | y2 | 4294967295 | +| test.c:368:8:368:8 | x | 4294967295 | +| test.c:368:24:368:24 | x | 99 | +| test.c:369:3:369:4 | y3 | 4294967295 | +| test.c:370:3:370:4 | y4 | 4294967295 | +| test.c:371:3:371:4 | y5 | 4294967295 | +| test.c:372:3:372:4 | y6 | 4294967295 | +| test.c:373:3:373:4 | y7 | 4294967295 | +| test.c:374:3:374:4 | y8 | 4294967295 | +| test.c:375:7:375:7 | x | 4294967295 | +| test.c:376:5:376:6 | y3 | 4294967295 | +| test.c:376:10:376:10 | x | 299 | +| test.c:377:5:377:6 | y4 | 4294967295 | +| test.c:377:10:377:10 | x | 299 | +| test.c:378:5:378:6 | y5 | 4294967295 | +| test.c:378:11:378:11 | x | 299 | +| test.c:379:5:379:6 | y6 | 4294967295 | +| test.c:379:27:379:27 | x | 299 | +| test.c:380:5:380:6 | y7 | 4294967295 | +| test.c:380:27:380:27 | x | 299 | +| test.c:381:5:381:6 | y8 | 4294967295 | +| test.c:381:28:381:28 | x | 299 | +| test.c:383:10:383:11 | y1 | 99 | +| test.c:383:15:383:16 | y2 | 99 | +| test.c:383:20:383:21 | y3 | 299 | +| test.c:383:25:383:26 | y4 | 500 | +| test.c:383:30:383:31 | y5 | 300 | +| test.c:383:35:383:36 | y6 | 255 | +| test.c:383:40:383:41 | y7 | 500 | +| test.c:383:45:383:46 | y8 | 300 | +| test.c:389:3:389:4 | y1 | 4294967295 | +| test.c:389:8:389:8 | x | 4294967295 | +| test.c:389:18:389:18 | x | 4294967295 | +| test.c:390:3:390:4 | y2 | 4294967295 | +| test.c:390:8:390:8 | x | 4294967295 | +| test.c:390:25:390:25 | x | 4294967295 | +| test.c:391:3:391:4 | y3 | 4294967295 | +| test.c:392:3:392:4 | y4 | 4294967295 | +| test.c:393:3:393:4 | y5 | 4294967295 | +| test.c:394:7:394:7 | x | 4294967295 | +| test.c:395:5:395:6 | y3 | 4294967295 | +| test.c:395:11:395:11 | x | 4294967295 | +| test.c:396:5:396:6 | y4 | 4294967295 | +| test.c:396:11:396:11 | x | 4294967295 | +| test.c:397:5:397:6 | y5 | 4294967295 | +| test.c:397:27:397:27 | x | 4294967295 | +| test.c:399:10:399:11 | y1 | 4294967295 | +| test.c:399:15:399:16 | y2 | 4294967295 | +| test.c:399:20:399:21 | y3 | 4294967295 | +| test.c:399:25:399:26 | y4 | 4294967295 | +| test.c:399:30:399:31 | y5 | 1000 | | test.c:404:14:404:14 | m | Infinity | | test.c:404:18:404:18 | n | Infinity | | test.c:404:22:404:22 | o | Infinity | @@ -472,143 +424,178 @@ | test.c:405:22:405:22 | o | Infinity | | test.c:405:26:405:26 | p | Infinity | | test.c:405:30:405:30 | q | Infinity | -| test.c:411:19:411:19 | a | 0.474388 | -| test.c:411:23:411:23 | b | 0.592705 | -| test.c:411:27:411:27 | c | 0.793107 | -| test.c:411:31:411:31 | d | 0.989973 | -| test.c:411:35:411:35 | e | 0.903899 | -| test.c:411:39:411:39 | f | 0.761641 | -| test.c:411:43:411:43 | g | 0.958231 | -| test.c:411:47:411:47 | h | 0.843313 | -| test.c:411:51:411:51 | i | 0.770868 | -| test.c:411:55:411:55 | j | 0.768266 | -| test.c:411:59:411:59 | k | 0.889553 | -| test.c:411:63:411:63 | l | 0.538434 | -| test.c:413:10:413:15 | output | 9.284378 | -| test.c:420:7:420:9 | rhs | 4294967295 | -| test.c:420:19:420:21 | rhs | 11 | -| test.c:421:7:421:9 | rhs | 4294967295 | -| test.c:421:19:421:21 | rhs | 12 | -| test.c:422:7:422:9 | rhs | 4294967295 | -| test.c:422:19:422:21 | rhs | 13 | -| test.c:423:7:423:9 | rhs | 4294967295 | -| test.c:423:19:423:21 | rhs | 14 | -| test.c:424:7:424:9 | rhs | 4294967295 | -| test.c:424:19:424:21 | rhs | 15 | -| test.c:425:10:425:12 | rhs | 4294967295 | -| test.c:429:7:429:7 | a | 2147483647 | -| test.c:430:9:430:9 | b | 2147483647 | -| test.c:431:7:431:7 | a | 17 | -| test.c:431:12:431:12 | b | 23 | -| test.c:433:9:433:9 | a | 40 | -| test.c:434:7:434:7 | b | 2147483647 | -| test.c:439:11:439:11 | a | 2147483647 | -| test.c:439:15:439:15 | b | 2147483647 | -| test.c:440:10:440:10 | a | 2147483647 | -| test.c:440:14:440:14 | b | 2147483647 | -| test.c:447:10:447:11 | ip | 4294967295 | -| test.c:447:20:447:21 | ip | 4294967295 | -| test.c:447:40:447:41 | ip | 4294967295 | -| test.c:448:14:448:15 | ip | 4294967295 | -| test.c:449:14:449:15 | ip | 4294967295 | -| test.c:449:34:449:35 | ip | 4294967295 | -| test.c:450:11:450:12 | ip | 4294967295 | -| test.c:451:13:451:14 | ip | 4294967295 | -| test.c:452:14:452:15 | ip | 4294967295 | -| test.c:453:14:453:15 | ip | 4294967295 | -| test.c:454:15:454:16 | ip | 4294967295 | -| test.c:454:41:454:42 | ip | 4294967295 | -| test.c:454:52:454:53 | ip | 4294967295 | -| test.c:454:67:454:68 | ip | 4294967295 | -| test.c:454:78:454:79 | ip | 4294967295 | -| test.c:455:18:455:19 | ip | 4294967295 | -| test.c:456:23:456:24 | ip | 4294967295 | -| test.c:456:34:456:35 | ip | 4294967295 | -| test.c:457:25:457:26 | ip | 4294967295 | -| test.c:458:20:458:21 | ip | 4294967295 | -| test.c:459:11:459:12 | ip | 4294967295 | -| test.c:459:26:459:27 | ip | 4294967295 | -| test.c:460:16:460:17 | ip | 4294967295 | -| test.c:461:16:461:17 | ip | 4294967295 | -| test.c:462:16:462:17 | ip | 4294967295 | -| test.c:463:17:463:18 | ip | 4294967295 | -| test.c:464:22:464:23 | ip | 4294967295 | -| test.c:464:33:464:34 | ip | 4294967295 | -| test.c:464:48:464:49 | ip | 4294967295 | -| test.c:464:59:464:60 | ip | 4294967295 | -| test.c:465:20:465:21 | ip | 4294967295 | -| test.c:466:25:466:26 | ip | 4294967295 | -| test.c:466:36:466:37 | ip | 4294967295 | -| test.c:467:27:467:28 | ip | 4294967295 | -| test.c:468:22:468:23 | ip | 4294967295 | -| test.c:469:15:469:16 | ip | 4294967295 | -| test.c:469:30:469:31 | ip | 4294967295 | -| test.c:470:11:470:12 | ip | 4294967295 | -| test.c:471:12:471:13 | ip | 4294967295 | -| test.c:472:12:472:13 | ip | 4294967295 | -| test.c:473:13:473:14 | ip | 4294967295 | -| test.c:473:39:473:40 | ip | 4294967295 | -| test.c:473:50:473:51 | ip | 4294967295 | -| test.c:473:65:473:66 | ip | 4294967295 | -| test.c:473:76:473:77 | ip | 4294967295 | -| test.c:474:16:474:17 | ip | 4294967295 | -| test.c:475:21:475:22 | ip | 4294967295 | -| test.c:475:32:475:33 | ip | 4294967295 | -| test.c:476:23:476:24 | ip | 4294967295 | -| test.c:477:18:477:19 | ip | 4294967295 | -| test.c:478:11:478:12 | ip | 4294967295 | -| test.c:478:17:478:18 | ip | 4294967295 | -| test.c:478:37:478:38 | ip | 4294967295 | -| test.c:478:43:478:44 | ip | 4294967295 | -| test.c:479:14:479:15 | ip | 4294967295 | -| test.c:480:14:480:15 | ip | 4294967295 | -| test.c:481:14:481:15 | ip | 4294967295 | -| test.c:482:15:482:16 | ip | 4294967295 | -| test.c:482:41:482:42 | ip | 4294967295 | -| test.c:482:52:482:53 | ip | 4294967295 | -| test.c:482:67:482:68 | ip | 4294967295 | -| test.c:482:78:482:79 | ip | 4294967295 | -| test.c:483:18:483:19 | ip | 4294967295 | -| test.c:484:23:484:24 | ip | 4294967295 | -| test.c:484:34:484:35 | ip | 4294967295 | -| test.c:485:25:485:26 | ip | 4294967295 | -| test.c:486:20:486:21 | ip | 4294967295 | -| test.c:487:14:487:15 | ip | 4294967295 | -| test.c:487:20:487:21 | ip | 4294967295 | -| test.c:488:16:488:17 | ip | 4294967295 | -| test.c:489:12:489:13 | ip | 4294967295 | +| test.c:406:14:406:14 | m | Infinity | +| test.c:406:18:406:18 | n | Infinity | +| test.c:406:22:406:22 | o | Infinity | +| test.c:406:26:406:26 | p | Infinity | +| test.c:406:30:406:30 | q | Infinity | +| test.c:407:14:407:14 | m | Infinity | +| test.c:407:18:407:18 | n | Infinity | +| test.c:407:22:407:22 | o | Infinity | +| test.c:407:26:407:26 | p | Infinity | +| test.c:407:30:407:30 | q | Infinity | +| test.c:408:14:408:14 | m | Infinity | +| test.c:408:18:408:18 | n | Infinity | +| test.c:408:22:408:22 | o | Infinity | +| test.c:408:26:408:26 | p | Infinity | +| test.c:408:30:408:30 | q | Infinity | +| test.c:409:14:409:14 | m | Infinity | +| test.c:409:18:409:18 | n | Infinity | +| test.c:409:22:409:22 | o | Infinity | +| test.c:409:26:409:26 | p | Infinity | +| test.c:409:30:409:30 | q | Infinity | +| test.c:410:14:410:14 | m | Infinity | +| test.c:410:18:410:18 | n | Infinity | +| test.c:410:22:410:22 | o | Infinity | +| test.c:410:26:410:26 | p | Infinity | +| test.c:410:30:410:30 | q | Infinity | +| test.c:411:14:411:14 | m | Infinity | +| test.c:411:18:411:18 | n | Infinity | +| test.c:411:22:411:22 | o | Infinity | +| test.c:411:26:411:26 | p | Infinity | +| test.c:411:30:411:30 | q | Infinity | +| test.c:412:14:412:14 | m | Infinity | +| test.c:412:18:412:18 | n | Infinity | +| test.c:412:22:412:22 | o | Infinity | +| test.c:412:26:412:26 | p | Infinity | +| test.c:412:30:412:30 | q | Infinity | +| test.c:413:14:413:14 | m | Infinity | +| test.c:413:18:413:18 | n | Infinity | +| test.c:413:22:413:22 | o | Infinity | +| test.c:413:26:413:26 | p | Infinity | +| test.c:413:30:413:30 | q | Infinity | +| test.c:414:14:414:14 | m | Infinity | +| test.c:414:18:414:18 | n | Infinity | +| test.c:414:22:414:22 | o | Infinity | +| test.c:414:26:414:26 | p | Infinity | +| test.c:414:30:414:30 | q | Infinity | +| test.c:415:14:415:14 | m | Infinity | +| test.c:415:18:415:18 | n | Infinity | +| test.c:415:22:415:22 | o | Infinity | +| test.c:415:26:415:26 | p | Infinity | +| test.c:415:30:415:30 | q | Infinity | +| test.c:421:19:421:19 | a | 0.474388 | +| test.c:421:23:421:23 | b | 0.592705 | +| test.c:421:27:421:27 | c | 0.793107 | +| test.c:421:31:421:31 | d | 0.989973 | +| test.c:421:35:421:35 | e | 0.903899 | +| test.c:421:39:421:39 | f | 0.761641 | +| test.c:421:43:421:43 | g | 0.958231 | +| test.c:421:47:421:47 | h | 0.843313 | +| test.c:421:51:421:51 | i | 0.770868 | +| test.c:421:55:421:55 | j | 0.768266 | +| test.c:421:59:421:59 | k | 0.889553 | +| test.c:421:63:421:63 | l | 0.538434 | +| test.c:423:10:423:15 | output | 9.284378 | +| test.c:430:7:430:9 | rhs | 4294967295 | +| test.c:430:19:430:21 | rhs | 11 | +| test.c:431:7:431:9 | rhs | 4294967295 | +| test.c:431:19:431:21 | rhs | 12 | +| test.c:432:7:432:9 | rhs | 4294967295 | +| test.c:432:19:432:21 | rhs | 13 | +| test.c:433:7:433:9 | rhs | 4294967295 | +| test.c:433:19:433:21 | rhs | 14 | +| test.c:434:7:434:9 | rhs | 4294967295 | +| test.c:434:19:434:21 | rhs | 15 | +| test.c:435:10:435:12 | rhs | 4294967295 | +| test.c:439:7:439:7 | a | 2147483647 | +| test.c:440:9:440:9 | b | 2147483647 | +| test.c:441:7:441:7 | a | 17 | +| test.c:441:12:441:12 | b | 23 | +| test.c:443:9:443:9 | a | 40 | +| test.c:444:7:444:7 | b | 2147483647 | +| test.c:449:11:449:11 | a | 2147483647 | +| test.c:449:15:449:15 | b | 2147483647 | +| test.c:450:10:450:10 | a | 2147483647 | +| test.c:450:14:450:14 | b | 2147483647 | +| test.c:457:10:457:11 | ip | 4294967295 | +| test.c:457:20:457:21 | ip | 4294967295 | +| test.c:457:40:457:41 | ip | 4294967295 | +| test.c:458:14:458:15 | ip | 4294967295 | +| test.c:459:14:459:15 | ip | 4294967295 | +| test.c:459:34:459:35 | ip | 4294967295 | +| test.c:460:11:460:12 | ip | 4294967295 | +| test.c:461:13:461:14 | ip | 4294967295 | +| test.c:462:14:462:15 | ip | 4294967295 | +| test.c:463:14:463:15 | ip | 4294967295 | +| test.c:464:15:464:16 | ip | 4294967295 | +| test.c:464:41:464:42 | ip | 4294967295 | +| test.c:464:52:464:53 | ip | 4294967295 | +| test.c:464:67:464:68 | ip | 4294967295 | +| test.c:464:78:464:79 | ip | 4294967295 | +| test.c:465:18:465:19 | ip | 4294967295 | +| test.c:466:23:466:24 | ip | 4294967295 | +| test.c:466:34:466:35 | ip | 4294967295 | +| test.c:467:25:467:26 | ip | 4294967295 | +| test.c:468:20:468:21 | ip | 4294967295 | +| test.c:469:11:469:12 | ip | 4294967295 | +| test.c:469:26:469:27 | ip | 4294967295 | +| test.c:470:16:470:17 | ip | 4294967295 | +| test.c:471:16:471:17 | ip | 4294967295 | +| test.c:472:16:472:17 | ip | 4294967295 | +| test.c:473:17:473:18 | ip | 4294967295 | +| test.c:474:22:474:23 | ip | 4294967295 | +| test.c:474:33:474:34 | ip | 4294967295 | +| test.c:474:48:474:49 | ip | 4294967295 | +| test.c:474:59:474:60 | ip | 4294967295 | +| test.c:475:20:475:21 | ip | 4294967295 | +| test.c:476:25:476:26 | ip | 4294967295 | +| test.c:476:36:476:37 | ip | 4294967295 | +| test.c:477:27:477:28 | ip | 4294967295 | +| test.c:478:22:478:23 | ip | 4294967295 | +| test.c:479:15:479:16 | ip | 4294967295 | +| test.c:479:30:479:31 | ip | 4294967295 | +| test.c:480:11:480:12 | ip | 4294967295 | +| test.c:481:12:481:13 | ip | 4294967295 | +| test.c:482:12:482:13 | ip | 4294967295 | +| test.c:483:13:483:14 | ip | 4294967295 | +| test.c:483:39:483:40 | ip | 4294967295 | +| test.c:483:50:483:51 | ip | 4294967295 | +| test.c:483:65:483:66 | ip | 4294967295 | +| test.c:483:76:483:77 | ip | 4294967295 | +| test.c:484:16:484:17 | ip | 4294967295 | +| test.c:485:21:485:22 | ip | 4294967295 | +| test.c:485:32:485:33 | ip | 4294967295 | +| test.c:486:23:486:24 | ip | 4294967295 | +| test.c:487:18:487:19 | ip | 4294967295 | +| test.c:488:11:488:12 | ip | 4294967295 | +| test.c:488:17:488:18 | ip | 4294967295 | +| test.c:488:37:488:38 | ip | 4294967295 | +| test.c:488:43:488:44 | ip | 4294967295 | +| test.c:489:14:489:15 | ip | 4294967295 | | test.c:490:14:490:15 | ip | 4294967295 | -| test.c:491:15:491:16 | ip | 4294967295 | -| test.c:492:16:492:17 | ip | 4294967295 | -| test.c:493:16:493:17 | ip | 4294967295 | -| test.c:494:17:494:18 | ip | 4294967295 | -| test.c:495:22:495:23 | ip | 4294967295 | -| test.c:495:33:495:34 | ip | 4294967295 | -| test.c:495:48:495:49 | ip | 4294967295 | -| test.c:495:59:495:60 | ip | 4294967295 | +| test.c:491:14:491:15 | ip | 4294967295 | +| test.c:492:15:492:16 | ip | 4294967295 | +| test.c:492:41:492:42 | ip | 4294967295 | +| test.c:492:52:492:53 | ip | 4294967295 | +| test.c:492:67:492:68 | ip | 4294967295 | +| test.c:492:78:492:79 | ip | 4294967295 | +| test.c:493:18:493:19 | ip | 4294967295 | +| test.c:494:23:494:24 | ip | 4294967295 | +| test.c:494:34:494:35 | ip | 4294967295 | +| test.c:495:25:495:26 | ip | 4294967295 | | test.c:496:20:496:21 | ip | 4294967295 | -| test.c:497:25:497:26 | ip | 4294967295 | -| test.c:497:36:497:37 | ip | 4294967295 | -| test.c:498:27:498:28 | ip | 4294967295 | -| test.c:499:22:499:23 | ip | 4294967295 | -| test.c:500:13:500:14 | ip | 4294967295 | -| test.c:500:28:500:29 | ip | 4294967295 | -| test.c:501:18:501:19 | ip | 4294967295 | -| test.c:502:18:502:19 | ip | 4294967295 | -| test.c:503:18:503:19 | ip | 4294967295 | -| test.c:504:19:504:20 | ip | 4294967295 | -| test.c:505:24:505:25 | ip | 4294967295 | -| test.c:505:35:505:36 | ip | 4294967295 | -| test.c:505:50:505:51 | ip | 4294967295 | -| test.c:505:61:505:62 | ip | 4294967295 | -| test.c:506:22:506:23 | ip | 4294967295 | -| test.c:507:27:507:28 | ip | 4294967295 | -| test.c:507:38:507:39 | ip | 4294967295 | -| test.c:508:29:508:30 | ip | 4294967295 | -| test.c:509:24:509:25 | ip | 4294967295 | -| test.c:510:17:510:18 | ip | 4294967295 | -| test.c:510:32:510:33 | ip | 4294967295 | -| test.c:511:14:511:15 | ip | 4294967295 | +| test.c:497:14:497:15 | ip | 4294967295 | +| test.c:497:20:497:21 | ip | 4294967295 | +| test.c:498:16:498:17 | ip | 4294967295 | +| test.c:499:12:499:13 | ip | 4294967295 | +| test.c:500:14:500:15 | ip | 4294967295 | +| test.c:501:15:501:16 | ip | 4294967295 | +| test.c:502:16:502:17 | ip | 4294967295 | +| test.c:503:16:503:17 | ip | 4294967295 | +| test.c:504:17:504:18 | ip | 4294967295 | +| test.c:505:22:505:23 | ip | 4294967295 | +| test.c:505:33:505:34 | ip | 4294967295 | +| test.c:505:48:505:49 | ip | 4294967295 | +| test.c:505:59:505:60 | ip | 4294967295 | +| test.c:506:20:506:21 | ip | 4294967295 | +| test.c:507:25:507:26 | ip | 4294967295 | +| test.c:507:36:507:37 | ip | 4294967295 | +| test.c:508:27:508:28 | ip | 4294967295 | +| test.c:509:22:509:23 | ip | 4294967295 | +| test.c:510:13:510:14 | ip | 4294967295 | +| test.c:510:28:510:29 | ip | 4294967295 | +| test.c:511:18:511:19 | ip | 4294967295 | | test.c:512:18:512:19 | ip | 4294967295 | | test.c:513:18:513:19 | ip | 4294967295 | | test.c:514:19:514:20 | ip | 4294967295 | @@ -622,129 +609,129 @@ | test.c:518:29:518:30 | ip | 4294967295 | | test.c:519:24:519:25 | ip | 4294967295 | | test.c:520:17:520:18 | ip | 4294967295 | -| test.c:520:23:520:24 | ip | 4294967295 | -| test.c:520:43:520:44 | ip | 4294967295 | -| test.c:520:49:520:50 | ip | 4294967295 | -| test.c:521:16:521:17 | ip | 4294967295 | -| test.c:522:16:522:17 | ip | 4294967295 | -| test.c:523:16:523:17 | ip | 4294967295 | -| test.c:524:17:524:18 | ip | 4294967295 | -| test.c:525:22:525:23 | ip | 4294967295 | -| test.c:525:33:525:34 | ip | 4294967295 | -| test.c:525:48:525:49 | ip | 4294967295 | -| test.c:525:59:525:60 | ip | 4294967295 | -| test.c:526:20:526:21 | ip | 4294967295 | -| test.c:527:25:527:26 | ip | 4294967295 | -| test.c:527:36:527:37 | ip | 4294967295 | -| test.c:528:27:528:28 | ip | 4294967295 | -| test.c:529:22:529:23 | ip | 4294967295 | -| test.c:530:16:530:17 | ip | 4294967295 | -| test.c:530:22:530:23 | ip | 4294967295 | -| test.c:531:18:531:19 | ip | 4294967295 | -| test.c:532:14:532:15 | ip | 4294967295 | -| test.c:533:14:533:15 | ip | 4294967295 | -| test.c:533:24:533:25 | ip | 4294967295 | -| test.c:533:44:533:45 | ip | 4294967295 | -| test.c:534:16:534:17 | ip | 4294967295 | -| test.c:535:16:535:17 | ip | 4294967295 | -| test.c:535:36:535:37 | ip | 4294967295 | -| test.c:536:14:536:15 | ip | 4294967295 | -| test.c:537:19:537:20 | ip | 4294967295 | -| test.c:538:20:538:21 | ip | 4294967295 | -| test.c:539:20:539:21 | ip | 4294967295 | -| test.c:540:21:540:22 | ip | 4294967295 | -| test.c:541:26:541:27 | ip | 4294967295 | -| test.c:541:37:541:38 | ip | 4294967295 | -| test.c:541:52:541:53 | ip | 4294967295 | -| test.c:541:63:541:64 | ip | 4294967295 | -| test.c:542:24:542:25 | ip | 4294967295 | -| test.c:543:29:543:30 | ip | 4294967295 | -| test.c:543:40:543:41 | ip | 4294967295 | -| test.c:544:31:544:32 | ip | 4294967295 | -| test.c:545:26:545:27 | ip | 4294967295 | -| test.c:546:17:546:18 | ip | 4294967295 | -| test.c:546:32:546:33 | ip | 4294967295 | -| test.c:547:22:547:23 | ip | 4294967295 | -| test.c:548:22:548:23 | ip | 4294967295 | -| test.c:549:22:549:23 | ip | 4294967295 | -| test.c:550:23:550:24 | ip | 4294967295 | -| test.c:551:28:551:29 | ip | 4294967295 | -| test.c:551:39:551:40 | ip | 4294967295 | -| test.c:551:54:551:55 | ip | 4294967295 | -| test.c:551:65:551:66 | ip | 4294967295 | -| test.c:552:26:552:27 | ip | 4294967295 | -| test.c:553:31:553:32 | ip | 4294967295 | -| test.c:553:42:553:43 | ip | 4294967295 | -| test.c:554:33:554:34 | ip | 4294967295 | -| test.c:555:28:555:29 | ip | 4294967295 | -| test.c:556:21:556:22 | ip | 4294967295 | -| test.c:556:36:556:37 | ip | 4294967295 | -| test.c:557:17:557:18 | ip | 4294967295 | -| test.c:558:18:558:19 | ip | 4294967295 | -| test.c:559:18:559:19 | ip | 4294967295 | -| test.c:560:19:560:20 | ip | 4294967295 | -| test.c:561:24:561:25 | ip | 4294967295 | -| test.c:561:35:561:36 | ip | 4294967295 | -| test.c:561:50:561:51 | ip | 4294967295 | -| test.c:561:61:561:62 | ip | 4294967295 | -| test.c:562:22:562:23 | ip | 4294967295 | -| test.c:563:27:563:28 | ip | 4294967295 | -| test.c:563:38:563:39 | ip | 4294967295 | -| test.c:564:29:564:30 | ip | 4294967295 | -| test.c:565:24:565:25 | ip | 4294967295 | -| test.c:566:17:566:18 | ip | 4294967295 | -| test.c:566:23:566:24 | ip | 4294967295 | -| test.c:566:43:566:44 | ip | 4294967295 | -| test.c:566:49:566:50 | ip | 4294967295 | -| test.c:567:20:567:21 | ip | 4294967295 | -| test.c:568:20:568:21 | ip | 4294967295 | -| test.c:569:20:569:21 | ip | 4294967295 | -| test.c:570:21:570:22 | ip | 4294967295 | -| test.c:571:26:571:27 | ip | 4294967295 | -| test.c:571:37:571:38 | ip | 4294967295 | -| test.c:571:52:571:53 | ip | 4294967295 | -| test.c:571:63:571:64 | ip | 4294967295 | -| test.c:572:24:572:25 | ip | 4294967295 | -| test.c:573:29:573:30 | ip | 4294967295 | -| test.c:573:40:573:41 | ip | 4294967295 | -| test.c:574:31:574:32 | ip | 4294967295 | -| test.c:575:26:575:27 | ip | 4294967295 | -| test.c:576:20:576:21 | ip | 4294967295 | -| test.c:576:26:576:27 | ip | 4294967295 | -| test.c:577:22:577:23 | ip | 4294967295 | -| test.c:578:18:578:19 | ip | 4294967295 | -| test.c:579:16:579:17 | ip | 4294967295 | -| test.c:580:17:580:18 | ip | 4294967295 | -| test.c:581:18:581:19 | ip | 4294967295 | -| test.c:582:18:582:19 | ip | 4294967295 | -| test.c:583:19:583:20 | ip | 4294967295 | -| test.c:584:24:584:25 | ip | 4294967295 | -| test.c:584:35:584:36 | ip | 4294967295 | -| test.c:584:50:584:51 | ip | 4294967295 | -| test.c:584:61:584:62 | ip | 4294967295 | -| test.c:585:22:585:23 | ip | 4294967295 | -| test.c:586:27:586:28 | ip | 4294967295 | -| test.c:586:38:586:39 | ip | 4294967295 | -| test.c:587:29:587:30 | ip | 4294967295 | -| test.c:588:24:588:25 | ip | 4294967295 | -| test.c:589:15:589:16 | ip | 4294967295 | -| test.c:589:30:589:31 | ip | 4294967295 | -| test.c:590:20:590:21 | ip | 4294967295 | -| test.c:591:20:591:21 | ip | 4294967295 | -| test.c:592:20:592:21 | ip | 4294967295 | -| test.c:593:21:593:22 | ip | 4294967295 | -| test.c:594:26:594:27 | ip | 4294967295 | -| test.c:594:37:594:38 | ip | 4294967295 | -| test.c:594:52:594:53 | ip | 4294967295 | -| test.c:594:63:594:64 | ip | 4294967295 | -| test.c:595:24:595:25 | ip | 4294967295 | -| test.c:596:29:596:30 | ip | 4294967295 | -| test.c:596:40:596:41 | ip | 4294967295 | -| test.c:597:31:597:32 | ip | 4294967295 | -| test.c:598:26:598:27 | ip | 4294967295 | -| test.c:599:19:599:20 | ip | 4294967295 | -| test.c:599:34:599:35 | ip | 4294967295 | -| test.c:600:16:600:17 | ip | 4294967295 | +| test.c:520:32:520:33 | ip | 4294967295 | +| test.c:521:14:521:15 | ip | 4294967295 | +| test.c:522:18:522:19 | ip | 4294967295 | +| test.c:523:18:523:19 | ip | 4294967295 | +| test.c:524:19:524:20 | ip | 4294967295 | +| test.c:525:24:525:25 | ip | 4294967295 | +| test.c:525:35:525:36 | ip | 4294967295 | +| test.c:525:50:525:51 | ip | 4294967295 | +| test.c:525:61:525:62 | ip | 4294967295 | +| test.c:526:22:526:23 | ip | 4294967295 | +| test.c:527:27:527:28 | ip | 4294967295 | +| test.c:527:38:527:39 | ip | 4294967295 | +| test.c:528:29:528:30 | ip | 4294967295 | +| test.c:529:24:529:25 | ip | 4294967295 | +| test.c:530:17:530:18 | ip | 4294967295 | +| test.c:530:23:530:24 | ip | 4294967295 | +| test.c:530:43:530:44 | ip | 4294967295 | +| test.c:530:49:530:50 | ip | 4294967295 | +| test.c:531:16:531:17 | ip | 4294967295 | +| test.c:532:16:532:17 | ip | 4294967295 | +| test.c:533:16:533:17 | ip | 4294967295 | +| test.c:534:17:534:18 | ip | 4294967295 | +| test.c:535:22:535:23 | ip | 4294967295 | +| test.c:535:33:535:34 | ip | 4294967295 | +| test.c:535:48:535:49 | ip | 4294967295 | +| test.c:535:59:535:60 | ip | 4294967295 | +| test.c:536:20:536:21 | ip | 4294967295 | +| test.c:537:25:537:26 | ip | 4294967295 | +| test.c:537:36:537:37 | ip | 4294967295 | +| test.c:538:27:538:28 | ip | 4294967295 | +| test.c:539:22:539:23 | ip | 4294967295 | +| test.c:540:16:540:17 | ip | 4294967295 | +| test.c:540:22:540:23 | ip | 4294967295 | +| test.c:541:18:541:19 | ip | 4294967295 | +| test.c:542:14:542:15 | ip | 4294967295 | +| test.c:543:14:543:15 | ip | 4294967295 | +| test.c:543:24:543:25 | ip | 4294967295 | +| test.c:543:44:543:45 | ip | 4294967295 | +| test.c:544:16:544:17 | ip | 4294967295 | +| test.c:545:16:545:17 | ip | 4294967295 | +| test.c:545:36:545:37 | ip | 4294967295 | +| test.c:546:14:546:15 | ip | 4294967295 | +| test.c:547:19:547:20 | ip | 4294967295 | +| test.c:548:20:548:21 | ip | 4294967295 | +| test.c:549:20:549:21 | ip | 4294967295 | +| test.c:550:21:550:22 | ip | 4294967295 | +| test.c:551:26:551:27 | ip | 4294967295 | +| test.c:551:37:551:38 | ip | 4294967295 | +| test.c:551:52:551:53 | ip | 4294967295 | +| test.c:551:63:551:64 | ip | 4294967295 | +| test.c:552:24:552:25 | ip | 4294967295 | +| test.c:553:29:553:30 | ip | 4294967295 | +| test.c:553:40:553:41 | ip | 4294967295 | +| test.c:554:31:554:32 | ip | 4294967295 | +| test.c:555:26:555:27 | ip | 4294967295 | +| test.c:556:17:556:18 | ip | 4294967295 | +| test.c:556:32:556:33 | ip | 4294967295 | +| test.c:557:22:557:23 | ip | 4294967295 | +| test.c:558:22:558:23 | ip | 4294967295 | +| test.c:559:22:559:23 | ip | 4294967295 | +| test.c:560:23:560:24 | ip | 4294967295 | +| test.c:561:28:561:29 | ip | 4294967295 | +| test.c:561:39:561:40 | ip | 4294967295 | +| test.c:561:54:561:55 | ip | 4294967295 | +| test.c:561:65:561:66 | ip | 4294967295 | +| test.c:562:26:562:27 | ip | 4294967295 | +| test.c:563:31:563:32 | ip | 4294967295 | +| test.c:563:42:563:43 | ip | 4294967295 | +| test.c:564:33:564:34 | ip | 4294967295 | +| test.c:565:28:565:29 | ip | 4294967295 | +| test.c:566:21:566:22 | ip | 4294967295 | +| test.c:566:36:566:37 | ip | 4294967295 | +| test.c:567:17:567:18 | ip | 4294967295 | +| test.c:568:18:568:19 | ip | 4294967295 | +| test.c:569:18:569:19 | ip | 4294967295 | +| test.c:570:19:570:20 | ip | 4294967295 | +| test.c:571:24:571:25 | ip | 4294967295 | +| test.c:571:35:571:36 | ip | 4294967295 | +| test.c:571:50:571:51 | ip | 4294967295 | +| test.c:571:61:571:62 | ip | 4294967295 | +| test.c:572:22:572:23 | ip | 4294967295 | +| test.c:573:27:573:28 | ip | 4294967295 | +| test.c:573:38:573:39 | ip | 4294967295 | +| test.c:574:29:574:30 | ip | 4294967295 | +| test.c:575:24:575:25 | ip | 4294967295 | +| test.c:576:17:576:18 | ip | 4294967295 | +| test.c:576:23:576:24 | ip | 4294967295 | +| test.c:576:43:576:44 | ip | 4294967295 | +| test.c:576:49:576:50 | ip | 4294967295 | +| test.c:577:20:577:21 | ip | 4294967295 | +| test.c:578:20:578:21 | ip | 4294967295 | +| test.c:579:20:579:21 | ip | 4294967295 | +| test.c:580:21:580:22 | ip | 4294967295 | +| test.c:581:26:581:27 | ip | 4294967295 | +| test.c:581:37:581:38 | ip | 4294967295 | +| test.c:581:52:581:53 | ip | 4294967295 | +| test.c:581:63:581:64 | ip | 4294967295 | +| test.c:582:24:582:25 | ip | 4294967295 | +| test.c:583:29:583:30 | ip | 4294967295 | +| test.c:583:40:583:41 | ip | 4294967295 | +| test.c:584:31:584:32 | ip | 4294967295 | +| test.c:585:26:585:27 | ip | 4294967295 | +| test.c:586:20:586:21 | ip | 4294967295 | +| test.c:586:26:586:27 | ip | 4294967295 | +| test.c:587:22:587:23 | ip | 4294967295 | +| test.c:588:18:588:19 | ip | 4294967295 | +| test.c:589:16:589:17 | ip | 4294967295 | +| test.c:590:17:590:18 | ip | 4294967295 | +| test.c:591:18:591:19 | ip | 4294967295 | +| test.c:592:18:592:19 | ip | 4294967295 | +| test.c:593:19:593:20 | ip | 4294967295 | +| test.c:594:24:594:25 | ip | 4294967295 | +| test.c:594:35:594:36 | ip | 4294967295 | +| test.c:594:50:594:51 | ip | 4294967295 | +| test.c:594:61:594:62 | ip | 4294967295 | +| test.c:595:22:595:23 | ip | 4294967295 | +| test.c:596:27:596:28 | ip | 4294967295 | +| test.c:596:38:596:39 | ip | 4294967295 | +| test.c:597:29:597:30 | ip | 4294967295 | +| test.c:598:24:598:25 | ip | 4294967295 | +| test.c:599:15:599:16 | ip | 4294967295 | +| test.c:599:30:599:31 | ip | 4294967295 | +| test.c:600:20:600:21 | ip | 4294967295 | | test.c:601:20:601:21 | ip | 4294967295 | | test.c:602:20:602:21 | ip | 4294967295 | | test.c:603:21:603:22 | ip | 4294967295 | @@ -758,256 +745,271 @@ | test.c:607:31:607:32 | ip | 4294967295 | | test.c:608:26:608:27 | ip | 4294967295 | | test.c:609:19:609:20 | ip | 4294967295 | -| test.c:609:25:609:26 | ip | 4294967295 | -| test.c:609:45:609:46 | ip | 4294967295 | -| test.c:609:51:609:52 | ip | 4294967295 | -| test.c:610:18:610:19 | ip | 4294967295 | -| test.c:611:18:611:19 | ip | 4294967295 | -| test.c:612:18:612:19 | ip | 4294967295 | -| test.c:613:19:613:20 | ip | 4294967295 | -| test.c:614:24:614:25 | ip | 4294967295 | -| test.c:614:35:614:36 | ip | 4294967295 | -| test.c:614:50:614:51 | ip | 4294967295 | -| test.c:614:61:614:62 | ip | 4294967295 | -| test.c:615:22:615:23 | ip | 4294967295 | -| test.c:616:27:616:28 | ip | 4294967295 | -| test.c:616:38:616:39 | ip | 4294967295 | -| test.c:617:29:617:30 | ip | 4294967295 | -| test.c:618:24:618:25 | ip | 4294967295 | -| test.c:619:18:619:19 | ip | 4294967295 | -| test.c:619:24:619:25 | ip | 4294967295 | -| test.c:620:20:620:21 | ip | 4294967295 | -| test.c:621:16:621:17 | ip | 4294967295 | -| test.c:622:10:622:23 | special_number | 4294967295 | -| test.c:630:7:630:8 | c1 | 2147483647 | -| test.c:630:13:630:13 | x | 0 | -| test.c:631:7:631:8 | c2 | 2147483647 | -| test.c:631:13:631:13 | x | 748596 | -| test.c:632:7:632:8 | c3 | 2147483647 | -| test.c:632:13:632:13 | x | 85400991 | -| test.c:633:7:633:8 | c4 | 2147483647 | -| test.c:633:13:633:13 | x | 89076886 | -| test.c:634:7:634:8 | c5 | 2147483647 | -| test.c:634:13:634:13 | x | 89175520 | -| test.c:635:7:635:8 | c1 | 2147483647 | -| test.c:635:13:635:14 | c2 | 2147483647 | -| test.c:635:19:635:19 | x | 97010505 | -| test.c:636:7:636:8 | c1 | 2147483647 | -| test.c:636:13:636:14 | c3 | 2147483647 | -| test.c:636:19:636:19 | x | 1035467903 | -| test.c:637:7:637:8 | c1 | 2147483647 | -| test.c:637:13:637:14 | c4 | 2147483647 | -| test.c:637:19:637:19 | x | 1109363551 | -| test.c:638:7:638:8 | c1 | 2147483647 | -| test.c:638:13:638:14 | c5 | 2147483647 | -| test.c:638:19:638:19 | x | 1121708983 | -| test.c:639:7:639:8 | c2 | 2147483647 | -| test.c:639:13:639:14 | c3 | 2147483647 | -| test.c:639:19:639:19 | x | 1121747830 | -| test.c:641:11:641:11 | x | 2147483647 | -| test.c:641:15:641:15 | x | 2147483647 | -| test.c:641:19:641:19 | x | 2147483647 | -| test.c:641:23:641:23 | x | 2147483647 | -| test.c:641:27:641:27 | x | 2147483647 | -| test.c:641:31:641:31 | x | 2147483647 | -| test.c:641:35:641:35 | x | 2147483647 | -| test.c:641:39:641:39 | x | 2147483647 | -| test.c:641:43:641:43 | x | 2147483647 | -| test.c:641:47:641:47 | x | 2147483647 | -| test.c:641:51:641:51 | x | 2147483647 | -| test.c:641:55:641:55 | x | 2147483647 | -| test.c:642:10:642:10 | y | 2147483647 | -| test.c:647:20:647:20 | x | 4294967295 | -| test.c:647:30:647:30 | x | 99 | -| test.c:650:3:650:4 | y1 | 4294967295 | -| test.c:650:11:650:11 | y | 100 | -| test.c:650:14:650:14 | y | 101 | -| test.c:651:3:651:4 | y2 | 4294967295 | -| test.c:651:9:651:9 | y | 101 | -| test.c:651:14:651:14 | y | 102 | -| test.c:651:22:651:22 | y | 105 | -| test.c:652:10:652:11 | y1 | 101 | -| test.c:652:15:652:16 | y2 | 105 | -| test.c:660:3:660:3 | i | 2147483647 | -| test.c:661:7:661:7 | i | 10 | -| test.c:663:3:663:3 | i | 2147483647 | -| test.c:664:3:664:3 | i | 10 | -| test.c:665:7:665:7 | i | 20 | -| test.c:667:3:667:3 | i | 2147483647 | -| test.c:668:3:668:3 | i | 40 | -| test.c:669:7:669:7 | i | 30 | -| test.c:671:3:671:3 | i | 2147483647 | -| test.c:671:7:671:7 | j | 2147483647 | -| test.c:672:7:672:7 | i | 40 | -| test.c:674:3:674:3 | i | 2147483647 | -| test.c:674:8:674:8 | j | 40 | -| test.c:675:7:675:7 | i | 50 | +| test.c:609:34:609:35 | ip | 4294967295 | +| test.c:610:16:610:17 | ip | 4294967295 | +| test.c:611:20:611:21 | ip | 4294967295 | +| test.c:612:20:612:21 | ip | 4294967295 | +| test.c:613:21:613:22 | ip | 4294967295 | +| test.c:614:26:614:27 | ip | 4294967295 | +| test.c:614:37:614:38 | ip | 4294967295 | +| test.c:614:52:614:53 | ip | 4294967295 | +| test.c:614:63:614:64 | ip | 4294967295 | +| test.c:615:24:615:25 | ip | 4294967295 | +| test.c:616:29:616:30 | ip | 4294967295 | +| test.c:616:40:616:41 | ip | 4294967295 | +| test.c:617:31:617:32 | ip | 4294967295 | +| test.c:618:26:618:27 | ip | 4294967295 | +| test.c:619:19:619:20 | ip | 4294967295 | +| test.c:619:25:619:26 | ip | 4294967295 | +| test.c:619:45:619:46 | ip | 4294967295 | +| test.c:619:51:619:52 | ip | 4294967295 | +| test.c:620:18:620:19 | ip | 4294967295 | +| test.c:621:18:621:19 | ip | 4294967295 | +| test.c:622:18:622:19 | ip | 4294967295 | +| test.c:623:19:623:20 | ip | 4294967295 | +| test.c:624:24:624:25 | ip | 4294967295 | +| test.c:624:35:624:36 | ip | 4294967295 | +| test.c:624:50:624:51 | ip | 4294967295 | +| test.c:624:61:624:62 | ip | 4294967295 | +| test.c:625:22:625:23 | ip | 4294967295 | +| test.c:626:27:626:28 | ip | 4294967295 | +| test.c:626:38:626:39 | ip | 4294967295 | +| test.c:627:29:627:30 | ip | 4294967295 | +| test.c:628:24:628:25 | ip | 4294967295 | +| test.c:629:18:629:19 | ip | 4294967295 | +| test.c:629:24:629:25 | ip | 4294967295 | +| test.c:630:20:630:21 | ip | 4294967295 | +| test.c:631:16:631:17 | ip | 4294967295 | +| test.c:632:10:632:23 | special_number | 4294967295 | +| test.c:640:7:640:8 | c1 | 2147483647 | +| test.c:640:13:640:13 | x | 0 | +| test.c:641:7:641:8 | c2 | 2147483647 | +| test.c:641:13:641:13 | x | 748596 | +| test.c:642:7:642:8 | c3 | 2147483647 | +| test.c:642:13:642:13 | x | 85400991 | +| test.c:643:7:643:8 | c4 | 2147483647 | +| test.c:643:13:643:13 | x | 89076886 | +| test.c:644:7:644:8 | c5 | 2147483647 | +| test.c:644:13:644:13 | x | 89175520 | +| test.c:645:7:645:8 | c1 | 2147483647 | +| test.c:645:13:645:14 | c2 | 2147483647 | +| test.c:645:19:645:19 | x | 97010505 | +| test.c:646:7:646:8 | c1 | 2147483647 | +| test.c:646:13:646:14 | c3 | 2147483647 | +| test.c:646:19:646:19 | x | 1035467903 | +| test.c:647:7:647:8 | c1 | 2147483647 | +| test.c:647:13:647:14 | c4 | 2147483647 | +| test.c:647:19:647:19 | x | 1109363551 | +| test.c:648:7:648:8 | c1 | 2147483647 | +| test.c:648:13:648:14 | c5 | 2147483647 | +| test.c:648:19:648:19 | x | 1121708983 | +| test.c:649:7:649:8 | c2 | 2147483647 | +| test.c:649:13:649:14 | c3 | 2147483647 | +| test.c:649:19:649:19 | x | 1121747830 | +| test.c:651:11:651:11 | x | 2147483647 | +| test.c:651:15:651:15 | x | 2147483647 | +| test.c:651:19:651:19 | x | 2147483647 | +| test.c:651:23:651:23 | x | 2147483647 | +| test.c:651:27:651:27 | x | 2147483647 | +| test.c:651:31:651:31 | x | 2147483647 | +| test.c:651:35:651:35 | x | 2147483647 | +| test.c:651:39:651:39 | x | 2147483647 | +| test.c:651:43:651:43 | x | 2147483647 | +| test.c:651:47:651:47 | x | 2147483647 | +| test.c:651:51:651:51 | x | 2147483647 | +| test.c:651:55:651:55 | x | 2147483647 | +| test.c:652:10:652:10 | y | 2147483647 | +| test.c:657:20:657:20 | x | 4294967295 | +| test.c:657:30:657:30 | x | 99 | +| test.c:660:3:660:4 | y1 | 4294967295 | +| test.c:660:11:660:11 | y | 100 | +| test.c:660:14:660:14 | y | 101 | +| test.c:661:3:661:4 | y2 | 4294967295 | +| test.c:661:9:661:9 | y | 101 | +| test.c:661:14:661:14 | y | 102 | +| test.c:661:22:661:22 | y | 105 | +| test.c:662:10:662:11 | y1 | 101 | +| test.c:662:15:662:16 | y2 | 105 | +| test.c:670:3:670:3 | i | 2147483647 | +| test.c:671:7:671:7 | i | 10 | +| test.c:673:3:673:3 | i | 2147483647 | +| test.c:674:3:674:3 | i | 10 | +| test.c:675:7:675:7 | i | 20 | | test.c:677:3:677:3 | i | 2147483647 | -| test.c:677:13:677:13 | j | 50 | -| test.c:678:7:678:7 | i | 60 | -| test.c:685:12:685:12 | a | 4294967295 | -| test.c:685:17:685:17 | a | 4294967295 | -| test.c:685:33:685:33 | b | 4294967295 | -| test.c:685:38:685:38 | b | 4294967295 | -| test.c:686:13:686:13 | a | 11 | -| test.c:686:15:686:15 | b | 23 | -| test.c:687:5:687:9 | total | 0 | -| test.c:687:14:687:14 | r | 253 | -| test.c:689:12:689:12 | a | 4294967295 | -| test.c:689:17:689:17 | a | 4294967295 | -| test.c:689:33:689:33 | b | 4294967295 | -| test.c:689:38:689:38 | b | 4294967295 | -| test.c:690:13:690:13 | a | 11 | -| test.c:690:15:690:15 | b | 23 | -| test.c:691:5:691:9 | total | 253 | -| test.c:691:14:691:14 | r | 253 | -| test.c:693:12:693:12 | a | 4294967295 | -| test.c:693:17:693:17 | a | 4294967295 | -| test.c:693:34:693:34 | b | 4294967295 | -| test.c:693:39:693:39 | b | 4294967295 | -| test.c:694:13:694:13 | a | 11 | -| test.c:694:15:694:15 | b | 23 | -| test.c:695:5:695:9 | total | 506 | -| test.c:695:14:695:14 | r | 253 | -| test.c:698:10:698:14 | total | 759 | -| test.c:704:12:704:12 | b | 4294967295 | -| test.c:704:17:704:17 | b | 4294967295 | -| test.c:705:16:705:16 | b | 23 | -| test.c:706:5:706:9 | total | 0 | -| test.c:706:14:706:14 | r | 253 | -| test.c:708:12:708:12 | b | 4294967295 | -| test.c:708:17:708:17 | b | 4294967295 | -| test.c:709:16:709:16 | b | 23 | -| test.c:710:5:710:9 | total | 253 | -| test.c:710:14:710:14 | r | 253 | -| test.c:712:13:712:13 | b | 4294967295 | -| test.c:712:18:712:18 | b | 4294967295 | -| test.c:713:16:713:16 | b | 23 | -| test.c:714:5:714:9 | total | 506 | -| test.c:714:14:714:14 | r | 253 | -| test.c:717:10:717:14 | total | 759 | -| test.c:722:3:722:3 | x | 18446744073709551616 | -| test.c:722:7:722:7 | y | 18446744073709551616 | -| test.c:723:3:723:4 | xy | 18446744073709551616 | -| test.c:723:8:723:8 | x | 1000000003 | -| test.c:723:12:723:12 | y | 1000000003 | -| test.c:724:10:724:11 | xy | 1000000006000000000 | -| test.c:729:3:729:3 | x | 18446744073709551616 | -| test.c:730:3:730:3 | y | 18446744073709551616 | -| test.c:731:3:731:4 | xy | 18446744073709551616 | -| test.c:731:8:731:8 | x | 274177 | -| test.c:731:12:731:12 | y | 67280421310721 | -| test.c:732:10:732:11 | xy | 18446744073709551616 | -| test.c:736:7:736:8 | ui | 4294967295 | -| test.c:737:43:737:44 | ui | 4294967295 | -| test.c:737:48:737:49 | ui | 4294967295 | -| test.c:738:12:738:17 | result | 18446744065119617024 | -| test.c:740:7:740:8 | ul | 18446744073709551616 | -| test.c:741:28:741:29 | ul | 18446744073709551616 | -| test.c:741:33:741:34 | ul | 18446744073709551616 | -| test.c:742:12:742:17 | result | 18446744073709551616 | -| test.c:748:7:748:8 | ui | 4294967295 | -| test.c:748:19:748:20 | ui | 10 | -| test.c:749:5:749:6 | ui | 10 | -| test.c:749:11:749:12 | ui | 10 | -| test.c:750:12:750:13 | ui | 100 | -| test.c:754:3:754:9 | uiconst | 10 | -| test.c:757:3:757:9 | ulconst | 10 | -| test.c:758:10:758:16 | uiconst | 40 | -| test.c:758:20:758:26 | ulconst | 40 | -| test.c:762:7:762:7 | i | 2147483647 | -| test.c:762:18:762:18 | i | 2147483647 | -| test.c:763:5:763:5 | i | 2147483647 | -| test.c:763:13:763:13 | i | 2 | -| test.c:764:9:764:9 | i | 10 | -| test.c:766:5:766:5 | i | 2147483647 | -| test.c:766:9:766:9 | i | 10 | -| test.c:767:9:767:9 | i | 15 | -| test.c:769:5:769:5 | i | 15 | -| test.c:770:9:770:9 | i | 105 | -| test.c:772:5:772:5 | i | 105 | -| test.c:773:9:773:9 | i | 2310 | -| test.c:775:7:775:7 | i | 2147483647 | +| test.c:678:3:678:3 | i | 40 | +| test.c:679:7:679:7 | i | 30 | +| test.c:681:3:681:3 | i | 2147483647 | +| test.c:681:7:681:7 | j | 2147483647 | +| test.c:682:7:682:7 | i | 40 | +| test.c:684:3:684:3 | i | 2147483647 | +| test.c:684:8:684:8 | j | 40 | +| test.c:685:7:685:7 | i | 50 | +| test.c:687:3:687:3 | i | 2147483647 | +| test.c:687:13:687:13 | j | 50 | +| test.c:688:7:688:7 | i | 60 | +| test.c:695:12:695:12 | a | 4294967295 | +| test.c:695:17:695:17 | a | 4294967295 | +| test.c:695:33:695:33 | b | 4294967295 | +| test.c:695:38:695:38 | b | 4294967295 | +| test.c:696:13:696:13 | a | 11 | +| test.c:696:15:696:15 | b | 23 | +| test.c:697:5:697:9 | total | 0 | +| test.c:697:14:697:14 | r | 253 | +| test.c:699:12:699:12 | a | 4294967295 | +| test.c:699:17:699:17 | a | 4294967295 | +| test.c:699:33:699:33 | b | 4294967295 | +| test.c:699:38:699:38 | b | 4294967295 | +| test.c:700:13:700:13 | a | 11 | +| test.c:700:15:700:15 | b | 23 | +| test.c:701:5:701:9 | total | 253 | +| test.c:701:14:701:14 | r | 253 | +| test.c:703:12:703:12 | a | 4294967295 | +| test.c:703:17:703:17 | a | 4294967295 | +| test.c:703:34:703:34 | b | 4294967295 | +| test.c:703:39:703:39 | b | 4294967295 | +| test.c:704:13:704:13 | a | 11 | +| test.c:704:15:704:15 | b | 23 | +| test.c:705:5:705:9 | total | 506 | +| test.c:705:14:705:14 | r | 253 | +| test.c:708:10:708:14 | total | 759 | +| test.c:714:12:714:12 | b | 4294967295 | +| test.c:714:17:714:17 | b | 4294967295 | +| test.c:715:16:715:16 | b | 23 | +| test.c:716:5:716:9 | total | 0 | +| test.c:716:14:716:14 | r | 253 | +| test.c:718:12:718:12 | b | 4294967295 | +| test.c:718:17:718:17 | b | 4294967295 | +| test.c:719:16:719:16 | b | 23 | +| test.c:720:5:720:9 | total | 253 | +| test.c:720:14:720:14 | r | 253 | +| test.c:722:13:722:13 | b | 4294967295 | +| test.c:722:18:722:18 | b | 4294967295 | +| test.c:723:16:723:16 | b | 23 | +| test.c:724:5:724:9 | total | 506 | +| test.c:724:14:724:14 | r | 253 | +| test.c:727:10:727:14 | total | 759 | +| test.c:732:3:732:3 | x | 18446744073709551616 | +| test.c:732:7:732:7 | y | 18446744073709551616 | +| test.c:733:3:733:4 | xy | 18446744073709551616 | +| test.c:733:8:733:8 | x | 1000000003 | +| test.c:733:12:733:12 | y | 1000000003 | +| test.c:734:10:734:11 | xy | 1000000006000000000 | +| test.c:739:3:739:3 | x | 18446744073709551616 | +| test.c:740:3:740:3 | y | 18446744073709551616 | +| test.c:741:3:741:4 | xy | 18446744073709551616 | +| test.c:741:8:741:8 | x | 274177 | +| test.c:741:12:741:12 | y | 67280421310721 | +| test.c:742:10:742:11 | xy | 18446744073709551616 | +| test.c:746:7:746:8 | ui | 4294967295 | +| test.c:747:43:747:44 | ui | 4294967295 | +| test.c:747:48:747:49 | ui | 4294967295 | +| test.c:748:12:748:17 | result | 18446744065119617024 | +| test.c:750:7:750:8 | ul | 18446744073709551616 | +| test.c:751:28:751:29 | ul | 18446744073709551616 | +| test.c:751:33:751:34 | ul | 18446744073709551616 | +| test.c:752:12:752:17 | result | 18446744073709551616 | +| test.c:758:7:758:8 | ui | 4294967295 | +| test.c:758:19:758:20 | ui | 10 | +| test.c:759:5:759:6 | ui | 10 | +| test.c:759:11:759:12 | ui | 10 | +| test.c:760:12:760:13 | ui | 100 | +| test.c:764:3:764:9 | uiconst | 10 | +| test.c:767:3:767:9 | ulconst | 10 | +| test.c:768:10:768:16 | uiconst | 40 | +| test.c:768:20:768:26 | ulconst | 40 | +| test.c:772:7:772:7 | i | 2147483647 | +| test.c:772:18:772:18 | i | 2147483647 | +| test.c:773:5:773:5 | i | 2147483647 | +| test.c:773:13:773:13 | i | 2 | +| test.c:774:9:774:9 | i | 10 | | test.c:776:5:776:5 | i | 2147483647 | -| test.c:776:9:776:9 | i | -1 | -| test.c:777:9:777:9 | i | 1 | -| test.c:779:3:779:3 | i | 2147483647 | -| test.c:779:7:779:7 | i | 2147483647 | -| test.c:780:10:780:10 | i | 2147483647 | -| test.c:783:3:783:3 | i | 2147483647 | -| test.c:783:10:783:11 | sc | 1 | -| test.c:785:7:785:7 | i | 127 | -| test.c:792:7:792:7 | n | 4294967295 | -| test.c:794:7:794:7 | n | 4294967295 | -| test.c:795:9:795:9 | n | 4294967295 | -| test.c:798:7:798:7 | n | 4294967295 | -| test.c:799:9:799:9 | n | 4294967295 | -| test.c:801:9:801:9 | n | 0 | -| test.c:804:8:804:8 | n | 4294967295 | -| test.c:805:9:805:9 | n | 0 | -| test.c:807:9:807:9 | n | 4294967295 | -| test.c:810:10:810:10 | n | 4294967295 | -| test.c:811:5:811:5 | n | 4294967295 | -| test.c:814:7:814:7 | n | 0 | -| test.c:818:7:818:7 | n | 32767 | -| test.c:821:7:821:7 | n | 32767 | -| test.c:822:9:822:9 | n | 0 | -| test.c:824:9:824:9 | n | 32767 | -| test.c:827:7:827:7 | n | 32767 | -| test.c:828:9:828:9 | n | 32767 | -| test.c:830:9:830:9 | n | 0 | -| test.c:833:10:833:10 | n | 32767 | -| test.c:834:5:834:5 | n | 32767 | -| test.c:837:7:837:7 | n | 0 | -| test.c:841:7:841:7 | n | 32767 | -| test.c:842:9:842:9 | n | 32767 | -| test.c:843:11:843:11 | n | 32767 | -| test.c:847:7:847:7 | n | 32767 | -| test.c:848:13:848:13 | n | 32767 | -| test.c:851:9:851:9 | n | 32767 | -| test.c:854:7:854:7 | n | 32767 | -| test.c:854:22:854:22 | n | 32767 | -| test.c:855:9:855:9 | n | 32767 | -| test.c:858:7:858:7 | n | 32767 | -| test.c:859:5:859:5 | n | 32767 | -| test.c:859:10:859:10 | n | 32767 | -| test.c:859:14:859:14 | n | 0 | -| test.c:860:6:860:6 | n | 32767 | -| test.c:860:10:860:10 | n | 0 | -| test.c:860:14:860:14 | n | 32767 | -| test.c:871:7:871:8 | ss | 32767 | -| test.c:872:9:872:10 | ss | 3 | -| test.c:875:7:875:8 | ss | 32767 | -| test.c:876:9:876:10 | ss | 32767 | -| test.c:879:14:879:15 | us | 65535 | -| test.c:880:9:880:10 | us | 32767 | -| test.c:883:14:883:15 | us | 65535 | -| test.c:884:9:884:10 | us | 65535 | -| test.c:887:7:887:8 | ss | 32767 | -| test.c:888:9:888:10 | ss | 32767 | -| test.c:891:7:891:8 | ss | 32767 | -| test.c:892:9:892:10 | ss | 2 | -| test.c:898:8:898:8 | s | 2147483647 | -| test.c:898:15:898:15 | s | 127 | -| test.c:898:23:898:23 | s | 9 | -| test.c:899:18:899:18 | s | 9 | -| test.c:899:22:899:22 | s | 9 | -| test.c:900:9:900:14 | result | 127 | -| test.c:906:7:906:7 | i | 0 | -| test.c:907:9:907:9 | i | 2147483647 | -| test.c:911:7:911:7 | u | 0 | -| test.c:912:9:912:9 | u | 4294967295 | -| test.c:917:12:917:12 | s | 2147483647 | -| test.c:918:7:918:8 | s2 | 4 | -| test.c:923:7:923:7 | x | 2147483647 | -| test.c:924:9:924:9 | y | 2147483647 | -| test.c:928:7:928:7 | y | 2147483647 | -| test.c:937:7:937:7 | x | 2147483647 | -| test.c:942:7:942:7 | x | 15 | -| test.c:949:8:949:8 | x | 2147483647 | -| test.c:949:12:949:12 | y | 256 | -| test.c:950:9:950:9 | x | 2147483647 | -| test.c:951:9:951:9 | y | 256 | +| test.c:776:9:776:9 | i | 10 | +| test.c:777:9:777:9 | i | 15 | +| test.c:779:5:779:5 | i | 15 | +| test.c:780:9:780:9 | i | 105 | +| test.c:782:5:782:5 | i | 105 | +| test.c:783:9:783:9 | i | 2310 | +| test.c:785:7:785:7 | i | 2147483647 | +| test.c:786:5:786:5 | i | 2147483647 | +| test.c:786:9:786:9 | i | -1 | +| test.c:787:9:787:9 | i | 1 | +| test.c:789:3:789:3 | i | 2147483647 | +| test.c:789:7:789:7 | i | 2147483647 | +| test.c:790:10:790:10 | i | 2147483647 | +| test.c:793:3:793:3 | i | 2147483647 | +| test.c:793:10:793:11 | sc | 1 | +| test.c:795:7:795:7 | i | 127 | +| test.c:802:7:802:7 | n | 4294967295 | +| test.c:804:7:804:7 | n | 4294967295 | +| test.c:805:9:805:9 | n | 4294967295 | +| test.c:808:7:808:7 | n | 4294967295 | +| test.c:809:9:809:9 | n | 4294967295 | +| test.c:811:9:811:9 | n | 0 | +| test.c:814:8:814:8 | n | 4294967295 | +| test.c:815:9:815:9 | n | 0 | +| test.c:817:9:817:9 | n | 4294967295 | +| test.c:820:10:820:10 | n | 4294967295 | +| test.c:821:5:821:5 | n | 4294967295 | +| test.c:824:7:824:7 | n | 0 | +| test.c:828:7:828:7 | n | 32767 | +| test.c:831:7:831:7 | n | 32767 | +| test.c:832:9:832:9 | n | 0 | +| test.c:834:9:834:9 | n | 32767 | +| test.c:837:7:837:7 | n | 32767 | +| test.c:838:9:838:9 | n | 32767 | +| test.c:840:9:840:9 | n | 0 | +| test.c:843:10:843:10 | n | 32767 | +| test.c:844:5:844:5 | n | 32767 | +| test.c:847:7:847:7 | n | 0 | +| test.c:851:7:851:7 | n | 32767 | +| test.c:852:9:852:9 | n | 32767 | +| test.c:853:11:853:11 | n | 32767 | +| test.c:857:7:857:7 | n | 32767 | +| test.c:858:13:858:13 | n | 32767 | +| test.c:861:9:861:9 | n | 32767 | +| test.c:864:7:864:7 | n | 32767 | +| test.c:864:22:864:22 | n | 32767 | +| test.c:865:9:865:9 | n | 32767 | +| test.c:868:7:868:7 | n | 32767 | +| test.c:869:5:869:5 | n | 32767 | +| test.c:869:10:869:10 | n | 32767 | +| test.c:869:14:869:14 | n | 0 | +| test.c:870:6:870:6 | n | 32767 | +| test.c:870:10:870:10 | n | 0 | +| test.c:870:14:870:14 | n | 32767 | +| test.c:881:7:881:8 | ss | 32767 | +| test.c:882:9:882:10 | ss | 3 | +| test.c:885:7:885:8 | ss | 32767 | +| test.c:886:9:886:10 | ss | 32767 | +| test.c:889:14:889:15 | us | 65535 | +| test.c:890:9:890:10 | us | 32767 | +| test.c:893:14:893:15 | us | 65535 | +| test.c:894:9:894:10 | us | 65535 | +| test.c:897:7:897:8 | ss | 32767 | +| test.c:898:9:898:10 | ss | 32767 | +| test.c:901:7:901:8 | ss | 32767 | +| test.c:902:9:902:10 | ss | 2 | +| test.c:908:8:908:8 | s | 2147483647 | +| test.c:908:15:908:15 | s | 127 | +| test.c:908:23:908:23 | s | 9 | +| test.c:909:18:909:18 | s | 9 | +| test.c:909:22:909:22 | s | 9 | +| test.c:910:9:910:14 | result | 127 | +| test.c:916:7:916:7 | i | 0 | +| test.c:917:9:917:9 | i | 2147483647 | +| test.c:921:7:921:7 | u | 0 | +| test.c:922:9:922:9 | u | 4294967295 | +| test.c:927:12:927:12 | s | 2147483647 | +| test.c:928:7:928:8 | s2 | 4 | +| test.c:933:7:933:7 | x | 2147483647 | +| test.c:934:9:934:9 | y | 2147483647 | +| test.c:938:7:938:7 | y | 2147483647 | +| test.c:947:7:947:7 | x | 2147483647 | +| test.c:952:7:952:7 | x | 15 | +| test.c:959:8:959:8 | x | 2147483647 | +| test.c:959:12:959:12 | y | 256 | +| test.c:960:9:960:9 | x | 2147483647 | +| test.c:961:9:961:9 | y | 256 | | test.cpp:10:7:10:7 | b | 2147483647 | | test.cpp:11:5:11:5 | x | 2147483647 | | test.cpp:13:10:13:10 | x | 2147483647 | From f5ddb1d51d18eef4ffaeca1b5e6106bc39aecd95 Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Wed, 7 Jan 2026 11:00:18 +0100 Subject: [PATCH 34/63] C++: Remove `safeFloor` in simple range analysis --- .../cpp/rangeanalysis/SimpleRangeAnalysis.qll | 20 ++----------------- .../SimpleRangeAnalysis/lowerBound.expected | 2 +- .../SimpleRangeAnalysis/upperBound.expected | 2 +- .../PointlessComparison.cpp | 8 ++++---- .../PointlessComparison.expected | 8 ++++---- 5 files changed, 12 insertions(+), 28 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll index 722866c512f..cc4647b54e0 100644 --- a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll +++ b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll @@ -158,22 +158,6 @@ private class UnsignedBitwiseAndExpr extends BitwiseAndExpr { } } -/** - * Gets the floor of `v`, with additional logic to work around issues with - * large numbers. - */ -bindingset[v] -float safeFloor(float v) { - // return the floor of v - v.abs() < 2.pow(31) and - result = v.floor() - or - // `floor()` doesn't work correctly on large numbers (since it returns an integer), - // so fall back to unrounded numbers at this scale. - not v.abs() < 2.pow(31) and - result = v -} - /** A `MulExpr` where exactly one operand is constant. */ private class MulByConstantExpr extends MulExpr { float constant; @@ -1266,7 +1250,7 @@ private float getLowerBoundsImpl(Expr expr) { rsExpr = expr and left = getFullyConvertedLowerBounds(rsExpr.getLeftOperand()) and right = getValue(rsExpr.getRightOperand().getFullyConverted()).toInt() and - result = safeFloor(left / 2.pow(right)) + result = (left / 2.pow(right)).floorFloat() ) // Not explicitly modeled by a SimpleRangeAnalysisExpr ) and @@ -1475,7 +1459,7 @@ private float getUpperBoundsImpl(Expr expr) { rsExpr = expr and left = getFullyConvertedUpperBounds(rsExpr.getLeftOperand()) and right = getValue(rsExpr.getRightOperand().getFullyConverted()).toInt() and - result = safeFloor(left / 2.pow(right)) + result = (left / 2.pow(right)).floorFloat() ) // Not explicitly modeled by a SimpleRangeAnalysisExpr ) and diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/lowerBound.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/lowerBound.expected index 4c5ceeb9c55..eb1dbc7b93f 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/lowerBound.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/lowerBound.expected @@ -351,7 +351,7 @@ | test.c:330:14:330:14 | r | -2147483648 | | test.c:333:10:333:14 | total | -2147483648 | | test.c:341:32:341:34 | odd | 9007199254740991 | -| test.c:343:10:343:16 | shifted | 4503599627370495.5 | +| test.c:343:10:343:16 | shifted | 4503599627370495 | | test.c:348:7:348:7 | x | -2147483648 | | test.c:352:10:352:10 | i | 0 | | test.c:353:5:353:5 | i | 0 | diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/upperBound.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/upperBound.expected index cb182416e38..b2591fb52f3 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/upperBound.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/upperBound.expected @@ -351,7 +351,7 @@ | test.c:330:14:330:14 | r | 2147483647 | | test.c:333:10:333:14 | total | 2147483647 | | test.c:341:32:341:34 | odd | 9007199254740991 | -| test.c:343:10:343:16 | shifted | 4503599627370495.5 | +| test.c:343:10:343:16 | shifted | 4503599627370495 | | test.c:348:7:348:7 | x | 2147483647 | | test.c:352:10:352:10 | i | 7 | | test.c:353:5:353:5 | i | 2 | diff --git a/cpp/ql/test/query-tests/Likely Bugs/Arithmetic/PointlessComparison/PointlessComparison.cpp b/cpp/ql/test/query-tests/Likely Bugs/Arithmetic/PointlessComparison/PointlessComparison.cpp index 7b67f77ad44..ce04ddcf081 100644 --- a/cpp/ql/test/query-tests/Likely Bugs/Arithmetic/PointlessComparison/PointlessComparison.cpp +++ b/cpp/ql/test/query-tests/Likely Bugs/Arithmetic/PointlessComparison/PointlessComparison.cpp @@ -38,8 +38,8 @@ int extreme_values(void) if (x >> 1 >= 0x7FFFFFFFFFFFFFFF) {} // always true [NOT DETECTED] if (x >> 1 >= 0xFFFFFFFFFFFFFFF) {} // always true [NOT DETECTED] - if (y >> 1 >= 0xFFFFFFFFFFFF) {} // always false [INCORRECT MESSAGE] - if (y >> 1 >= 0x800000000000) {} // always false [INCORRECT MESSAGE] - if (y >> 1 >= 0x7FFFFFFFFFFF) {} // always true [INCORRECT MESSAGE] - if (y >> 1 >= 0xFFFFFFFFFFF) {} // always true [INCORRECT MESSAGE] + if (y >> 1 >= 0xFFFFFFFFFFFF) {} // always false + if (y >> 1 >= 0x800000000000) {} // always false + if (y >> 1 >= 0x7FFFFFFFFFFF) {} // always true + if (y >> 1 >= 0xFFFFFFFFFFF) {} // always true } diff --git a/cpp/ql/test/query-tests/Likely Bugs/Arithmetic/PointlessComparison/PointlessComparison.expected b/cpp/ql/test/query-tests/Likely Bugs/Arithmetic/PointlessComparison/PointlessComparison.expected index 6c273b985ee..d00c38fda28 100644 --- a/cpp/ql/test/query-tests/Likely Bugs/Arithmetic/PointlessComparison/PointlessComparison.expected +++ b/cpp/ql/test/query-tests/Likely Bugs/Arithmetic/PointlessComparison/PointlessComparison.expected @@ -45,9 +45,9 @@ | PointlessComparison.c:391:12:391:20 | ... < ... | Comparison is always false because ... * ... >= 6. | | PointlessComparison.c:414:7:414:16 | ... == ... | Comparison is always false because ... * ... >= 18446744073709551616. | | PointlessComparison.cpp:36:6:36:33 | ... >= ... | Comparison is always false because ... >> ... <= 9223372036854775808. | -| PointlessComparison.cpp:41:6:41:29 | ... >= ... | Comparison is always false because ... >> ... <= 140737488355327.5. | -| PointlessComparison.cpp:42:6:42:29 | ... >= ... | Comparison is always false because ... >> ... <= 140737488355327.5. | -| PointlessComparison.cpp:43:6:43:29 | ... >= ... | Comparison is always true because ... >> ... >= 140737488355327.5. | -| PointlessComparison.cpp:44:6:44:28 | ... >= ... | Comparison is always true because ... >> ... >= 140737488355327.5. | +| PointlessComparison.cpp:41:6:41:29 | ... >= ... | Comparison is always false because ... >> ... <= 140737488355327. | +| PointlessComparison.cpp:42:6:42:29 | ... >= ... | Comparison is always false because ... >> ... <= 140737488355327. | +| PointlessComparison.cpp:43:6:43:29 | ... >= ... | Comparison is always true because ... >> ... >= 140737488355327. | +| PointlessComparison.cpp:44:6:44:28 | ... >= ... | Comparison is always true because ... >> ... >= 140737488355327. | | RegressionTests.cpp:57:7:57:22 | ... <= ... | Comparison is always true because * ... <= 4294967295. | | Templates.cpp:9:10:9:24 | ... <= ... | Comparison is always true because local <= 32767. | From fef00c16680869edb39bb22795bc665ebd702286 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Wed, 7 Jan 2026 14:17:48 +0100 Subject: [PATCH 35/63] Add change note --- .../change-notes/2026-01-07-method-resolution-deref-trait.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 rust/ql/lib/change-notes/2026-01-07-method-resolution-deref-trait.md diff --git a/rust/ql/lib/change-notes/2026-01-07-method-resolution-deref-trait.md b/rust/ql/lib/change-notes/2026-01-07-method-resolution-deref-trait.md new file mode 100644 index 00000000000..2ed9cf750cb --- /dev/null +++ b/rust/ql/lib/change-notes/2026-01-07-method-resolution-deref-trait.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* The `Deref` trait is now considered during method resolution. This means that method calls on receivers implementing the `Deref` trait will correctly resolve to methods defined on the target type. This may result in additional query results, especially for data flow queries. \ No newline at end of file From 8602a2d59b6bb328c02266851221645b33ff94bb Mon Sep 17 00:00:00 2001 From: Taus Date: Wed, 7 Jan 2026 14:47:11 +0100 Subject: [PATCH 36/63] Python: Use correct first parameter name for zstd call Co-authored-by: yoff --- .../experimental/semmle/python/security/DecompressionBomb.qll | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/ql/src/experimental/semmle/python/security/DecompressionBomb.qll b/python/ql/src/experimental/semmle/python/security/DecompressionBomb.qll index 87a47ebeb00..f05e5826420 100644 --- a/python/ql/src/experimental/semmle/python/security/DecompressionBomb.qll +++ b/python/ql/src/experimental/semmle/python/security/DecompressionBomb.qll @@ -381,7 +381,7 @@ module Zstd { class DecompressionSink extends DecompressionBomb::Sink { DecompressionSink() { exists(API::CallNode zstdCall | zstdCall = zstdInstance().getACall() | - this = zstdCall.getParameter(0, "filename").asSink() and + this = zstdCall.getParameter(0, "file").asSink() and ( not exists( zstdCall From 614a05133e72e581c4ae8117033f24adee70a229 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 8 Jan 2026 00:26:30 +0000 Subject: [PATCH 37/63] Add changed framework coverage reports --- java/documentation/library-coverage/coverage.csv | 1 + java/documentation/library-coverage/coverage.rst | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/java/documentation/library-coverage/coverage.csv b/java/documentation/library-coverage/coverage.csv index a936bcdeddf..3fc7be04e30 100644 --- a/java/documentation/library-coverage/coverage.csv +++ b/java/documentation/library-coverage/coverage.csv @@ -258,6 +258,7 @@ org.springframework.web.multipart,,12,12,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, org.springframework.web.portlet,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,, org.springframework.web.reactive.function.client,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, org.springframework.web.servlet,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,, +org.springframework.web.socket,,8,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,8,6, org.springframework.web.util,,9,157,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,132,25 org.thymeleaf,2,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,2, org.xml.sax,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, diff --git a/java/documentation/library-coverage/coverage.rst b/java/documentation/library-coverage/coverage.rst index 22e3ecfa5e7..170f4319468 100644 --- a/java/documentation/library-coverage/coverage.rst +++ b/java/documentation/library-coverage/coverage.rst @@ -21,7 +21,7 @@ Java framework & library support Java Standard Library,``java.*``,10,4628,260,99,,9,,,26 Java extensions,"``javax.*``, ``jakarta.*``",87,4185,90,10,4,2,1,1,4 Kotlin Standard Library,``kotlin*``,,1849,16,14,,,,,2 - `Spring `_,``org.springframework.*``,38,486,143,26,,28,14,,35 + `Spring `_,``org.springframework.*``,46,492,143,26,,28,14,,35 Others,"``actions.osgi``, ``antlr``, ``ch.ethz.ssh2``, ``cn.hutool.core.codec``, ``com.alibaba.com.caucho.hessian.io``, ``com.alibaba.druid.sql``, ``com.alibaba.fastjson2``, ``com.amazonaws.auth``, ``com.auth0.jwt.algorithms``, ``com.azure.identity``, ``com.caucho.burlap.io``, ``com.caucho.hessian.io``, ``com.cedarsoftware.util.io``, ``com.esotericsoftware.kryo.io``, ``com.esotericsoftware.kryo5.io``, ``com.esotericsoftware.yamlbeans``, ``com.fasterxml.jackson.core``, ``com.fasterxml.jackson.databind``, ``com.google.gson``, ``com.hubspot.jinjava``, ``com.jcraft.jsch``, ``com.microsoft.sqlserver.jdbc``, ``com.mitchellbosecke.pebble``, ``com.mongodb``, ``com.opensymphony.xwork2``, ``com.rabbitmq.client``, ``com.sshtools.j2ssh.authentication``, ``com.sun.crypto.provider``, ``com.sun.jndi.ldap``, ``com.sun.net.httpserver``, ``com.sun.net.ssl``, ``com.sun.rowset``, ``com.sun.security.auth.module``, ``com.sun.security.ntlm``, ``com.sun.security.sasl.digest``, ``com.thoughtworks.xstream``, ``com.trilead.ssh2``, ``com.unboundid.ldap.sdk``, ``com.zaxxer.hikari``, ``flexjson``, ``freemarker.cache``, ``freemarker.template``, ``groovy.lang``, ``groovy.text``, ``groovy.util``, ``hudson``, ``io.jsonwebtoken``, ``io.netty.bootstrap``, ``io.netty.buffer``, ``io.netty.channel``, ``io.netty.handler.codec``, ``io.netty.handler.ssl``, ``io.netty.handler.stream``, ``io.netty.resolver``, ``io.netty.util``, ``io.undertow.server.handlers.resource``, ``javafx.scene.web``, ``jenkins``, ``jodd.json``, ``liquibase.database.jvm``, ``liquibase.statement.core``, ``net.lingala.zip4j``, ``net.schmizz.sshj``, ``net.sf.json``, ``net.sf.saxon.s9api``, ``ognl``, ``okhttp3``, ``org.acegisecurity``, ``org.antlr.runtime``, ``org.apache.commons.codec``, ``org.apache.commons.compress.archivers.tar``, ``org.apache.commons.exec``, ``org.apache.commons.httpclient.util``, ``org.apache.commons.jelly``, ``org.apache.commons.jexl2``, ``org.apache.commons.jexl3``, ``org.apache.commons.lang``, ``org.apache.commons.logging``, ``org.apache.commons.net``, ``org.apache.commons.ognl``, ``org.apache.cxf.catalog``, ``org.apache.cxf.common.classloader``, ``org.apache.cxf.common.jaxb``, ``org.apache.cxf.common.logging``, ``org.apache.cxf.configuration.jsse``, ``org.apache.cxf.helpers``, ``org.apache.cxf.resource``, ``org.apache.cxf.staxutils``, ``org.apache.cxf.tools.corba.utils``, ``org.apache.cxf.tools.util``, ``org.apache.cxf.transform``, ``org.apache.directory.ldap.client.api``, ``org.apache.hadoop.fs``, ``org.apache.hadoop.hive.metastore``, ``org.apache.hadoop.hive.ql.exec``, ``org.apache.hadoop.hive.ql.metadata``, ``org.apache.hc.client5.http.async.methods``, ``org.apache.hc.client5.http.classic.methods``, ``org.apache.hc.client5.http.fluent``, ``org.apache.hive.hcatalog.templeton``, ``org.apache.ibatis.jdbc``, ``org.apache.ibatis.mapping``, ``org.apache.log4j``, ``org.apache.shiro.authc``, ``org.apache.shiro.codec``, ``org.apache.shiro.jndi``, ``org.apache.shiro.mgt``, ``org.apache.sshd.client.session``, ``org.apache.struts.beanvalidation.validation.interceptor``, ``org.apache.struts2``, ``org.apache.tools.ant``, ``org.apache.tools.zip``, ``org.apache.velocity.app``, ``org.apache.velocity.runtime``, ``org.codehaus.cargo.container.installer``, ``org.codehaus.groovy.control``, ``org.dom4j``, ``org.eclipse.jetty.client``, ``org.exolab.castor.xml``, ``org.fusesource.leveldbjni``, ``org.geogebra.web.full.main``, ``org.gradle.api.file``, ``org.hibernate``, ``org.ho.yaml``, ``org.influxdb``, ``org.jabsorb``, ``org.jboss.vfs``, ``org.jdbi.v3.core``, ``org.jenkins.ui.icon``, ``org.jenkins.ui.symbol``, ``org.jooq``, ``org.keycloak.models.map.storage``, ``org.kohsuke.stapler``, ``org.lastaflute.web``, ``org.mvel2``, ``org.openjdk.jmh.runner.options``, ``org.owasp.esapi``, ``org.pac4j.jwt.config.encryption``, ``org.pac4j.jwt.config.signature``, ``org.scijava.log``, ``org.slf4j``, ``org.thymeleaf``, ``org.xml.sax``, ``org.xmlpull.v1``, ``org.yaml.snakeyaml``, ``play.libs.ws``, ``play.mvc``, ``ratpack.core.form``, ``ratpack.core.handling``, ``ratpack.core.http``, ``ratpack.exec``, ``ratpack.form``, ``ratpack.func``, ``ratpack.handling``, ``ratpack.http``, ``ratpack.util``, ``retrofit2``, ``software.amazon.awssdk.transfer.s3.model``, ``sun.jvmstat.perfdata.monitor.protocol.local``, ``sun.jvmstat.perfdata.monitor.protocol.rmi``, ``sun.misc``, ``sun.net.ftp``, ``sun.net.www.protocol.http``, ``sun.security.acl``, ``sun.security.jgss.krb5``, ``sun.security.krb5``, ``sun.security.pkcs``, ``sun.security.pkcs11``, ``sun.security.provider``, ``sun.security.ssl``, ``sun.security.x509``, ``sun.tools.jconsole``",133,10525,927,140,6,22,18,,208 - Totals,,330,26361,2656,404,16,128,33,1,409 + Totals,,338,26367,2656,404,16,128,33,1,409 From 7c0054bf255ba4c6c7a15366e77ef537c30f5fbd Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Thu, 8 Jan 2026 08:51:04 +0100 Subject: [PATCH 38/63] C++: Tweak a comment in simple range analysis Co-authored-by: Geoffrey White <40627776+geoffw0@users.noreply.github.com> --- .../test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c index bb6dc63e570..d59d20ecc9b 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c @@ -335,7 +335,7 @@ int test_mult05(int a, int b) { // Tests for shift operators. unsigned long long test_shift(unsigned long long a) { - // `odd` is the largest odd integer that can be represented by a double. + // `odd` is the largest odd integer that can be precisely represented by a double. unsigned long long odd = 9007199254740992 - 1; // 2^53 - 1 // Shifting right by by 1 give an upper bound that is half of `odd` rounded down. unsigned long long shifted = odd >> 1; From 1ebf623541034c909c3fad93171b8d124ae7adf3 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Thu, 8 Jan 2026 11:00:43 +0100 Subject: [PATCH 39/63] C++: Add space in tests for adding new tests in a logical place --- .../library-tests/ir/ir/PrintAST.expected | 20430 ++++++++-------- .../library-tests/ir/ir/aliased_ir.expected | 17860 +++++++------- .../ir/ir/aliased_ssa_consistency.expected | 2 +- .../aliased_ssa_consistency_unsound.expected | 2 +- cpp/ql/test/library-tests/ir/ir/ir.cpp | 2 + .../ir/ir/raw_consistency.expected | 4 +- .../test/library-tests/ir/ir/raw_ir.expected | 15500 ++++++------ .../ir/ir/unaliased_ssa_consistency.expected | 2 +- ...unaliased_ssa_consistency_unsound.expected | 2 +- .../vector_types/builtin_ops.expected | 2 +- .../vector_types/variables.expected | 2 +- .../vector_types/vector_types.cpp | 5 + 12 files changed, 26910 insertions(+), 26903 deletions(-) diff --git a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected index 62831586ead..7db69b595cb 100644 --- a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected +++ b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected @@ -13331,755 +13331,719 @@ ir.cpp: # 1216| getRightOperand(): [VariableAccess] vi4_shuffle # 1216| Type = [SpecifiedType] __attribute((vector_size(16UL))) int # 1216| ValueCategory = prvalue(load) -# 1217| getStmt(5): [ReturnStmt] return ... -# 1219| [TopLevelFunction] void* memcpy(void*, void*, int) -# 1219| : -# 1219| getParameter(0): [Parameter] dst -# 1219| Type = [VoidPointerType] void * -# 1219| getParameter(1): [Parameter] src -# 1219| Type = [VoidPointerType] void * -# 1219| getParameter(2): [Parameter] size -# 1219| Type = [IntType] int -# 1221| [TopLevelFunction] int ModeledCallTarget(int) +# 1219| getStmt(5): [ReturnStmt] return ... +# 1221| [TopLevelFunction] void* memcpy(void*, void*, int) # 1221| : -# 1221| getParameter(0): [Parameter] x +# 1221| getParameter(0): [Parameter] dst +# 1221| Type = [VoidPointerType] void * +# 1221| getParameter(1): [Parameter] src +# 1221| Type = [VoidPointerType] void * +# 1221| getParameter(2): [Parameter] size # 1221| Type = [IntType] int -# 1221| getEntryPoint(): [BlockStmt] { ... } -# 1222| getStmt(0): [DeclStmt] declaration -# 1222| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 1222| Type = [IntType] int -# 1223| getStmt(1): [ExprStmt] ExprStmt -# 1223| getExpr(): [FunctionCall] call to memcpy -# 1223| Type = [VoidPointerType] void * -# 1223| ValueCategory = prvalue -# 1223| getArgument(0): [AddressOfExpr] & ... -# 1223| Type = [IntPointerType] int * -# 1223| ValueCategory = prvalue -# 1223| getOperand(): [VariableAccess] y -# 1223| Type = [IntType] int -# 1223| ValueCategory = lvalue -# 1223| getArgument(1): [AddressOfExpr] & ... -# 1223| Type = [IntPointerType] int * -# 1223| ValueCategory = prvalue -# 1223| getOperand(): [VariableAccess] x -# 1223| Type = [IntType] int -# 1223| ValueCategory = lvalue -# 1223| getArgument(2): [SizeofTypeOperator] sizeof(int) -# 1223| Type = [LongType] unsigned long -# 1223| Value = [SizeofTypeOperator] 4 -# 1223| ValueCategory = prvalue -# 1223| getArgument(0).getFullyConverted(): [CStyleCast] (void *)... -# 1223| Conversion = [PointerConversion] pointer conversion -# 1223| Type = [VoidPointerType] void * -# 1223| ValueCategory = prvalue -# 1223| getArgument(1).getFullyConverted(): [CStyleCast] (void *)... -# 1223| Conversion = [PointerConversion] pointer conversion -# 1223| Type = [VoidPointerType] void * -# 1223| ValueCategory = prvalue -# 1223| getArgument(2).getFullyConverted(): [CStyleCast] (int)... -# 1223| Conversion = [IntegralConversion] integral conversion -# 1223| Type = [IntType] int -# 1223| Value = [CStyleCast] 4 -# 1223| ValueCategory = prvalue -# 1224| getStmt(2): [ReturnStmt] return ... -# 1224| getExpr(): [VariableAccess] y +# 1223| [TopLevelFunction] int ModeledCallTarget(int) +# 1223| : +# 1223| getParameter(0): [Parameter] x +# 1223| Type = [IntType] int +# 1223| getEntryPoint(): [BlockStmt] { ... } +# 1224| getStmt(0): [DeclStmt] declaration +# 1224| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y # 1224| Type = [IntType] int -# 1224| ValueCategory = prvalue(load) -# 1227| [TopLevelFunction] String ReturnObjectImpl() -# 1227| : -# 1227| getEntryPoint(): [BlockStmt] { ... } -# 1228| getStmt(0): [ReturnStmt] return ... -# 1228| getExpr(): [ConstructorCall] call to String -# 1228| Type = [VoidType] void -# 1228| ValueCategory = prvalue -# 1228| getArgument(0): foo -# 1228| Type = [ArrayType] const char[4] -# 1228| Value = [StringLiteral] "foo" -# 1228| ValueCategory = lvalue -# 1228| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1228| Type = [PointerType] const char * -# 1228| ValueCategory = prvalue -# 1231| [TopLevelFunction] void switch1Case(int) -# 1231| : -# 1231| getParameter(0): [Parameter] x -# 1231| Type = [IntType] int -# 1231| getEntryPoint(): [BlockStmt] { ... } -# 1232| getStmt(0): [DeclStmt] declaration -# 1232| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 1232| Type = [IntType] int -# 1232| getVariable().getInitializer(): [Initializer] initializer for y -# 1232| getExpr(): [Literal] 0 -# 1232| Type = [IntType] int -# 1232| Value = [Literal] 0 -# 1232| ValueCategory = prvalue -# 1233| getStmt(1): [SwitchStmt] switch (...) ... -# 1233| getExpr(): [VariableAccess] x -# 1233| Type = [IntType] int -# 1233| ValueCategory = prvalue(load) -# 1233| getStmt(): [BlockStmt] { ... } -# 1234| getStmt(0): [SwitchCase] case ...: -# 1234| getExpr(): [Literal] 1 +# 1225| getStmt(1): [ExprStmt] ExprStmt +# 1225| getExpr(): [FunctionCall] call to memcpy +# 1225| Type = [VoidPointerType] void * +# 1225| ValueCategory = prvalue +# 1225| getArgument(0): [AddressOfExpr] & ... +# 1225| Type = [IntPointerType] int * +# 1225| ValueCategory = prvalue +# 1225| getOperand(): [VariableAccess] y +# 1225| Type = [IntType] int +# 1225| ValueCategory = lvalue +# 1225| getArgument(1): [AddressOfExpr] & ... +# 1225| Type = [IntPointerType] int * +# 1225| ValueCategory = prvalue +# 1225| getOperand(): [VariableAccess] x +# 1225| Type = [IntType] int +# 1225| ValueCategory = lvalue +# 1225| getArgument(2): [SizeofTypeOperator] sizeof(int) +# 1225| Type = [LongType] unsigned long +# 1225| Value = [SizeofTypeOperator] 4 +# 1225| ValueCategory = prvalue +# 1225| getArgument(0).getFullyConverted(): [CStyleCast] (void *)... +# 1225| Conversion = [PointerConversion] pointer conversion +# 1225| Type = [VoidPointerType] void * +# 1225| ValueCategory = prvalue +# 1225| getArgument(1).getFullyConverted(): [CStyleCast] (void *)... +# 1225| Conversion = [PointerConversion] pointer conversion +# 1225| Type = [VoidPointerType] void * +# 1225| ValueCategory = prvalue +# 1225| getArgument(2).getFullyConverted(): [CStyleCast] (int)... +# 1225| Conversion = [IntegralConversion] integral conversion +# 1225| Type = [IntType] int +# 1225| Value = [CStyleCast] 4 +# 1225| ValueCategory = prvalue +# 1226| getStmt(2): [ReturnStmt] return ... +# 1226| getExpr(): [VariableAccess] y +# 1226| Type = [IntType] int +# 1226| ValueCategory = prvalue(load) +# 1229| [TopLevelFunction] String ReturnObjectImpl() +# 1229| : +# 1229| getEntryPoint(): [BlockStmt] { ... } +# 1230| getStmt(0): [ReturnStmt] return ... +# 1230| getExpr(): [ConstructorCall] call to String +# 1230| Type = [VoidType] void +# 1230| ValueCategory = prvalue +# 1230| getArgument(0): foo +# 1230| Type = [ArrayType] const char[4] +# 1230| Value = [StringLiteral] "foo" +# 1230| ValueCategory = lvalue +# 1230| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1230| Type = [PointerType] const char * +# 1230| ValueCategory = prvalue +# 1233| [TopLevelFunction] void switch1Case(int) +# 1233| : +# 1233| getParameter(0): [Parameter] x +# 1233| Type = [IntType] int +# 1233| getEntryPoint(): [BlockStmt] { ... } +# 1234| getStmt(0): [DeclStmt] declaration +# 1234| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 1234| Type = [IntType] int +# 1234| getVariable().getInitializer(): [Initializer] initializer for y +# 1234| getExpr(): [Literal] 0 # 1234| Type = [IntType] int -# 1234| Value = [Literal] 1 +# 1234| Value = [Literal] 0 # 1234| ValueCategory = prvalue -# 1235| getStmt(1): [ExprStmt] ExprStmt -# 1235| getExpr(): [AssignExpr] ... = ... -# 1235| Type = [IntType] int -# 1235| ValueCategory = lvalue -# 1235| getLValue(): [VariableAccess] y -# 1235| Type = [IntType] int -# 1235| ValueCategory = lvalue -# 1235| getRValue(): [Literal] 2 -# 1235| Type = [IntType] int -# 1235| Value = [Literal] 2 -# 1235| ValueCategory = prvalue -# 1237| getStmt(2): [DeclStmt] declaration -# 1237| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z -# 1237| Type = [IntType] int -# 1237| getVariable().getInitializer(): [Initializer] initializer for z -# 1237| getExpr(): [VariableAccess] y +# 1235| getStmt(1): [SwitchStmt] switch (...) ... +# 1235| getExpr(): [VariableAccess] x +# 1235| Type = [IntType] int +# 1235| ValueCategory = prvalue(load) +# 1235| getStmt(): [BlockStmt] { ... } +# 1236| getStmt(0): [SwitchCase] case ...: +# 1236| getExpr(): [Literal] 1 +# 1236| Type = [IntType] int +# 1236| Value = [Literal] 1 +# 1236| ValueCategory = prvalue +# 1237| getStmt(1): [ExprStmt] ExprStmt +# 1237| getExpr(): [AssignExpr] ... = ... # 1237| Type = [IntType] int -# 1237| ValueCategory = prvalue(load) -# 1238| getStmt(3): [ReturnStmt] return ... -# 1240| [TopLevelFunction] void switch2Case_fallthrough(int) -# 1240| : -# 1240| getParameter(0): [Parameter] x -# 1240| Type = [IntType] int -# 1240| getEntryPoint(): [BlockStmt] { ... } -# 1241| getStmt(0): [DeclStmt] declaration -# 1241| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 1241| Type = [IntType] int -# 1241| getVariable().getInitializer(): [Initializer] initializer for y -# 1241| getExpr(): [Literal] 0 -# 1241| Type = [IntType] int -# 1241| Value = [Literal] 0 -# 1241| ValueCategory = prvalue -# 1242| getStmt(1): [SwitchStmt] switch (...) ... -# 1242| getExpr(): [VariableAccess] x -# 1242| Type = [IntType] int -# 1242| ValueCategory = prvalue(load) -# 1242| getStmt(): [BlockStmt] { ... } -# 1243| getStmt(0): [SwitchCase] case ...: -# 1243| getExpr(): [Literal] 1 +# 1237| ValueCategory = lvalue +# 1237| getLValue(): [VariableAccess] y +# 1237| Type = [IntType] int +# 1237| ValueCategory = lvalue +# 1237| getRValue(): [Literal] 2 +# 1237| Type = [IntType] int +# 1237| Value = [Literal] 2 +# 1237| ValueCategory = prvalue +# 1239| getStmt(2): [DeclStmt] declaration +# 1239| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z +# 1239| Type = [IntType] int +# 1239| getVariable().getInitializer(): [Initializer] initializer for z +# 1239| getExpr(): [VariableAccess] y +# 1239| Type = [IntType] int +# 1239| ValueCategory = prvalue(load) +# 1240| getStmt(3): [ReturnStmt] return ... +# 1242| [TopLevelFunction] void switch2Case_fallthrough(int) +# 1242| : +# 1242| getParameter(0): [Parameter] x +# 1242| Type = [IntType] int +# 1242| getEntryPoint(): [BlockStmt] { ... } +# 1243| getStmt(0): [DeclStmt] declaration +# 1243| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 1243| Type = [IntType] int +# 1243| getVariable().getInitializer(): [Initializer] initializer for y +# 1243| getExpr(): [Literal] 0 # 1243| Type = [IntType] int -# 1243| Value = [Literal] 1 +# 1243| Value = [Literal] 0 # 1243| ValueCategory = prvalue -# 1244| getStmt(1): [ExprStmt] ExprStmt -# 1244| getExpr(): [AssignExpr] ... = ... -# 1244| Type = [IntType] int -# 1244| ValueCategory = lvalue -# 1244| getLValue(): [VariableAccess] y -# 1244| Type = [IntType] int -# 1244| ValueCategory = lvalue -# 1244| getRValue(): [Literal] 2 -# 1244| Type = [IntType] int -# 1244| Value = [Literal] 2 -# 1244| ValueCategory = prvalue -# 1245| getStmt(2): [SwitchCase] case ...: -# 1245| getExpr(): [Literal] 2 +# 1244| getStmt(1): [SwitchStmt] switch (...) ... +# 1244| getExpr(): [VariableAccess] x +# 1244| Type = [IntType] int +# 1244| ValueCategory = prvalue(load) +# 1244| getStmt(): [BlockStmt] { ... } +# 1245| getStmt(0): [SwitchCase] case ...: +# 1245| getExpr(): [Literal] 1 # 1245| Type = [IntType] int -# 1245| Value = [Literal] 2 +# 1245| Value = [Literal] 1 # 1245| ValueCategory = prvalue -# 1246| getStmt(3): [ExprStmt] ExprStmt +# 1246| getStmt(1): [ExprStmt] ExprStmt # 1246| getExpr(): [AssignExpr] ... = ... # 1246| Type = [IntType] int # 1246| ValueCategory = lvalue # 1246| getLValue(): [VariableAccess] y # 1246| Type = [IntType] int # 1246| ValueCategory = lvalue -# 1246| getRValue(): [Literal] 3 +# 1246| getRValue(): [Literal] 2 # 1246| Type = [IntType] int -# 1246| Value = [Literal] 3 +# 1246| Value = [Literal] 2 # 1246| ValueCategory = prvalue -# 1248| getStmt(2): [DeclStmt] declaration -# 1248| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z -# 1248| Type = [IntType] int -# 1248| getVariable().getInitializer(): [Initializer] initializer for z -# 1248| getExpr(): [VariableAccess] y +# 1247| getStmt(2): [SwitchCase] case ...: +# 1247| getExpr(): [Literal] 2 +# 1247| Type = [IntType] int +# 1247| Value = [Literal] 2 +# 1247| ValueCategory = prvalue +# 1248| getStmt(3): [ExprStmt] ExprStmt +# 1248| getExpr(): [AssignExpr] ... = ... # 1248| Type = [IntType] int -# 1248| ValueCategory = prvalue(load) -# 1249| getStmt(3): [ReturnStmt] return ... -# 1251| [TopLevelFunction] void switch2Case(int) -# 1251| : -# 1251| getParameter(0): [Parameter] x -# 1251| Type = [IntType] int -# 1251| getEntryPoint(): [BlockStmt] { ... } -# 1252| getStmt(0): [DeclStmt] declaration -# 1252| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 1252| Type = [IntType] int -# 1252| getVariable().getInitializer(): [Initializer] initializer for y -# 1252| getExpr(): [Literal] 0 -# 1252| Type = [IntType] int -# 1252| Value = [Literal] 0 -# 1252| ValueCategory = prvalue -# 1253| getStmt(1): [SwitchStmt] switch (...) ... -# 1253| getExpr(): [VariableAccess] x -# 1253| Type = [IntType] int -# 1253| ValueCategory = prvalue(load) -# 1253| getStmt(): [BlockStmt] { ... } -# 1254| getStmt(0): [SwitchCase] case ...: -# 1254| getExpr(): [Literal] 1 +# 1248| ValueCategory = lvalue +# 1248| getLValue(): [VariableAccess] y +# 1248| Type = [IntType] int +# 1248| ValueCategory = lvalue +# 1248| getRValue(): [Literal] 3 +# 1248| Type = [IntType] int +# 1248| Value = [Literal] 3 +# 1248| ValueCategory = prvalue +# 1250| getStmt(2): [DeclStmt] declaration +# 1250| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z +# 1250| Type = [IntType] int +# 1250| getVariable().getInitializer(): [Initializer] initializer for z +# 1250| getExpr(): [VariableAccess] y +# 1250| Type = [IntType] int +# 1250| ValueCategory = prvalue(load) +# 1251| getStmt(3): [ReturnStmt] return ... +# 1253| [TopLevelFunction] void switch2Case(int) +# 1253| : +# 1253| getParameter(0): [Parameter] x +# 1253| Type = [IntType] int +# 1253| getEntryPoint(): [BlockStmt] { ... } +# 1254| getStmt(0): [DeclStmt] declaration +# 1254| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 1254| Type = [IntType] int +# 1254| getVariable().getInitializer(): [Initializer] initializer for y +# 1254| getExpr(): [Literal] 0 # 1254| Type = [IntType] int -# 1254| Value = [Literal] 1 +# 1254| Value = [Literal] 0 # 1254| ValueCategory = prvalue -# 1255| getStmt(1): [ExprStmt] ExprStmt -# 1255| getExpr(): [AssignExpr] ... = ... -# 1255| Type = [IntType] int -# 1255| ValueCategory = lvalue -# 1255| getLValue(): [VariableAccess] y -# 1255| Type = [IntType] int -# 1255| ValueCategory = lvalue -# 1255| getRValue(): [Literal] 2 -# 1255| Type = [IntType] int -# 1255| Value = [Literal] 2 -# 1255| ValueCategory = prvalue -# 1256| getStmt(2): [BreakStmt] break; -# 1257| getStmt(3): [SwitchCase] case ...: -# 1257| getExpr(): [Literal] 2 +# 1255| getStmt(1): [SwitchStmt] switch (...) ... +# 1255| getExpr(): [VariableAccess] x +# 1255| Type = [IntType] int +# 1255| ValueCategory = prvalue(load) +# 1255| getStmt(): [BlockStmt] { ... } +# 1256| getStmt(0): [SwitchCase] case ...: +# 1256| getExpr(): [Literal] 1 +# 1256| Type = [IntType] int +# 1256| Value = [Literal] 1 +# 1256| ValueCategory = prvalue +# 1257| getStmt(1): [ExprStmt] ExprStmt +# 1257| getExpr(): [AssignExpr] ... = ... # 1257| Type = [IntType] int -# 1257| Value = [Literal] 2 -# 1257| ValueCategory = prvalue -# 1258| getStmt(4): [ExprStmt] ExprStmt -# 1258| getExpr(): [AssignExpr] ... = ... -# 1258| Type = [IntType] int -# 1258| ValueCategory = lvalue -# 1258| getLValue(): [VariableAccess] y -# 1258| Type = [IntType] int -# 1258| ValueCategory = lvalue -# 1258| getRValue(): [Literal] 3 -# 1258| Type = [IntType] int -# 1258| Value = [Literal] 3 -# 1258| ValueCategory = prvalue -# 1259| getStmt(2): [LabelStmt] label ...: -# 1260| getStmt(3): [DeclStmt] declaration -# 1260| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z -# 1260| Type = [IntType] int -# 1260| getVariable().getInitializer(): [Initializer] initializer for z -# 1260| getExpr(): [VariableAccess] y +# 1257| ValueCategory = lvalue +# 1257| getLValue(): [VariableAccess] y +# 1257| Type = [IntType] int +# 1257| ValueCategory = lvalue +# 1257| getRValue(): [Literal] 2 +# 1257| Type = [IntType] int +# 1257| Value = [Literal] 2 +# 1257| ValueCategory = prvalue +# 1258| getStmt(2): [BreakStmt] break; +# 1259| getStmt(3): [SwitchCase] case ...: +# 1259| getExpr(): [Literal] 2 +# 1259| Type = [IntType] int +# 1259| Value = [Literal] 2 +# 1259| ValueCategory = prvalue +# 1260| getStmt(4): [ExprStmt] ExprStmt +# 1260| getExpr(): [AssignExpr] ... = ... # 1260| Type = [IntType] int -# 1260| ValueCategory = prvalue(load) -# 1261| getStmt(4): [ReturnStmt] return ... -# 1263| [TopLevelFunction] void switch2Case_default(int) -# 1263| : -# 1263| getParameter(0): [Parameter] x -# 1263| Type = [IntType] int -# 1263| getEntryPoint(): [BlockStmt] { ... } -# 1264| getStmt(0): [DeclStmt] declaration -# 1264| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 1264| Type = [IntType] int -# 1264| getVariable().getInitializer(): [Initializer] initializer for y -# 1264| getExpr(): [Literal] 0 -# 1264| Type = [IntType] int -# 1264| Value = [Literal] 0 -# 1264| ValueCategory = prvalue -# 1265| getStmt(1): [SwitchStmt] switch (...) ... -# 1265| getExpr(): [VariableAccess] x -# 1265| Type = [IntType] int -# 1265| ValueCategory = prvalue(load) -# 1265| getStmt(): [BlockStmt] { ... } -# 1266| getStmt(0): [SwitchCase] case ...: -# 1266| getExpr(): [Literal] 1 +# 1260| ValueCategory = lvalue +# 1260| getLValue(): [VariableAccess] y +# 1260| Type = [IntType] int +# 1260| ValueCategory = lvalue +# 1260| getRValue(): [Literal] 3 +# 1260| Type = [IntType] int +# 1260| Value = [Literal] 3 +# 1260| ValueCategory = prvalue +# 1261| getStmt(2): [LabelStmt] label ...: +# 1262| getStmt(3): [DeclStmt] declaration +# 1262| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z +# 1262| Type = [IntType] int +# 1262| getVariable().getInitializer(): [Initializer] initializer for z +# 1262| getExpr(): [VariableAccess] y +# 1262| Type = [IntType] int +# 1262| ValueCategory = prvalue(load) +# 1263| getStmt(4): [ReturnStmt] return ... +# 1265| [TopLevelFunction] void switch2Case_default(int) +# 1265| : +# 1265| getParameter(0): [Parameter] x +# 1265| Type = [IntType] int +# 1265| getEntryPoint(): [BlockStmt] { ... } +# 1266| getStmt(0): [DeclStmt] declaration +# 1266| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 1266| Type = [IntType] int +# 1266| getVariable().getInitializer(): [Initializer] initializer for y +# 1266| getExpr(): [Literal] 0 # 1266| Type = [IntType] int -# 1266| Value = [Literal] 1 +# 1266| Value = [Literal] 0 # 1266| ValueCategory = prvalue -# 1267| getStmt(1): [ExprStmt] ExprStmt -# 1267| getExpr(): [AssignExpr] ... = ... -# 1267| Type = [IntType] int -# 1267| ValueCategory = lvalue -# 1267| getLValue(): [VariableAccess] y -# 1267| Type = [IntType] int -# 1267| ValueCategory = lvalue -# 1267| getRValue(): [Literal] 2 -# 1267| Type = [IntType] int -# 1267| Value = [Literal] 2 -# 1267| ValueCategory = prvalue -# 1268| getStmt(2): [BreakStmt] break; -# 1270| getStmt(3): [SwitchCase] case ...: -# 1270| getExpr(): [Literal] 2 -# 1270| Type = [IntType] int -# 1270| Value = [Literal] 2 -# 1270| ValueCategory = prvalue -# 1271| getStmt(4): [ExprStmt] ExprStmt -# 1271| getExpr(): [AssignExpr] ... = ... -# 1271| Type = [IntType] int -# 1271| ValueCategory = lvalue -# 1271| getLValue(): [VariableAccess] y -# 1271| Type = [IntType] int -# 1271| ValueCategory = lvalue -# 1271| getRValue(): [Literal] 3 -# 1271| Type = [IntType] int -# 1271| Value = [Literal] 3 -# 1271| ValueCategory = prvalue -# 1272| getStmt(5): [BreakStmt] break; -# 1274| getStmt(6): [SwitchCase] default: -# 1275| getStmt(7): [ExprStmt] ExprStmt -# 1275| getExpr(): [AssignExpr] ... = ... -# 1275| Type = [IntType] int -# 1275| ValueCategory = lvalue -# 1275| getLValue(): [VariableAccess] y -# 1275| Type = [IntType] int -# 1275| ValueCategory = lvalue -# 1275| getRValue(): [Literal] 4 -# 1275| Type = [IntType] int -# 1275| Value = [Literal] 4 -# 1275| ValueCategory = prvalue -# 1276| getStmt(2): [LabelStmt] label ...: -# 1277| getStmt(3): [DeclStmt] declaration -# 1277| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z -# 1277| Type = [IntType] int -# 1277| getVariable().getInitializer(): [Initializer] initializer for z -# 1277| getExpr(): [VariableAccess] y +# 1267| getStmt(1): [SwitchStmt] switch (...) ... +# 1267| getExpr(): [VariableAccess] x +# 1267| Type = [IntType] int +# 1267| ValueCategory = prvalue(load) +# 1267| getStmt(): [BlockStmt] { ... } +# 1268| getStmt(0): [SwitchCase] case ...: +# 1268| getExpr(): [Literal] 1 +# 1268| Type = [IntType] int +# 1268| Value = [Literal] 1 +# 1268| ValueCategory = prvalue +# 1269| getStmt(1): [ExprStmt] ExprStmt +# 1269| getExpr(): [AssignExpr] ... = ... +# 1269| Type = [IntType] int +# 1269| ValueCategory = lvalue +# 1269| getLValue(): [VariableAccess] y +# 1269| Type = [IntType] int +# 1269| ValueCategory = lvalue +# 1269| getRValue(): [Literal] 2 +# 1269| Type = [IntType] int +# 1269| Value = [Literal] 2 +# 1269| ValueCategory = prvalue +# 1270| getStmt(2): [BreakStmt] break; +# 1272| getStmt(3): [SwitchCase] case ...: +# 1272| getExpr(): [Literal] 2 +# 1272| Type = [IntType] int +# 1272| Value = [Literal] 2 +# 1272| ValueCategory = prvalue +# 1273| getStmt(4): [ExprStmt] ExprStmt +# 1273| getExpr(): [AssignExpr] ... = ... +# 1273| Type = [IntType] int +# 1273| ValueCategory = lvalue +# 1273| getLValue(): [VariableAccess] y +# 1273| Type = [IntType] int +# 1273| ValueCategory = lvalue +# 1273| getRValue(): [Literal] 3 +# 1273| Type = [IntType] int +# 1273| Value = [Literal] 3 +# 1273| ValueCategory = prvalue +# 1274| getStmt(5): [BreakStmt] break; +# 1276| getStmt(6): [SwitchCase] default: +# 1277| getStmt(7): [ExprStmt] ExprStmt +# 1277| getExpr(): [AssignExpr] ... = ... # 1277| Type = [IntType] int -# 1277| ValueCategory = prvalue(load) -# 1278| getStmt(4): [ReturnStmt] return ... -# 1280| [TopLevelFunction] int staticLocalInit(int) -# 1280| : -# 1280| getParameter(0): [Parameter] x -# 1280| Type = [IntType] int -# 1280| getEntryPoint(): [BlockStmt] { ... } -# 1281| getStmt(0): [DeclStmt] declaration -# 1281| getDeclarationEntry(0): [VariableDeclarationEntry] definition of a -# 1281| Type = [IntType] int -# 1281| getVariable().getInitializer(): [Initializer] initializer for a -# 1281| getExpr(): [Literal] 0 -# 1281| Type = [IntType] int -# 1281| Value = [Literal] 0 -# 1281| ValueCategory = prvalue -# 1282| getStmt(1): [DeclStmt] declaration -# 1282| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b -# 1282| Type = [IntType] int -# 1282| getVariable().getInitializer(): [Initializer] initializer for b -# 1282| getExpr(): [SizeofExprOperator] sizeof() -# 1282| Type = [LongType] unsigned long -# 1282| Value = [SizeofExprOperator] 4 -# 1282| ValueCategory = prvalue -# 1282| getExprOperand(): [VariableAccess] x -# 1282| Type = [IntType] int -# 1282| ValueCategory = lvalue -# 1282| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 1282| Type = [IntType] int -# 1282| ValueCategory = lvalue -# 1282| getExpr().getFullyConverted(): [CStyleCast] (int)... -# 1282| Conversion = [IntegralConversion] integral conversion -# 1282| Type = [IntType] int -# 1282| Value = [CStyleCast] 4 -# 1282| ValueCategory = prvalue -# 1283| getStmt(2): [DeclStmt] declaration -# 1283| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c +# 1277| ValueCategory = lvalue +# 1277| getLValue(): [VariableAccess] y +# 1277| Type = [IntType] int +# 1277| ValueCategory = lvalue +# 1277| getRValue(): [Literal] 4 +# 1277| Type = [IntType] int +# 1277| Value = [Literal] 4 +# 1277| ValueCategory = prvalue +# 1278| getStmt(2): [LabelStmt] label ...: +# 1279| getStmt(3): [DeclStmt] declaration +# 1279| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z +# 1279| Type = [IntType] int +# 1279| getVariable().getInitializer(): [Initializer] initializer for z +# 1279| getExpr(): [VariableAccess] y +# 1279| Type = [IntType] int +# 1279| ValueCategory = prvalue(load) +# 1280| getStmt(4): [ReturnStmt] return ... +# 1282| [TopLevelFunction] int staticLocalInit(int) +# 1282| : +# 1282| getParameter(0): [Parameter] x +# 1282| Type = [IntType] int +# 1282| getEntryPoint(): [BlockStmt] { ... } +# 1283| getStmt(0): [DeclStmt] declaration +# 1283| getDeclarationEntry(0): [VariableDeclarationEntry] definition of a # 1283| Type = [IntType] int -# 1283| getVariable().getInitializer(): [Initializer] initializer for c -# 1283| getExpr(): [VariableAccess] x +# 1283| getVariable().getInitializer(): [Initializer] initializer for a +# 1283| getExpr(): [Literal] 0 # 1283| Type = [IntType] int -# 1283| ValueCategory = prvalue(load) -# 1284| getStmt(3): [DeclStmt] declaration -# 1284| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d +# 1283| Value = [Literal] 0 +# 1283| ValueCategory = prvalue +# 1284| getStmt(1): [DeclStmt] declaration +# 1284| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b # 1284| Type = [IntType] int -# 1286| getStmt(4): [ReturnStmt] return ... -# 1286| getExpr(): [AddExpr] ... + ... +# 1284| getVariable().getInitializer(): [Initializer] initializer for b +# 1284| getExpr(): [SizeofExprOperator] sizeof() +# 1284| Type = [LongType] unsigned long +# 1284| Value = [SizeofExprOperator] 4 +# 1284| ValueCategory = prvalue +# 1284| getExprOperand(): [VariableAccess] x +# 1284| Type = [IntType] int +# 1284| ValueCategory = lvalue +# 1284| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 1284| Type = [IntType] int +# 1284| ValueCategory = lvalue +# 1284| getExpr().getFullyConverted(): [CStyleCast] (int)... +# 1284| Conversion = [IntegralConversion] integral conversion +# 1284| Type = [IntType] int +# 1284| Value = [CStyleCast] 4 +# 1284| ValueCategory = prvalue +# 1285| getStmt(2): [DeclStmt] declaration +# 1285| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c +# 1285| Type = [IntType] int +# 1285| getVariable().getInitializer(): [Initializer] initializer for c +# 1285| getExpr(): [VariableAccess] x +# 1285| Type = [IntType] int +# 1285| ValueCategory = prvalue(load) +# 1286| getStmt(3): [DeclStmt] declaration +# 1286| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d # 1286| Type = [IntType] int -# 1286| ValueCategory = prvalue -# 1286| getLeftOperand(): [AddExpr] ... + ... -# 1286| Type = [IntType] int -# 1286| ValueCategory = prvalue -# 1286| getLeftOperand(): [AddExpr] ... + ... -# 1286| Type = [IntType] int -# 1286| ValueCategory = prvalue -# 1286| getLeftOperand(): [VariableAccess] a -# 1286| Type = [IntType] int -# 1286| ValueCategory = prvalue(load) -# 1286| getRightOperand(): [VariableAccess] b -# 1286| Type = [IntType] int -# 1286| ValueCategory = prvalue(load) -# 1286| getRightOperand(): [VariableAccess] c -# 1286| Type = [IntType] int -# 1286| ValueCategory = prvalue(load) -# 1286| getRightOperand(): [VariableAccess] d -# 1286| Type = [IntType] int -# 1286| ValueCategory = prvalue(load) -# 1289| [TopLevelFunction] void staticLocalWithConstructor(char const*) -# 1289| : -# 1289| getParameter(0): [Parameter] dynamic -# 1289| Type = [PointerType] const char * -# 1289| getEntryPoint(): [BlockStmt] { ... } -# 1290| getStmt(0): [DeclStmt] declaration -# 1290| getDeclarationEntry(0): [VariableDeclarationEntry] definition of a -# 1290| Type = [Struct] String +# 1288| getStmt(4): [ReturnStmt] return ... +# 1288| getExpr(): [AddExpr] ... + ... +# 1288| Type = [IntType] int +# 1288| ValueCategory = prvalue +# 1288| getLeftOperand(): [AddExpr] ... + ... +# 1288| Type = [IntType] int +# 1288| ValueCategory = prvalue +# 1288| getLeftOperand(): [AddExpr] ... + ... +# 1288| Type = [IntType] int +# 1288| ValueCategory = prvalue +# 1288| getLeftOperand(): [VariableAccess] a +# 1288| Type = [IntType] int +# 1288| ValueCategory = prvalue(load) +# 1288| getRightOperand(): [VariableAccess] b +# 1288| Type = [IntType] int +# 1288| ValueCategory = prvalue(load) +# 1288| getRightOperand(): [VariableAccess] c +# 1288| Type = [IntType] int +# 1288| ValueCategory = prvalue(load) +# 1288| getRightOperand(): [VariableAccess] d +# 1288| Type = [IntType] int +# 1288| ValueCategory = prvalue(load) +# 1291| [TopLevelFunction] void staticLocalWithConstructor(char const*) +# 1291| : +# 1291| getParameter(0): [Parameter] dynamic +# 1291| Type = [PointerType] const char * +# 1291| getEntryPoint(): [BlockStmt] { ... } +# 1292| getStmt(0): [DeclStmt] declaration +# 1292| getDeclarationEntry(0): [VariableDeclarationEntry] definition of a +# 1292| Type = [Struct] String #-----| getVariable().getInitializer(): [Initializer] initializer for a #-----| getExpr(): [ConstructorCall] call to String #-----| Type = [VoidType] void #-----| ValueCategory = prvalue -# 1291| getStmt(1): [DeclStmt] declaration -# 1291| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b -# 1291| Type = [Struct] String -# 1291| getVariable().getInitializer(): [Initializer] initializer for b -# 1291| getExpr(): [ConstructorCall] call to String -# 1291| Type = [VoidType] void -# 1291| ValueCategory = prvalue -# 1291| getArgument(0): static -# 1291| Type = [ArrayType] const char[7] -# 1291| Value = [StringLiteral] "static" -# 1291| ValueCategory = lvalue -# 1291| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1291| Type = [PointerType] const char * -# 1291| ValueCategory = prvalue -# 1292| getStmt(2): [DeclStmt] declaration -# 1292| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c -# 1292| Type = [Struct] String -# 1292| getVariable().getInitializer(): [Initializer] initializer for c -# 1292| getExpr(): [ConstructorCall] call to String -# 1292| Type = [VoidType] void -# 1292| ValueCategory = prvalue -# 1292| getArgument(0): [VariableAccess] dynamic -# 1292| Type = [PointerType] const char * -# 1292| ValueCategory = prvalue(load) -# 1293| getStmt(3): [ReturnStmt] return ... -# 1297| [TopLevelFunction] char* strcpy(char*, char const*) -# 1297| : -# 1297| getParameter(0): [Parameter] destination -# 1297| Type = [CharPointerType] char * -# 1297| getParameter(1): [Parameter] source -# 1297| Type = [PointerType] const char * -# 1298| [TopLevelFunction] char* strcat(char*, char const*) -# 1298| : -# 1298| getParameter(0): [Parameter] destination -# 1298| Type = [CharPointerType] char * -# 1298| getParameter(1): [Parameter] source -# 1298| Type = [PointerType] const char * -# 1300| [TopLevelFunction] void test_strings(char*, char*) +# 1293| getStmt(1): [DeclStmt] declaration +# 1293| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b +# 1293| Type = [Struct] String +# 1293| getVariable().getInitializer(): [Initializer] initializer for b +# 1293| getExpr(): [ConstructorCall] call to String +# 1293| Type = [VoidType] void +# 1293| ValueCategory = prvalue +# 1293| getArgument(0): static +# 1293| Type = [ArrayType] const char[7] +# 1293| Value = [StringLiteral] "static" +# 1293| ValueCategory = lvalue +# 1293| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1293| Type = [PointerType] const char * +# 1293| ValueCategory = prvalue +# 1294| getStmt(2): [DeclStmt] declaration +# 1294| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c +# 1294| Type = [Struct] String +# 1294| getVariable().getInitializer(): [Initializer] initializer for c +# 1294| getExpr(): [ConstructorCall] call to String +# 1294| Type = [VoidType] void +# 1294| ValueCategory = prvalue +# 1294| getArgument(0): [VariableAccess] dynamic +# 1294| Type = [PointerType] const char * +# 1294| ValueCategory = prvalue(load) +# 1295| getStmt(3): [ReturnStmt] return ... +# 1299| [TopLevelFunction] char* strcpy(char*, char const*) +# 1299| : +# 1299| getParameter(0): [Parameter] destination +# 1299| Type = [CharPointerType] char * +# 1299| getParameter(1): [Parameter] source +# 1299| Type = [PointerType] const char * +# 1300| [TopLevelFunction] char* strcat(char*, char const*) # 1300| : -# 1300| getParameter(0): [Parameter] s1 +# 1300| getParameter(0): [Parameter] destination # 1300| Type = [CharPointerType] char * -# 1300| getParameter(1): [Parameter] s2 -# 1300| Type = [CharPointerType] char * -# 1300| getEntryPoint(): [BlockStmt] { ... } -# 1301| getStmt(0): [DeclStmt] declaration -# 1301| getDeclarationEntry(0): [VariableDeclarationEntry] definition of buffer -# 1301| Type = [ArrayType] char[1024] -# 1301| getVariable().getInitializer(): [Initializer] initializer for buffer -# 1301| getExpr(): [ArrayAggregateLiteral] {...} -# 1301| Type = [ArrayType] char[1024] -# 1301| ValueCategory = prvalue -# 1301| getAnElementExpr(0): [Literal] 0 -# 1301| Type = [IntType] int -# 1301| Value = [Literal] 0 -# 1301| ValueCategory = prvalue -# 1301| getAnElementExpr(0).getFullyConverted(): [CStyleCast] (char)... -# 1301| Conversion = [IntegralConversion] integral conversion -# 1301| Type = [PlainCharType] char -# 1301| Value = [CStyleCast] 0 -# 1301| ValueCategory = prvalue -# 1303| getStmt(1): [ExprStmt] ExprStmt -# 1303| getExpr(): [FunctionCall] call to strcpy -# 1303| Type = [CharPointerType] char * -# 1303| ValueCategory = prvalue -# 1303| getArgument(0): [VariableAccess] buffer -# 1303| Type = [ArrayType] char[1024] -# 1303| ValueCategory = lvalue -# 1303| getArgument(1): [VariableAccess] s1 -# 1303| Type = [CharPointerType] char * -# 1303| ValueCategory = prvalue(load) -# 1303| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1303| Type = [CharPointerType] char * -# 1303| ValueCategory = prvalue -# 1303| getArgument(1).getFullyConverted(): [CStyleCast] (const char *)... -# 1303| Conversion = [PointerConversion] pointer conversion -# 1303| Type = [PointerType] const char * -# 1303| ValueCategory = prvalue -# 1304| getStmt(2): [ExprStmt] ExprStmt -# 1304| getExpr(): [FunctionCall] call to strcat -# 1304| Type = [CharPointerType] char * -# 1304| ValueCategory = prvalue -# 1304| getArgument(0): [VariableAccess] buffer -# 1304| Type = [ArrayType] char[1024] -# 1304| ValueCategory = lvalue -# 1304| getArgument(1): [VariableAccess] s2 -# 1304| Type = [CharPointerType] char * -# 1304| ValueCategory = prvalue(load) -# 1304| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1304| Type = [CharPointerType] char * -# 1304| ValueCategory = prvalue -# 1304| getArgument(1).getFullyConverted(): [CStyleCast] (const char *)... -# 1304| Conversion = [PointerConversion] pointer conversion -# 1304| Type = [PointerType] const char * -# 1304| ValueCategory = prvalue -# 1305| getStmt(3): [ReturnStmt] return ... -# 1307| [CopyAssignmentOperator] A& A::operator=(A const&) -# 1307| : +# 1300| getParameter(1): [Parameter] source +# 1300| Type = [PointerType] const char * +# 1302| [TopLevelFunction] void test_strings(char*, char*) +# 1302| : +# 1302| getParameter(0): [Parameter] s1 +# 1302| Type = [CharPointerType] char * +# 1302| getParameter(1): [Parameter] s2 +# 1302| Type = [CharPointerType] char * +# 1302| getEntryPoint(): [BlockStmt] { ... } +# 1303| getStmt(0): [DeclStmt] declaration +# 1303| getDeclarationEntry(0): [VariableDeclarationEntry] definition of buffer +# 1303| Type = [ArrayType] char[1024] +# 1303| getVariable().getInitializer(): [Initializer] initializer for buffer +# 1303| getExpr(): [ArrayAggregateLiteral] {...} +# 1303| Type = [ArrayType] char[1024] +# 1303| ValueCategory = prvalue +# 1303| getAnElementExpr(0): [Literal] 0 +# 1303| Type = [IntType] int +# 1303| Value = [Literal] 0 +# 1303| ValueCategory = prvalue +# 1303| getAnElementExpr(0).getFullyConverted(): [CStyleCast] (char)... +# 1303| Conversion = [IntegralConversion] integral conversion +# 1303| Type = [PlainCharType] char +# 1303| Value = [CStyleCast] 0 +# 1303| ValueCategory = prvalue +# 1305| getStmt(1): [ExprStmt] ExprStmt +# 1305| getExpr(): [FunctionCall] call to strcpy +# 1305| Type = [CharPointerType] char * +# 1305| ValueCategory = prvalue +# 1305| getArgument(0): [VariableAccess] buffer +# 1305| Type = [ArrayType] char[1024] +# 1305| ValueCategory = lvalue +# 1305| getArgument(1): [VariableAccess] s1 +# 1305| Type = [CharPointerType] char * +# 1305| ValueCategory = prvalue(load) +# 1305| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1305| Type = [CharPointerType] char * +# 1305| ValueCategory = prvalue +# 1305| getArgument(1).getFullyConverted(): [CStyleCast] (const char *)... +# 1305| Conversion = [PointerConversion] pointer conversion +# 1305| Type = [PointerType] const char * +# 1305| ValueCategory = prvalue +# 1306| getStmt(2): [ExprStmt] ExprStmt +# 1306| getExpr(): [FunctionCall] call to strcat +# 1306| Type = [CharPointerType] char * +# 1306| ValueCategory = prvalue +# 1306| getArgument(0): [VariableAccess] buffer +# 1306| Type = [ArrayType] char[1024] +# 1306| ValueCategory = lvalue +# 1306| getArgument(1): [VariableAccess] s2 +# 1306| Type = [CharPointerType] char * +# 1306| ValueCategory = prvalue(load) +# 1306| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1306| Type = [CharPointerType] char * +# 1306| ValueCategory = prvalue +# 1306| getArgument(1).getFullyConverted(): [CStyleCast] (const char *)... +# 1306| Conversion = [PointerConversion] pointer conversion +# 1306| Type = [PointerType] const char * +# 1306| ValueCategory = prvalue +# 1307| getStmt(3): [ReturnStmt] return ... +# 1309| [CopyAssignmentOperator] A& A::operator=(A const&) +# 1309| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const A & -# 1307| [MoveAssignmentOperator] A& A::operator=(A&&) -# 1307| : +# 1309| [MoveAssignmentOperator] A& A::operator=(A&&) +# 1309| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] A && -# 1310| [MemberFunction] void A::static_member(A*, int) -# 1310| : -# 1310| getParameter(0): [Parameter] a -# 1310| Type = [PointerType] A * -# 1310| getParameter(1): [Parameter] x -# 1310| Type = [IntType] int -# 1310| getEntryPoint(): [BlockStmt] { ... } -# 1311| getStmt(0): [ExprStmt] ExprStmt -# 1311| getExpr(): [AssignExpr] ... = ... -# 1311| Type = [IntType] int -# 1311| ValueCategory = lvalue -# 1311| getLValue(): [PointerFieldAccess] member -# 1311| Type = [IntType] int -# 1311| ValueCategory = lvalue -# 1311| getQualifier(): [VariableAccess] a -# 1311| Type = [PointerType] A * -# 1311| ValueCategory = prvalue(load) -# 1311| getRValue(): [VariableAccess] x -# 1311| Type = [IntType] int -# 1311| ValueCategory = prvalue(load) -# 1312| getStmt(1): [ReturnStmt] return ... -# 1314| [MemberFunction] void A::static_member_without_def() -# 1314| : -# 1317| [TopLevelFunction] A* getAnInstanceOfA() -# 1317| : -# 1319| [TopLevelFunction] void test_static_member_functions(int, A*) +# 1312| [MemberFunction] void A::static_member(A*, int) +# 1312| : +# 1312| getParameter(0): [Parameter] a +# 1312| Type = [PointerType] A * +# 1312| getParameter(1): [Parameter] x +# 1312| Type = [IntType] int +# 1312| getEntryPoint(): [BlockStmt] { ... } +# 1313| getStmt(0): [ExprStmt] ExprStmt +# 1313| getExpr(): [AssignExpr] ... = ... +# 1313| Type = [IntType] int +# 1313| ValueCategory = lvalue +# 1313| getLValue(): [PointerFieldAccess] member +# 1313| Type = [IntType] int +# 1313| ValueCategory = lvalue +# 1313| getQualifier(): [VariableAccess] a +# 1313| Type = [PointerType] A * +# 1313| ValueCategory = prvalue(load) +# 1313| getRValue(): [VariableAccess] x +# 1313| Type = [IntType] int +# 1313| ValueCategory = prvalue(load) +# 1314| getStmt(1): [ReturnStmt] return ... +# 1316| [MemberFunction] void A::static_member_without_def() +# 1316| : +# 1319| [TopLevelFunction] A* getAnInstanceOfA() # 1319| : -# 1319| getParameter(0): [Parameter] int_arg -# 1319| Type = [IntType] int -# 1319| getParameter(1): [Parameter] a_arg -# 1319| Type = [PointerType] A * -# 1319| getEntryPoint(): [BlockStmt] { ... } -# 1320| getStmt(0): [DeclStmt] declaration -# 1320| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c -# 1320| Type = [Class] C -# 1320| getVariable().getInitializer(): [Initializer] initializer for c -# 1320| getExpr(): [ConstructorCall] call to C -# 1320| Type = [VoidType] void -# 1320| ValueCategory = prvalue -# 1321| getStmt(1): [ExprStmt] ExprStmt -# 1321| getExpr(): [FunctionCall] call to StaticMemberFunction -# 1321| Type = [IntType] int -# 1321| ValueCategory = prvalue -# 1321| getQualifier(): [VariableAccess] c -# 1321| Type = [Class] C -# 1321| ValueCategory = lvalue -# 1321| getArgument(0): [Literal] 10 -# 1321| Type = [IntType] int -# 1321| Value = [Literal] 10 -# 1321| ValueCategory = prvalue -# 1322| getStmt(2): [ExprStmt] ExprStmt -# 1322| getExpr(): [FunctionCall] call to StaticMemberFunction -# 1322| Type = [IntType] int -# 1322| ValueCategory = prvalue -# 1322| getArgument(0): [Literal] 10 -# 1322| Type = [IntType] int -# 1322| Value = [Literal] 10 -# 1322| ValueCategory = prvalue -# 1324| getStmt(3): [DeclStmt] declaration -# 1324| getDeclarationEntry(0): [VariableDeclarationEntry] definition of a -# 1324| Type = [Struct] A -# 1325| getStmt(4): [ExprStmt] ExprStmt -# 1325| getExpr(): [FunctionCall] call to static_member -# 1325| Type = [VoidType] void -# 1325| ValueCategory = prvalue -# 1325| getQualifier(): [VariableAccess] a -# 1325| Type = [Struct] A -# 1325| ValueCategory = lvalue -# 1325| getArgument(0): [AddressOfExpr] & ... -# 1325| Type = [PointerType] A * -# 1325| ValueCategory = prvalue -# 1325| getOperand(): [VariableAccess] a -# 1325| Type = [Struct] A -# 1325| ValueCategory = lvalue -# 1325| getArgument(1): [VariableAccess] int_arg -# 1325| Type = [IntType] int -# 1325| ValueCategory = prvalue(load) -# 1326| getStmt(5): [ExprStmt] ExprStmt -# 1326| getExpr(): [FunctionCall] call to static_member -# 1326| Type = [VoidType] void -# 1326| ValueCategory = prvalue -# 1326| getArgument(0): [AddressOfExpr] & ... -# 1326| Type = [PointerType] A * -# 1326| ValueCategory = prvalue -# 1326| getOperand(): [VariableAccess] a -# 1326| Type = [Struct] A -# 1326| ValueCategory = lvalue -# 1326| getArgument(1): [VariableAccess] int_arg -# 1326| Type = [IntType] int -# 1326| ValueCategory = prvalue(load) -# 1328| getStmt(6): [ExprStmt] ExprStmt +# 1321| [TopLevelFunction] void test_static_member_functions(int, A*) +# 1321| : +# 1321| getParameter(0): [Parameter] int_arg +# 1321| Type = [IntType] int +# 1321| getParameter(1): [Parameter] a_arg +# 1321| Type = [PointerType] A * +# 1321| getEntryPoint(): [BlockStmt] { ... } +# 1322| getStmt(0): [DeclStmt] declaration +# 1322| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c +# 1322| Type = [Class] C +# 1322| getVariable().getInitializer(): [Initializer] initializer for c +# 1322| getExpr(): [ConstructorCall] call to C +# 1322| Type = [VoidType] void +# 1322| ValueCategory = prvalue +# 1323| getStmt(1): [ExprStmt] ExprStmt +# 1323| getExpr(): [FunctionCall] call to StaticMemberFunction +# 1323| Type = [IntType] int +# 1323| ValueCategory = prvalue +# 1323| getQualifier(): [VariableAccess] c +# 1323| Type = [Class] C +# 1323| ValueCategory = lvalue +# 1323| getArgument(0): [Literal] 10 +# 1323| Type = [IntType] int +# 1323| Value = [Literal] 10 +# 1323| ValueCategory = prvalue +# 1324| getStmt(2): [ExprStmt] ExprStmt +# 1324| getExpr(): [FunctionCall] call to StaticMemberFunction +# 1324| Type = [IntType] int +# 1324| ValueCategory = prvalue +# 1324| getArgument(0): [Literal] 10 +# 1324| Type = [IntType] int +# 1324| Value = [Literal] 10 +# 1324| ValueCategory = prvalue +# 1326| getStmt(3): [DeclStmt] declaration +# 1326| getDeclarationEntry(0): [VariableDeclarationEntry] definition of a +# 1326| Type = [Struct] A +# 1327| getStmt(4): [ExprStmt] ExprStmt +# 1327| getExpr(): [FunctionCall] call to static_member +# 1327| Type = [VoidType] void +# 1327| ValueCategory = prvalue +# 1327| getQualifier(): [VariableAccess] a +# 1327| Type = [Struct] A +# 1327| ValueCategory = lvalue +# 1327| getArgument(0): [AddressOfExpr] & ... +# 1327| Type = [PointerType] A * +# 1327| ValueCategory = prvalue +# 1327| getOperand(): [VariableAccess] a +# 1327| Type = [Struct] A +# 1327| ValueCategory = lvalue +# 1327| getArgument(1): [VariableAccess] int_arg +# 1327| Type = [IntType] int +# 1327| ValueCategory = prvalue(load) +# 1328| getStmt(5): [ExprStmt] ExprStmt # 1328| getExpr(): [FunctionCall] call to static_member # 1328| Type = [VoidType] void # 1328| ValueCategory = prvalue -# 1328| getQualifier(): [AddressOfExpr] & ... +# 1328| getArgument(0): [AddressOfExpr] & ... # 1328| Type = [PointerType] A * # 1328| ValueCategory = prvalue # 1328| getOperand(): [VariableAccess] a # 1328| Type = [Struct] A # 1328| ValueCategory = lvalue -# 1328| getArgument(0): [VariableAccess] a_arg -# 1328| Type = [PointerType] A * -# 1328| ValueCategory = prvalue(load) -# 1328| getArgument(1): [AddExpr] ... + ... +# 1328| getArgument(1): [VariableAccess] int_arg # 1328| Type = [IntType] int -# 1328| ValueCategory = prvalue -# 1328| getLeftOperand(): [VariableAccess] int_arg -# 1328| Type = [IntType] int -# 1328| ValueCategory = prvalue(load) -# 1328| getRightOperand(): [Literal] 2 -# 1328| Type = [IntType] int -# 1328| Value = [Literal] 2 -# 1328| ValueCategory = prvalue -# 1328| getQualifier().getFullyConverted(): [ParenthesisExpr] (...) -# 1328| Type = [PointerType] A * -# 1328| ValueCategory = prvalue -# 1329| getStmt(7): [ExprStmt] ExprStmt -# 1329| getExpr(): [FunctionCall] call to static_member -# 1329| Type = [VoidType] void -# 1329| ValueCategory = prvalue -# 1329| getQualifier(): [PointerDereferenceExpr] * ... -# 1329| Type = [Struct] A -# 1329| ValueCategory = lvalue -# 1329| getOperand(): [VariableAccess] a_arg -# 1329| Type = [PointerType] A * -# 1329| ValueCategory = prvalue(load) -# 1329| getArgument(0): [AddressOfExpr] & ... -# 1329| Type = [PointerType] A * -# 1329| ValueCategory = prvalue -# 1329| getOperand(): [VariableAccess] a -# 1329| Type = [Struct] A -# 1329| ValueCategory = lvalue -# 1329| getArgument(1): [Literal] 99 -# 1329| Type = [IntType] int -# 1329| Value = [Literal] 99 -# 1329| ValueCategory = prvalue -# 1329| getQualifier().getFullyConverted(): [ParenthesisExpr] (...) -# 1329| Type = [Struct] A -# 1329| ValueCategory = lvalue -# 1330| getStmt(8): [ExprStmt] ExprStmt +# 1328| ValueCategory = prvalue(load) +# 1330| getStmt(6): [ExprStmt] ExprStmt # 1330| getExpr(): [FunctionCall] call to static_member # 1330| Type = [VoidType] void # 1330| ValueCategory = prvalue -# 1330| getQualifier(): [VariableAccess] a_arg +# 1330| getQualifier(): [AddressOfExpr] & ... # 1330| Type = [PointerType] A * -# 1330| ValueCategory = prvalue(load) +# 1330| ValueCategory = prvalue +# 1330| getOperand(): [VariableAccess] a +# 1330| Type = [Struct] A +# 1330| ValueCategory = lvalue # 1330| getArgument(0): [VariableAccess] a_arg # 1330| Type = [PointerType] A * # 1330| ValueCategory = prvalue(load) -# 1330| getArgument(1): [UnaryMinusExpr] - ... +# 1330| getArgument(1): [AddExpr] ... + ... # 1330| Type = [IntType] int -# 1330| Value = [UnaryMinusExpr] -1 # 1330| ValueCategory = prvalue -# 1330| getOperand(): [Literal] 1 +# 1330| getLeftOperand(): [VariableAccess] int_arg # 1330| Type = [IntType] int -# 1330| Value = [Literal] 1 +# 1330| ValueCategory = prvalue(load) +# 1330| getRightOperand(): [Literal] 2 +# 1330| Type = [IntType] int +# 1330| Value = [Literal] 2 # 1330| ValueCategory = prvalue -# 1332| getStmt(9): [ExprStmt] ExprStmt -# 1332| getExpr(): [FunctionCall] call to static_member_without_def +# 1330| getQualifier().getFullyConverted(): [ParenthesisExpr] (...) +# 1330| Type = [PointerType] A * +# 1330| ValueCategory = prvalue +# 1331| getStmt(7): [ExprStmt] ExprStmt +# 1331| getExpr(): [FunctionCall] call to static_member +# 1331| Type = [VoidType] void +# 1331| ValueCategory = prvalue +# 1331| getQualifier(): [PointerDereferenceExpr] * ... +# 1331| Type = [Struct] A +# 1331| ValueCategory = lvalue +# 1331| getOperand(): [VariableAccess] a_arg +# 1331| Type = [PointerType] A * +# 1331| ValueCategory = prvalue(load) +# 1331| getArgument(0): [AddressOfExpr] & ... +# 1331| Type = [PointerType] A * +# 1331| ValueCategory = prvalue +# 1331| getOperand(): [VariableAccess] a +# 1331| Type = [Struct] A +# 1331| ValueCategory = lvalue +# 1331| getArgument(1): [Literal] 99 +# 1331| Type = [IntType] int +# 1331| Value = [Literal] 99 +# 1331| ValueCategory = prvalue +# 1331| getQualifier().getFullyConverted(): [ParenthesisExpr] (...) +# 1331| Type = [Struct] A +# 1331| ValueCategory = lvalue +# 1332| getStmt(8): [ExprStmt] ExprStmt +# 1332| getExpr(): [FunctionCall] call to static_member # 1332| Type = [VoidType] void # 1332| ValueCategory = prvalue -# 1332| getQualifier(): [VariableAccess] a -# 1332| Type = [Struct] A -# 1332| ValueCategory = lvalue -# 1333| getStmt(10): [ExprStmt] ExprStmt -# 1333| getExpr(): [FunctionCall] call to static_member_without_def -# 1333| Type = [VoidType] void -# 1333| ValueCategory = prvalue -# 1335| getStmt(11): [ExprStmt] ExprStmt +# 1332| getQualifier(): [VariableAccess] a_arg +# 1332| Type = [PointerType] A * +# 1332| ValueCategory = prvalue(load) +# 1332| getArgument(0): [VariableAccess] a_arg +# 1332| Type = [PointerType] A * +# 1332| ValueCategory = prvalue(load) +# 1332| getArgument(1): [UnaryMinusExpr] - ... +# 1332| Type = [IntType] int +# 1332| Value = [UnaryMinusExpr] -1 +# 1332| ValueCategory = prvalue +# 1332| getOperand(): [Literal] 1 +# 1332| Type = [IntType] int +# 1332| Value = [Literal] 1 +# 1332| ValueCategory = prvalue +# 1334| getStmt(9): [ExprStmt] ExprStmt +# 1334| getExpr(): [FunctionCall] call to static_member_without_def +# 1334| Type = [VoidType] void +# 1334| ValueCategory = prvalue +# 1334| getQualifier(): [VariableAccess] a +# 1334| Type = [Struct] A +# 1334| ValueCategory = lvalue +# 1335| getStmt(10): [ExprStmt] ExprStmt # 1335| getExpr(): [FunctionCall] call to static_member_without_def # 1335| Type = [VoidType] void # 1335| ValueCategory = prvalue -# 1335| getQualifier(): [FunctionCall] call to getAnInstanceOfA -# 1335| Type = [PointerType] A * -# 1335| ValueCategory = prvalue -# 1336| getStmt(12): [ReturnStmt] return ... -# 1336| getImplicitDestructorCall(0): [DestructorCall] call to ~C -# 1336| Type = [VoidType] void -# 1336| ValueCategory = prvalue -# 1336| getQualifier(): [VariableAccess] c -# 1336| Type = [Class] C -# 1336| ValueCategory = lvalue -# 1338| [TopLevelFunction] int missingReturnValue(bool, int) -# 1338| : -# 1338| getParameter(0): [Parameter] b -# 1338| Type = [BoolType] bool -# 1338| getParameter(1): [Parameter] x -# 1338| Type = [IntType] int -# 1338| getEntryPoint(): [BlockStmt] { ... } -# 1339| getStmt(0): [IfStmt] if (...) ... -# 1339| getCondition(): [VariableAccess] b -# 1339| Type = [BoolType] bool -# 1339| ValueCategory = prvalue(load) -# 1339| getThen(): [BlockStmt] { ... } -# 1340| getStmt(0): [ReturnStmt] return ... -# 1340| getExpr(): [VariableAccess] x -# 1340| Type = [IntType] int -# 1340| ValueCategory = prvalue(load) -# 1342| getStmt(1): [ReturnStmt] return ... -# 1344| [TopLevelFunction] void returnVoid(int, int) -# 1344| : -# 1344| getParameter(0): [Parameter] x -# 1344| Type = [IntType] int -# 1344| getParameter(1): [Parameter] y -# 1344| Type = [IntType] int -# 1344| getEntryPoint(): [BlockStmt] { ... } -# 1345| getStmt(0): [ReturnStmt] return ... -# 1345| getExpr(): [FunctionCall] call to IntegerOps -# 1345| Type = [VoidType] void -# 1345| ValueCategory = prvalue -# 1345| getArgument(0): [VariableAccess] x -# 1345| Type = [IntType] int -# 1345| ValueCategory = prvalue(load) -# 1345| getArgument(1): [VariableAccess] y -# 1345| Type = [IntType] int -# 1345| ValueCategory = prvalue(load) -# 1348| [TopLevelFunction] void gccBinaryConditional(bool, int, long) -# 1348| : -# 1348| getParameter(0): [Parameter] b -# 1348| Type = [BoolType] bool -# 1348| getParameter(1): [Parameter] x -# 1348| Type = [IntType] int -# 1348| getParameter(2): [Parameter] y -# 1348| Type = [LongType] long -# 1348| getEntryPoint(): [BlockStmt] { ... } -# 1349| getStmt(0): [DeclStmt] declaration -# 1349| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z -# 1349| Type = [IntType] int -# 1349| getVariable().getInitializer(): [Initializer] initializer for z -# 1349| getExpr(): [VariableAccess] x -# 1349| Type = [IntType] int -# 1349| ValueCategory = prvalue(load) -# 1350| getStmt(1): [ExprStmt] ExprStmt -# 1350| getExpr(): [AssignExpr] ... = ... -# 1350| Type = [IntType] int -# 1350| ValueCategory = lvalue -# 1350| getLValue(): [VariableAccess] z -# 1350| Type = [IntType] int -# 1350| ValueCategory = lvalue -# 1350| getRValue(): [ConditionalExpr] ... ? ... : ... -# 1350| Type = [IntType] int -# 1350| ValueCategory = prvalue(load) -# 1350| getCondition(): [VariableAccess] b -# 1350| Type = [BoolType] bool -# 1350| ValueCategory = prvalue(load) -# 1350| getElse(): [VariableAccess] x -# 1350| Type = [IntType] int -# 1350| ValueCategory = prvalue(load) -# 1351| getStmt(2): [ExprStmt] ExprStmt -# 1351| getExpr(): [AssignExpr] ... = ... +# 1337| getStmt(11): [ExprStmt] ExprStmt +# 1337| getExpr(): [FunctionCall] call to static_member_without_def +# 1337| Type = [VoidType] void +# 1337| ValueCategory = prvalue +# 1337| getQualifier(): [FunctionCall] call to getAnInstanceOfA +# 1337| Type = [PointerType] A * +# 1337| ValueCategory = prvalue +# 1338| getStmt(12): [ReturnStmt] return ... +# 1338| getImplicitDestructorCall(0): [DestructorCall] call to ~C +# 1338| Type = [VoidType] void +# 1338| ValueCategory = prvalue +# 1338| getQualifier(): [VariableAccess] c +# 1338| Type = [Class] C +# 1338| ValueCategory = lvalue +# 1340| [TopLevelFunction] int missingReturnValue(bool, int) +# 1340| : +# 1340| getParameter(0): [Parameter] b +# 1340| Type = [BoolType] bool +# 1340| getParameter(1): [Parameter] x +# 1340| Type = [IntType] int +# 1340| getEntryPoint(): [BlockStmt] { ... } +# 1341| getStmt(0): [IfStmt] if (...) ... +# 1341| getCondition(): [VariableAccess] b +# 1341| Type = [BoolType] bool +# 1341| ValueCategory = prvalue(load) +# 1341| getThen(): [BlockStmt] { ... } +# 1342| getStmt(0): [ReturnStmt] return ... +# 1342| getExpr(): [VariableAccess] x +# 1342| Type = [IntType] int +# 1342| ValueCategory = prvalue(load) +# 1344| getStmt(1): [ReturnStmt] return ... +# 1346| [TopLevelFunction] void returnVoid(int, int) +# 1346| : +# 1346| getParameter(0): [Parameter] x +# 1346| Type = [IntType] int +# 1346| getParameter(1): [Parameter] y +# 1346| Type = [IntType] int +# 1346| getEntryPoint(): [BlockStmt] { ... } +# 1347| getStmt(0): [ReturnStmt] return ... +# 1347| getExpr(): [FunctionCall] call to IntegerOps +# 1347| Type = [VoidType] void +# 1347| ValueCategory = prvalue +# 1347| getArgument(0): [VariableAccess] x +# 1347| Type = [IntType] int +# 1347| ValueCategory = prvalue(load) +# 1347| getArgument(1): [VariableAccess] y +# 1347| Type = [IntType] int +# 1347| ValueCategory = prvalue(load) +# 1350| [TopLevelFunction] void gccBinaryConditional(bool, int, long) +# 1350| : +# 1350| getParameter(0): [Parameter] b +# 1350| Type = [BoolType] bool +# 1350| getParameter(1): [Parameter] x +# 1350| Type = [IntType] int +# 1350| getParameter(2): [Parameter] y +# 1350| Type = [LongType] long +# 1350| getEntryPoint(): [BlockStmt] { ... } +# 1351| getStmt(0): [DeclStmt] declaration +# 1351| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z # 1351| Type = [IntType] int -# 1351| ValueCategory = lvalue -# 1351| getLValue(): [VariableAccess] z -# 1351| Type = [IntType] int -# 1351| ValueCategory = lvalue -# 1351| getRValue(): [ConditionalExpr] ... ? ... : ... -# 1351| Type = [LongType] long -# 1351| ValueCategory = prvalue(load) -# 1351| getCondition(): [VariableAccess] b -# 1351| Type = [BoolType] bool +# 1351| getVariable().getInitializer(): [Initializer] initializer for z +# 1351| getExpr(): [VariableAccess] x +# 1351| Type = [IntType] int # 1351| ValueCategory = prvalue(load) -# 1351| getElse(): [VariableAccess] y -# 1351| Type = [LongType] long -# 1351| ValueCategory = prvalue(load) -# 1351| getRValue().getFullyConverted(): [CStyleCast] (int)... -# 1351| Conversion = [IntegralConversion] integral conversion -# 1351| Type = [IntType] int -# 1351| ValueCategory = prvalue -# 1352| getStmt(3): [ExprStmt] ExprStmt +# 1352| getStmt(1): [ExprStmt] ExprStmt # 1352| getExpr(): [AssignExpr] ... = ... # 1352| Type = [IntType] int # 1352| ValueCategory = lvalue @@ -14089,17 +14053,13 @@ ir.cpp: # 1352| getRValue(): [ConditionalExpr] ... ? ... : ... # 1352| Type = [IntType] int # 1352| ValueCategory = prvalue(load) -# 1352| getCondition(): [VariableAccess] x -# 1352| Type = [IntType] int +# 1352| getCondition(): [VariableAccess] b +# 1352| Type = [BoolType] bool # 1352| ValueCategory = prvalue(load) # 1352| getElse(): [VariableAccess] x # 1352| Type = [IntType] int # 1352| ValueCategory = prvalue(load) -# 1352| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1352| Conversion = [BoolConversion] conversion to bool -# 1352| Type = [BoolType] bool -# 1352| ValueCategory = prvalue -# 1353| getStmt(4): [ExprStmt] ExprStmt +# 1353| getStmt(2): [ExprStmt] ExprStmt # 1353| getExpr(): [AssignExpr] ... = ... # 1353| Type = [IntType] int # 1353| ValueCategory = lvalue @@ -14109,21 +14069,17 @@ ir.cpp: # 1353| getRValue(): [ConditionalExpr] ... ? ... : ... # 1353| Type = [LongType] long # 1353| ValueCategory = prvalue(load) -# 1353| getCondition(): [VariableAccess] x -# 1353| Type = [IntType] int +# 1353| getCondition(): [VariableAccess] b +# 1353| Type = [BoolType] bool # 1353| ValueCategory = prvalue(load) # 1353| getElse(): [VariableAccess] y # 1353| Type = [LongType] long # 1353| ValueCategory = prvalue(load) -# 1353| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1353| Conversion = [BoolConversion] conversion to bool -# 1353| Type = [BoolType] bool -# 1353| ValueCategory = prvalue # 1353| getRValue().getFullyConverted(): [CStyleCast] (int)... # 1353| Conversion = [IntegralConversion] integral conversion # 1353| Type = [IntType] int # 1353| ValueCategory = prvalue -# 1354| getStmt(5): [ExprStmt] ExprStmt +# 1354| getStmt(3): [ExprStmt] ExprStmt # 1354| getExpr(): [AssignExpr] ... = ... # 1354| Type = [IntType] int # 1354| ValueCategory = lvalue @@ -14131,10 +14087,10 @@ ir.cpp: # 1354| Type = [IntType] int # 1354| ValueCategory = lvalue # 1354| getRValue(): [ConditionalExpr] ... ? ... : ... -# 1354| Type = [LongType] long +# 1354| Type = [IntType] int # 1354| ValueCategory = prvalue(load) -# 1354| getCondition(): [VariableAccess] y -# 1354| Type = [LongType] long +# 1354| getCondition(): [VariableAccess] x +# 1354| Type = [IntType] int # 1354| ValueCategory = prvalue(load) # 1354| getElse(): [VariableAccess] x # 1354| Type = [IntType] int @@ -14143,15 +14099,7 @@ ir.cpp: # 1354| Conversion = [BoolConversion] conversion to bool # 1354| Type = [BoolType] bool # 1354| ValueCategory = prvalue -# 1354| getElse().getFullyConverted(): [CStyleCast] (long)... -# 1354| Conversion = [IntegralConversion] integral conversion -# 1354| Type = [LongType] long -# 1354| ValueCategory = prvalue -# 1354| getRValue().getFullyConverted(): [CStyleCast] (int)... -# 1354| Conversion = [IntegralConversion] integral conversion -# 1354| Type = [IntType] int -# 1354| ValueCategory = prvalue -# 1355| getStmt(6): [ExprStmt] ExprStmt +# 1355| getStmt(4): [ExprStmt] ExprStmt # 1355| getExpr(): [AssignExpr] ... = ... # 1355| Type = [IntType] int # 1355| ValueCategory = lvalue @@ -14161,8 +14109,8 @@ ir.cpp: # 1355| getRValue(): [ConditionalExpr] ... ? ... : ... # 1355| Type = [LongType] long # 1355| ValueCategory = prvalue(load) -# 1355| getCondition(): [VariableAccess] y -# 1355| Type = [LongType] long +# 1355| getCondition(): [VariableAccess] x +# 1355| Type = [IntType] int # 1355| ValueCategory = prvalue(load) # 1355| getElse(): [VariableAccess] y # 1355| Type = [LongType] long @@ -14175,7 +14123,35 @@ ir.cpp: # 1355| Conversion = [IntegralConversion] integral conversion # 1355| Type = [IntType] int # 1355| ValueCategory = prvalue -# 1357| getStmt(7): [ExprStmt] ExprStmt +# 1356| getStmt(5): [ExprStmt] ExprStmt +# 1356| getExpr(): [AssignExpr] ... = ... +# 1356| Type = [IntType] int +# 1356| ValueCategory = lvalue +# 1356| getLValue(): [VariableAccess] z +# 1356| Type = [IntType] int +# 1356| ValueCategory = lvalue +# 1356| getRValue(): [ConditionalExpr] ... ? ... : ... +# 1356| Type = [LongType] long +# 1356| ValueCategory = prvalue(load) +# 1356| getCondition(): [VariableAccess] y +# 1356| Type = [LongType] long +# 1356| ValueCategory = prvalue(load) +# 1356| getElse(): [VariableAccess] x +# 1356| Type = [IntType] int +# 1356| ValueCategory = prvalue(load) +# 1356| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 1356| Conversion = [BoolConversion] conversion to bool +# 1356| Type = [BoolType] bool +# 1356| ValueCategory = prvalue +# 1356| getElse().getFullyConverted(): [CStyleCast] (long)... +# 1356| Conversion = [IntegralConversion] integral conversion +# 1356| Type = [LongType] long +# 1356| ValueCategory = prvalue +# 1356| getRValue().getFullyConverted(): [CStyleCast] (int)... +# 1356| Conversion = [IntegralConversion] integral conversion +# 1356| Type = [IntType] int +# 1356| ValueCategory = prvalue +# 1357| getStmt(6): [ExprStmt] ExprStmt # 1357| getExpr(): [AssignExpr] ... = ... # 1357| Type = [IntType] int # 1357| ValueCategory = lvalue @@ -14183,331 +14159,303 @@ ir.cpp: # 1357| Type = [IntType] int # 1357| ValueCategory = lvalue # 1357| getRValue(): [ConditionalExpr] ... ? ... : ... -# 1357| Type = [IntType] int +# 1357| Type = [LongType] long # 1357| ValueCategory = prvalue(load) -# 1357| getCondition(): [LogicalOrExpr] ... || ... -# 1357| Type = [BoolType] bool -# 1357| ValueCategory = prvalue -# 1357| getLeftOperand(): [LogicalAndExpr] ... && ... -# 1357| Type = [BoolType] bool -# 1357| ValueCategory = prvalue -# 1357| getLeftOperand(): [VariableAccess] x -# 1357| Type = [IntType] int -# 1357| ValueCategory = prvalue(load) -# 1357| getRightOperand(): [VariableAccess] b -# 1357| Type = [BoolType] bool -# 1357| ValueCategory = prvalue(load) -# 1357| getLeftOperand().getFullyConverted(): [CStyleCast] (bool)... -# 1357| Conversion = [BoolConversion] conversion to bool -# 1357| Type = [BoolType] bool -# 1357| ValueCategory = prvalue -# 1357| getRightOperand(): [VariableAccess] y -# 1357| Type = [LongType] long -# 1357| ValueCategory = prvalue(load) -# 1357| getRightOperand().getFullyConverted(): [CStyleCast] (bool)... -# 1357| Conversion = [BoolConversion] conversion to bool -# 1357| Type = [BoolType] bool -# 1357| ValueCategory = prvalue -# 1357| getElse(): [VariableAccess] x -# 1357| Type = [IntType] int +# 1357| getCondition(): [VariableAccess] y +# 1357| Type = [LongType] long # 1357| ValueCategory = prvalue(load) -# 1357| getCondition().getFullyConverted(): [ParenthesisExpr] (...) +# 1357| getElse(): [VariableAccess] y +# 1357| Type = [LongType] long +# 1357| ValueCategory = prvalue(load) +# 1357| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 1357| Conversion = [BoolConversion] conversion to bool # 1357| Type = [BoolType] bool # 1357| ValueCategory = prvalue -# 1358| getStmt(8): [ReturnStmt] return ... -# 1360| [TopLevelFunction] bool predicateA() -# 1360| : -# 1361| [TopLevelFunction] bool predicateB() -# 1361| : -# 1363| [TopLevelFunction] int shortCircuitConditional(int, int) +# 1357| getRValue().getFullyConverted(): [CStyleCast] (int)... +# 1357| Conversion = [IntegralConversion] integral conversion +# 1357| Type = [IntType] int +# 1357| ValueCategory = prvalue +# 1359| getStmt(7): [ExprStmt] ExprStmt +# 1359| getExpr(): [AssignExpr] ... = ... +# 1359| Type = [IntType] int +# 1359| ValueCategory = lvalue +# 1359| getLValue(): [VariableAccess] z +# 1359| Type = [IntType] int +# 1359| ValueCategory = lvalue +# 1359| getRValue(): [ConditionalExpr] ... ? ... : ... +# 1359| Type = [IntType] int +# 1359| ValueCategory = prvalue(load) +# 1359| getCondition(): [LogicalOrExpr] ... || ... +# 1359| Type = [BoolType] bool +# 1359| ValueCategory = prvalue +# 1359| getLeftOperand(): [LogicalAndExpr] ... && ... +# 1359| Type = [BoolType] bool +# 1359| ValueCategory = prvalue +# 1359| getLeftOperand(): [VariableAccess] x +# 1359| Type = [IntType] int +# 1359| ValueCategory = prvalue(load) +# 1359| getRightOperand(): [VariableAccess] b +# 1359| Type = [BoolType] bool +# 1359| ValueCategory = prvalue(load) +# 1359| getLeftOperand().getFullyConverted(): [CStyleCast] (bool)... +# 1359| Conversion = [BoolConversion] conversion to bool +# 1359| Type = [BoolType] bool +# 1359| ValueCategory = prvalue +# 1359| getRightOperand(): [VariableAccess] y +# 1359| Type = [LongType] long +# 1359| ValueCategory = prvalue(load) +# 1359| getRightOperand().getFullyConverted(): [CStyleCast] (bool)... +# 1359| Conversion = [BoolConversion] conversion to bool +# 1359| Type = [BoolType] bool +# 1359| ValueCategory = prvalue +# 1359| getElse(): [VariableAccess] x +# 1359| Type = [IntType] int +# 1359| ValueCategory = prvalue(load) +# 1359| getCondition().getFullyConverted(): [ParenthesisExpr] (...) +# 1359| Type = [BoolType] bool +# 1359| ValueCategory = prvalue +# 1360| getStmt(8): [ReturnStmt] return ... +# 1362| [TopLevelFunction] bool predicateA() +# 1362| : +# 1363| [TopLevelFunction] bool predicateB() # 1363| : -# 1363| getParameter(0): [Parameter] x -# 1363| Type = [IntType] int -# 1363| getParameter(1): [Parameter] y -# 1363| Type = [IntType] int -# 1363| getEntryPoint(): [BlockStmt] { ... } -# 1364| getStmt(0): [ReturnStmt] return ... -# 1364| getExpr(): [ConditionalExpr] ... ? ... : ... -# 1364| Type = [IntType] int -# 1364| ValueCategory = prvalue(load) -# 1364| getCondition(): [LogicalAndExpr] ... && ... -# 1364| Type = [BoolType] bool -# 1364| ValueCategory = prvalue -# 1364| getLeftOperand(): [FunctionCall] call to predicateA -# 1364| Type = [BoolType] bool -# 1364| ValueCategory = prvalue -# 1364| getRightOperand(): [FunctionCall] call to predicateB -# 1364| Type = [BoolType] bool -# 1364| ValueCategory = prvalue -# 1364| getThen(): [VariableAccess] x -# 1364| Type = [IntType] int -# 1364| ValueCategory = prvalue(load) -# 1364| getElse(): [VariableAccess] y -# 1364| Type = [IntType] int -# 1364| ValueCategory = prvalue(load) -# 1367| [Operator,TopLevelFunction] void* operator new(size_t, void*) -# 1367| : -# 1367| getParameter(0): [Parameter] (unnamed parameter 0) -# 1367| Type = [CTypedefType,Size_t] size_t -# 1367| getParameter(1): [Parameter] (unnamed parameter 1) -# 1367| Type = [VoidPointerType] void * -# 1369| [TopLevelFunction] void f(int*) +# 1365| [TopLevelFunction] int shortCircuitConditional(int, int) +# 1365| : +# 1365| getParameter(0): [Parameter] x +# 1365| Type = [IntType] int +# 1365| getParameter(1): [Parameter] y +# 1365| Type = [IntType] int +# 1365| getEntryPoint(): [BlockStmt] { ... } +# 1366| getStmt(0): [ReturnStmt] return ... +# 1366| getExpr(): [ConditionalExpr] ... ? ... : ... +# 1366| Type = [IntType] int +# 1366| ValueCategory = prvalue(load) +# 1366| getCondition(): [LogicalAndExpr] ... && ... +# 1366| Type = [BoolType] bool +# 1366| ValueCategory = prvalue +# 1366| getLeftOperand(): [FunctionCall] call to predicateA +# 1366| Type = [BoolType] bool +# 1366| ValueCategory = prvalue +# 1366| getRightOperand(): [FunctionCall] call to predicateB +# 1366| Type = [BoolType] bool +# 1366| ValueCategory = prvalue +# 1366| getThen(): [VariableAccess] x +# 1366| Type = [IntType] int +# 1366| ValueCategory = prvalue(load) +# 1366| getElse(): [VariableAccess] y +# 1366| Type = [IntType] int +# 1366| ValueCategory = prvalue(load) +# 1369| [Operator,TopLevelFunction] void* operator new(size_t, void*) # 1369| : -# 1369| getParameter(0): [Parameter] p -# 1369| Type = [IntPointerType] int * -# 1370| getEntryPoint(): [BlockStmt] { ... } -# 1371| getStmt(0): [ExprStmt] ExprStmt -# 1371| getExpr(): [NewExpr] new -# 1371| Type = [IntPointerType] int * -# 1371| ValueCategory = prvalue -# 1371| getAllocatorCall(): [FunctionCall] call to operator new -# 1371| Type = [VoidPointerType] void * -# 1371| ValueCategory = prvalue -# 1371| getArgument(0): [ErrorExpr] -# 1371| Type = [LongType] unsigned long -# 1371| ValueCategory = prvalue -# 1371| getArgument(1): [VariableAccess] p -# 1371| Type = [IntPointerType] int * -# 1371| ValueCategory = prvalue(load) -# 1371| getArgument(1).getFullyConverted(): [CStyleCast] (void *)... -# 1371| Conversion = [PointerConversion] pointer conversion -# 1371| Type = [VoidPointerType] void * -# 1371| ValueCategory = prvalue -# 1372| getStmt(1): [ReturnStmt] return ... -# 1375| [FunctionTemplateInstantiation,TopLevelFunction] Point defaultConstruct() -# 1375| : -# 1375| getEntryPoint(): [BlockStmt] { ... } -# 1376| getStmt(0): [ReturnStmt] return ... -# 1376| getExpr(): [Literal] 0 -# 1376| Type = [Struct] Point -# 1376| Value = [Literal] 0 -# 1376| ValueCategory = prvalue -# 1375| [FunctionTemplateInstantiation,TopLevelFunction] String defaultConstruct() -# 1375| : -# 1375| getEntryPoint(): [BlockStmt] { ... } -# 1376| getStmt(0): [ReturnStmt] return ... -# 1376| getExpr(): [ConstructorCall] call to String -# 1376| Type = [VoidType] void -# 1376| ValueCategory = prvalue -# 1375| [TemplateFunction,TopLevelFunction] T defaultConstruct() -# 1375| : -# 1375| getEntryPoint(): [BlockStmt] { ... } -# 1376| getStmt(0): [ReturnStmt] return ... -# 1376| getExpr(): [Literal] 0 -# 1376| Type = [TypeTemplateParameter] T -# 1376| Value = [Literal] 0 -# 1376| ValueCategory = prvalue -# 1376| getExpr().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 1376| Type = [TypeTemplateParameter] T -# 1376| ValueCategory = prvalue(load) -# 1375| [FunctionTemplateInstantiation,TopLevelFunction] copy_constructor defaultConstruct() -# 1375| : -# 1375| getEntryPoint(): [BlockStmt] { ... } -# 1376| getStmt(0): [ReturnStmt] return ... -# 1376| getExpr(): [ConstructorCall] call to copy_constructor -# 1376| Type = [VoidType] void -# 1376| ValueCategory = prvalue -# 1375| [FunctionTemplateInstantiation,TopLevelFunction] destructor_only defaultConstruct() -# 1375| : -# 1375| getEntryPoint(): [BlockStmt] { ... } -# 1376| getStmt(0): [ReturnStmt] return ... -# 1376| getExpr(): [Literal] 0 -# 1376| Type = [Class] destructor_only -# 1376| Value = [Literal] 0 -# 1376| ValueCategory = prvalue -# 1379| [CopyAssignmentOperator] constructor_only& constructor_only::operator=(constructor_only const&) -# 1379| : +# 1369| getParameter(0): [Parameter] (unnamed parameter 0) +# 1369| Type = [CTypedefType,Size_t] size_t +# 1369| getParameter(1): [Parameter] (unnamed parameter 1) +# 1369| Type = [VoidPointerType] void * +# 1371| [TopLevelFunction] void f(int*) +# 1371| : +# 1371| getParameter(0): [Parameter] p +# 1371| Type = [IntPointerType] int * +# 1372| getEntryPoint(): [BlockStmt] { ... } +# 1373| getStmt(0): [ExprStmt] ExprStmt +# 1373| getExpr(): [NewExpr] new +# 1373| Type = [IntPointerType] int * +# 1373| ValueCategory = prvalue +# 1373| getAllocatorCall(): [FunctionCall] call to operator new +# 1373| Type = [VoidPointerType] void * +# 1373| ValueCategory = prvalue +# 1373| getArgument(0): [ErrorExpr] +# 1373| Type = [LongType] unsigned long +# 1373| ValueCategory = prvalue +# 1373| getArgument(1): [VariableAccess] p +# 1373| Type = [IntPointerType] int * +# 1373| ValueCategory = prvalue(load) +# 1373| getArgument(1).getFullyConverted(): [CStyleCast] (void *)... +# 1373| Conversion = [PointerConversion] pointer conversion +# 1373| Type = [VoidPointerType] void * +# 1373| ValueCategory = prvalue +# 1374| getStmt(1): [ReturnStmt] return ... +# 1377| [FunctionTemplateInstantiation,TopLevelFunction] Point defaultConstruct() +# 1377| : +# 1377| getEntryPoint(): [BlockStmt] { ... } +# 1378| getStmt(0): [ReturnStmt] return ... +# 1378| getExpr(): [Literal] 0 +# 1378| Type = [Struct] Point +# 1378| Value = [Literal] 0 +# 1378| ValueCategory = prvalue +# 1377| [FunctionTemplateInstantiation,TopLevelFunction] String defaultConstruct() +# 1377| : +# 1377| getEntryPoint(): [BlockStmt] { ... } +# 1378| getStmt(0): [ReturnStmt] return ... +# 1378| getExpr(): [ConstructorCall] call to String +# 1378| Type = [VoidType] void +# 1378| ValueCategory = prvalue +# 1377| [TemplateFunction,TopLevelFunction] T defaultConstruct() +# 1377| : +# 1377| getEntryPoint(): [BlockStmt] { ... } +# 1378| getStmt(0): [ReturnStmt] return ... +# 1378| getExpr(): [Literal] 0 +# 1378| Type = [TypeTemplateParameter] T +# 1378| Value = [Literal] 0 +# 1378| ValueCategory = prvalue +# 1378| getExpr().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1378| Type = [TypeTemplateParameter] T +# 1378| ValueCategory = prvalue(load) +# 1377| [FunctionTemplateInstantiation,TopLevelFunction] copy_constructor defaultConstruct() +# 1377| : +# 1377| getEntryPoint(): [BlockStmt] { ... } +# 1378| getStmt(0): [ReturnStmt] return ... +# 1378| getExpr(): [ConstructorCall] call to copy_constructor +# 1378| Type = [VoidType] void +# 1378| ValueCategory = prvalue +# 1377| [FunctionTemplateInstantiation,TopLevelFunction] destructor_only defaultConstruct() +# 1377| : +# 1377| getEntryPoint(): [BlockStmt] { ... } +# 1378| getStmt(0): [ReturnStmt] return ... +# 1378| getExpr(): [Literal] 0 +# 1378| Type = [Class] destructor_only +# 1378| Value = [Literal] 0 +# 1378| ValueCategory = prvalue +# 1381| [CopyAssignmentOperator] constructor_only& constructor_only::operator=(constructor_only const&) +# 1381| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const constructor_only & -# 1379| [MoveAssignmentOperator] constructor_only& constructor_only::operator=(constructor_only&&) -# 1379| : +# 1381| [MoveAssignmentOperator] constructor_only& constructor_only::operator=(constructor_only&&) +# 1381| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] constructor_only && -# 1379| [CopyConstructor] void constructor_only::constructor_only(constructor_only const&) -# 1379| : +# 1381| [CopyConstructor] void constructor_only::constructor_only(constructor_only const&) +# 1381| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const constructor_only & -# 1379| [MoveConstructor] void constructor_only::constructor_only(constructor_only&&) -# 1379| : +# 1381| [MoveConstructor] void constructor_only::constructor_only(constructor_only&&) +# 1381| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] constructor_only && -# 1384| [Constructor] void constructor_only::constructor_only(int) -# 1384| : -# 1384| getParameter(0): [Parameter] x -# 1384| Type = [IntType] int -# 1387| [CopyAssignmentOperator] copy_constructor& copy_constructor::operator=(copy_constructor const&) -# 1387| : +# 1386| [Constructor] void constructor_only::constructor_only(int) +# 1386| : +# 1386| getParameter(0): [Parameter] x +# 1386| Type = [IntType] int +# 1389| [CopyAssignmentOperator] copy_constructor& copy_constructor::operator=(copy_constructor const&) +# 1389| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const copy_constructor & -# 1392| [Constructor] void copy_constructor::copy_constructor() -# 1392| : -# 1393| [CopyConstructor] void copy_constructor::copy_constructor(copy_constructor const&) -# 1393| : -# 1393| getParameter(0): [Parameter] (unnamed parameter 0) -# 1393| Type = [LValueReferenceType] const copy_constructor & -# 1395| [MemberFunction] void copy_constructor::method() +# 1394| [Constructor] void copy_constructor::copy_constructor() +# 1394| : +# 1395| [CopyConstructor] void copy_constructor::copy_constructor(copy_constructor const&) # 1395| : -# 1398| [CopyAssignmentOperator] destructor_only& destructor_only::operator=(destructor_only const&) -# 1398| : +# 1395| getParameter(0): [Parameter] (unnamed parameter 0) +# 1395| Type = [LValueReferenceType] const copy_constructor & +# 1397| [MemberFunction] void copy_constructor::method() +# 1397| : +# 1400| [CopyAssignmentOperator] destructor_only& destructor_only::operator=(destructor_only const&) +# 1400| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const destructor_only & -# 1398| [Constructor] void destructor_only::destructor_only() -# 1398| : -# 1400| [Destructor] void destructor_only::~destructor_only() +# 1400| [Constructor] void destructor_only::destructor_only() # 1400| : -# 1402| [MemberFunction] void destructor_only::method() +# 1402| [Destructor] void destructor_only::~destructor_only() # 1402| : -# 1406| [FunctionTemplateInstantiation,TopLevelFunction] void acceptRef(Point const&) -# 1406| : -# 1406| getParameter(0): [Parameter] v -# 1406| Type = [LValueReferenceType] const Point & -# 1406| [FunctionTemplateInstantiation,TopLevelFunction] void acceptRef(String const&) -# 1406| : -# 1406| getParameter(0): [Parameter] v -# 1406| Type = [LValueReferenceType] const String & -# 1406| [TemplateFunction,TopLevelFunction] void acceptRef(T const&) -# 1406| : -# 1406| getParameter(0): [Parameter] v -# 1406| Type = [LValueReferenceType] const T & -# 1406| [FunctionTemplateInstantiation,TopLevelFunction] void acceptRef(copy_constructor const&) -# 1406| : -# 1406| getParameter(0): [Parameter] v -# 1406| Type = [LValueReferenceType] const copy_constructor & -# 1406| [FunctionTemplateInstantiation,TopLevelFunction] void acceptRef(destructor_only const&) -# 1406| : -# 1406| getParameter(0): [Parameter] v -# 1406| Type = [LValueReferenceType] const destructor_only & -# 1409| [FunctionTemplateInstantiation,TopLevelFunction] void acceptValue(Point) -# 1409| : -# 1409| getParameter(0): [Parameter] v -# 1409| Type = [Struct] Point -# 1409| [FunctionTemplateInstantiation,TopLevelFunction] void acceptValue(String) -# 1409| : -# 1409| getParameter(0): [Parameter] v -# 1409| Type = [Struct] String -# 1409| [TemplateFunction,TopLevelFunction] void acceptValue(T) -# 1409| : -# 1409| getParameter(0): [Parameter] v -# 1409| Type = [TypeTemplateParameter] T -# 1409| [FunctionTemplateInstantiation,TopLevelFunction] void acceptValue(copy_constructor) -# 1409| : -# 1409| getParameter(0): [Parameter] v -# 1409| Type = [Class] copy_constructor -# 1409| [FunctionTemplateInstantiation,TopLevelFunction] void acceptValue(destructor_only) -# 1409| : -# 1409| getParameter(0): [Parameter] v -# 1409| Type = [Class] destructor_only -# 1412| [FunctionTemplateInstantiation,TopLevelFunction] POD_Derived returnValue() -# 1412| : -# 1412| [FunctionTemplateInstantiation,TopLevelFunction] POD_Middle returnValue() -# 1412| : -# 1412| [FunctionTemplateInstantiation,TopLevelFunction] Point returnValue() -# 1412| : -# 1412| [FunctionTemplateInstantiation,TopLevelFunction] String returnValue() -# 1412| : -# 1412| [TemplateFunction,TopLevelFunction] T returnValue() -# 1412| : -# 1412| [FunctionTemplateInstantiation,TopLevelFunction] UnusualFields returnValue() -# 1412| : -# 1412| [FunctionTemplateInstantiation,TopLevelFunction] copy_constructor returnValue() -# 1412| : -# 1412| [FunctionTemplateInstantiation,TopLevelFunction] destructor_only returnValue() -# 1412| : -# 1414| [TopLevelFunction] void temporary_string() +# 1404| [MemberFunction] void destructor_only::method() +# 1404| : +# 1408| [FunctionTemplateInstantiation,TopLevelFunction] void acceptRef(Point const&) +# 1408| : +# 1408| getParameter(0): [Parameter] v +# 1408| Type = [LValueReferenceType] const Point & +# 1408| [FunctionTemplateInstantiation,TopLevelFunction] void acceptRef(String const&) +# 1408| : +# 1408| getParameter(0): [Parameter] v +# 1408| Type = [LValueReferenceType] const String & +# 1408| [TemplateFunction,TopLevelFunction] void acceptRef(T const&) +# 1408| : +# 1408| getParameter(0): [Parameter] v +# 1408| Type = [LValueReferenceType] const T & +# 1408| [FunctionTemplateInstantiation,TopLevelFunction] void acceptRef(copy_constructor const&) +# 1408| : +# 1408| getParameter(0): [Parameter] v +# 1408| Type = [LValueReferenceType] const copy_constructor & +# 1408| [FunctionTemplateInstantiation,TopLevelFunction] void acceptRef(destructor_only const&) +# 1408| : +# 1408| getParameter(0): [Parameter] v +# 1408| Type = [LValueReferenceType] const destructor_only & +# 1411| [FunctionTemplateInstantiation,TopLevelFunction] void acceptValue(Point) +# 1411| : +# 1411| getParameter(0): [Parameter] v +# 1411| Type = [Struct] Point +# 1411| [FunctionTemplateInstantiation,TopLevelFunction] void acceptValue(String) +# 1411| : +# 1411| getParameter(0): [Parameter] v +# 1411| Type = [Struct] String +# 1411| [TemplateFunction,TopLevelFunction] void acceptValue(T) +# 1411| : +# 1411| getParameter(0): [Parameter] v +# 1411| Type = [TypeTemplateParameter] T +# 1411| [FunctionTemplateInstantiation,TopLevelFunction] void acceptValue(copy_constructor) +# 1411| : +# 1411| getParameter(0): [Parameter] v +# 1411| Type = [Class] copy_constructor +# 1411| [FunctionTemplateInstantiation,TopLevelFunction] void acceptValue(destructor_only) +# 1411| : +# 1411| getParameter(0): [Parameter] v +# 1411| Type = [Class] destructor_only +# 1414| [FunctionTemplateInstantiation,TopLevelFunction] POD_Derived returnValue() # 1414| : -# 1414| getEntryPoint(): [BlockStmt] { ... } -# 1415| getStmt(0): [DeclStmt] declaration -# 1415| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s -# 1415| Type = [Struct] String -# 1415| getVariable().getInitializer(): [Initializer] initializer for s -# 1415| getExpr(): [FunctionCall] call to returnValue -# 1415| Type = [Struct] String -# 1415| ValueCategory = prvalue -# 1416| getStmt(1): [DeclStmt] declaration -# 1416| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rs -# 1416| Type = [LValueReferenceType] const String & -# 1416| getVariable().getInitializer(): [Initializer] initializer for rs -# 1416| getExpr(): [FunctionCall] call to returnValue -# 1416| Type = [Struct] String -# 1416| ValueCategory = prvalue -# 1416| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1416| Type = [LValueReferenceType] const String & -# 1416| ValueCategory = prvalue -# 1416| getExpr(): [CStyleCast] (const String)... -# 1416| Conversion = [GlvalueConversion] glvalue conversion -# 1416| Type = [SpecifiedType] const String -# 1416| ValueCategory = lvalue -# 1416| getExpr(): [TemporaryObjectExpr] temporary object -# 1416| Type = [Struct] String -# 1416| ValueCategory = lvalue -# 1418| getStmt(2): [ExprStmt] ExprStmt -# 1418| getExpr(): [FunctionCall] call to acceptRef -# 1418| Type = [VoidType] void -# 1418| ValueCategory = prvalue -# 1418| getArgument(0): [VariableAccess] s -# 1418| Type = [Struct] String -# 1418| ValueCategory = lvalue -# 1418| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 1418| Type = [LValueReferenceType] const String & -# 1418| ValueCategory = prvalue -# 1418| getExpr(): [CStyleCast] (const String)... -# 1418| Conversion = [GlvalueConversion] glvalue conversion -# 1418| Type = [SpecifiedType] const String -# 1418| ValueCategory = lvalue -# 1419| getStmt(3): [ExprStmt] ExprStmt -# 1419| getExpr(): [FunctionCall] call to acceptRef -# 1419| Type = [VoidType] void -# 1419| ValueCategory = prvalue -# 1419| getArgument(0): [ConstructorCall] call to String -# 1419| Type = [VoidType] void -# 1419| ValueCategory = prvalue -# 1419| getArgument(0): foo -# 1419| Type = [ArrayType] const char[4] -# 1419| Value = [StringLiteral] "foo" -# 1419| ValueCategory = lvalue -# 1419| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1419| Type = [PointerType] const char * -# 1419| ValueCategory = prvalue -# 1419| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1419| Type = [VoidType] void -# 1419| ValueCategory = prvalue -# 1419| getQualifier(): [ReuseExpr] reuse of temporary object -# 1419| Type = [SpecifiedType] const String -# 1419| ValueCategory = xvalue -# 1419| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 1419| Type = [LValueReferenceType] const String & -# 1419| ValueCategory = prvalue -# 1419| getExpr(): [TemporaryObjectExpr] temporary object -# 1419| Type = [SpecifiedType] const String -# 1419| ValueCategory = lvalue -# 1420| getStmt(4): [ExprStmt] ExprStmt -# 1420| getExpr(): [FunctionCall] call to acceptValue +# 1414| [FunctionTemplateInstantiation,TopLevelFunction] POD_Middle returnValue() +# 1414| : +# 1414| [FunctionTemplateInstantiation,TopLevelFunction] Point returnValue() +# 1414| : +# 1414| [FunctionTemplateInstantiation,TopLevelFunction] String returnValue() +# 1414| : +# 1414| [TemplateFunction,TopLevelFunction] T returnValue() +# 1414| : +# 1414| [FunctionTemplateInstantiation,TopLevelFunction] UnusualFields returnValue() +# 1414| : +# 1414| [FunctionTemplateInstantiation,TopLevelFunction] copy_constructor returnValue() +# 1414| : +# 1414| [FunctionTemplateInstantiation,TopLevelFunction] destructor_only returnValue() +# 1414| : +# 1416| [TopLevelFunction] void temporary_string() +# 1416| : +# 1416| getEntryPoint(): [BlockStmt] { ... } +# 1417| getStmt(0): [DeclStmt] declaration +# 1417| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s +# 1417| Type = [Struct] String +# 1417| getVariable().getInitializer(): [Initializer] initializer for s +# 1417| getExpr(): [FunctionCall] call to returnValue +# 1417| Type = [Struct] String +# 1417| ValueCategory = prvalue +# 1418| getStmt(1): [DeclStmt] declaration +# 1418| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rs +# 1418| Type = [LValueReferenceType] const String & +# 1418| getVariable().getInitializer(): [Initializer] initializer for rs +# 1418| getExpr(): [FunctionCall] call to returnValue +# 1418| Type = [Struct] String +# 1418| ValueCategory = prvalue +# 1418| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1418| Type = [LValueReferenceType] const String & +# 1418| ValueCategory = prvalue +# 1418| getExpr(): [CStyleCast] (const String)... +# 1418| Conversion = [GlvalueConversion] glvalue conversion +# 1418| Type = [SpecifiedType] const String +# 1418| ValueCategory = lvalue +# 1418| getExpr(): [TemporaryObjectExpr] temporary object +# 1418| Type = [Struct] String +# 1418| ValueCategory = lvalue +# 1420| getStmt(2): [ExprStmt] ExprStmt +# 1420| getExpr(): [FunctionCall] call to acceptRef # 1420| Type = [VoidType] void # 1420| ValueCategory = prvalue -# 1420| getArgument(0): [ConstructorCall] call to String -# 1420| Type = [VoidType] void -# 1420| ValueCategory = prvalue -# 1420| getArgument(0): [VariableAccess] s -# 1420| Type = [Struct] String -# 1420| ValueCategory = lvalue -# 1420| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 1420| Type = [LValueReferenceType] const String & -# 1420| ValueCategory = prvalue -# 1420| getExpr(): [CStyleCast] (const String)... -# 1420| Conversion = [GlvalueConversion] glvalue conversion -# 1420| Type = [SpecifiedType] const String -# 1420| ValueCategory = lvalue -# 1420| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1420| Type = [VoidType] void -# 1420| ValueCategory = prvalue -# 1420| getQualifier(): [ReuseExpr] reuse of temporary object -# 1420| Type = [Struct] String -# 1420| ValueCategory = xvalue -# 1420| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1420| getArgument(0): [VariableAccess] s # 1420| Type = [Struct] String # 1420| ValueCategory = lvalue -# 1421| getStmt(5): [ExprStmt] ExprStmt -# 1421| getExpr(): [FunctionCall] call to acceptValue +# 1420| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 1420| Type = [LValueReferenceType] const String & +# 1420| ValueCategory = prvalue +# 1420| getExpr(): [CStyleCast] (const String)... +# 1420| Conversion = [GlvalueConversion] glvalue conversion +# 1420| Type = [SpecifiedType] const String +# 1420| ValueCategory = lvalue +# 1421| getStmt(3): [ExprStmt] ExprStmt +# 1421| getExpr(): [FunctionCall] call to acceptRef # 1421| Type = [VoidType] void # 1421| ValueCategory = prvalue # 1421| getArgument(0): [ConstructorCall] call to String @@ -14524,524 +14472,576 @@ ir.cpp: # 1421| Type = [VoidType] void # 1421| ValueCategory = prvalue # 1421| getQualifier(): [ReuseExpr] reuse of temporary object -# 1421| Type = [Struct] String +# 1421| Type = [SpecifiedType] const String # 1421| ValueCategory = xvalue -# 1421| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object -# 1421| Type = [Struct] String -# 1421| ValueCategory = lvalue -# 1422| getStmt(6): [ExprStmt] ExprStmt -# 1422| getExpr(): [FunctionCall] call to c_str -# 1422| Type = [PointerType] const char * +# 1421| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 1421| Type = [LValueReferenceType] const String & +# 1421| ValueCategory = prvalue +# 1421| getExpr(): [TemporaryObjectExpr] temporary object +# 1421| Type = [SpecifiedType] const String +# 1421| ValueCategory = lvalue +# 1422| getStmt(4): [ExprStmt] ExprStmt +# 1422| getExpr(): [FunctionCall] call to acceptValue +# 1422| Type = [VoidType] void # 1422| ValueCategory = prvalue -# 1422| getQualifier(): [ConstructorCall] call to String +# 1422| getArgument(0): [ConstructorCall] call to String # 1422| Type = [VoidType] void # 1422| ValueCategory = prvalue +# 1422| getArgument(0): [VariableAccess] s +# 1422| Type = [Struct] String +# 1422| ValueCategory = lvalue +# 1422| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 1422| Type = [LValueReferenceType] const String & +# 1422| ValueCategory = prvalue +# 1422| getExpr(): [CStyleCast] (const String)... +# 1422| Conversion = [GlvalueConversion] glvalue conversion +# 1422| Type = [SpecifiedType] const String +# 1422| ValueCategory = lvalue # 1422| getImplicitDestructorCall(0): [DestructorCall] call to ~String # 1422| Type = [VoidType] void # 1422| ValueCategory = prvalue # 1422| getQualifier(): [ReuseExpr] reuse of temporary object # 1422| Type = [Struct] String # 1422| ValueCategory = xvalue -# 1422| getQualifier().getFullyConverted(): [CStyleCast] (const String)... -# 1422| Conversion = [PrvalueAdjustmentConversion] prvalue adjustment conversion -# 1422| Type = [SpecifiedType] const String -# 1422| ValueCategory = prvalue -# 1422| getExpr(): [TemporaryObjectExpr] temporary object -# 1422| Type = [Struct] String -# 1422| ValueCategory = prvalue(load) -# 1423| getStmt(7): [ExprStmt] ExprStmt -# 1423| getExpr(): [FunctionCall] call to c_str -# 1423| Type = [PointerType] const char * +# 1422| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1422| Type = [Struct] String +# 1422| ValueCategory = lvalue +# 1423| getStmt(5): [ExprStmt] ExprStmt +# 1423| getExpr(): [FunctionCall] call to acceptValue +# 1423| Type = [VoidType] void # 1423| ValueCategory = prvalue -# 1423| getQualifier(): [FunctionCall] call to returnValue -# 1423| Type = [Struct] String +# 1423| getArgument(0): [ConstructorCall] call to String +# 1423| Type = [VoidType] void # 1423| ValueCategory = prvalue +# 1423| getArgument(0): foo +# 1423| Type = [ArrayType] const char[4] +# 1423| Value = [StringLiteral] "foo" +# 1423| ValueCategory = lvalue +# 1423| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1423| Type = [PointerType] const char * +# 1423| ValueCategory = prvalue # 1423| getImplicitDestructorCall(0): [DestructorCall] call to ~String # 1423| Type = [VoidType] void # 1423| ValueCategory = prvalue # 1423| getQualifier(): [ReuseExpr] reuse of temporary object # 1423| Type = [Struct] String # 1423| ValueCategory = xvalue -# 1423| getQualifier().getFullyConverted(): [CStyleCast] (const String)... -# 1423| Conversion = [PrvalueAdjustmentConversion] prvalue adjustment conversion -# 1423| Type = [SpecifiedType] const String -# 1423| ValueCategory = prvalue -# 1423| getExpr(): [TemporaryObjectExpr] temporary object -# 1423| Type = [Struct] String -# 1423| ValueCategory = prvalue(load) -# 1425| getStmt(8): [ExprStmt] ExprStmt -# 1425| getExpr(): [FunctionCall] call to defaultConstruct -# 1425| Type = [Struct] String -# 1425| ValueCategory = prvalue -# 1425| getExpr().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 1425| Type = [Struct] String +# 1423| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1423| Type = [Struct] String +# 1423| ValueCategory = lvalue +# 1424| getStmt(6): [ExprStmt] ExprStmt +# 1424| getExpr(): [FunctionCall] call to c_str +# 1424| Type = [PointerType] const char * +# 1424| ValueCategory = prvalue +# 1424| getQualifier(): [ConstructorCall] call to String +# 1424| Type = [VoidType] void +# 1424| ValueCategory = prvalue +# 1424| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 1424| Type = [VoidType] void +# 1424| ValueCategory = prvalue +# 1424| getQualifier(): [ReuseExpr] reuse of temporary object +# 1424| Type = [Struct] String +# 1424| ValueCategory = xvalue +# 1424| getQualifier().getFullyConverted(): [CStyleCast] (const String)... +# 1424| Conversion = [PrvalueAdjustmentConversion] prvalue adjustment conversion +# 1424| Type = [SpecifiedType] const String +# 1424| ValueCategory = prvalue +# 1424| getExpr(): [TemporaryObjectExpr] temporary object +# 1424| Type = [Struct] String +# 1424| ValueCategory = prvalue(load) +# 1425| getStmt(7): [ExprStmt] ExprStmt +# 1425| getExpr(): [FunctionCall] call to c_str +# 1425| Type = [PointerType] const char * # 1425| ValueCategory = prvalue +# 1425| getQualifier(): [FunctionCall] call to returnValue +# 1425| Type = [Struct] String +# 1425| ValueCategory = prvalue # 1425| getImplicitDestructorCall(0): [DestructorCall] call to ~String # 1425| Type = [VoidType] void # 1425| ValueCategory = prvalue # 1425| getQualifier(): [ReuseExpr] reuse of temporary object # 1425| Type = [Struct] String # 1425| ValueCategory = xvalue -# 1426| getStmt(9): [ReturnStmt] return ... -# 1426| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 1426| Type = [VoidType] void -# 1426| ValueCategory = prvalue -# 1426| getQualifier(): [ReuseExpr] reuse of temporary object -# 1426| Type = [Struct] String -# 1426| ValueCategory = xvalue -# 1426| getImplicitDestructorCall(1): [DestructorCall] call to ~String -# 1426| Type = [VoidType] void -# 1426| ValueCategory = prvalue -# 1426| getQualifier(): [VariableAccess] s -# 1426| Type = [Struct] String -# 1426| ValueCategory = lvalue -# 1428| [TopLevelFunction] void temporary_destructor_only() -# 1428| : -# 1428| getEntryPoint(): [BlockStmt] { ... } -# 1429| getStmt(0): [DeclStmt] declaration -# 1429| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d -# 1429| Type = [Class] destructor_only -# 1429| getVariable().getInitializer(): [Initializer] initializer for d -# 1429| getExpr(): [FunctionCall] call to returnValue -# 1429| Type = [Class] destructor_only -# 1429| ValueCategory = prvalue -# 1430| getStmt(1): [DeclStmt] declaration -# 1430| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rd -# 1430| Type = [LValueReferenceType] const destructor_only & -# 1430| getVariable().getInitializer(): [Initializer] initializer for rd -# 1430| getExpr(): [FunctionCall] call to returnValue -# 1430| Type = [Class] destructor_only -# 1430| ValueCategory = prvalue -# 1430| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1430| Type = [LValueReferenceType] const destructor_only & -# 1430| ValueCategory = prvalue -# 1430| getExpr(): [CStyleCast] (const destructor_only)... -# 1430| Conversion = [GlvalueConversion] glvalue conversion -# 1430| Type = [SpecifiedType] const destructor_only -# 1430| ValueCategory = lvalue -# 1430| getExpr(): [TemporaryObjectExpr] temporary object -# 1430| Type = [Class] destructor_only -# 1430| ValueCategory = lvalue -# 1431| getStmt(2): [DeclStmt] declaration -# 1431| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d2 +# 1425| getQualifier().getFullyConverted(): [CStyleCast] (const String)... +# 1425| Conversion = [PrvalueAdjustmentConversion] prvalue adjustment conversion +# 1425| Type = [SpecifiedType] const String +# 1425| ValueCategory = prvalue +# 1425| getExpr(): [TemporaryObjectExpr] temporary object +# 1425| Type = [Struct] String +# 1425| ValueCategory = prvalue(load) +# 1427| getStmt(8): [ExprStmt] ExprStmt +# 1427| getExpr(): [FunctionCall] call to defaultConstruct +# 1427| Type = [Struct] String +# 1427| ValueCategory = prvalue +# 1427| getExpr().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1427| Type = [Struct] String +# 1427| ValueCategory = prvalue +# 1427| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 1427| Type = [VoidType] void +# 1427| ValueCategory = prvalue +# 1427| getQualifier(): [ReuseExpr] reuse of temporary object +# 1427| Type = [Struct] String +# 1427| ValueCategory = xvalue +# 1428| getStmt(9): [ReturnStmt] return ... +# 1428| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 1428| Type = [VoidType] void +# 1428| ValueCategory = prvalue +# 1428| getQualifier(): [ReuseExpr] reuse of temporary object +# 1428| Type = [Struct] String +# 1428| ValueCategory = xvalue +# 1428| getImplicitDestructorCall(1): [DestructorCall] call to ~String +# 1428| Type = [VoidType] void +# 1428| ValueCategory = prvalue +# 1428| getQualifier(): [VariableAccess] s +# 1428| Type = [Struct] String +# 1428| ValueCategory = lvalue +# 1430| [TopLevelFunction] void temporary_destructor_only() +# 1430| : +# 1430| getEntryPoint(): [BlockStmt] { ... } +# 1431| getStmt(0): [DeclStmt] declaration +# 1431| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d # 1431| Type = [Class] destructor_only -# 1432| getStmt(3): [ExprStmt] ExprStmt -# 1432| getExpr(): [FunctionCall] call to acceptRef -# 1432| Type = [VoidType] void -# 1432| ValueCategory = prvalue -# 1432| getArgument(0): [VariableAccess] d -# 1432| Type = [Class] destructor_only -# 1432| ValueCategory = lvalue -# 1432| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 1432| Type = [LValueReferenceType] const destructor_only & -# 1432| ValueCategory = prvalue -# 1432| getExpr(): [CStyleCast] (const destructor_only)... -# 1432| Conversion = [GlvalueConversion] glvalue conversion -# 1432| Type = [SpecifiedType] const destructor_only -# 1432| ValueCategory = lvalue -# 1433| getStmt(4): [ExprStmt] ExprStmt -# 1433| getExpr(): [FunctionCall] call to acceptValue -# 1433| Type = [VoidType] void -# 1433| ValueCategory = prvalue -# 1433| getArgument(0): [VariableAccess] d -# 1433| Type = [Class] destructor_only -# 1433| ValueCategory = prvalue(load) -# 1433| getImplicitDestructorCall(0): [DestructorCall] call to ~destructor_only -# 1433| Type = [VoidType] void -# 1433| ValueCategory = prvalue -# 1433| getQualifier(): [ReuseExpr] reuse of temporary object -# 1433| Type = [Class] destructor_only -# 1433| ValueCategory = xvalue -# 1433| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object -# 1433| Type = [Class] destructor_only -# 1433| ValueCategory = lvalue -# 1434| getStmt(5): [ExprStmt] ExprStmt -# 1434| getExpr(): [FunctionCall] call to method +# 1431| getVariable().getInitializer(): [Initializer] initializer for d +# 1431| getExpr(): [FunctionCall] call to returnValue +# 1431| Type = [Class] destructor_only +# 1431| ValueCategory = prvalue +# 1432| getStmt(1): [DeclStmt] declaration +# 1432| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rd +# 1432| Type = [LValueReferenceType] const destructor_only & +# 1432| getVariable().getInitializer(): [Initializer] initializer for rd +# 1432| getExpr(): [FunctionCall] call to returnValue +# 1432| Type = [Class] destructor_only +# 1432| ValueCategory = prvalue +# 1432| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1432| Type = [LValueReferenceType] const destructor_only & +# 1432| ValueCategory = prvalue +# 1432| getExpr(): [CStyleCast] (const destructor_only)... +# 1432| Conversion = [GlvalueConversion] glvalue conversion +# 1432| Type = [SpecifiedType] const destructor_only +# 1432| ValueCategory = lvalue +# 1432| getExpr(): [TemporaryObjectExpr] temporary object +# 1432| Type = [Class] destructor_only +# 1432| ValueCategory = lvalue +# 1433| getStmt(2): [DeclStmt] declaration +# 1433| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d2 +# 1433| Type = [Class] destructor_only +# 1434| getStmt(3): [ExprStmt] ExprStmt +# 1434| getExpr(): [FunctionCall] call to acceptRef # 1434| Type = [VoidType] void # 1434| ValueCategory = prvalue -# 1434| getQualifier(): [Literal] 0 +# 1434| getArgument(0): [VariableAccess] d # 1434| Type = [Class] destructor_only -# 1434| Value = [Literal] 0 +# 1434| ValueCategory = lvalue +# 1434| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 1434| Type = [LValueReferenceType] const destructor_only & # 1434| ValueCategory = prvalue -# 1434| getImplicitDestructorCall(0): [DestructorCall] call to ~destructor_only -# 1434| Type = [VoidType] void -# 1434| ValueCategory = prvalue -# 1434| getQualifier(): [ReuseExpr] reuse of temporary object -# 1434| Type = [Class] destructor_only -# 1434| ValueCategory = xvalue -# 1434| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 1434| Type = [Class] destructor_only -# 1434| ValueCategory = prvalue(load) -# 1435| getStmt(6): [ExprStmt] ExprStmt -# 1435| getExpr(): [FunctionCall] call to method +# 1434| getExpr(): [CStyleCast] (const destructor_only)... +# 1434| Conversion = [GlvalueConversion] glvalue conversion +# 1434| Type = [SpecifiedType] const destructor_only +# 1434| ValueCategory = lvalue +# 1435| getStmt(4): [ExprStmt] ExprStmt +# 1435| getExpr(): [FunctionCall] call to acceptValue # 1435| Type = [VoidType] void # 1435| ValueCategory = prvalue -# 1435| getQualifier(): [FunctionCall] call to returnValue +# 1435| getArgument(0): [VariableAccess] d # 1435| Type = [Class] destructor_only -# 1435| ValueCategory = prvalue +# 1435| ValueCategory = prvalue(load) # 1435| getImplicitDestructorCall(0): [DestructorCall] call to ~destructor_only # 1435| Type = [VoidType] void # 1435| ValueCategory = prvalue # 1435| getQualifier(): [ReuseExpr] reuse of temporary object # 1435| Type = [Class] destructor_only # 1435| ValueCategory = xvalue -# 1435| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1435| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object # 1435| Type = [Class] destructor_only -# 1435| ValueCategory = prvalue(load) -# 1437| getStmt(7): [ExprStmt] ExprStmt -# 1437| getExpr(): [FunctionCall] call to defaultConstruct -# 1437| Type = [Class] destructor_only -# 1437| ValueCategory = prvalue -# 1437| getExpr().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 1437| Type = [Class] destructor_only +# 1435| ValueCategory = lvalue +# 1436| getStmt(5): [ExprStmt] ExprStmt +# 1436| getExpr(): [FunctionCall] call to method +# 1436| Type = [VoidType] void +# 1436| ValueCategory = prvalue +# 1436| getQualifier(): [Literal] 0 +# 1436| Type = [Class] destructor_only +# 1436| Value = [Literal] 0 +# 1436| ValueCategory = prvalue +# 1436| getImplicitDestructorCall(0): [DestructorCall] call to ~destructor_only +# 1436| Type = [VoidType] void +# 1436| ValueCategory = prvalue +# 1436| getQualifier(): [ReuseExpr] reuse of temporary object +# 1436| Type = [Class] destructor_only +# 1436| ValueCategory = xvalue +# 1436| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1436| Type = [Class] destructor_only +# 1436| ValueCategory = prvalue(load) +# 1437| getStmt(6): [ExprStmt] ExprStmt +# 1437| getExpr(): [FunctionCall] call to method +# 1437| Type = [VoidType] void # 1437| ValueCategory = prvalue +# 1437| getQualifier(): [FunctionCall] call to returnValue +# 1437| Type = [Class] destructor_only +# 1437| ValueCategory = prvalue # 1437| getImplicitDestructorCall(0): [DestructorCall] call to ~destructor_only # 1437| Type = [VoidType] void # 1437| ValueCategory = prvalue # 1437| getQualifier(): [ReuseExpr] reuse of temporary object # 1437| Type = [Class] destructor_only # 1437| ValueCategory = xvalue -# 1438| getStmt(8): [ReturnStmt] return ... -# 1438| getImplicitDestructorCall(0): [DestructorCall] call to ~destructor_only -# 1438| Type = [VoidType] void -# 1438| ValueCategory = prvalue -# 1438| getQualifier(): [VariableAccess] d2 -# 1438| Type = [Class] destructor_only -# 1438| ValueCategory = lvalue -# 1438| getImplicitDestructorCall(1): [DestructorCall] call to ~destructor_only -# 1438| Type = [VoidType] void -# 1438| ValueCategory = prvalue -# 1438| getQualifier(): [ReuseExpr] reuse of temporary object -# 1438| Type = [Class] destructor_only -# 1438| ValueCategory = xvalue -# 1438| getImplicitDestructorCall(2): [DestructorCall] call to ~destructor_only -# 1438| Type = [VoidType] void -# 1438| ValueCategory = prvalue -# 1438| getQualifier(): [VariableAccess] d -# 1438| Type = [Class] destructor_only -# 1438| ValueCategory = lvalue -# 1440| [TopLevelFunction] void temporary_copy_constructor() -# 1440| : -# 1440| getEntryPoint(): [BlockStmt] { ... } -# 1441| getStmt(0): [DeclStmt] declaration -# 1441| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d -# 1441| Type = [Class] copy_constructor -# 1441| getVariable().getInitializer(): [Initializer] initializer for d -# 1441| getExpr(): [FunctionCall] call to returnValue -# 1441| Type = [Class] copy_constructor -# 1441| ValueCategory = prvalue -# 1442| getStmt(1): [DeclStmt] declaration -# 1442| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rd -# 1442| Type = [LValueReferenceType] const copy_constructor & -# 1442| getVariable().getInitializer(): [Initializer] initializer for rd -# 1442| getExpr(): [FunctionCall] call to returnValue -# 1442| Type = [Class] copy_constructor -# 1442| ValueCategory = prvalue -# 1442| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1442| Type = [LValueReferenceType] const copy_constructor & -# 1442| ValueCategory = prvalue -# 1442| getExpr(): [CStyleCast] (const copy_constructor)... -# 1442| Conversion = [GlvalueConversion] glvalue conversion -# 1442| Type = [SpecifiedType] const copy_constructor -# 1442| ValueCategory = lvalue -# 1442| getExpr(): [TemporaryObjectExpr] temporary object -# 1442| Type = [Class] copy_constructor -# 1442| ValueCategory = lvalue -# 1443| getStmt(2): [DeclStmt] declaration -# 1443| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d2 +# 1437| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1437| Type = [Class] destructor_only +# 1437| ValueCategory = prvalue(load) +# 1439| getStmt(7): [ExprStmt] ExprStmt +# 1439| getExpr(): [FunctionCall] call to defaultConstruct +# 1439| Type = [Class] destructor_only +# 1439| ValueCategory = prvalue +# 1439| getExpr().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1439| Type = [Class] destructor_only +# 1439| ValueCategory = prvalue +# 1439| getImplicitDestructorCall(0): [DestructorCall] call to ~destructor_only +# 1439| Type = [VoidType] void +# 1439| ValueCategory = prvalue +# 1439| getQualifier(): [ReuseExpr] reuse of temporary object +# 1439| Type = [Class] destructor_only +# 1439| ValueCategory = xvalue +# 1440| getStmt(8): [ReturnStmt] return ... +# 1440| getImplicitDestructorCall(0): [DestructorCall] call to ~destructor_only +# 1440| Type = [VoidType] void +# 1440| ValueCategory = prvalue +# 1440| getQualifier(): [VariableAccess] d2 +# 1440| Type = [Class] destructor_only +# 1440| ValueCategory = lvalue +# 1440| getImplicitDestructorCall(1): [DestructorCall] call to ~destructor_only +# 1440| Type = [VoidType] void +# 1440| ValueCategory = prvalue +# 1440| getQualifier(): [ReuseExpr] reuse of temporary object +# 1440| Type = [Class] destructor_only +# 1440| ValueCategory = xvalue +# 1440| getImplicitDestructorCall(2): [DestructorCall] call to ~destructor_only +# 1440| Type = [VoidType] void +# 1440| ValueCategory = prvalue +# 1440| getQualifier(): [VariableAccess] d +# 1440| Type = [Class] destructor_only +# 1440| ValueCategory = lvalue +# 1442| [TopLevelFunction] void temporary_copy_constructor() +# 1442| : +# 1442| getEntryPoint(): [BlockStmt] { ... } +# 1443| getStmt(0): [DeclStmt] declaration +# 1443| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d # 1443| Type = [Class] copy_constructor -# 1443| getVariable().getInitializer(): [Initializer] initializer for d2 -# 1443| getExpr(): [ConstructorCall] call to copy_constructor -# 1443| Type = [VoidType] void +# 1443| getVariable().getInitializer(): [Initializer] initializer for d +# 1443| getExpr(): [FunctionCall] call to returnValue +# 1443| Type = [Class] copy_constructor # 1443| ValueCategory = prvalue -# 1444| getStmt(3): [ExprStmt] ExprStmt -# 1444| getExpr(): [FunctionCall] call to acceptRef -# 1444| Type = [VoidType] void -# 1444| ValueCategory = prvalue -# 1444| getArgument(0): [VariableAccess] d -# 1444| Type = [Class] copy_constructor -# 1444| ValueCategory = lvalue -# 1444| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 1444| Type = [LValueReferenceType] const copy_constructor & -# 1444| ValueCategory = prvalue -# 1444| getExpr(): [CStyleCast] (const copy_constructor)... -# 1444| Conversion = [GlvalueConversion] glvalue conversion -# 1444| Type = [SpecifiedType] const copy_constructor -# 1444| ValueCategory = lvalue -# 1445| getStmt(4): [ExprStmt] ExprStmt -# 1445| getExpr(): [FunctionCall] call to acceptValue -# 1445| Type = [VoidType] void -# 1445| ValueCategory = prvalue -# 1445| getArgument(0): [ConstructorCall] call to copy_constructor -# 1445| Type = [VoidType] void -# 1445| ValueCategory = prvalue -# 1445| getArgument(0): [VariableAccess] d -# 1445| Type = [Class] copy_constructor -# 1445| ValueCategory = lvalue -# 1445| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 1445| Type = [LValueReferenceType] const copy_constructor & +# 1444| getStmt(1): [DeclStmt] declaration +# 1444| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rd +# 1444| Type = [LValueReferenceType] const copy_constructor & +# 1444| getVariable().getInitializer(): [Initializer] initializer for rd +# 1444| getExpr(): [FunctionCall] call to returnValue +# 1444| Type = [Class] copy_constructor +# 1444| ValueCategory = prvalue +# 1444| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1444| Type = [LValueReferenceType] const copy_constructor & +# 1444| ValueCategory = prvalue +# 1444| getExpr(): [CStyleCast] (const copy_constructor)... +# 1444| Conversion = [GlvalueConversion] glvalue conversion +# 1444| Type = [SpecifiedType] const copy_constructor +# 1444| ValueCategory = lvalue +# 1444| getExpr(): [TemporaryObjectExpr] temporary object +# 1444| Type = [Class] copy_constructor +# 1444| ValueCategory = lvalue +# 1445| getStmt(2): [DeclStmt] declaration +# 1445| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d2 +# 1445| Type = [Class] copy_constructor +# 1445| getVariable().getInitializer(): [Initializer] initializer for d2 +# 1445| getExpr(): [ConstructorCall] call to copy_constructor +# 1445| Type = [VoidType] void # 1445| ValueCategory = prvalue -# 1445| getExpr(): [CStyleCast] (const copy_constructor)... -# 1445| Conversion = [GlvalueConversion] glvalue conversion -# 1445| Type = [SpecifiedType] const copy_constructor -# 1445| ValueCategory = lvalue -# 1445| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object -# 1445| Type = [Class] copy_constructor -# 1445| ValueCategory = lvalue -# 1446| getStmt(5): [ExprStmt] ExprStmt -# 1446| getExpr(): [FunctionCall] call to method +# 1446| getStmt(3): [ExprStmt] ExprStmt +# 1446| getExpr(): [FunctionCall] call to acceptRef # 1446| Type = [VoidType] void # 1446| ValueCategory = prvalue -# 1446| getQualifier(): [ConstructorCall] call to copy_constructor -# 1446| Type = [VoidType] void -# 1446| ValueCategory = prvalue -# 1446| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1446| getArgument(0): [VariableAccess] d # 1446| Type = [Class] copy_constructor -# 1446| ValueCategory = prvalue(load) -# 1447| getStmt(6): [ExprStmt] ExprStmt -# 1447| getExpr(): [FunctionCall] call to method +# 1446| ValueCategory = lvalue +# 1446| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 1446| Type = [LValueReferenceType] const copy_constructor & +# 1446| ValueCategory = prvalue +# 1446| getExpr(): [CStyleCast] (const copy_constructor)... +# 1446| Conversion = [GlvalueConversion] glvalue conversion +# 1446| Type = [SpecifiedType] const copy_constructor +# 1446| ValueCategory = lvalue +# 1447| getStmt(4): [ExprStmt] ExprStmt +# 1447| getExpr(): [FunctionCall] call to acceptValue # 1447| Type = [VoidType] void # 1447| ValueCategory = prvalue -# 1447| getQualifier(): [FunctionCall] call to returnValue -# 1447| Type = [Class] copy_constructor +# 1447| getArgument(0): [ConstructorCall] call to copy_constructor +# 1447| Type = [VoidType] void # 1447| ValueCategory = prvalue -# 1447| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1447| getArgument(0): [VariableAccess] d +# 1447| Type = [Class] copy_constructor +# 1447| ValueCategory = lvalue +# 1447| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 1447| Type = [LValueReferenceType] const copy_constructor & +# 1447| ValueCategory = prvalue +# 1447| getExpr(): [CStyleCast] (const copy_constructor)... +# 1447| Conversion = [GlvalueConversion] glvalue conversion +# 1447| Type = [SpecifiedType] const copy_constructor +# 1447| ValueCategory = lvalue +# 1447| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object # 1447| Type = [Class] copy_constructor -# 1447| ValueCategory = prvalue(load) -# 1448| getStmt(7): [ExprStmt] ExprStmt -# 1448| getExpr(): [FunctionCall] call to defaultConstruct -# 1448| Type = [Class] copy_constructor +# 1447| ValueCategory = lvalue +# 1448| getStmt(5): [ExprStmt] ExprStmt +# 1448| getExpr(): [FunctionCall] call to method +# 1448| Type = [VoidType] void # 1448| ValueCategory = prvalue -# 1448| getExpr().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 1448| Type = [Class] copy_constructor -# 1448| ValueCategory = prvalue -# 1450| getStmt(8): [DeclStmt] declaration -# 1450| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 1450| Type = [IntType] int -# 1450| getVariable().getInitializer(): [Initializer] initializer for y -# 1450| getExpr(): [ValueFieldAccess] y -# 1450| Type = [IntType] int -# 1450| ValueCategory = prvalue -# 1450| getQualifier(): [FunctionCall] call to returnValue -# 1450| Type = [Class] copy_constructor -# 1450| ValueCategory = prvalue -# 1450| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 1450| Type = [Class] copy_constructor -# 1450| ValueCategory = prvalue(load) -# 1451| getStmt(9): [ReturnStmt] return ... -# 1453| [TopLevelFunction] void temporary_point() -# 1453| : -# 1453| getEntryPoint(): [BlockStmt] { ... } -# 1454| getStmt(0): [DeclStmt] declaration -# 1454| getDeclarationEntry(0): [VariableDeclarationEntry] definition of p -# 1454| Type = [Struct] Point -# 1454| getVariable().getInitializer(): [Initializer] initializer for p -# 1454| getExpr(): [FunctionCall] call to returnValue -# 1454| Type = [Struct] Point -# 1454| ValueCategory = prvalue -# 1455| getStmt(1): [DeclStmt] declaration -# 1455| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rp -# 1455| Type = [LValueReferenceType] const Point & -# 1455| getVariable().getInitializer(): [Initializer] initializer for rp -# 1455| getExpr(): [FunctionCall] call to returnValue -# 1455| Type = [Struct] Point -# 1455| ValueCategory = prvalue -# 1455| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1455| Type = [LValueReferenceType] const Point & -# 1455| ValueCategory = prvalue -# 1455| getExpr(): [CStyleCast] (const Point)... -# 1455| Conversion = [GlvalueConversion] glvalue conversion -# 1455| Type = [SpecifiedType] const Point -# 1455| ValueCategory = lvalue -# 1455| getExpr(): [TemporaryObjectExpr] temporary object -# 1455| Type = [Struct] Point -# 1455| ValueCategory = lvalue -# 1457| getStmt(2): [ExprStmt] ExprStmt -# 1457| getExpr(): [FunctionCall] call to acceptRef -# 1457| Type = [VoidType] void -# 1457| ValueCategory = prvalue -# 1457| getArgument(0): [VariableAccess] p -# 1457| Type = [Struct] Point -# 1457| ValueCategory = lvalue -# 1457| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 1457| Type = [LValueReferenceType] const Point & -# 1457| ValueCategory = prvalue -# 1457| getExpr(): [CStyleCast] (const Point)... -# 1457| Conversion = [GlvalueConversion] glvalue conversion -# 1457| Type = [SpecifiedType] const Point -# 1457| ValueCategory = lvalue -# 1458| getStmt(3): [ExprStmt] ExprStmt -# 1458| getExpr(): [FunctionCall] call to acceptValue -# 1458| Type = [VoidType] void -# 1458| ValueCategory = prvalue -# 1458| getArgument(0): [VariableAccess] p -# 1458| Type = [Struct] Point -# 1458| ValueCategory = prvalue(load) -# 1459| getStmt(4): [ExprStmt] ExprStmt -# 1459| getExpr(): [ValueFieldAccess] x -# 1459| Type = [IntType] int -# 1459| Value = [ValueFieldAccess] 0 +# 1448| getQualifier(): [ConstructorCall] call to copy_constructor +# 1448| Type = [VoidType] void +# 1448| ValueCategory = prvalue +# 1448| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1448| Type = [Class] copy_constructor +# 1448| ValueCategory = prvalue(load) +# 1449| getStmt(6): [ExprStmt] ExprStmt +# 1449| getExpr(): [FunctionCall] call to method +# 1449| Type = [VoidType] void +# 1449| ValueCategory = prvalue +# 1449| getQualifier(): [FunctionCall] call to returnValue +# 1449| Type = [Class] copy_constructor +# 1449| ValueCategory = prvalue +# 1449| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1449| Type = [Class] copy_constructor +# 1449| ValueCategory = prvalue(load) +# 1450| getStmt(7): [ExprStmt] ExprStmt +# 1450| getExpr(): [FunctionCall] call to defaultConstruct +# 1450| Type = [Class] copy_constructor +# 1450| ValueCategory = prvalue +# 1450| getExpr().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1450| Type = [Class] copy_constructor +# 1450| ValueCategory = prvalue +# 1452| getStmt(8): [DeclStmt] declaration +# 1452| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 1452| Type = [IntType] int +# 1452| getVariable().getInitializer(): [Initializer] initializer for y +# 1452| getExpr(): [ValueFieldAccess] y +# 1452| Type = [IntType] int +# 1452| ValueCategory = prvalue +# 1452| getQualifier(): [FunctionCall] call to returnValue +# 1452| Type = [Class] copy_constructor +# 1452| ValueCategory = prvalue +# 1452| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1452| Type = [Class] copy_constructor +# 1452| ValueCategory = prvalue(load) +# 1453| getStmt(9): [ReturnStmt] return ... +# 1455| [TopLevelFunction] void temporary_point() +# 1455| : +# 1455| getEntryPoint(): [BlockStmt] { ... } +# 1456| getStmt(0): [DeclStmt] declaration +# 1456| getDeclarationEntry(0): [VariableDeclarationEntry] definition of p +# 1456| Type = [Struct] Point +# 1456| getVariable().getInitializer(): [Initializer] initializer for p +# 1456| getExpr(): [FunctionCall] call to returnValue +# 1456| Type = [Struct] Point +# 1456| ValueCategory = prvalue +# 1457| getStmt(1): [DeclStmt] declaration +# 1457| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rp +# 1457| Type = [LValueReferenceType] const Point & +# 1457| getVariable().getInitializer(): [Initializer] initializer for rp +# 1457| getExpr(): [FunctionCall] call to returnValue +# 1457| Type = [Struct] Point +# 1457| ValueCategory = prvalue +# 1457| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1457| Type = [LValueReferenceType] const Point & +# 1457| ValueCategory = prvalue +# 1457| getExpr(): [CStyleCast] (const Point)... +# 1457| Conversion = [GlvalueConversion] glvalue conversion +# 1457| Type = [SpecifiedType] const Point +# 1457| ValueCategory = lvalue +# 1457| getExpr(): [TemporaryObjectExpr] temporary object +# 1457| Type = [Struct] Point +# 1457| ValueCategory = lvalue +# 1459| getStmt(2): [ExprStmt] ExprStmt +# 1459| getExpr(): [FunctionCall] call to acceptRef +# 1459| Type = [VoidType] void # 1459| ValueCategory = prvalue -# 1459| getQualifier(): [Literal] 0 +# 1459| getArgument(0): [VariableAccess] p # 1459| Type = [Struct] Point -# 1459| Value = [Literal] 0 +# 1459| ValueCategory = lvalue +# 1459| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 1459| Type = [LValueReferenceType] const Point & # 1459| ValueCategory = prvalue -# 1459| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 1459| Type = [Struct] Point -# 1459| ValueCategory = prvalue(load) -# 1460| getStmt(5): [DeclStmt] declaration -# 1460| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 1460| Type = [IntType] int -# 1460| getVariable().getInitializer(): [Initializer] initializer for y -# 1460| getExpr(): [ValueFieldAccess] y -# 1460| Type = [IntType] int -# 1460| ValueCategory = prvalue -# 1460| getQualifier(): [FunctionCall] call to returnValue -# 1460| Type = [Struct] Point -# 1460| ValueCategory = prvalue -# 1462| getStmt(6): [ExprStmt] ExprStmt -# 1462| getExpr(): [FunctionCall] call to defaultConstruct -# 1462| Type = [Struct] Point -# 1462| ValueCategory = prvalue -# 1463| getStmt(7): [ReturnStmt] return ... -# 1465| [CopyAssignmentOperator] UnusualFields& UnusualFields::operator=(UnusualFields const&) -# 1465| : +# 1459| getExpr(): [CStyleCast] (const Point)... +# 1459| Conversion = [GlvalueConversion] glvalue conversion +# 1459| Type = [SpecifiedType] const Point +# 1459| ValueCategory = lvalue +# 1460| getStmt(3): [ExprStmt] ExprStmt +# 1460| getExpr(): [FunctionCall] call to acceptValue +# 1460| Type = [VoidType] void +# 1460| ValueCategory = prvalue +# 1460| getArgument(0): [VariableAccess] p +# 1460| Type = [Struct] Point +# 1460| ValueCategory = prvalue(load) +# 1461| getStmt(4): [ExprStmt] ExprStmt +# 1461| getExpr(): [ValueFieldAccess] x +# 1461| Type = [IntType] int +# 1461| Value = [ValueFieldAccess] 0 +# 1461| ValueCategory = prvalue +# 1461| getQualifier(): [Literal] 0 +# 1461| Type = [Struct] Point +# 1461| Value = [Literal] 0 +# 1461| ValueCategory = prvalue +# 1461| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 1461| Type = [Struct] Point +# 1461| ValueCategory = prvalue(load) +# 1462| getStmt(5): [DeclStmt] declaration +# 1462| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 1462| Type = [IntType] int +# 1462| getVariable().getInitializer(): [Initializer] initializer for y +# 1462| getExpr(): [ValueFieldAccess] y +# 1462| Type = [IntType] int +# 1462| ValueCategory = prvalue +# 1462| getQualifier(): [FunctionCall] call to returnValue +# 1462| Type = [Struct] Point +# 1462| ValueCategory = prvalue +# 1464| getStmt(6): [ExprStmt] ExprStmt +# 1464| getExpr(): [FunctionCall] call to defaultConstruct +# 1464| Type = [Struct] Point +# 1464| ValueCategory = prvalue +# 1465| getStmt(7): [ReturnStmt] return ... +# 1467| [CopyAssignmentOperator] UnusualFields& UnusualFields::operator=(UnusualFields const&) +# 1467| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const UnusualFields & -# 1465| [Constructor] void UnusualFields::UnusualFields() -# 1465| : -# 1465| [CopyConstructor] void UnusualFields::UnusualFields(UnusualFields const&) -# 1465| : +# 1467| [Constructor] void UnusualFields::UnusualFields() +# 1467| : +# 1467| [CopyConstructor] void UnusualFields::UnusualFields(UnusualFields const&) +# 1467| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const UnusualFields & -# 1465| [MoveConstructor] void UnusualFields::UnusualFields(UnusualFields&&) -# 1465| : +# 1467| [MoveConstructor] void UnusualFields::UnusualFields(UnusualFields&&) +# 1467| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] UnusualFields && -# 1470| [TopLevelFunction] void temporary_unusual_fields() -# 1470| : -# 1470| getEntryPoint(): [BlockStmt] { ... } -# 1471| getStmt(0): [DeclStmt] declaration -# 1471| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rx -# 1471| Type = [LValueReferenceType] const int & -# 1471| getVariable().getInitializer(): [Initializer] initializer for rx -# 1471| getExpr(): [ValueFieldAccess] r -# 1471| Type = [LValueReferenceType] int & -# 1471| ValueCategory = prvalue -# 1471| getQualifier(): [FunctionCall] call to returnValue -# 1471| Type = [Struct] UnusualFields -# 1471| ValueCategory = prvalue -# 1471| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1471| Type = [LValueReferenceType] const int & -# 1471| ValueCategory = prvalue -# 1471| getExpr(): [CStyleCast] (const int)... -# 1471| Conversion = [GlvalueConversion] glvalue conversion -# 1471| Type = [SpecifiedType] const int -# 1471| ValueCategory = lvalue -# 1471| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1471| Type = [IntType] int -# 1471| ValueCategory = lvalue -# 1472| getStmt(1): [DeclStmt] declaration -# 1472| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 1472| Type = [IntType] int -# 1472| getVariable().getInitializer(): [Initializer] initializer for x -# 1472| getExpr(): [ValueFieldAccess] r -# 1472| Type = [LValueReferenceType] int & -# 1472| ValueCategory = prvalue -# 1472| getQualifier(): [FunctionCall] call to returnValue -# 1472| Type = [Struct] UnusualFields -# 1472| ValueCategory = prvalue -# 1472| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1472| Type = [IntType] int -# 1472| ValueCategory = prvalue(load) -# 1474| getStmt(2): [DeclStmt] declaration -# 1474| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rf -# 1474| Type = [LValueReferenceType] const float & -# 1474| getVariable().getInitializer(): [Initializer] initializer for rf -# 1474| getExpr(): [ArrayExpr] access to array -# 1474| Type = [FloatType] float -# 1474| ValueCategory = lvalue -# 1474| getArrayBase(): [ValueFieldAccess] a -# 1474| Type = [ArrayType] float[10] -# 1474| ValueCategory = prvalue -# 1474| getQualifier(): [FunctionCall] call to returnValue -# 1474| Type = [Struct] UnusualFields -# 1474| ValueCategory = prvalue -# 1474| getArrayOffset(): [Literal] 3 -# 1474| Type = [IntType] int -# 1474| Value = [Literal] 3 -# 1474| ValueCategory = prvalue -# 1474| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1474| Type = [PointerType] float * -# 1474| ValueCategory = prvalue -# 1474| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1474| Type = [LValueReferenceType] const float & +# 1472| [TopLevelFunction] void temporary_unusual_fields() +# 1472| : +# 1472| getEntryPoint(): [BlockStmt] { ... } +# 1473| getStmt(0): [DeclStmt] declaration +# 1473| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rx +# 1473| Type = [LValueReferenceType] const int & +# 1473| getVariable().getInitializer(): [Initializer] initializer for rx +# 1473| getExpr(): [ValueFieldAccess] r +# 1473| Type = [LValueReferenceType] int & +# 1473| ValueCategory = prvalue +# 1473| getQualifier(): [FunctionCall] call to returnValue +# 1473| Type = [Struct] UnusualFields +# 1473| ValueCategory = prvalue +# 1473| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1473| Type = [LValueReferenceType] const int & +# 1473| ValueCategory = prvalue +# 1473| getExpr(): [CStyleCast] (const int)... +# 1473| Conversion = [GlvalueConversion] glvalue conversion +# 1473| Type = [SpecifiedType] const int +# 1473| ValueCategory = lvalue +# 1473| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1473| Type = [IntType] int +# 1473| ValueCategory = lvalue +# 1474| getStmt(1): [DeclStmt] declaration +# 1474| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 1474| Type = [IntType] int +# 1474| getVariable().getInitializer(): [Initializer] initializer for x +# 1474| getExpr(): [ValueFieldAccess] r +# 1474| Type = [LValueReferenceType] int & # 1474| ValueCategory = prvalue -# 1474| getExpr(): [CStyleCast] (const float)... -# 1474| Conversion = [GlvalueConversion] glvalue conversion -# 1474| Type = [SpecifiedType] const float -# 1474| ValueCategory = lvalue -# 1475| getStmt(3): [DeclStmt] declaration -# 1475| getDeclarationEntry(0): [VariableDeclarationEntry] definition of f -# 1475| Type = [FloatType] float -# 1475| getVariable().getInitializer(): [Initializer] initializer for f -# 1475| getExpr(): [ArrayExpr] access to array -# 1475| Type = [FloatType] float -# 1475| ValueCategory = prvalue(load) -# 1475| getArrayBase(): [ValueFieldAccess] a -# 1475| Type = [ArrayType] float[10] -# 1475| ValueCategory = prvalue -# 1475| getQualifier(): [FunctionCall] call to returnValue -# 1475| Type = [Struct] UnusualFields -# 1475| ValueCategory = prvalue -# 1475| getArrayOffset(): [Literal] 5 -# 1475| Type = [IntType] int -# 1475| Value = [Literal] 5 -# 1475| ValueCategory = prvalue -# 1475| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1475| Type = [PointerType] float * -# 1475| ValueCategory = prvalue -# 1476| getStmt(4): [ReturnStmt] return ... -# 1478| [CopyAssignmentOperator] POD_Base& POD_Base::operator=(POD_Base const&) -# 1478| : +# 1474| getQualifier(): [FunctionCall] call to returnValue +# 1474| Type = [Struct] UnusualFields +# 1474| ValueCategory = prvalue +# 1474| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1474| Type = [IntType] int +# 1474| ValueCategory = prvalue(load) +# 1476| getStmt(2): [DeclStmt] declaration +# 1476| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rf +# 1476| Type = [LValueReferenceType] const float & +# 1476| getVariable().getInitializer(): [Initializer] initializer for rf +# 1476| getExpr(): [ArrayExpr] access to array +# 1476| Type = [FloatType] float +# 1476| ValueCategory = lvalue +# 1476| getArrayBase(): [ValueFieldAccess] a +# 1476| Type = [ArrayType] float[10] +# 1476| ValueCategory = prvalue +# 1476| getQualifier(): [FunctionCall] call to returnValue +# 1476| Type = [Struct] UnusualFields +# 1476| ValueCategory = prvalue +# 1476| getArrayOffset(): [Literal] 3 +# 1476| Type = [IntType] int +# 1476| Value = [Literal] 3 +# 1476| ValueCategory = prvalue +# 1476| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1476| Type = [PointerType] float * +# 1476| ValueCategory = prvalue +# 1476| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1476| Type = [LValueReferenceType] const float & +# 1476| ValueCategory = prvalue +# 1476| getExpr(): [CStyleCast] (const float)... +# 1476| Conversion = [GlvalueConversion] glvalue conversion +# 1476| Type = [SpecifiedType] const float +# 1476| ValueCategory = lvalue +# 1477| getStmt(3): [DeclStmt] declaration +# 1477| getDeclarationEntry(0): [VariableDeclarationEntry] definition of f +# 1477| Type = [FloatType] float +# 1477| getVariable().getInitializer(): [Initializer] initializer for f +# 1477| getExpr(): [ArrayExpr] access to array +# 1477| Type = [FloatType] float +# 1477| ValueCategory = prvalue(load) +# 1477| getArrayBase(): [ValueFieldAccess] a +# 1477| Type = [ArrayType] float[10] +# 1477| ValueCategory = prvalue +# 1477| getQualifier(): [FunctionCall] call to returnValue +# 1477| Type = [Struct] UnusualFields +# 1477| ValueCategory = prvalue +# 1477| getArrayOffset(): [Literal] 5 +# 1477| Type = [IntType] int +# 1477| Value = [Literal] 5 +# 1477| ValueCategory = prvalue +# 1477| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1477| Type = [PointerType] float * +# 1477| ValueCategory = prvalue +# 1478| getStmt(4): [ReturnStmt] return ... +# 1480| [CopyAssignmentOperator] POD_Base& POD_Base::operator=(POD_Base const&) +# 1480| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const POD_Base & -# 1478| [MoveAssignmentOperator] POD_Base& POD_Base::operator=(POD_Base&&) -# 1478| : +# 1480| [MoveAssignmentOperator] POD_Base& POD_Base::operator=(POD_Base&&) +# 1480| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] POD_Base && -# 1481| [ConstMemberFunction] float POD_Base::f() const -# 1481| : -# 1484| [CopyAssignmentOperator] POD_Middle& POD_Middle::operator=(POD_Middle const&) -# 1484| : +# 1483| [ConstMemberFunction] float POD_Base::f() const +# 1483| : +# 1486| [CopyAssignmentOperator] POD_Middle& POD_Middle::operator=(POD_Middle const&) +# 1486| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const POD_Middle & -# 1484| [MoveAssignmentOperator] POD_Middle& POD_Middle::operator=(POD_Middle&&) -# 1484| : +# 1486| [MoveAssignmentOperator] POD_Middle& POD_Middle::operator=(POD_Middle&&) +# 1486| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] POD_Middle && -# 1484| [Constructor] void POD_Middle::POD_Middle() -# 1484| : -# 1488| [CopyAssignmentOperator] POD_Derived& POD_Derived::operator=(POD_Derived const&) -# 1488| : +# 1486| [Constructor] void POD_Middle::POD_Middle() +# 1486| : +# 1490| [CopyAssignmentOperator] POD_Derived& POD_Derived::operator=(POD_Derived const&) +# 1490| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const POD_Derived & -# 1488| [MoveAssignmentOperator] POD_Derived& POD_Derived::operator=(POD_Derived&&) -# 1488| : +# 1490| [MoveAssignmentOperator] POD_Derived& POD_Derived::operator=(POD_Derived&&) +# 1490| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] POD_Derived && -# 1488| [Constructor] void POD_Derived::POD_Derived() -# 1488| : -# 1492| [TopLevelFunction] void temporary_hierarchy() -# 1492| : -# 1492| getEntryPoint(): [BlockStmt] { ... } -# 1493| getStmt(0): [DeclStmt] declaration -# 1493| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b -# 1493| Type = [Struct] POD_Base -# 1493| getVariable().getInitializer(): [Initializer] initializer for b -# 1493| getExpr(): [FunctionCall] call to returnValue -# 1493| Type = [Struct] POD_Middle -# 1493| ValueCategory = prvalue +# 1490| [Constructor] void POD_Derived::POD_Derived() +# 1490| : +# 1494| [TopLevelFunction] void temporary_hierarchy() +# 1494| : +# 1494| getEntryPoint(): [BlockStmt] { ... } +# 1495| getStmt(0): [DeclStmt] declaration +# 1495| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b +# 1495| Type = [Struct] POD_Base +# 1495| getVariable().getInitializer(): [Initializer] initializer for b +# 1495| getExpr(): [FunctionCall] call to returnValue +# 1495| Type = [Struct] POD_Middle +# 1495| ValueCategory = prvalue #-----| getExpr().getFullyConverted(): [CStyleCast] (POD_Base)... #-----| Conversion = [BaseClassConversion] base class conversion #-----| Type = [Struct] POD_Base @@ -15049,40 +15049,40 @@ ir.cpp: #-----| getExpr(): [TemporaryObjectExpr] temporary object #-----| Type = [Struct] POD_Middle #-----| ValueCategory = xvalue -# 1494| getStmt(1): [ExprStmt] ExprStmt -# 1494| getExpr(): [AssignExpr] ... = ... -# 1494| Type = [Struct] POD_Base -# 1494| ValueCategory = lvalue -# 1494| getLValue(): [VariableAccess] b -# 1494| Type = [Struct] POD_Base -# 1494| ValueCategory = lvalue -# 1494| getRValue(): [FunctionCall] call to returnValue -# 1494| Type = [Struct] POD_Derived -# 1494| ValueCategory = prvalue -# 1494| getRValue().getFullyConverted(): [CStyleCast] (POD_Base)... -# 1494| Conversion = [BaseClassConversion] base class conversion -# 1494| Type = [Struct] POD_Base -# 1494| ValueCategory = prvalue(load) -# 1494| getExpr(): [CStyleCast] (POD_Middle)... -# 1494| Conversion = [BaseClassConversion] base class conversion -# 1494| Type = [Struct] POD_Middle -# 1494| ValueCategory = lvalue -# 1494| getExpr(): [TemporaryObjectExpr] temporary object -# 1494| Type = [Struct] POD_Derived -# 1494| ValueCategory = lvalue -# 1494| getExpr(): [ParenthesisExpr] (...) -# 1494| Type = [Struct] POD_Derived -# 1494| ValueCategory = prvalue -# 1495| getStmt(2): [DeclStmt] declaration -# 1495| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 1495| Type = [IntType] int -# 1495| getVariable().getInitializer(): [Initializer] initializer for x -# 1495| getExpr(): [ValueFieldAccess] x -# 1495| Type = [IntType] int -# 1495| ValueCategory = prvalue(load) -# 1495| getQualifier(): [FunctionCall] call to returnValue -# 1495| Type = [Struct] POD_Derived -# 1495| ValueCategory = prvalue +# 1496| getStmt(1): [ExprStmt] ExprStmt +# 1496| getExpr(): [AssignExpr] ... = ... +# 1496| Type = [Struct] POD_Base +# 1496| ValueCategory = lvalue +# 1496| getLValue(): [VariableAccess] b +# 1496| Type = [Struct] POD_Base +# 1496| ValueCategory = lvalue +# 1496| getRValue(): [FunctionCall] call to returnValue +# 1496| Type = [Struct] POD_Derived +# 1496| ValueCategory = prvalue +# 1496| getRValue().getFullyConverted(): [CStyleCast] (POD_Base)... +# 1496| Conversion = [BaseClassConversion] base class conversion +# 1496| Type = [Struct] POD_Base +# 1496| ValueCategory = prvalue(load) +# 1496| getExpr(): [CStyleCast] (POD_Middle)... +# 1496| Conversion = [BaseClassConversion] base class conversion +# 1496| Type = [Struct] POD_Middle +# 1496| ValueCategory = lvalue +# 1496| getExpr(): [TemporaryObjectExpr] temporary object +# 1496| Type = [Struct] POD_Derived +# 1496| ValueCategory = lvalue +# 1496| getExpr(): [ParenthesisExpr] (...) +# 1496| Type = [Struct] POD_Derived +# 1496| ValueCategory = prvalue +# 1497| getStmt(2): [DeclStmt] declaration +# 1497| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 1497| Type = [IntType] int +# 1497| getVariable().getInitializer(): [Initializer] initializer for x +# 1497| getExpr(): [ValueFieldAccess] x +# 1497| Type = [IntType] int +# 1497| ValueCategory = prvalue(load) +# 1497| getQualifier(): [FunctionCall] call to returnValue +# 1497| Type = [Struct] POD_Derived +# 1497| ValueCategory = prvalue #-----| getQualifier().getFullyConverted(): [CStyleCast] (POD_Base)... #-----| Conversion = [BaseClassConversion] base class conversion #-----| Type = [Struct] POD_Base @@ -15094,16 +15094,16 @@ ir.cpp: #-----| getExpr(): [TemporaryObjectExpr] temporary object #-----| Type = [Struct] POD_Derived #-----| ValueCategory = xvalue -# 1496| getStmt(3): [DeclStmt] declaration -# 1496| getDeclarationEntry(0): [VariableDeclarationEntry] definition of f -# 1496| Type = [FloatType] float -# 1496| getVariable().getInitializer(): [Initializer] initializer for f -# 1496| getExpr(): [FunctionCall] call to f -# 1496| Type = [FloatType] float -# 1496| ValueCategory = prvalue -# 1496| getQualifier(): [FunctionCall] call to returnValue -# 1496| Type = [Struct] POD_Derived -# 1496| ValueCategory = prvalue +# 1498| getStmt(3): [DeclStmt] declaration +# 1498| getDeclarationEntry(0): [VariableDeclarationEntry] definition of f +# 1498| Type = [FloatType] float +# 1498| getVariable().getInitializer(): [Initializer] initializer for f +# 1498| getExpr(): [FunctionCall] call to f +# 1498| Type = [FloatType] float +# 1498| ValueCategory = prvalue +# 1498| getQualifier(): [FunctionCall] call to returnValue +# 1498| Type = [Struct] POD_Derived +# 1498| ValueCategory = prvalue #-----| getQualifier().getFullyConverted(): [CStyleCast] (const POD_Base)... #-----| Conversion = [GlvalueConversion] glvalue conversion #-----| Type = [SpecifiedType] const POD_Base @@ -15119,99 +15119,99 @@ ir.cpp: #-----| getExpr(): [TemporaryObjectExpr] temporary object #-----| Type = [Struct] POD_Derived #-----| ValueCategory = xvalue -# 1496| getExpr(): [ParenthesisExpr] (...) -# 1496| Type = [Struct] POD_Derived -# 1496| ValueCategory = prvalue -# 1497| getStmt(4): [ReturnStmt] return ... -# 1499| [CopyAssignmentOperator] Inheritance_Test_B& Inheritance_Test_B::operator=(Inheritance_Test_B const&) -# 1499| : +# 1498| getExpr(): [ParenthesisExpr] (...) +# 1498| Type = [Struct] POD_Derived +# 1498| ValueCategory = prvalue +# 1499| getStmt(4): [ReturnStmt] return ... +# 1501| [CopyAssignmentOperator] Inheritance_Test_B& Inheritance_Test_B::operator=(Inheritance_Test_B const&) +# 1501| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const Inheritance_Test_B & -# 1499| [Constructor] void Inheritance_Test_B::Inheritance_Test_B() -# 1499| : -# 1500| [Destructor] void Inheritance_Test_B::~Inheritance_Test_B() -# 1500| : -# 1500| getEntryPoint(): [BlockStmt] { ... } -# 1500| getStmt(0): [ReturnStmt] return ... -# 1500| : -# 1503| [CopyAssignmentOperator] Inheritance_Test_A& Inheritance_Test_A::operator=(Inheritance_Test_A const&) -# 1503| : +# 1501| [Constructor] void Inheritance_Test_B::Inheritance_Test_B() +# 1501| : +# 1502| [Destructor] void Inheritance_Test_B::~Inheritance_Test_B() +# 1502| : +# 1502| getEntryPoint(): [BlockStmt] { ... } +# 1502| getStmt(0): [ReturnStmt] return ... +# 1502| : +# 1505| [CopyAssignmentOperator] Inheritance_Test_A& Inheritance_Test_A::operator=(Inheritance_Test_A const&) +# 1505| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const Inheritance_Test_A & -# 1503| [MoveAssignmentOperator] Inheritance_Test_A& Inheritance_Test_A::operator=(Inheritance_Test_A&&) -# 1503| : +# 1505| [MoveAssignmentOperator] Inheritance_Test_A& Inheritance_Test_A::operator=(Inheritance_Test_A&&) +# 1505| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] Inheritance_Test_A && -# 1503| [CopyConstructor] void Inheritance_Test_A::Inheritance_Test_A(Inheritance_Test_A const&) -# 1503| : +# 1505| [CopyConstructor] void Inheritance_Test_A::Inheritance_Test_A(Inheritance_Test_A const&) +# 1505| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const Inheritance_Test_A & -# 1503| [MoveConstructor] void Inheritance_Test_A::Inheritance_Test_A(Inheritance_Test_A&&) -# 1503| : +# 1505| [MoveConstructor] void Inheritance_Test_A::Inheritance_Test_A(Inheritance_Test_A&&) +# 1505| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] Inheritance_Test_A && -# 1503| [Destructor] void Inheritance_Test_A::~Inheritance_Test_A() -# 1503| : -# 1506| [Constructor] void Inheritance_Test_A::Inheritance_Test_A() -# 1506| : -# 1506| : -# 1506| getInitializer(0): [ConstructorInit] constructor init -# 1506| Type = [Struct] Inheritance_Test_B -# 1506| ValueCategory = prvalue -# 1506| getInitializer(1): [ConstructorFieldInit] constructor init of field x -# 1506| Type = [IntType] int -# 1506| ValueCategory = prvalue -# 1506| getExpr(): [Literal] 42 -# 1506| Type = [IntType] int -# 1506| Value = [Literal] 42 -# 1506| ValueCategory = prvalue -# 1506| getEntryPoint(): [BlockStmt] { ... } -# 1507| getStmt(0): [ExprStmt] ExprStmt -# 1507| getExpr(): [AssignExpr] ... = ... -# 1507| Type = [IntType] int -# 1507| ValueCategory = lvalue -# 1507| getLValue(): [ImplicitThisFieldAccess,PointerFieldAccess] y -# 1507| Type = [IntType] int -# 1507| ValueCategory = lvalue -# 1507| getQualifier(): [ThisExpr] this -# 1507| Type = [PointerType] Inheritance_Test_A * -# 1507| ValueCategory = prvalue(load) -# 1507| getRValue(): [Literal] 3 -# 1507| Type = [IntType] int -# 1507| Value = [Literal] 3 -# 1507| ValueCategory = prvalue -# 1508| getStmt(1): [ReturnStmt] return ... -# 1511| [TopLevelFunction] void array_structured_binding() -# 1511| : -# 1511| getEntryPoint(): [BlockStmt] { ... } -# 1512| getStmt(0): [DeclStmt] declaration -# 1512| getDeclarationEntry(0): [VariableDeclarationEntry] definition of xs -# 1512| Type = [ArrayType] int[2] -# 1512| getVariable().getInitializer(): [Initializer] initializer for xs -# 1512| getExpr(): [ArrayAggregateLiteral] {...} -# 1512| Type = [ArrayType] int[2] -# 1512| ValueCategory = prvalue -# 1512| getAnElementExpr(0): [Literal] 1 -# 1512| Type = [IntType] int -# 1512| Value = [Literal] 1 -# 1512| ValueCategory = prvalue -# 1512| getAnElementExpr(1): [Literal] 2 -# 1512| Type = [IntType] int -# 1512| Value = [Literal] 2 -# 1512| ValueCategory = prvalue -# 1514| getStmt(1): [BlockStmt] { ... } -# 1515| getStmt(0): [DeclStmt] declaration -# 1515| getDeclarationEntry(0): [VariableDeclarationEntry] definition of (unnamed local variable) -# 1515| Type = [LValueReferenceType] int(&)[2] -# 1515| getVariable().getInitializer(): [Initializer] initializer for (unnamed local variable) -# 1515| getExpr(): [VariableAccess] xs -# 1515| Type = [ArrayType] int[2] -# 1515| ValueCategory = lvalue -# 1515| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1515| Type = [LValueReferenceType] int(&)[2] -# 1515| ValueCategory = prvalue -# 1515| getDeclarationEntry(1): [VariableDeclarationEntry] definition of x0 -# 1515| Type = [IntType] int +# 1505| [Destructor] void Inheritance_Test_A::~Inheritance_Test_A() +# 1505| : +# 1508| [Constructor] void Inheritance_Test_A::Inheritance_Test_A() +# 1508| : +# 1508| : +# 1508| getInitializer(0): [ConstructorInit] constructor init +# 1508| Type = [Struct] Inheritance_Test_B +# 1508| ValueCategory = prvalue +# 1508| getInitializer(1): [ConstructorFieldInit] constructor init of field x +# 1508| Type = [IntType] int +# 1508| ValueCategory = prvalue +# 1508| getExpr(): [Literal] 42 +# 1508| Type = [IntType] int +# 1508| Value = [Literal] 42 +# 1508| ValueCategory = prvalue +# 1508| getEntryPoint(): [BlockStmt] { ... } +# 1509| getStmt(0): [ExprStmt] ExprStmt +# 1509| getExpr(): [AssignExpr] ... = ... +# 1509| Type = [IntType] int +# 1509| ValueCategory = lvalue +# 1509| getLValue(): [ImplicitThisFieldAccess,PointerFieldAccess] y +# 1509| Type = [IntType] int +# 1509| ValueCategory = lvalue +# 1509| getQualifier(): [ThisExpr] this +# 1509| Type = [PointerType] Inheritance_Test_A * +# 1509| ValueCategory = prvalue(load) +# 1509| getRValue(): [Literal] 3 +# 1509| Type = [IntType] int +# 1509| Value = [Literal] 3 +# 1509| ValueCategory = prvalue +# 1510| getStmt(1): [ReturnStmt] return ... +# 1513| [TopLevelFunction] void array_structured_binding() +# 1513| : +# 1513| getEntryPoint(): [BlockStmt] { ... } +# 1514| getStmt(0): [DeclStmt] declaration +# 1514| getDeclarationEntry(0): [VariableDeclarationEntry] definition of xs +# 1514| Type = [ArrayType] int[2] +# 1514| getVariable().getInitializer(): [Initializer] initializer for xs +# 1514| getExpr(): [ArrayAggregateLiteral] {...} +# 1514| Type = [ArrayType] int[2] +# 1514| ValueCategory = prvalue +# 1514| getAnElementExpr(0): [Literal] 1 +# 1514| Type = [IntType] int +# 1514| Value = [Literal] 1 +# 1514| ValueCategory = prvalue +# 1514| getAnElementExpr(1): [Literal] 2 +# 1514| Type = [IntType] int +# 1514| Value = [Literal] 2 +# 1514| ValueCategory = prvalue +# 1516| getStmt(1): [BlockStmt] { ... } +# 1517| getStmt(0): [DeclStmt] declaration +# 1517| getDeclarationEntry(0): [VariableDeclarationEntry] definition of (unnamed local variable) +# 1517| Type = [LValueReferenceType] int(&)[2] +# 1517| getVariable().getInitializer(): [Initializer] initializer for (unnamed local variable) +# 1517| getExpr(): [VariableAccess] xs +# 1517| Type = [ArrayType] int[2] +# 1517| ValueCategory = lvalue +# 1517| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1517| Type = [LValueReferenceType] int(&)[2] +# 1517| ValueCategory = prvalue +# 1517| getDeclarationEntry(1): [VariableDeclarationEntry] definition of x0 +# 1517| Type = [IntType] int #-----| getVariable().getInitializer(): [Initializer] initializer for x0 #-----| getExpr(): [ArrayExpr] access to array #-----| Type = [IntType] int @@ -15229,8 +15229,8 @@ ir.cpp: #-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [ArrayType] int[2] #-----| ValueCategory = lvalue -# 1515| getDeclarationEntry(2): [VariableDeclarationEntry] definition of x1 -# 1515| Type = [IntType] int +# 1517| getDeclarationEntry(2): [VariableDeclarationEntry] definition of x1 +# 1517| Type = [IntType] int #-----| getVariable().getInitializer(): [Initializer] initializer for x1 #-----| getExpr(): [ArrayExpr] access to array #-----| Type = [IntType] int @@ -15248,1345 +15248,1307 @@ ir.cpp: #-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [ArrayType] int[2] #-----| ValueCategory = lvalue -# 1516| getStmt(1): [ExprStmt] ExprStmt -# 1516| getExpr(): [AssignExpr] ... = ... -# 1516| Type = [IntType] int -# 1516| ValueCategory = lvalue -# 1516| getLValue(): [VariableAccess] x1 -# 1516| Type = [IntType] int -# 1516| ValueCategory = lvalue -# 1516| getRValue(): [Literal] 3 -# 1516| Type = [IntType] int -# 1516| Value = [Literal] 3 -# 1516| ValueCategory = prvalue -# 1517| getStmt(2): [DeclStmt] declaration -# 1517| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rx1 -# 1517| Type = [LValueReferenceType] int & -# 1517| getVariable().getInitializer(): [Initializer] initializer for rx1 -# 1517| getExpr(): [VariableAccess] x1 -# 1517| Type = [IntType] int -# 1517| ValueCategory = lvalue -# 1517| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1517| Type = [LValueReferenceType] int & -# 1517| ValueCategory = prvalue -# 1518| getStmt(3): [DeclStmt] declaration -# 1518| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 1518| getStmt(1): [ExprStmt] ExprStmt +# 1518| getExpr(): [AssignExpr] ... = ... # 1518| Type = [IntType] int -# 1518| getVariable().getInitializer(): [Initializer] initializer for x -# 1518| getExpr(): [VariableAccess] x1 -# 1518| Type = [IntType] int -# 1518| ValueCategory = prvalue(load) -# 1521| getStmt(2): [BlockStmt] { ... } -# 1522| getStmt(0): [DeclStmt] declaration -# 1522| getDeclarationEntry(0): [VariableDeclarationEntry] definition of unnamed_local_variable -# 1522| Type = [LValueReferenceType] int(&)[2] -# 1522| getVariable().getInitializer(): [Initializer] initializer for unnamed_local_variable -# 1522| getExpr(): [VariableAccess] xs -# 1522| Type = [ArrayType] int[2] -# 1522| ValueCategory = lvalue -# 1522| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1522| Type = [LValueReferenceType] int(&)[2] -# 1522| ValueCategory = prvalue -# 1523| getStmt(1): [DeclStmt] declaration -# 1523| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x0 -# 1523| Type = [LValueReferenceType] int & -# 1523| getVariable().getInitializer(): [Initializer] initializer for x0 -# 1523| getExpr(): [ArrayExpr] access to array -# 1523| Type = [IntType] int -# 1523| ValueCategory = lvalue -# 1523| getArrayBase(): [VariableAccess] unnamed_local_variable -# 1523| Type = [LValueReferenceType] int(&)[2] -# 1523| ValueCategory = prvalue(load) -# 1523| getArrayOffset(): [Literal] 0 -# 1523| Type = [IntType] int -# 1523| Value = [Literal] 0 -# 1523| ValueCategory = prvalue -# 1523| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1523| Type = [IntPointerType] int * -# 1523| ValueCategory = prvalue -# 1523| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1523| Type = [ArrayType] int[2] -# 1523| ValueCategory = lvalue -# 1523| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1523| Type = [LValueReferenceType] int & -# 1523| ValueCategory = prvalue -# 1524| getStmt(2): [DeclStmt] declaration -# 1524| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1 -# 1524| Type = [LValueReferenceType] int & -# 1524| getVariable().getInitializer(): [Initializer] initializer for x1 -# 1524| getExpr(): [ArrayExpr] access to array -# 1524| Type = [IntType] int +# 1518| ValueCategory = lvalue +# 1518| getLValue(): [VariableAccess] x1 +# 1518| Type = [IntType] int +# 1518| ValueCategory = lvalue +# 1518| getRValue(): [Literal] 3 +# 1518| Type = [IntType] int +# 1518| Value = [Literal] 3 +# 1518| ValueCategory = prvalue +# 1519| getStmt(2): [DeclStmt] declaration +# 1519| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rx1 +# 1519| Type = [LValueReferenceType] int & +# 1519| getVariable().getInitializer(): [Initializer] initializer for rx1 +# 1519| getExpr(): [VariableAccess] x1 +# 1519| Type = [IntType] int +# 1519| ValueCategory = lvalue +# 1519| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1519| Type = [LValueReferenceType] int & +# 1519| ValueCategory = prvalue +# 1520| getStmt(3): [DeclStmt] declaration +# 1520| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 1520| Type = [IntType] int +# 1520| getVariable().getInitializer(): [Initializer] initializer for x +# 1520| getExpr(): [VariableAccess] x1 +# 1520| Type = [IntType] int +# 1520| ValueCategory = prvalue(load) +# 1523| getStmt(2): [BlockStmt] { ... } +# 1524| getStmt(0): [DeclStmt] declaration +# 1524| getDeclarationEntry(0): [VariableDeclarationEntry] definition of unnamed_local_variable +# 1524| Type = [LValueReferenceType] int(&)[2] +# 1524| getVariable().getInitializer(): [Initializer] initializer for unnamed_local_variable +# 1524| getExpr(): [VariableAccess] xs +# 1524| Type = [ArrayType] int[2] # 1524| ValueCategory = lvalue -# 1524| getArrayBase(): [VariableAccess] unnamed_local_variable -# 1524| Type = [LValueReferenceType] int(&)[2] -# 1524| ValueCategory = prvalue(load) -# 1524| getArrayOffset(): [Literal] 1 -# 1524| Type = [IntType] int -# 1524| Value = [Literal] 1 -# 1524| ValueCategory = prvalue -# 1524| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1524| Type = [IntPointerType] int * -# 1524| ValueCategory = prvalue -# 1524| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1524| Type = [ArrayType] int[2] -# 1524| ValueCategory = lvalue # 1524| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1524| Type = [LValueReferenceType] int & +# 1524| Type = [LValueReferenceType] int(&)[2] # 1524| ValueCategory = prvalue -# 1525| getStmt(3): [ExprStmt] ExprStmt -# 1525| getExpr(): [AssignExpr] ... = ... -# 1525| Type = [IntType] int -# 1525| ValueCategory = lvalue -# 1525| getLValue(): [VariableAccess] x1 -# 1525| Type = [LValueReferenceType] int & -# 1525| ValueCategory = prvalue(load) -# 1525| getRValue(): [Literal] 3 -# 1525| Type = [IntType] int -# 1525| Value = [Literal] 3 -# 1525| ValueCategory = prvalue -# 1525| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1525| Type = [IntType] int -# 1525| ValueCategory = lvalue -# 1526| getStmt(4): [DeclStmt] declaration -# 1526| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rx1 +# 1525| getStmt(1): [DeclStmt] declaration +# 1525| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x0 +# 1525| Type = [LValueReferenceType] int & +# 1525| getVariable().getInitializer(): [Initializer] initializer for x0 +# 1525| getExpr(): [ArrayExpr] access to array +# 1525| Type = [IntType] int +# 1525| ValueCategory = lvalue +# 1525| getArrayBase(): [VariableAccess] unnamed_local_variable +# 1525| Type = [LValueReferenceType] int(&)[2] +# 1525| ValueCategory = prvalue(load) +# 1525| getArrayOffset(): [Literal] 0 +# 1525| Type = [IntType] int +# 1525| Value = [Literal] 0 +# 1525| ValueCategory = prvalue +# 1525| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1525| Type = [IntPointerType] int * +# 1525| ValueCategory = prvalue +# 1525| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1525| Type = [ArrayType] int[2] +# 1525| ValueCategory = lvalue +# 1525| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1525| Type = [LValueReferenceType] int & +# 1525| ValueCategory = prvalue +# 1526| getStmt(2): [DeclStmt] declaration +# 1526| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1 # 1526| Type = [LValueReferenceType] int & -# 1526| getVariable().getInitializer(): [Initializer] initializer for rx1 -# 1526| getExpr(): [VariableAccess] x1 -# 1526| Type = [LValueReferenceType] int & -# 1526| ValueCategory = prvalue(load) +# 1526| getVariable().getInitializer(): [Initializer] initializer for x1 +# 1526| getExpr(): [ArrayExpr] access to array +# 1526| Type = [IntType] int +# 1526| ValueCategory = lvalue +# 1526| getArrayBase(): [VariableAccess] unnamed_local_variable +# 1526| Type = [LValueReferenceType] int(&)[2] +# 1526| ValueCategory = prvalue(load) +# 1526| getArrayOffset(): [Literal] 1 +# 1526| Type = [IntType] int +# 1526| Value = [Literal] 1 +# 1526| ValueCategory = prvalue +# 1526| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1526| Type = [IntPointerType] int * +# 1526| ValueCategory = prvalue +# 1526| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1526| Type = [ArrayType] int[2] +# 1526| ValueCategory = lvalue # 1526| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) # 1526| Type = [LValueReferenceType] int & # 1526| ValueCategory = prvalue -# 1526| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1526| Type = [IntType] int -# 1526| ValueCategory = lvalue -# 1527| getStmt(5): [DeclStmt] declaration -# 1527| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 1527| getStmt(3): [ExprStmt] ExprStmt +# 1527| getExpr(): [AssignExpr] ... = ... # 1527| Type = [IntType] int -# 1527| getVariable().getInitializer(): [Initializer] initializer for x -# 1527| getExpr(): [VariableAccess] x1 -# 1527| Type = [LValueReferenceType] int & -# 1527| ValueCategory = prvalue(load) -# 1527| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1527| Type = [IntType] int -# 1527| ValueCategory = prvalue(load) -# 1529| getStmt(3): [ReturnStmt] return ... -# 1531| [CopyAssignmentOperator] StructuredBindingDataMemberMemberStruct& StructuredBindingDataMemberMemberStruct::operator=(StructuredBindingDataMemberMemberStruct const&) -# 1531| : +# 1527| ValueCategory = lvalue +# 1527| getLValue(): [VariableAccess] x1 +# 1527| Type = [LValueReferenceType] int & +# 1527| ValueCategory = prvalue(load) +# 1527| getRValue(): [Literal] 3 +# 1527| Type = [IntType] int +# 1527| Value = [Literal] 3 +# 1527| ValueCategory = prvalue +# 1527| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1527| Type = [IntType] int +# 1527| ValueCategory = lvalue +# 1528| getStmt(4): [DeclStmt] declaration +# 1528| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rx1 +# 1528| Type = [LValueReferenceType] int & +# 1528| getVariable().getInitializer(): [Initializer] initializer for rx1 +# 1528| getExpr(): [VariableAccess] x1 +# 1528| Type = [LValueReferenceType] int & +# 1528| ValueCategory = prvalue(load) +# 1528| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1528| Type = [LValueReferenceType] int & +# 1528| ValueCategory = prvalue +# 1528| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1528| Type = [IntType] int +# 1528| ValueCategory = lvalue +# 1529| getStmt(5): [DeclStmt] declaration +# 1529| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 1529| Type = [IntType] int +# 1529| getVariable().getInitializer(): [Initializer] initializer for x +# 1529| getExpr(): [VariableAccess] x1 +# 1529| Type = [LValueReferenceType] int & +# 1529| ValueCategory = prvalue(load) +# 1529| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1529| Type = [IntType] int +# 1529| ValueCategory = prvalue(load) +# 1531| getStmt(3): [ReturnStmt] return ... +# 1533| [CopyAssignmentOperator] StructuredBindingDataMemberMemberStruct& StructuredBindingDataMemberMemberStruct::operator=(StructuredBindingDataMemberMemberStruct const&) +# 1533| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const StructuredBindingDataMemberMemberStruct & -# 1531| [MoveAssignmentOperator] StructuredBindingDataMemberMemberStruct& StructuredBindingDataMemberMemberStruct::operator=(StructuredBindingDataMemberMemberStruct&&) -# 1531| : +# 1533| [MoveAssignmentOperator] StructuredBindingDataMemberMemberStruct& StructuredBindingDataMemberMemberStruct::operator=(StructuredBindingDataMemberMemberStruct&&) +# 1533| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] StructuredBindingDataMemberMemberStruct && -# 1531| [Constructor] void StructuredBindingDataMemberMemberStruct::StructuredBindingDataMemberMemberStruct() -# 1531| : -# 1531| : -# 1531| getInitializer(0): [ConstructorFieldInit] constructor init of field x -# 1531| Type = [IntType] int -# 1531| ValueCategory = prvalue -# 1531| getEntryPoint(): [BlockStmt] { ... } -# 1531| getStmt(0): [ReturnStmt] return ... -# 1531| [CopyConstructor] void StructuredBindingDataMemberMemberStruct::StructuredBindingDataMemberMemberStruct(StructuredBindingDataMemberMemberStruct const&) -# 1531| : +# 1533| [Constructor] void StructuredBindingDataMemberMemberStruct::StructuredBindingDataMemberMemberStruct() +# 1533| : +# 1533| : +# 1533| getInitializer(0): [ConstructorFieldInit] constructor init of field x +# 1533| Type = [IntType] int +# 1533| ValueCategory = prvalue +# 1533| getEntryPoint(): [BlockStmt] { ... } +# 1533| getStmt(0): [ReturnStmt] return ... +# 1533| [CopyConstructor] void StructuredBindingDataMemberMemberStruct::StructuredBindingDataMemberMemberStruct(StructuredBindingDataMemberMemberStruct const&) +# 1533| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const StructuredBindingDataMemberMemberStruct & -# 1531| [MoveConstructor] void StructuredBindingDataMemberMemberStruct::StructuredBindingDataMemberMemberStruct(StructuredBindingDataMemberMemberStruct&&) -# 1531| : +# 1533| [MoveConstructor] void StructuredBindingDataMemberMemberStruct::StructuredBindingDataMemberMemberStruct(StructuredBindingDataMemberMemberStruct&&) +# 1533| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] StructuredBindingDataMemberMemberStruct && -# 1535| [CopyAssignmentOperator] StructuredBindingDataMemberStruct& StructuredBindingDataMemberStruct::operator=(StructuredBindingDataMemberStruct const&) -# 1535| : +# 1537| [CopyAssignmentOperator] StructuredBindingDataMemberStruct& StructuredBindingDataMemberStruct::operator=(StructuredBindingDataMemberStruct const&) +# 1537| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & -# 1535| [Constructor] void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() -# 1535| : -# 1535| : -# 1535| getInitializer(0): [ConstructorFieldInit] constructor init of field i -# 1535| Type = [IntType] int -# 1535| ValueCategory = prvalue -# 1535| getInitializer(1): [ConstructorFieldInit] constructor init of field d -# 1535| Type = [DoubleType] double -# 1535| ValueCategory = prvalue -# 1535| getInitializer(2): [ConstructorFieldInit] constructor init of field r -# 1535| Type = [LValueReferenceType] int & -# 1535| ValueCategory = prvalue -# 1535| getInitializer(3): [ConstructorFieldInit] constructor init of field p -# 1535| Type = [IntPointerType] int * -# 1535| ValueCategory = prvalue -# 1535| getInitializer(4): [ConstructorFieldInit] constructor init of field xs -# 1535| Type = [CTypedefType,NestedTypedefType] ArrayType -# 1535| ValueCategory = prvalue -# 1535| getInitializer(5): [ConstructorFieldInit] constructor init of field r_alt -# 1535| Type = [CTypedefType,NestedTypedefType] RefType -# 1535| ValueCategory = prvalue -# 1535| getInitializer(6): [ConstructorFieldInit] constructor init of field m -# 1535| Type = [Struct] StructuredBindingDataMemberMemberStruct -# 1535| ValueCategory = prvalue -# 1535| getExpr(): [ConstructorCall] call to StructuredBindingDataMemberMemberStruct -# 1535| Type = [VoidType] void -# 1535| ValueCategory = prvalue -# 1535| getEntryPoint(): [BlockStmt] { ... } -# 1535| getStmt(0): [ReturnStmt] return ... -# 1535| [CopyConstructor] void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct(StructuredBindingDataMemberStruct const&) -# 1535| : +# 1537| [Constructor] void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() +# 1537| : +# 1537| : +# 1537| getInitializer(0): [ConstructorFieldInit] constructor init of field i +# 1537| Type = [IntType] int +# 1537| ValueCategory = prvalue +# 1537| getInitializer(1): [ConstructorFieldInit] constructor init of field d +# 1537| Type = [DoubleType] double +# 1537| ValueCategory = prvalue +# 1537| getInitializer(2): [ConstructorFieldInit] constructor init of field r +# 1537| Type = [LValueReferenceType] int & +# 1537| ValueCategory = prvalue +# 1537| getInitializer(3): [ConstructorFieldInit] constructor init of field p +# 1537| Type = [IntPointerType] int * +# 1537| ValueCategory = prvalue +# 1537| getInitializer(4): [ConstructorFieldInit] constructor init of field xs +# 1537| Type = [CTypedefType,NestedTypedefType] ArrayType +# 1537| ValueCategory = prvalue +# 1537| getInitializer(5): [ConstructorFieldInit] constructor init of field r_alt +# 1537| Type = [CTypedefType,NestedTypedefType] RefType +# 1537| ValueCategory = prvalue +# 1537| getInitializer(6): [ConstructorFieldInit] constructor init of field m +# 1537| Type = [Struct] StructuredBindingDataMemberMemberStruct +# 1537| ValueCategory = prvalue +# 1537| getExpr(): [ConstructorCall] call to StructuredBindingDataMemberMemberStruct +# 1537| Type = [VoidType] void +# 1537| ValueCategory = prvalue +# 1537| getEntryPoint(): [BlockStmt] { ... } +# 1537| getStmt(0): [ReturnStmt] return ... +# 1537| [CopyConstructor] void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct(StructuredBindingDataMemberStruct const&) +# 1537| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & -# 1535| : -# 1535| getInitializer(0): [ConstructorFieldInit] constructor init of field i -# 1535| Type = [IntType] int -# 1535| ValueCategory = prvalue -# 1535| getExpr(): [ReferenceFieldAccess] i -# 1535| Type = [IntType] int -# 1535| ValueCategory = prvalue(load) -# 1535| getQualifier(): [VariableAccess] (unnamed parameter 0) -# 1535| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & -# 1535| ValueCategory = prvalue(load) -# 1535| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1535| Type = [SpecifiedType] const StructuredBindingDataMemberStruct -# 1535| ValueCategory = lvalue -# 1535| getInitializer(1): [ConstructorFieldInit] constructor init of field d -# 1535| Type = [DoubleType] double -# 1535| ValueCategory = prvalue -# 1535| getExpr(): [ReferenceFieldAccess] d -# 1535| Type = [DoubleType] double -# 1535| ValueCategory = prvalue(load) -# 1535| getQualifier(): [VariableAccess] (unnamed parameter 0) -# 1535| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & -# 1535| ValueCategory = prvalue(load) -# 1535| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1535| Type = [SpecifiedType] const StructuredBindingDataMemberStruct -# 1535| ValueCategory = lvalue -# 1535| getInitializer(2): [ConstructorFieldInit] constructor init of field b -# 1535| Type = [IntType] unsigned int -# 1535| ValueCategory = prvalue -# 1535| getExpr(): [ReferenceFieldAccess] b -# 1535| Type = [IntType] unsigned int -# 1535| ValueCategory = prvalue(load) -# 1535| getQualifier(): [VariableAccess] (unnamed parameter 0) -# 1535| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & -# 1535| ValueCategory = prvalue(load) -# 1535| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1535| Type = [SpecifiedType] const StructuredBindingDataMemberStruct -# 1535| ValueCategory = lvalue -# 1535| getInitializer(3): [ConstructorFieldInit] constructor init of field r -# 1535| Type = [LValueReferenceType] int & -# 1535| ValueCategory = prvalue -# 1535| getExpr(): [ReferenceFieldAccess] r -# 1535| Type = [LValueReferenceType] int & -# 1535| ValueCategory = prvalue(load) -# 1535| getQualifier(): [VariableAccess] (unnamed parameter 0) -# 1535| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & -# 1535| ValueCategory = prvalue(load) -# 1535| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1535| Type = [SpecifiedType] const StructuredBindingDataMemberStruct -# 1535| ValueCategory = lvalue -# 1535| getInitializer(4): [ConstructorFieldInit] constructor init of field p -# 1535| Type = [IntPointerType] int * -# 1535| ValueCategory = prvalue -# 1535| getExpr(): [ReferenceFieldAccess] p -# 1535| Type = [IntPointerType] int * -# 1535| ValueCategory = prvalue(load) -# 1535| getQualifier(): [VariableAccess] (unnamed parameter 0) -# 1535| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & -# 1535| ValueCategory = prvalue(load) -# 1535| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1535| Type = [SpecifiedType] const StructuredBindingDataMemberStruct -# 1535| ValueCategory = lvalue -# 1535| getInitializer(5): [ConstructorFieldInit] constructor init of field xs -# 1535| Type = [CTypedefType,NestedTypedefType] ArrayType -# 1535| ValueCategory = prvalue -# 1535| getExpr(): [ReferenceFieldAccess] xs -# 1535| Type = [CTypedefType,NestedTypedefType] ArrayType -# 1535| ValueCategory = prvalue(load) -# 1535| getQualifier(): [VariableAccess] (unnamed parameter 0) -# 1535| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & -# 1535| ValueCategory = prvalue(load) -# 1535| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1535| Type = [SpecifiedType] const StructuredBindingDataMemberStruct -# 1535| ValueCategory = lvalue -# 1535| getInitializer(6): [ConstructorFieldInit] constructor init of field r_alt -# 1535| Type = [CTypedefType,NestedTypedefType] RefType -# 1535| ValueCategory = prvalue -# 1535| getExpr(): [ReferenceFieldAccess] r_alt -# 1535| Type = [CTypedefType,NestedTypedefType] RefType -# 1535| ValueCategory = prvalue(load) -# 1535| getQualifier(): [VariableAccess] (unnamed parameter 0) -# 1535| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & -# 1535| ValueCategory = prvalue(load) -# 1535| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1535| Type = [SpecifiedType] const StructuredBindingDataMemberStruct -# 1535| ValueCategory = lvalue -# 1535| getInitializer(7): [ConstructorFieldInit] constructor init of field m -# 1535| Type = [Struct] StructuredBindingDataMemberMemberStruct -# 1535| ValueCategory = prvalue -# 1535| getExpr(): [ReferenceFieldAccess] m -# 1535| Type = [Struct] StructuredBindingDataMemberMemberStruct -# 1535| ValueCategory = prvalue(load) -# 1535| getQualifier(): [VariableAccess] (unnamed parameter 0) -# 1535| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & -# 1535| ValueCategory = prvalue(load) -# 1535| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1535| Type = [SpecifiedType] const StructuredBindingDataMemberStruct -# 1535| ValueCategory = lvalue -# 1535| getEntryPoint(): [BlockStmt] { ... } -# 1535| getStmt(0): [ReturnStmt] return ... -# 1535| [MoveConstructor] void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct(StructuredBindingDataMemberStruct&&) -# 1535| : +# 1537| : +# 1537| getInitializer(0): [ConstructorFieldInit] constructor init of field i +# 1537| Type = [IntType] int +# 1537| ValueCategory = prvalue +# 1537| getExpr(): [ReferenceFieldAccess] i +# 1537| Type = [IntType] int +# 1537| ValueCategory = prvalue(load) +# 1537| getQualifier(): [VariableAccess] (unnamed parameter 0) +# 1537| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & +# 1537| ValueCategory = prvalue(load) +# 1537| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1537| Type = [SpecifiedType] const StructuredBindingDataMemberStruct +# 1537| ValueCategory = lvalue +# 1537| getInitializer(1): [ConstructorFieldInit] constructor init of field d +# 1537| Type = [DoubleType] double +# 1537| ValueCategory = prvalue +# 1537| getExpr(): [ReferenceFieldAccess] d +# 1537| Type = [DoubleType] double +# 1537| ValueCategory = prvalue(load) +# 1537| getQualifier(): [VariableAccess] (unnamed parameter 0) +# 1537| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & +# 1537| ValueCategory = prvalue(load) +# 1537| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1537| Type = [SpecifiedType] const StructuredBindingDataMemberStruct +# 1537| ValueCategory = lvalue +# 1537| getInitializer(2): [ConstructorFieldInit] constructor init of field b +# 1537| Type = [IntType] unsigned int +# 1537| ValueCategory = prvalue +# 1537| getExpr(): [ReferenceFieldAccess] b +# 1537| Type = [IntType] unsigned int +# 1537| ValueCategory = prvalue(load) +# 1537| getQualifier(): [VariableAccess] (unnamed parameter 0) +# 1537| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & +# 1537| ValueCategory = prvalue(load) +# 1537| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1537| Type = [SpecifiedType] const StructuredBindingDataMemberStruct +# 1537| ValueCategory = lvalue +# 1537| getInitializer(3): [ConstructorFieldInit] constructor init of field r +# 1537| Type = [LValueReferenceType] int & +# 1537| ValueCategory = prvalue +# 1537| getExpr(): [ReferenceFieldAccess] r +# 1537| Type = [LValueReferenceType] int & +# 1537| ValueCategory = prvalue(load) +# 1537| getQualifier(): [VariableAccess] (unnamed parameter 0) +# 1537| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & +# 1537| ValueCategory = prvalue(load) +# 1537| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1537| Type = [SpecifiedType] const StructuredBindingDataMemberStruct +# 1537| ValueCategory = lvalue +# 1537| getInitializer(4): [ConstructorFieldInit] constructor init of field p +# 1537| Type = [IntPointerType] int * +# 1537| ValueCategory = prvalue +# 1537| getExpr(): [ReferenceFieldAccess] p +# 1537| Type = [IntPointerType] int * +# 1537| ValueCategory = prvalue(load) +# 1537| getQualifier(): [VariableAccess] (unnamed parameter 0) +# 1537| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & +# 1537| ValueCategory = prvalue(load) +# 1537| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1537| Type = [SpecifiedType] const StructuredBindingDataMemberStruct +# 1537| ValueCategory = lvalue +# 1537| getInitializer(5): [ConstructorFieldInit] constructor init of field xs +# 1537| Type = [CTypedefType,NestedTypedefType] ArrayType +# 1537| ValueCategory = prvalue +# 1537| getExpr(): [ReferenceFieldAccess] xs +# 1537| Type = [CTypedefType,NestedTypedefType] ArrayType +# 1537| ValueCategory = prvalue(load) +# 1537| getQualifier(): [VariableAccess] (unnamed parameter 0) +# 1537| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & +# 1537| ValueCategory = prvalue(load) +# 1537| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1537| Type = [SpecifiedType] const StructuredBindingDataMemberStruct +# 1537| ValueCategory = lvalue +# 1537| getInitializer(6): [ConstructorFieldInit] constructor init of field r_alt +# 1537| Type = [CTypedefType,NestedTypedefType] RefType +# 1537| ValueCategory = prvalue +# 1537| getExpr(): [ReferenceFieldAccess] r_alt +# 1537| Type = [CTypedefType,NestedTypedefType] RefType +# 1537| ValueCategory = prvalue(load) +# 1537| getQualifier(): [VariableAccess] (unnamed parameter 0) +# 1537| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & +# 1537| ValueCategory = prvalue(load) +# 1537| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1537| Type = [SpecifiedType] const StructuredBindingDataMemberStruct +# 1537| ValueCategory = lvalue +# 1537| getInitializer(7): [ConstructorFieldInit] constructor init of field m +# 1537| Type = [Struct] StructuredBindingDataMemberMemberStruct +# 1537| ValueCategory = prvalue +# 1537| getExpr(): [ReferenceFieldAccess] m +# 1537| Type = [Struct] StructuredBindingDataMemberMemberStruct +# 1537| ValueCategory = prvalue(load) +# 1537| getQualifier(): [VariableAccess] (unnamed parameter 0) +# 1537| Type = [LValueReferenceType] const StructuredBindingDataMemberStruct & +# 1537| ValueCategory = prvalue(load) +# 1537| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1537| Type = [SpecifiedType] const StructuredBindingDataMemberStruct +# 1537| ValueCategory = lvalue +# 1537| getEntryPoint(): [BlockStmt] { ... } +# 1537| getStmt(0): [ReturnStmt] return ... +# 1537| [MoveConstructor] void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct(StructuredBindingDataMemberStruct&&) +# 1537| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] StructuredBindingDataMemberStruct && -# 1548| [TopLevelFunction] void data_member_structured_binding() -# 1548| : -# 1548| getEntryPoint(): [BlockStmt] { ... } -# 1549| getStmt(0): [DeclStmt] declaration -# 1549| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s -# 1549| Type = [Struct] StructuredBindingDataMemberStruct -# 1549| getVariable().getInitializer(): [Initializer] initializer for s -# 1549| getExpr(): [ConstructorCall] call to StructuredBindingDataMemberStruct -# 1549| Type = [VoidType] void -# 1549| ValueCategory = prvalue -# 1551| getStmt(1): [BlockStmt] { ... } -# 1552| getStmt(0): [DeclStmt] declaration -# 1552| getDeclarationEntry(0): [VariableDeclarationEntry] definition of (unnamed local variable) -# 1552| Type = [Struct] StructuredBindingDataMemberStruct -# 1552| getVariable().getInitializer(): [Initializer] initializer for (unnamed local variable) -# 1552| getExpr(): [VariableAccess] s -# 1552| Type = [Struct] StructuredBindingDataMemberStruct -# 1552| ValueCategory = prvalue(load) -# 1552| getDeclarationEntry(1): [VariableDeclarationEntry] definition of i -# 1552| Type = [IntType] int +# 1550| [TopLevelFunction] void data_member_structured_binding() +# 1550| : +# 1550| getEntryPoint(): [BlockStmt] { ... } +# 1551| getStmt(0): [DeclStmt] declaration +# 1551| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s +# 1551| Type = [Struct] StructuredBindingDataMemberStruct +# 1551| getVariable().getInitializer(): [Initializer] initializer for s +# 1551| getExpr(): [ConstructorCall] call to StructuredBindingDataMemberStruct +# 1551| Type = [VoidType] void +# 1551| ValueCategory = prvalue +# 1553| getStmt(1): [BlockStmt] { ... } +# 1554| getStmt(0): [DeclStmt] declaration +# 1554| getDeclarationEntry(0): [VariableDeclarationEntry] definition of (unnamed local variable) +# 1554| Type = [Struct] StructuredBindingDataMemberStruct +# 1554| getVariable().getInitializer(): [Initializer] initializer for (unnamed local variable) +# 1554| getExpr(): [VariableAccess] s +# 1554| Type = [Struct] StructuredBindingDataMemberStruct +# 1554| ValueCategory = prvalue(load) +# 1554| getDeclarationEntry(1): [VariableDeclarationEntry] definition of i +# 1554| Type = [IntType] int #-----| getVariable().getInitializer(): [Initializer] initializer for i -# 1552| getExpr(): [ValueFieldAccess] i -# 1552| Type = [IntType] int -# 1552| ValueCategory = lvalue -# 1552| getQualifier(): [VariableAccess] (unnamed local variable) -# 1552| Type = [Struct] StructuredBindingDataMemberStruct -# 1552| ValueCategory = lvalue -# 1552| getDeclarationEntry(2): [VariableDeclarationEntry] definition of d -# 1552| Type = [DoubleType] double +# 1554| getExpr(): [ValueFieldAccess] i +# 1554| Type = [IntType] int +# 1554| ValueCategory = lvalue +# 1554| getQualifier(): [VariableAccess] (unnamed local variable) +# 1554| Type = [Struct] StructuredBindingDataMemberStruct +# 1554| ValueCategory = lvalue +# 1554| getDeclarationEntry(2): [VariableDeclarationEntry] definition of d +# 1554| Type = [DoubleType] double #-----| getVariable().getInitializer(): [Initializer] initializer for d -# 1552| getExpr(): [ValueFieldAccess] d -# 1552| Type = [DoubleType] double -# 1552| ValueCategory = lvalue -# 1552| getQualifier(): [VariableAccess] (unnamed local variable) -# 1552| Type = [Struct] StructuredBindingDataMemberStruct -# 1552| ValueCategory = lvalue -# 1552| getDeclarationEntry(3): [VariableDeclarationEntry] definition of b -# 1552| Type = [IntType] unsigned int -#-----| getVariable().getInitializer(): [Initializer] initializer for b -# 1552| getExpr(): [ValueFieldAccess] b -# 1552| Type = [IntType] unsigned int -# 1552| ValueCategory = lvalue -# 1552| getQualifier(): [VariableAccess] (unnamed local variable) -# 1552| Type = [Struct] StructuredBindingDataMemberStruct -# 1552| ValueCategory = lvalue -# 1552| getDeclarationEntry(4): [VariableDeclarationEntry] definition of r -# 1552| Type = [IntType] int -#-----| getVariable().getInitializer(): [Initializer] initializer for r -# 1552| getExpr(): [ValueFieldAccess] r -# 1552| Type = [LValueReferenceType] int & -# 1552| ValueCategory = prvalue(load) -# 1552| getQualifier(): [VariableAccess] (unnamed local variable) -# 1552| Type = [Struct] StructuredBindingDataMemberStruct -# 1552| ValueCategory = lvalue -# 1552| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1552| Type = [IntType] int -# 1552| ValueCategory = lvalue -# 1552| getDeclarationEntry(5): [VariableDeclarationEntry] definition of p -# 1552| Type = [IntPointerType] int * -#-----| getVariable().getInitializer(): [Initializer] initializer for p -# 1552| getExpr(): [ValueFieldAccess] p -# 1552| Type = [IntPointerType] int * -# 1552| ValueCategory = lvalue -# 1552| getQualifier(): [VariableAccess] (unnamed local variable) -# 1552| Type = [Struct] StructuredBindingDataMemberStruct -# 1552| ValueCategory = lvalue -# 1552| getDeclarationEntry(6): [VariableDeclarationEntry] definition of xs -# 1552| Type = [CTypedefType,NestedTypedefType] ArrayType -#-----| getVariable().getInitializer(): [Initializer] initializer for xs -# 1552| getExpr(): [ValueFieldAccess] xs -# 1552| Type = [CTypedefType,NestedTypedefType] ArrayType -# 1552| ValueCategory = lvalue -# 1552| getQualifier(): [VariableAccess] (unnamed local variable) -# 1552| Type = [Struct] StructuredBindingDataMemberStruct -# 1552| ValueCategory = lvalue -# 1552| getDeclarationEntry(7): [VariableDeclarationEntry] definition of r_alt -# 1552| Type = [IntType] int -#-----| getVariable().getInitializer(): [Initializer] initializer for r_alt -# 1552| getExpr(): [ValueFieldAccess] r_alt -# 1552| Type = [CTypedefType,NestedTypedefType] RefType -# 1552| ValueCategory = prvalue(load) -# 1552| getQualifier(): [VariableAccess] (unnamed local variable) -# 1552| Type = [Struct] StructuredBindingDataMemberStruct -# 1552| ValueCategory = lvalue -# 1552| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1552| Type = [IntType] int -# 1552| ValueCategory = lvalue -# 1552| getDeclarationEntry(8): [VariableDeclarationEntry] definition of m -# 1552| Type = [Struct] StructuredBindingDataMemberMemberStruct -#-----| getVariable().getInitializer(): [Initializer] initializer for m -# 1552| getExpr(): [ValueFieldAccess] m -# 1552| Type = [Struct] StructuredBindingDataMemberMemberStruct -# 1552| ValueCategory = lvalue -# 1552| getQualifier(): [VariableAccess] (unnamed local variable) -# 1552| Type = [Struct] StructuredBindingDataMemberStruct -# 1552| ValueCategory = lvalue -# 1553| getStmt(1): [ExprStmt] ExprStmt -# 1553| getExpr(): [AssignExpr] ... = ... -# 1553| Type = [DoubleType] double -# 1553| ValueCategory = lvalue -# 1553| getLValue(): [VariableAccess] d -# 1553| Type = [DoubleType] double -# 1553| ValueCategory = lvalue -# 1553| getRValue(): [Literal] 4.0 -# 1553| Type = [DoubleType] double -# 1553| Value = [Literal] 4.0 -# 1553| ValueCategory = prvalue -# 1554| getStmt(2): [DeclStmt] declaration -# 1554| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rd -# 1554| Type = [LValueReferenceType] double & -# 1554| getVariable().getInitializer(): [Initializer] initializer for rd -# 1554| getExpr(): [VariableAccess] d +# 1554| getExpr(): [ValueFieldAccess] d # 1554| Type = [DoubleType] double # 1554| ValueCategory = lvalue -# 1554| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1554| Type = [LValueReferenceType] double & -# 1554| ValueCategory = prvalue -# 1555| getStmt(3): [DeclStmt] declaration -# 1555| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v -# 1555| Type = [IntType] int -# 1555| getVariable().getInitializer(): [Initializer] initializer for v -# 1555| getExpr(): [VariableAccess] i -# 1555| Type = [IntType] int -# 1555| ValueCategory = prvalue(load) -# 1556| getStmt(4): [ExprStmt] ExprStmt -# 1556| getExpr(): [AssignExpr] ... = ... -# 1556| Type = [IntType] int -# 1556| ValueCategory = lvalue -# 1556| getLValue(): [VariableAccess] r -# 1556| Type = [IntType] int -# 1556| ValueCategory = lvalue -# 1556| getRValue(): [Literal] 5 -# 1556| Type = [IntType] int -# 1556| Value = [Literal] 5 -# 1556| ValueCategory = prvalue -# 1557| getStmt(5): [ExprStmt] ExprStmt -# 1557| getExpr(): [AssignExpr] ... = ... +# 1554| getQualifier(): [VariableAccess] (unnamed local variable) +# 1554| Type = [Struct] StructuredBindingDataMemberStruct +# 1554| ValueCategory = lvalue +# 1554| getDeclarationEntry(3): [VariableDeclarationEntry] definition of b +# 1554| Type = [IntType] unsigned int +#-----| getVariable().getInitializer(): [Initializer] initializer for b +# 1554| getExpr(): [ValueFieldAccess] b +# 1554| Type = [IntType] unsigned int +# 1554| ValueCategory = lvalue +# 1554| getQualifier(): [VariableAccess] (unnamed local variable) +# 1554| Type = [Struct] StructuredBindingDataMemberStruct +# 1554| ValueCategory = lvalue +# 1554| getDeclarationEntry(4): [VariableDeclarationEntry] definition of r +# 1554| Type = [IntType] int +#-----| getVariable().getInitializer(): [Initializer] initializer for r +# 1554| getExpr(): [ValueFieldAccess] r +# 1554| Type = [LValueReferenceType] int & +# 1554| ValueCategory = prvalue(load) +# 1554| getQualifier(): [VariableAccess] (unnamed local variable) +# 1554| Type = [Struct] StructuredBindingDataMemberStruct +# 1554| ValueCategory = lvalue +# 1554| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1554| Type = [IntType] int +# 1554| ValueCategory = lvalue +# 1554| getDeclarationEntry(5): [VariableDeclarationEntry] definition of p +# 1554| Type = [IntPointerType] int * +#-----| getVariable().getInitializer(): [Initializer] initializer for p +# 1554| getExpr(): [ValueFieldAccess] p +# 1554| Type = [IntPointerType] int * +# 1554| ValueCategory = lvalue +# 1554| getQualifier(): [VariableAccess] (unnamed local variable) +# 1554| Type = [Struct] StructuredBindingDataMemberStruct +# 1554| ValueCategory = lvalue +# 1554| getDeclarationEntry(6): [VariableDeclarationEntry] definition of xs +# 1554| Type = [CTypedefType,NestedTypedefType] ArrayType +#-----| getVariable().getInitializer(): [Initializer] initializer for xs +# 1554| getExpr(): [ValueFieldAccess] xs +# 1554| Type = [CTypedefType,NestedTypedefType] ArrayType +# 1554| ValueCategory = lvalue +# 1554| getQualifier(): [VariableAccess] (unnamed local variable) +# 1554| Type = [Struct] StructuredBindingDataMemberStruct +# 1554| ValueCategory = lvalue +# 1554| getDeclarationEntry(7): [VariableDeclarationEntry] definition of r_alt +# 1554| Type = [IntType] int +#-----| getVariable().getInitializer(): [Initializer] initializer for r_alt +# 1554| getExpr(): [ValueFieldAccess] r_alt +# 1554| Type = [CTypedefType,NestedTypedefType] RefType +# 1554| ValueCategory = prvalue(load) +# 1554| getQualifier(): [VariableAccess] (unnamed local variable) +# 1554| Type = [Struct] StructuredBindingDataMemberStruct +# 1554| ValueCategory = lvalue +# 1554| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1554| Type = [IntType] int +# 1554| ValueCategory = lvalue +# 1554| getDeclarationEntry(8): [VariableDeclarationEntry] definition of m +# 1554| Type = [Struct] StructuredBindingDataMemberMemberStruct +#-----| getVariable().getInitializer(): [Initializer] initializer for m +# 1554| getExpr(): [ValueFieldAccess] m +# 1554| Type = [Struct] StructuredBindingDataMemberMemberStruct +# 1554| ValueCategory = lvalue +# 1554| getQualifier(): [VariableAccess] (unnamed local variable) +# 1554| Type = [Struct] StructuredBindingDataMemberStruct +# 1554| ValueCategory = lvalue +# 1555| getStmt(1): [ExprStmt] ExprStmt +# 1555| getExpr(): [AssignExpr] ... = ... +# 1555| Type = [DoubleType] double +# 1555| ValueCategory = lvalue +# 1555| getLValue(): [VariableAccess] d +# 1555| Type = [DoubleType] double +# 1555| ValueCategory = lvalue +# 1555| getRValue(): [Literal] 4.0 +# 1555| Type = [DoubleType] double +# 1555| Value = [Literal] 4.0 +# 1555| ValueCategory = prvalue +# 1556| getStmt(2): [DeclStmt] declaration +# 1556| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rd +# 1556| Type = [LValueReferenceType] double & +# 1556| getVariable().getInitializer(): [Initializer] initializer for rd +# 1556| getExpr(): [VariableAccess] d +# 1556| Type = [DoubleType] double +# 1556| ValueCategory = lvalue +# 1556| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1556| Type = [LValueReferenceType] double & +# 1556| ValueCategory = prvalue +# 1557| getStmt(3): [DeclStmt] declaration +# 1557| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v # 1557| Type = [IntType] int -# 1557| ValueCategory = lvalue -# 1557| getLValue(): [PointerDereferenceExpr] * ... -# 1557| Type = [IntType] int -# 1557| ValueCategory = lvalue -# 1557| getOperand(): [VariableAccess] p -# 1557| Type = [IntPointerType] int * +# 1557| getVariable().getInitializer(): [Initializer] initializer for v +# 1557| getExpr(): [VariableAccess] i +# 1557| Type = [IntType] int # 1557| ValueCategory = prvalue(load) -# 1557| getRValue(): [Literal] 6 -# 1557| Type = [IntType] int -# 1557| Value = [Literal] 6 -# 1557| ValueCategory = prvalue -# 1558| getStmt(6): [DeclStmt] declaration -# 1558| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rr -# 1558| Type = [LValueReferenceType] int & -# 1558| getVariable().getInitializer(): [Initializer] initializer for rr -# 1558| getExpr(): [VariableAccess] r -# 1558| Type = [IntType] int -# 1558| ValueCategory = lvalue -# 1558| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1558| Type = [LValueReferenceType] int & -# 1558| ValueCategory = prvalue -# 1559| getStmt(7): [DeclStmt] declaration -# 1559| getDeclarationEntry(0): [VariableDeclarationEntry] definition of pr -# 1559| Type = [IntPointerType] int * -# 1559| getVariable().getInitializer(): [Initializer] initializer for pr -# 1559| getExpr(): [AddressOfExpr] & ... +# 1558| getStmt(4): [ExprStmt] ExprStmt +# 1558| getExpr(): [AssignExpr] ... = ... +# 1558| Type = [IntType] int +# 1558| ValueCategory = lvalue +# 1558| getLValue(): [VariableAccess] r +# 1558| Type = [IntType] int +# 1558| ValueCategory = lvalue +# 1558| getRValue(): [Literal] 5 +# 1558| Type = [IntType] int +# 1558| Value = [Literal] 5 +# 1558| ValueCategory = prvalue +# 1559| getStmt(5): [ExprStmt] ExprStmt +# 1559| getExpr(): [AssignExpr] ... = ... +# 1559| Type = [IntType] int +# 1559| ValueCategory = lvalue +# 1559| getLValue(): [PointerDereferenceExpr] * ... +# 1559| Type = [IntType] int +# 1559| ValueCategory = lvalue +# 1559| getOperand(): [VariableAccess] p # 1559| Type = [IntPointerType] int * -# 1559| ValueCategory = prvalue -# 1559| getOperand(): [VariableAccess] r -# 1559| Type = [IntType] int -# 1559| ValueCategory = lvalue -# 1560| getStmt(8): [DeclStmt] declaration -# 1560| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w -# 1560| Type = [IntType] int -# 1560| getVariable().getInitializer(): [Initializer] initializer for w +# 1559| ValueCategory = prvalue(load) +# 1559| getRValue(): [Literal] 6 +# 1559| Type = [IntType] int +# 1559| Value = [Literal] 6 +# 1559| ValueCategory = prvalue +# 1560| getStmt(6): [DeclStmt] declaration +# 1560| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rr +# 1560| Type = [LValueReferenceType] int & +# 1560| getVariable().getInitializer(): [Initializer] initializer for rr # 1560| getExpr(): [VariableAccess] r # 1560| Type = [IntType] int -# 1560| ValueCategory = prvalue(load) -# 1563| getStmt(2): [BlockStmt] { ... } -# 1564| getStmt(0): [DeclStmt] declaration -# 1564| getDeclarationEntry(0): [VariableDeclarationEntry] definition of unnamed_local_variable -# 1564| Type = [Struct] StructuredBindingDataMemberStruct -# 1564| getVariable().getInitializer(): [Initializer] initializer for unnamed_local_variable -# 1564| getExpr(): [VariableAccess] s -# 1564| Type = [Struct] StructuredBindingDataMemberStruct -# 1564| ValueCategory = prvalue(load) -# 1565| getStmt(1): [DeclStmt] declaration -# 1565| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i -# 1565| Type = [LValueReferenceType] int & -# 1565| getVariable().getInitializer(): [Initializer] initializer for i -# 1565| getExpr(): [ValueFieldAccess] i -# 1565| Type = [IntType] int -# 1565| ValueCategory = lvalue -# 1565| getQualifier(): [VariableAccess] unnamed_local_variable -# 1565| Type = [Struct] StructuredBindingDataMemberStruct -# 1565| ValueCategory = lvalue -# 1565| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1565| Type = [LValueReferenceType] int & -# 1565| ValueCategory = prvalue -# 1566| getStmt(2): [DeclStmt] declaration -# 1566| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d -# 1566| Type = [LValueReferenceType] double & -# 1566| getVariable().getInitializer(): [Initializer] initializer for d -# 1566| getExpr(): [ValueFieldAccess] d -# 1566| Type = [DoubleType] double -# 1566| ValueCategory = lvalue -# 1566| getQualifier(): [VariableAccess] unnamed_local_variable -# 1566| Type = [Struct] StructuredBindingDataMemberStruct -# 1566| ValueCategory = lvalue -# 1566| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1566| Type = [LValueReferenceType] double & -# 1566| ValueCategory = prvalue -# 1568| getStmt(3): [DeclStmt] declaration -# 1568| getDeclarationEntry(0): [VariableDeclarationEntry] definition of r -# 1568| Type = [LValueReferenceType] int & -# 1568| getVariable().getInitializer(): [Initializer] initializer for r -# 1568| getExpr(): [ValueFieldAccess] r -# 1568| Type = [LValueReferenceType] int & -# 1568| ValueCategory = prvalue(load) +# 1560| ValueCategory = lvalue +# 1560| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1560| Type = [LValueReferenceType] int & +# 1560| ValueCategory = prvalue +# 1561| getStmt(7): [DeclStmt] declaration +# 1561| getDeclarationEntry(0): [VariableDeclarationEntry] definition of pr +# 1561| Type = [IntPointerType] int * +# 1561| getVariable().getInitializer(): [Initializer] initializer for pr +# 1561| getExpr(): [AddressOfExpr] & ... +# 1561| Type = [IntPointerType] int * +# 1561| ValueCategory = prvalue +# 1561| getOperand(): [VariableAccess] r +# 1561| Type = [IntType] int +# 1561| ValueCategory = lvalue +# 1562| getStmt(8): [DeclStmt] declaration +# 1562| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w +# 1562| Type = [IntType] int +# 1562| getVariable().getInitializer(): [Initializer] initializer for w +# 1562| getExpr(): [VariableAccess] r +# 1562| Type = [IntType] int +# 1562| ValueCategory = prvalue(load) +# 1565| getStmt(2): [BlockStmt] { ... } +# 1566| getStmt(0): [DeclStmt] declaration +# 1566| getDeclarationEntry(0): [VariableDeclarationEntry] definition of unnamed_local_variable +# 1566| Type = [Struct] StructuredBindingDataMemberStruct +# 1566| getVariable().getInitializer(): [Initializer] initializer for unnamed_local_variable +# 1566| getExpr(): [VariableAccess] s +# 1566| Type = [Struct] StructuredBindingDataMemberStruct +# 1566| ValueCategory = prvalue(load) +# 1567| getStmt(1): [DeclStmt] declaration +# 1567| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i +# 1567| Type = [LValueReferenceType] int & +# 1567| getVariable().getInitializer(): [Initializer] initializer for i +# 1567| getExpr(): [ValueFieldAccess] i +# 1567| Type = [IntType] int +# 1567| ValueCategory = lvalue +# 1567| getQualifier(): [VariableAccess] unnamed_local_variable +# 1567| Type = [Struct] StructuredBindingDataMemberStruct +# 1567| ValueCategory = lvalue +# 1567| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1567| Type = [LValueReferenceType] int & +# 1567| ValueCategory = prvalue +# 1568| getStmt(2): [DeclStmt] declaration +# 1568| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d +# 1568| Type = [LValueReferenceType] double & +# 1568| getVariable().getInitializer(): [Initializer] initializer for d +# 1568| getExpr(): [ValueFieldAccess] d +# 1568| Type = [DoubleType] double +# 1568| ValueCategory = lvalue # 1568| getQualifier(): [VariableAccess] unnamed_local_variable # 1568| Type = [Struct] StructuredBindingDataMemberStruct # 1568| ValueCategory = lvalue # 1568| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1568| Type = [LValueReferenceType] int & +# 1568| Type = [LValueReferenceType] double & # 1568| ValueCategory = prvalue -# 1568| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1568| Type = [IntType] int -# 1568| ValueCategory = lvalue -# 1569| getStmt(4): [DeclStmt] declaration -# 1569| getDeclarationEntry(0): [VariableDeclarationEntry] definition of p -# 1569| Type = [LValueReferenceType] int *& -# 1569| getVariable().getInitializer(): [Initializer] initializer for p -# 1569| getExpr(): [ValueFieldAccess] p -# 1569| Type = [IntPointerType] int * -# 1569| ValueCategory = lvalue -# 1569| getQualifier(): [VariableAccess] unnamed_local_variable -# 1569| Type = [Struct] StructuredBindingDataMemberStruct -# 1569| ValueCategory = lvalue -# 1569| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1569| Type = [LValueReferenceType] int *& -# 1569| ValueCategory = prvalue -# 1570| getStmt(5): [ExprStmt] ExprStmt -# 1570| getExpr(): [AssignExpr] ... = ... -# 1570| Type = [DoubleType] double -# 1570| ValueCategory = lvalue -# 1570| getLValue(): [VariableAccess] d -# 1570| Type = [LValueReferenceType] double & -# 1570| ValueCategory = prvalue(load) -# 1570| getRValue(): [Literal] 4.0 -# 1570| Type = [DoubleType] double -# 1570| Value = [Literal] 4.0 -# 1570| ValueCategory = prvalue -# 1570| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1570| Type = [DoubleType] double -# 1570| ValueCategory = lvalue -# 1571| getStmt(6): [DeclStmt] declaration -# 1571| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rd -# 1571| Type = [LValueReferenceType] double & -# 1571| getVariable().getInitializer(): [Initializer] initializer for rd -# 1571| getExpr(): [VariableAccess] d -# 1571| Type = [LValueReferenceType] double & -# 1571| ValueCategory = prvalue(load) -# 1571| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1571| Type = [LValueReferenceType] double & -# 1571| ValueCategory = prvalue -# 1571| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1571| Type = [DoubleType] double +# 1570| getStmt(3): [DeclStmt] declaration +# 1570| getDeclarationEntry(0): [VariableDeclarationEntry] definition of r +# 1570| Type = [LValueReferenceType] int & +# 1570| getVariable().getInitializer(): [Initializer] initializer for r +# 1570| getExpr(): [ValueFieldAccess] r +# 1570| Type = [LValueReferenceType] int & +# 1570| ValueCategory = prvalue(load) +# 1570| getQualifier(): [VariableAccess] unnamed_local_variable +# 1570| Type = [Struct] StructuredBindingDataMemberStruct +# 1570| ValueCategory = lvalue +# 1570| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1570| Type = [LValueReferenceType] int & +# 1570| ValueCategory = prvalue +# 1570| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1570| Type = [IntType] int +# 1570| ValueCategory = lvalue +# 1571| getStmt(4): [DeclStmt] declaration +# 1571| getDeclarationEntry(0): [VariableDeclarationEntry] definition of p +# 1571| Type = [LValueReferenceType] int *& +# 1571| getVariable().getInitializer(): [Initializer] initializer for p +# 1571| getExpr(): [ValueFieldAccess] p +# 1571| Type = [IntPointerType] int * +# 1571| ValueCategory = lvalue +# 1571| getQualifier(): [VariableAccess] unnamed_local_variable +# 1571| Type = [Struct] StructuredBindingDataMemberStruct # 1571| ValueCategory = lvalue -# 1572| getStmt(7): [DeclStmt] declaration -# 1572| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v -# 1572| Type = [IntType] int -# 1572| getVariable().getInitializer(): [Initializer] initializer for v -# 1572| getExpr(): [VariableAccess] i -# 1572| Type = [LValueReferenceType] int & -# 1572| ValueCategory = prvalue(load) -# 1572| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1572| Type = [IntType] int -# 1572| ValueCategory = prvalue(load) -# 1573| getStmt(8): [ExprStmt] ExprStmt -# 1573| getExpr(): [AssignExpr] ... = ... -# 1573| Type = [IntType] int -# 1573| ValueCategory = lvalue -# 1573| getLValue(): [VariableAccess] r -# 1573| Type = [LValueReferenceType] int & -# 1573| ValueCategory = prvalue(load) -# 1573| getRValue(): [Literal] 5 -# 1573| Type = [IntType] int -# 1573| Value = [Literal] 5 -# 1573| ValueCategory = prvalue -# 1573| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1573| Type = [IntType] int -# 1573| ValueCategory = lvalue -# 1574| getStmt(9): [ExprStmt] ExprStmt -# 1574| getExpr(): [AssignExpr] ... = ... +# 1571| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1571| Type = [LValueReferenceType] int *& +# 1571| ValueCategory = prvalue +# 1572| getStmt(5): [ExprStmt] ExprStmt +# 1572| getExpr(): [AssignExpr] ... = ... +# 1572| Type = [DoubleType] double +# 1572| ValueCategory = lvalue +# 1572| getLValue(): [VariableAccess] d +# 1572| Type = [LValueReferenceType] double & +# 1572| ValueCategory = prvalue(load) +# 1572| getRValue(): [Literal] 4.0 +# 1572| Type = [DoubleType] double +# 1572| Value = [Literal] 4.0 +# 1572| ValueCategory = prvalue +# 1572| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1572| Type = [DoubleType] double +# 1572| ValueCategory = lvalue +# 1573| getStmt(6): [DeclStmt] declaration +# 1573| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rd +# 1573| Type = [LValueReferenceType] double & +# 1573| getVariable().getInitializer(): [Initializer] initializer for rd +# 1573| getExpr(): [VariableAccess] d +# 1573| Type = [LValueReferenceType] double & +# 1573| ValueCategory = prvalue(load) +# 1573| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1573| Type = [LValueReferenceType] double & +# 1573| ValueCategory = prvalue +# 1573| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1573| Type = [DoubleType] double +# 1573| ValueCategory = lvalue +# 1574| getStmt(7): [DeclStmt] declaration +# 1574| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v # 1574| Type = [IntType] int -# 1574| ValueCategory = lvalue -# 1574| getLValue(): [PointerDereferenceExpr] * ... -# 1574| Type = [IntType] int -# 1574| ValueCategory = lvalue -# 1574| getOperand(): [VariableAccess] p -# 1574| Type = [LValueReferenceType] int *& +# 1574| getVariable().getInitializer(): [Initializer] initializer for v +# 1574| getExpr(): [VariableAccess] i +# 1574| Type = [LValueReferenceType] int & # 1574| ValueCategory = prvalue(load) -# 1574| getOperand().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1574| Type = [IntPointerType] int * +# 1574| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1574| Type = [IntType] int # 1574| ValueCategory = prvalue(load) -# 1574| getRValue(): [Literal] 6 -# 1574| Type = [IntType] int -# 1574| Value = [Literal] 6 -# 1574| ValueCategory = prvalue -# 1575| getStmt(10): [DeclStmt] declaration -# 1575| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rr -# 1575| Type = [LValueReferenceType] int & -# 1575| getVariable().getInitializer(): [Initializer] initializer for rr -# 1575| getExpr(): [VariableAccess] r -# 1575| Type = [LValueReferenceType] int & -# 1575| ValueCategory = prvalue(load) -# 1575| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1575| Type = [LValueReferenceType] int & -# 1575| ValueCategory = prvalue -# 1575| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1575| Type = [IntType] int -# 1575| ValueCategory = lvalue -# 1576| getStmt(11): [DeclStmt] declaration -# 1576| getDeclarationEntry(0): [VariableDeclarationEntry] definition of pr -# 1576| Type = [IntPointerType] int * -# 1576| getVariable().getInitializer(): [Initializer] initializer for pr -# 1576| getExpr(): [AddressOfExpr] & ... +# 1575| getStmt(8): [ExprStmt] ExprStmt +# 1575| getExpr(): [AssignExpr] ... = ... +# 1575| Type = [IntType] int +# 1575| ValueCategory = lvalue +# 1575| getLValue(): [VariableAccess] r +# 1575| Type = [LValueReferenceType] int & +# 1575| ValueCategory = prvalue(load) +# 1575| getRValue(): [Literal] 5 +# 1575| Type = [IntType] int +# 1575| Value = [Literal] 5 +# 1575| ValueCategory = prvalue +# 1575| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1575| Type = [IntType] int +# 1575| ValueCategory = lvalue +# 1576| getStmt(9): [ExprStmt] ExprStmt +# 1576| getExpr(): [AssignExpr] ... = ... +# 1576| Type = [IntType] int +# 1576| ValueCategory = lvalue +# 1576| getLValue(): [PointerDereferenceExpr] * ... +# 1576| Type = [IntType] int +# 1576| ValueCategory = lvalue +# 1576| getOperand(): [VariableAccess] p +# 1576| Type = [LValueReferenceType] int *& +# 1576| ValueCategory = prvalue(load) +# 1576| getOperand().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) # 1576| Type = [IntPointerType] int * -# 1576| ValueCategory = prvalue -# 1576| getOperand(): [VariableAccess] r -# 1576| Type = [LValueReferenceType] int & -# 1576| ValueCategory = prvalue(load) -# 1576| getOperand().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1576| Type = [IntType] int -# 1576| ValueCategory = lvalue -# 1577| getStmt(12): [DeclStmt] declaration -# 1577| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w -# 1577| Type = [IntType] int -# 1577| getVariable().getInitializer(): [Initializer] initializer for w +# 1576| ValueCategory = prvalue(load) +# 1576| getRValue(): [Literal] 6 +# 1576| Type = [IntType] int +# 1576| Value = [Literal] 6 +# 1576| ValueCategory = prvalue +# 1577| getStmt(10): [DeclStmt] declaration +# 1577| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rr +# 1577| Type = [LValueReferenceType] int & +# 1577| getVariable().getInitializer(): [Initializer] initializer for rr # 1577| getExpr(): [VariableAccess] r # 1577| Type = [LValueReferenceType] int & # 1577| ValueCategory = prvalue(load) -# 1577| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1577| Type = [IntType] int -# 1577| ValueCategory = prvalue(load) -# 1579| getStmt(3): [ReturnStmt] return ... -# 1588| [CopyAssignmentOperator] StructuredBindingTupleRefGet& StructuredBindingTupleRefGet::operator=(StructuredBindingTupleRefGet const&) -# 1588| : +# 1577| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1577| Type = [LValueReferenceType] int & +# 1577| ValueCategory = prvalue +# 1577| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1577| Type = [IntType] int +# 1577| ValueCategory = lvalue +# 1578| getStmt(11): [DeclStmt] declaration +# 1578| getDeclarationEntry(0): [VariableDeclarationEntry] definition of pr +# 1578| Type = [IntPointerType] int * +# 1578| getVariable().getInitializer(): [Initializer] initializer for pr +# 1578| getExpr(): [AddressOfExpr] & ... +# 1578| Type = [IntPointerType] int * +# 1578| ValueCategory = prvalue +# 1578| getOperand(): [VariableAccess] r +# 1578| Type = [LValueReferenceType] int & +# 1578| ValueCategory = prvalue(load) +# 1578| getOperand().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1578| Type = [IntType] int +# 1578| ValueCategory = lvalue +# 1579| getStmt(12): [DeclStmt] declaration +# 1579| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w +# 1579| Type = [IntType] int +# 1579| getVariable().getInitializer(): [Initializer] initializer for w +# 1579| getExpr(): [VariableAccess] r +# 1579| Type = [LValueReferenceType] int & +# 1579| ValueCategory = prvalue(load) +# 1579| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1579| Type = [IntType] int +# 1579| ValueCategory = prvalue(load) +# 1581| getStmt(3): [ReturnStmt] return ... +# 1590| [CopyAssignmentOperator] StructuredBindingTupleRefGet& StructuredBindingTupleRefGet::operator=(StructuredBindingTupleRefGet const&) +# 1590| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const StructuredBindingTupleRefGet & -# 1588| [Constructor] void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet() -# 1588| : -# 1588| : -# 1588| getInitializer(0): [ConstructorFieldInit] constructor init of field i -# 1588| Type = [IntType] int -# 1588| ValueCategory = prvalue -# 1588| getInitializer(1): [ConstructorFieldInit] constructor init of field d -# 1588| Type = [DoubleType] double -# 1588| ValueCategory = prvalue -# 1588| getInitializer(2): [ConstructorFieldInit] constructor init of field r -# 1588| Type = [LValueReferenceType] int & -# 1588| ValueCategory = prvalue -# 1588| getEntryPoint(): [BlockStmt] { ... } -# 1588| getStmt(0): [ReturnStmt] return ... -# 1588| [CopyConstructor] void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet(StructuredBindingTupleRefGet const&) -# 1588| : +# 1590| [Constructor] void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet() +# 1590| : +# 1590| : +# 1590| getInitializer(0): [ConstructorFieldInit] constructor init of field i +# 1590| Type = [IntType] int +# 1590| ValueCategory = prvalue +# 1590| getInitializer(1): [ConstructorFieldInit] constructor init of field d +# 1590| Type = [DoubleType] double +# 1590| ValueCategory = prvalue +# 1590| getInitializer(2): [ConstructorFieldInit] constructor init of field r +# 1590| Type = [LValueReferenceType] int & +# 1590| ValueCategory = prvalue +# 1590| getEntryPoint(): [BlockStmt] { ... } +# 1590| getStmt(0): [ReturnStmt] return ... +# 1590| [CopyConstructor] void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet(StructuredBindingTupleRefGet const&) +# 1590| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const StructuredBindingTupleRefGet & -# 1588| : -# 1588| getInitializer(0): [ConstructorFieldInit] constructor init of field i -# 1588| Type = [IntType] int -# 1588| ValueCategory = prvalue -# 1588| getExpr(): [ReferenceFieldAccess] i -# 1588| Type = [IntType] int -# 1588| ValueCategory = prvalue(load) -# 1588| getQualifier(): [VariableAccess] (unnamed parameter 0) -# 1588| Type = [LValueReferenceType] const StructuredBindingTupleRefGet & -# 1588| ValueCategory = prvalue(load) -# 1588| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1588| Type = [SpecifiedType] const StructuredBindingTupleRefGet -# 1588| ValueCategory = lvalue -# 1588| getInitializer(1): [ConstructorFieldInit] constructor init of field d -# 1588| Type = [DoubleType] double -# 1588| ValueCategory = prvalue -# 1588| getExpr(): [ReferenceFieldAccess] d -# 1588| Type = [DoubleType] double -# 1588| ValueCategory = prvalue(load) -# 1588| getQualifier(): [VariableAccess] (unnamed parameter 0) -# 1588| Type = [LValueReferenceType] const StructuredBindingTupleRefGet & -# 1588| ValueCategory = prvalue(load) -# 1588| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1588| Type = [SpecifiedType] const StructuredBindingTupleRefGet -# 1588| ValueCategory = lvalue -# 1588| getInitializer(2): [ConstructorFieldInit] constructor init of field r -# 1588| Type = [LValueReferenceType] int & -# 1588| ValueCategory = prvalue -# 1588| getExpr(): [ReferenceFieldAccess] r -# 1588| Type = [LValueReferenceType] int & -# 1588| ValueCategory = prvalue(load) -# 1588| getQualifier(): [VariableAccess] (unnamed parameter 0) -# 1588| Type = [LValueReferenceType] const StructuredBindingTupleRefGet & -# 1588| ValueCategory = prvalue(load) -# 1588| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1588| Type = [SpecifiedType] const StructuredBindingTupleRefGet -# 1588| ValueCategory = lvalue -# 1588| getEntryPoint(): [BlockStmt] { ... } -# 1588| getStmt(0): [ReturnStmt] return ... -# 1588| [MoveConstructor] void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet(StructuredBindingTupleRefGet&&) -# 1588| : +# 1590| : +# 1590| getInitializer(0): [ConstructorFieldInit] constructor init of field i +# 1590| Type = [IntType] int +# 1590| ValueCategory = prvalue +# 1590| getExpr(): [ReferenceFieldAccess] i +# 1590| Type = [IntType] int +# 1590| ValueCategory = prvalue(load) +# 1590| getQualifier(): [VariableAccess] (unnamed parameter 0) +# 1590| Type = [LValueReferenceType] const StructuredBindingTupleRefGet & +# 1590| ValueCategory = prvalue(load) +# 1590| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1590| Type = [SpecifiedType] const StructuredBindingTupleRefGet +# 1590| ValueCategory = lvalue +# 1590| getInitializer(1): [ConstructorFieldInit] constructor init of field d +# 1590| Type = [DoubleType] double +# 1590| ValueCategory = prvalue +# 1590| getExpr(): [ReferenceFieldAccess] d +# 1590| Type = [DoubleType] double +# 1590| ValueCategory = prvalue(load) +# 1590| getQualifier(): [VariableAccess] (unnamed parameter 0) +# 1590| Type = [LValueReferenceType] const StructuredBindingTupleRefGet & +# 1590| ValueCategory = prvalue(load) +# 1590| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1590| Type = [SpecifiedType] const StructuredBindingTupleRefGet +# 1590| ValueCategory = lvalue +# 1590| getInitializer(2): [ConstructorFieldInit] constructor init of field r +# 1590| Type = [LValueReferenceType] int & +# 1590| ValueCategory = prvalue +# 1590| getExpr(): [ReferenceFieldAccess] r +# 1590| Type = [LValueReferenceType] int & +# 1590| ValueCategory = prvalue(load) +# 1590| getQualifier(): [VariableAccess] (unnamed parameter 0) +# 1590| Type = [LValueReferenceType] const StructuredBindingTupleRefGet & +# 1590| ValueCategory = prvalue(load) +# 1590| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1590| Type = [SpecifiedType] const StructuredBindingTupleRefGet +# 1590| ValueCategory = lvalue +# 1590| getEntryPoint(): [BlockStmt] { ... } +# 1590| getStmt(0): [ReturnStmt] return ... +# 1590| [MoveConstructor] void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet(StructuredBindingTupleRefGet&&) +# 1590| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] StructuredBindingTupleRefGet && -# 1594| [MemberFunction,TemplateFunction] type& StructuredBindingTupleRefGet::get() -# 1594| : -# 1598| [CopyAssignmentOperator] std::tuple_size& std::tuple_size::operator=(std::tuple_size const&) -# 1598| : +# 1596| [MemberFunction,TemplateFunction] type& StructuredBindingTupleRefGet::get() +# 1596| : +# 1600| [CopyAssignmentOperator] std::tuple_size& std::tuple_size::operator=(std::tuple_size const&) +# 1600| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const tuple_size & -# 1598| [MoveAssignmentOperator] std::tuple_size& std::tuple_size::operator=(std::tuple_size&&) -# 1598| : +# 1600| [MoveAssignmentOperator] std::tuple_size& std::tuple_size::operator=(std::tuple_size&&) +# 1600| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] tuple_size && -# 1603| [CopyAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element const&) -# 1603| : +# 1605| [CopyAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element const&) +# 1605| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const tuple_element<0, StructuredBindingTupleRefGet> & -# 1603| [MoveAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element&&) -# 1603| : +# 1605| [MoveAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element&&) +# 1605| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] tuple_element<0, StructuredBindingTupleRefGet> && -# 1607| [CopyAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element const&) -# 1607| : +# 1609| [CopyAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element const&) +# 1609| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const tuple_element<1, StructuredBindingTupleRefGet> & -# 1607| [MoveAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element&&) -# 1607| : +# 1609| [MoveAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element&&) +# 1609| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] tuple_element<1, StructuredBindingTupleRefGet> && -# 1611| [CopyAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element const&) -# 1611| : +# 1613| [CopyAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element const&) +# 1613| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const tuple_element<2, StructuredBindingTupleRefGet> & -# 1611| [MoveAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element&&) -# 1611| : +# 1613| [MoveAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element&&) +# 1613| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] tuple_element<2, StructuredBindingTupleRefGet> && -# 1616| [FunctionTemplateSpecialization,MemberFunction] std::tuple_element::type& StructuredBindingTupleRefGet::get() -# 1616| : -# 1616| getEntryPoint(): [BlockStmt] { ... } -# 1617| getStmt(0): [ReturnStmt] return ... -# 1617| getExpr(): [ImplicitThisFieldAccess,PointerFieldAccess] i -# 1617| Type = [IntType] int -# 1617| ValueCategory = lvalue -# 1617| getQualifier(): [ThisExpr] this -# 1617| Type = [PointerType] StructuredBindingTupleRefGet * -# 1617| ValueCategory = prvalue(load) +# 1618| [FunctionTemplateSpecialization,MemberFunction] std::tuple_element::type& StructuredBindingTupleRefGet::get() +# 1618| : +# 1618| getEntryPoint(): [BlockStmt] { ... } +# 1619| getStmt(0): [ReturnStmt] return ... +# 1619| getExpr(): [ImplicitThisFieldAccess,PointerFieldAccess] i +# 1619| Type = [IntType] int +# 1619| ValueCategory = lvalue +# 1619| getQualifier(): [ThisExpr] this +# 1619| Type = [PointerType] StructuredBindingTupleRefGet * +# 1619| ValueCategory = prvalue(load) #-----| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) #-----| Type = [LValueReferenceType] int & #-----| ValueCategory = prvalue -# 1620| [FunctionTemplateSpecialization,MemberFunction] std::tuple_element::type& StructuredBindingTupleRefGet::get() -# 1620| : -# 1620| getEntryPoint(): [BlockStmt] { ... } -# 1621| getStmt(0): [ReturnStmt] return ... -# 1621| getExpr(): [ImplicitThisFieldAccess,PointerFieldAccess] d -# 1621| Type = [DoubleType] double -# 1621| ValueCategory = lvalue -# 1621| getQualifier(): [ThisExpr] this -# 1621| Type = [PointerType] StructuredBindingTupleRefGet * -# 1621| ValueCategory = prvalue(load) +# 1622| [FunctionTemplateSpecialization,MemberFunction] std::tuple_element::type& StructuredBindingTupleRefGet::get() +# 1622| : +# 1622| getEntryPoint(): [BlockStmt] { ... } +# 1623| getStmt(0): [ReturnStmt] return ... +# 1623| getExpr(): [ImplicitThisFieldAccess,PointerFieldAccess] d +# 1623| Type = [DoubleType] double +# 1623| ValueCategory = lvalue +# 1623| getQualifier(): [ThisExpr] this +# 1623| Type = [PointerType] StructuredBindingTupleRefGet * +# 1623| ValueCategory = prvalue(load) #-----| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) #-----| Type = [LValueReferenceType] double & #-----| ValueCategory = prvalue -# 1624| [FunctionTemplateSpecialization,MemberFunction] std::tuple_element::type StructuredBindingTupleRefGet::get() -# 1624| : -# 1624| getEntryPoint(): [BlockStmt] { ... } -# 1625| getStmt(0): [ReturnStmt] return ... -# 1625| getExpr(): [ImplicitThisFieldAccess,PointerFieldAccess] r -# 1625| Type = [LValueReferenceType] int & -# 1625| ValueCategory = prvalue(load) -# 1625| getQualifier(): [ThisExpr] this -# 1625| Type = [PointerType] StructuredBindingTupleRefGet * -# 1625| ValueCategory = prvalue(load) -# 1625| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1625| Type = [LValueReferenceType] int & -# 1625| ValueCategory = prvalue -# 1625| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1625| Type = [IntType] int -# 1625| ValueCategory = lvalue -# 1628| [TopLevelFunction] void tuple_structured_binding_ref_get() -# 1628| : -# 1628| getEntryPoint(): [BlockStmt] { ... } -# 1629| getStmt(0): [DeclStmt] declaration -# 1629| getDeclarationEntry(0): [VariableDeclarationEntry] definition of t -# 1629| Type = [Struct] StructuredBindingTupleRefGet -# 1629| getVariable().getInitializer(): [Initializer] initializer for t -# 1629| getExpr(): [ConstructorCall] call to StructuredBindingTupleRefGet -# 1629| Type = [VoidType] void -# 1629| ValueCategory = prvalue -# 1631| getStmt(1): [BlockStmt] { ... } -# 1632| getStmt(0): [DeclStmt] declaration -# 1632| getDeclarationEntry(0): [VariableDeclarationEntry] definition of (unnamed local variable) -# 1632| Type = [Struct] StructuredBindingTupleRefGet -# 1632| getVariable().getInitializer(): [Initializer] initializer for (unnamed local variable) -# 1632| getExpr(): [VariableAccess] t -# 1632| Type = [Struct] StructuredBindingTupleRefGet -# 1632| ValueCategory = prvalue(load) -# 1632| getDeclarationEntry(1): [VariableDeclarationEntry] definition of i -# 1632| Type = [LValueReferenceType] type & -#-----| getVariable().getInitializer(): [Initializer] initializer for i -# 1632| getExpr(): [FunctionCall] call to get -# 1632| Type = [LValueReferenceType] type & -# 1632| ValueCategory = prvalue -# 1632| getQualifier(): [VariableAccess] (unnamed local variable) -# 1632| Type = [Struct] StructuredBindingTupleRefGet -# 1632| ValueCategory = xvalue -# 1632| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1632| Type = [LValueReferenceType] type & -# 1632| ValueCategory = prvalue -# 1632| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1632| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1632| ValueCategory = lvalue -# 1632| getDeclarationEntry(2): [VariableDeclarationEntry] definition of d -# 1632| Type = [LValueReferenceType] type & -#-----| getVariable().getInitializer(): [Initializer] initializer for d -# 1632| getExpr(): [FunctionCall] call to get -# 1632| Type = [LValueReferenceType] type & -# 1632| ValueCategory = prvalue -# 1632| getQualifier(): [VariableAccess] (unnamed local variable) -# 1632| Type = [Struct] StructuredBindingTupleRefGet -# 1632| ValueCategory = xvalue -# 1632| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1632| Type = [LValueReferenceType] type & -# 1632| ValueCategory = prvalue -# 1632| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1632| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1632| ValueCategory = lvalue -# 1632| getDeclarationEntry(3): [VariableDeclarationEntry] definition of r -# 1632| Type = [NestedTypedefType,UsingAliasTypedefType] type -#-----| getVariable().getInitializer(): [Initializer] initializer for r -# 1632| getExpr(): [FunctionCall] call to get -# 1632| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1632| ValueCategory = prvalue -# 1632| getQualifier(): [VariableAccess] (unnamed local variable) -# 1632| Type = [Struct] StructuredBindingTupleRefGet -# 1632| ValueCategory = xvalue -# 1632| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1632| Type = [LValueReferenceType] int & -# 1632| ValueCategory = prvalue -# 1632| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1632| Type = [IntType] int -# 1632| ValueCategory = lvalue -# 1633| getStmt(1): [ExprStmt] ExprStmt -# 1633| getExpr(): [AssignExpr] ... = ... -# 1633| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1633| ValueCategory = lvalue -# 1633| getLValue(): [VariableAccess] d -# 1633| Type = [LValueReferenceType] type & -# 1633| ValueCategory = prvalue(load) -# 1633| getRValue(): [Literal] 4.0 -# 1633| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1633| Value = [Literal] 4.0 -# 1633| ValueCategory = prvalue -# 1633| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1633| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1633| ValueCategory = lvalue -# 1634| getStmt(2): [DeclStmt] declaration -# 1634| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rd -# 1634| Type = [LValueReferenceType] double & -# 1634| getVariable().getInitializer(): [Initializer] initializer for rd -# 1634| getExpr(): [VariableAccess] d -# 1634| Type = [LValueReferenceType] type & +# 1626| [FunctionTemplateSpecialization,MemberFunction] std::tuple_element::type StructuredBindingTupleRefGet::get() +# 1626| : +# 1626| getEntryPoint(): [BlockStmt] { ... } +# 1627| getStmt(0): [ReturnStmt] return ... +# 1627| getExpr(): [ImplicitThisFieldAccess,PointerFieldAccess] r +# 1627| Type = [LValueReferenceType] int & +# 1627| ValueCategory = prvalue(load) +# 1627| getQualifier(): [ThisExpr] this +# 1627| Type = [PointerType] StructuredBindingTupleRefGet * +# 1627| ValueCategory = prvalue(load) +# 1627| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1627| Type = [LValueReferenceType] int & +# 1627| ValueCategory = prvalue +# 1627| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1627| Type = [IntType] int +# 1627| ValueCategory = lvalue +# 1630| [TopLevelFunction] void tuple_structured_binding_ref_get() +# 1630| : +# 1630| getEntryPoint(): [BlockStmt] { ... } +# 1631| getStmt(0): [DeclStmt] declaration +# 1631| getDeclarationEntry(0): [VariableDeclarationEntry] definition of t +# 1631| Type = [Struct] StructuredBindingTupleRefGet +# 1631| getVariable().getInitializer(): [Initializer] initializer for t +# 1631| getExpr(): [ConstructorCall] call to StructuredBindingTupleRefGet +# 1631| Type = [VoidType] void +# 1631| ValueCategory = prvalue +# 1633| getStmt(1): [BlockStmt] { ... } +# 1634| getStmt(0): [DeclStmt] declaration +# 1634| getDeclarationEntry(0): [VariableDeclarationEntry] definition of (unnamed local variable) +# 1634| Type = [Struct] StructuredBindingTupleRefGet +# 1634| getVariable().getInitializer(): [Initializer] initializer for (unnamed local variable) +# 1634| getExpr(): [VariableAccess] t +# 1634| Type = [Struct] StructuredBindingTupleRefGet # 1634| ValueCategory = prvalue(load) +# 1634| getDeclarationEntry(1): [VariableDeclarationEntry] definition of i +# 1634| Type = [LValueReferenceType] type & +#-----| getVariable().getInitializer(): [Initializer] initializer for i +# 1634| getExpr(): [FunctionCall] call to get +# 1634| Type = [LValueReferenceType] type & +# 1634| ValueCategory = prvalue +# 1634| getQualifier(): [VariableAccess] (unnamed local variable) +# 1634| Type = [Struct] StructuredBindingTupleRefGet +# 1634| ValueCategory = xvalue # 1634| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) # 1634| Type = [LValueReferenceType] type & # 1634| ValueCategory = prvalue # 1634| getExpr(): [ReferenceDereferenceExpr] (reference dereference) # 1634| Type = [NestedTypedefType,UsingAliasTypedefType] type # 1634| ValueCategory = lvalue -# 1635| getStmt(3): [DeclStmt] declaration -# 1635| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v -# 1635| Type = [IntType] int -# 1635| getVariable().getInitializer(): [Initializer] initializer for v -# 1635| getExpr(): [VariableAccess] i -# 1635| Type = [LValueReferenceType] type & -# 1635| ValueCategory = prvalue(load) -# 1635| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1635| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1635| ValueCategory = prvalue(load) -# 1636| getStmt(4): [ExprStmt] ExprStmt -# 1636| getExpr(): [AssignExpr] ... = ... -# 1636| Type = [IntType] int -# 1636| ValueCategory = lvalue -# 1636| getLValue(): [VariableAccess] r -# 1636| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1636| ValueCategory = prvalue(load) -# 1636| getRValue(): [Literal] 5 -# 1636| Type = [IntType] int -# 1636| Value = [Literal] 5 -# 1636| ValueCategory = prvalue -# 1636| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1636| Type = [IntType] int -# 1636| ValueCategory = lvalue -# 1637| getStmt(5): [DeclStmt] declaration -# 1637| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rr -# 1637| Type = [LValueReferenceType] int & -# 1637| getVariable().getInitializer(): [Initializer] initializer for rr -# 1637| getExpr(): [VariableAccess] r +# 1634| getDeclarationEntry(2): [VariableDeclarationEntry] definition of d +# 1634| Type = [LValueReferenceType] type & +#-----| getVariable().getInitializer(): [Initializer] initializer for d +# 1634| getExpr(): [FunctionCall] call to get +# 1634| Type = [LValueReferenceType] type & +# 1634| ValueCategory = prvalue +# 1634| getQualifier(): [VariableAccess] (unnamed local variable) +# 1634| Type = [Struct] StructuredBindingTupleRefGet +# 1634| ValueCategory = xvalue +# 1634| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1634| Type = [LValueReferenceType] type & +# 1634| ValueCategory = prvalue +# 1634| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1634| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1634| ValueCategory = lvalue +# 1634| getDeclarationEntry(3): [VariableDeclarationEntry] definition of r +# 1634| Type = [NestedTypedefType,UsingAliasTypedefType] type +#-----| getVariable().getInitializer(): [Initializer] initializer for r +# 1634| getExpr(): [FunctionCall] call to get +# 1634| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1634| ValueCategory = prvalue +# 1634| getQualifier(): [VariableAccess] (unnamed local variable) +# 1634| Type = [Struct] StructuredBindingTupleRefGet +# 1634| ValueCategory = xvalue +# 1634| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1634| Type = [LValueReferenceType] int & +# 1634| ValueCategory = prvalue +# 1634| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1634| Type = [IntType] int +# 1634| ValueCategory = lvalue +# 1635| getStmt(1): [ExprStmt] ExprStmt +# 1635| getExpr(): [AssignExpr] ... = ... +# 1635| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1635| ValueCategory = lvalue +# 1635| getLValue(): [VariableAccess] d +# 1635| Type = [LValueReferenceType] type & +# 1635| ValueCategory = prvalue(load) +# 1635| getRValue(): [Literal] 4.0 +# 1635| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1635| Value = [Literal] 4.0 +# 1635| ValueCategory = prvalue +# 1635| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1635| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1635| ValueCategory = lvalue +# 1636| getStmt(2): [DeclStmt] declaration +# 1636| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rd +# 1636| Type = [LValueReferenceType] double & +# 1636| getVariable().getInitializer(): [Initializer] initializer for rd +# 1636| getExpr(): [VariableAccess] d +# 1636| Type = [LValueReferenceType] type & +# 1636| ValueCategory = prvalue(load) +# 1636| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1636| Type = [LValueReferenceType] type & +# 1636| ValueCategory = prvalue +# 1636| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1636| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1636| ValueCategory = lvalue +# 1637| getStmt(3): [DeclStmt] declaration +# 1637| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v +# 1637| Type = [IntType] int +# 1637| getVariable().getInitializer(): [Initializer] initializer for v +# 1637| getExpr(): [VariableAccess] i +# 1637| Type = [LValueReferenceType] type & +# 1637| ValueCategory = prvalue(load) +# 1637| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) # 1637| Type = [NestedTypedefType,UsingAliasTypedefType] type # 1637| ValueCategory = prvalue(load) -# 1637| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1637| Type = [LValueReferenceType] int & -# 1637| ValueCategory = prvalue -# 1637| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1637| Type = [IntType] int -# 1637| ValueCategory = lvalue -# 1638| getStmt(6): [DeclStmt] declaration -# 1638| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w +# 1638| getStmt(4): [ExprStmt] ExprStmt +# 1638| getExpr(): [AssignExpr] ... = ... # 1638| Type = [IntType] int -# 1638| getVariable().getInitializer(): [Initializer] initializer for w -# 1638| getExpr(): [VariableAccess] r -# 1638| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1638| ValueCategory = prvalue(load) -# 1638| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1638| Type = [IntType] int -# 1638| ValueCategory = prvalue(load) -# 1641| getStmt(2): [BlockStmt] { ... } -# 1642| getStmt(0): [DeclStmt] declaration -# 1642| getDeclarationEntry(0): [VariableDeclarationEntry] definition of unnamed_local_variable -# 1642| Type = [Struct] StructuredBindingTupleRefGet -# 1642| getVariable().getInitializer(): [Initializer] initializer for unnamed_local_variable -# 1642| getExpr(): [VariableAccess] t -# 1642| Type = [Struct] StructuredBindingTupleRefGet -# 1642| ValueCategory = prvalue(load) -# 1643| getStmt(1): [DeclStmt] declaration -# 1643| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i -# 1643| Type = [LValueReferenceType] type & -# 1643| getVariable().getInitializer(): [Initializer] initializer for i -# 1643| getExpr(): [FunctionCall] call to get -# 1643| Type = [LValueReferenceType] type & -# 1643| ValueCategory = prvalue -# 1643| getQualifier(): [VariableAccess] unnamed_local_variable -# 1643| Type = [Struct] StructuredBindingTupleRefGet -# 1643| ValueCategory = lvalue -# 1643| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1643| Type = [LValueReferenceType] type & -# 1643| ValueCategory = prvalue -# 1643| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1643| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1643| ValueCategory = lvalue -# 1644| getStmt(2): [DeclStmt] declaration -# 1644| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d -# 1644| Type = [LValueReferenceType] type & -# 1644| getVariable().getInitializer(): [Initializer] initializer for d -# 1644| getExpr(): [FunctionCall] call to get -# 1644| Type = [LValueReferenceType] type & -# 1644| ValueCategory = prvalue -# 1644| getQualifier(): [VariableAccess] unnamed_local_variable -# 1644| Type = [Struct] StructuredBindingTupleRefGet -# 1644| ValueCategory = lvalue -# 1644| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1644| Type = [LValueReferenceType] type & -# 1644| ValueCategory = prvalue -# 1644| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1644| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1644| ValueCategory = lvalue -# 1645| getStmt(3): [DeclStmt] declaration -# 1645| getDeclarationEntry(0): [VariableDeclarationEntry] definition of r -# 1645| Type = [LValueReferenceType] int & -# 1645| getVariable().getInitializer(): [Initializer] initializer for r +# 1638| ValueCategory = lvalue +# 1638| getLValue(): [VariableAccess] r +# 1638| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1638| ValueCategory = prvalue(load) +# 1638| getRValue(): [Literal] 5 +# 1638| Type = [IntType] int +# 1638| Value = [Literal] 5 +# 1638| ValueCategory = prvalue +# 1638| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1638| Type = [IntType] int +# 1638| ValueCategory = lvalue +# 1639| getStmt(5): [DeclStmt] declaration +# 1639| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rr +# 1639| Type = [LValueReferenceType] int & +# 1639| getVariable().getInitializer(): [Initializer] initializer for rr +# 1639| getExpr(): [VariableAccess] r +# 1639| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1639| ValueCategory = prvalue(load) +# 1639| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1639| Type = [LValueReferenceType] int & +# 1639| ValueCategory = prvalue +# 1639| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1639| Type = [IntType] int +# 1639| ValueCategory = lvalue +# 1640| getStmt(6): [DeclStmt] declaration +# 1640| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w +# 1640| Type = [IntType] int +# 1640| getVariable().getInitializer(): [Initializer] initializer for w +# 1640| getExpr(): [VariableAccess] r +# 1640| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1640| ValueCategory = prvalue(load) +# 1640| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1640| Type = [IntType] int +# 1640| ValueCategory = prvalue(load) +# 1643| getStmt(2): [BlockStmt] { ... } +# 1644| getStmt(0): [DeclStmt] declaration +# 1644| getDeclarationEntry(0): [VariableDeclarationEntry] definition of unnamed_local_variable +# 1644| Type = [Struct] StructuredBindingTupleRefGet +# 1644| getVariable().getInitializer(): [Initializer] initializer for unnamed_local_variable +# 1644| getExpr(): [VariableAccess] t +# 1644| Type = [Struct] StructuredBindingTupleRefGet +# 1644| ValueCategory = prvalue(load) +# 1645| getStmt(1): [DeclStmt] declaration +# 1645| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i +# 1645| Type = [LValueReferenceType] type & +# 1645| getVariable().getInitializer(): [Initializer] initializer for i # 1645| getExpr(): [FunctionCall] call to get -# 1645| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1645| Type = [LValueReferenceType] type & # 1645| ValueCategory = prvalue # 1645| getQualifier(): [VariableAccess] unnamed_local_variable # 1645| Type = [Struct] StructuredBindingTupleRefGet # 1645| ValueCategory = lvalue # 1645| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1645| Type = [LValueReferenceType] int & +# 1645| Type = [LValueReferenceType] type & # 1645| ValueCategory = prvalue # 1645| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1645| Type = [IntType] int +# 1645| Type = [NestedTypedefType,UsingAliasTypedefType] type # 1645| ValueCategory = lvalue -# 1646| getStmt(4): [ExprStmt] ExprStmt -# 1646| getExpr(): [AssignExpr] ... = ... -# 1646| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1646| ValueCategory = lvalue -# 1646| getLValue(): [VariableAccess] d -# 1646| Type = [LValueReferenceType] type & -# 1646| ValueCategory = prvalue(load) -# 1646| getRValue(): [Literal] 4.0 -# 1646| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1646| Value = [Literal] 4.0 -# 1646| ValueCategory = prvalue -# 1646| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1646| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1646| ValueCategory = lvalue -# 1647| getStmt(5): [DeclStmt] declaration -# 1647| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rd -# 1647| Type = [LValueReferenceType] double & -# 1647| getVariable().getInitializer(): [Initializer] initializer for rd -# 1647| getExpr(): [VariableAccess] d -# 1647| Type = [LValueReferenceType] type & -# 1647| ValueCategory = prvalue(load) +# 1646| getStmt(2): [DeclStmt] declaration +# 1646| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d +# 1646| Type = [LValueReferenceType] type & +# 1646| getVariable().getInitializer(): [Initializer] initializer for d +# 1646| getExpr(): [FunctionCall] call to get +# 1646| Type = [LValueReferenceType] type & +# 1646| ValueCategory = prvalue +# 1646| getQualifier(): [VariableAccess] unnamed_local_variable +# 1646| Type = [Struct] StructuredBindingTupleRefGet +# 1646| ValueCategory = lvalue +# 1646| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1646| Type = [LValueReferenceType] type & +# 1646| ValueCategory = prvalue +# 1646| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1646| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1646| ValueCategory = lvalue +# 1647| getStmt(3): [DeclStmt] declaration +# 1647| getDeclarationEntry(0): [VariableDeclarationEntry] definition of r +# 1647| Type = [LValueReferenceType] int & +# 1647| getVariable().getInitializer(): [Initializer] initializer for r +# 1647| getExpr(): [FunctionCall] call to get +# 1647| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1647| ValueCategory = prvalue +# 1647| getQualifier(): [VariableAccess] unnamed_local_variable +# 1647| Type = [Struct] StructuredBindingTupleRefGet +# 1647| ValueCategory = lvalue # 1647| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1647| Type = [LValueReferenceType] type & +# 1647| Type = [LValueReferenceType] int & # 1647| ValueCategory = prvalue # 1647| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1647| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1647| Type = [IntType] int # 1647| ValueCategory = lvalue -# 1648| getStmt(6): [DeclStmt] declaration -# 1648| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v -# 1648| Type = [IntType] int -# 1648| getVariable().getInitializer(): [Initializer] initializer for v -# 1648| getExpr(): [VariableAccess] i -# 1648| Type = [LValueReferenceType] type & -# 1648| ValueCategory = prvalue(load) -# 1648| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1648| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1648| ValueCategory = prvalue(load) -# 1649| getStmt(7): [ExprStmt] ExprStmt -# 1649| getExpr(): [AssignExpr] ... = ... -# 1649| Type = [IntType] int -# 1649| ValueCategory = lvalue -# 1649| getLValue(): [VariableAccess] r -# 1649| Type = [LValueReferenceType] int & -# 1649| ValueCategory = prvalue(load) -# 1649| getRValue(): [Literal] 5 -# 1649| Type = [IntType] int -# 1649| Value = [Literal] 5 -# 1649| ValueCategory = prvalue -# 1649| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1649| Type = [IntType] int -# 1649| ValueCategory = lvalue -# 1650| getStmt(8): [DeclStmt] declaration -# 1650| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rr -# 1650| Type = [LValueReferenceType] int & -# 1650| getVariable().getInitializer(): [Initializer] initializer for rr -# 1650| getExpr(): [VariableAccess] r -# 1650| Type = [LValueReferenceType] int & +# 1648| getStmt(4): [ExprStmt] ExprStmt +# 1648| getExpr(): [AssignExpr] ... = ... +# 1648| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1648| ValueCategory = lvalue +# 1648| getLValue(): [VariableAccess] d +# 1648| Type = [LValueReferenceType] type & +# 1648| ValueCategory = prvalue(load) +# 1648| getRValue(): [Literal] 4.0 +# 1648| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1648| Value = [Literal] 4.0 +# 1648| ValueCategory = prvalue +# 1648| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1648| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1648| ValueCategory = lvalue +# 1649| getStmt(5): [DeclStmt] declaration +# 1649| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rd +# 1649| Type = [LValueReferenceType] double & +# 1649| getVariable().getInitializer(): [Initializer] initializer for rd +# 1649| getExpr(): [VariableAccess] d +# 1649| Type = [LValueReferenceType] type & +# 1649| ValueCategory = prvalue(load) +# 1649| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1649| Type = [LValueReferenceType] type & +# 1649| ValueCategory = prvalue +# 1649| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1649| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1649| ValueCategory = lvalue +# 1650| getStmt(6): [DeclStmt] declaration +# 1650| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v +# 1650| Type = [IntType] int +# 1650| getVariable().getInitializer(): [Initializer] initializer for v +# 1650| getExpr(): [VariableAccess] i +# 1650| Type = [LValueReferenceType] type & # 1650| ValueCategory = prvalue(load) -# 1650| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1650| Type = [LValueReferenceType] int & -# 1650| ValueCategory = prvalue -# 1650| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1650| Type = [IntType] int -# 1650| ValueCategory = lvalue -# 1651| getStmt(9): [DeclStmt] declaration -# 1651| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w +# 1650| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1650| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1650| ValueCategory = prvalue(load) +# 1651| getStmt(7): [ExprStmt] ExprStmt +# 1651| getExpr(): [AssignExpr] ... = ... # 1651| Type = [IntType] int -# 1651| getVariable().getInitializer(): [Initializer] initializer for w -# 1651| getExpr(): [VariableAccess] r -# 1651| Type = [LValueReferenceType] int & -# 1651| ValueCategory = prvalue(load) -# 1651| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1651| Type = [IntType] int -# 1651| ValueCategory = prvalue(load) -# 1653| getStmt(3): [ReturnStmt] return ... -# 1655| [CopyAssignmentOperator] StructuredBindingTupleNoRefGet& StructuredBindingTupleNoRefGet::operator=(StructuredBindingTupleNoRefGet const&) -# 1655| : +# 1651| ValueCategory = lvalue +# 1651| getLValue(): [VariableAccess] r +# 1651| Type = [LValueReferenceType] int & +# 1651| ValueCategory = prvalue(load) +# 1651| getRValue(): [Literal] 5 +# 1651| Type = [IntType] int +# 1651| Value = [Literal] 5 +# 1651| ValueCategory = prvalue +# 1651| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1651| Type = [IntType] int +# 1651| ValueCategory = lvalue +# 1652| getStmt(8): [DeclStmt] declaration +# 1652| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rr +# 1652| Type = [LValueReferenceType] int & +# 1652| getVariable().getInitializer(): [Initializer] initializer for rr +# 1652| getExpr(): [VariableAccess] r +# 1652| Type = [LValueReferenceType] int & +# 1652| ValueCategory = prvalue(load) +# 1652| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1652| Type = [LValueReferenceType] int & +# 1652| ValueCategory = prvalue +# 1652| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1652| Type = [IntType] int +# 1652| ValueCategory = lvalue +# 1653| getStmt(9): [DeclStmt] declaration +# 1653| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w +# 1653| Type = [IntType] int +# 1653| getVariable().getInitializer(): [Initializer] initializer for w +# 1653| getExpr(): [VariableAccess] r +# 1653| Type = [LValueReferenceType] int & +# 1653| ValueCategory = prvalue(load) +# 1653| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1653| Type = [IntType] int +# 1653| ValueCategory = prvalue(load) +# 1655| getStmt(3): [ReturnStmt] return ... +# 1657| [CopyAssignmentOperator] StructuredBindingTupleNoRefGet& StructuredBindingTupleNoRefGet::operator=(StructuredBindingTupleNoRefGet const&) +# 1657| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const StructuredBindingTupleNoRefGet & -# 1655| [Constructor] void StructuredBindingTupleNoRefGet::StructuredBindingTupleNoRefGet() -# 1655| : -# 1655| : -# 1655| getInitializer(0): [ConstructorFieldInit] constructor init of field i -# 1655| Type = [IntType] int -# 1655| ValueCategory = prvalue -# 1655| getInitializer(1): [ConstructorFieldInit] constructor init of field r -# 1655| Type = [LValueReferenceType] int & -# 1655| ValueCategory = prvalue -# 1655| getEntryPoint(): [BlockStmt] { ... } -# 1655| getStmt(0): [ReturnStmt] return ... -# 1655| [CopyConstructor] void StructuredBindingTupleNoRefGet::StructuredBindingTupleNoRefGet(StructuredBindingTupleNoRefGet const&) -# 1655| : +# 1657| [Constructor] void StructuredBindingTupleNoRefGet::StructuredBindingTupleNoRefGet() +# 1657| : +# 1657| : +# 1657| getInitializer(0): [ConstructorFieldInit] constructor init of field i +# 1657| Type = [IntType] int +# 1657| ValueCategory = prvalue +# 1657| getInitializer(1): [ConstructorFieldInit] constructor init of field r +# 1657| Type = [LValueReferenceType] int & +# 1657| ValueCategory = prvalue +# 1657| getEntryPoint(): [BlockStmt] { ... } +# 1657| getStmt(0): [ReturnStmt] return ... +# 1657| [CopyConstructor] void StructuredBindingTupleNoRefGet::StructuredBindingTupleNoRefGet(StructuredBindingTupleNoRefGet const&) +# 1657| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const StructuredBindingTupleNoRefGet & -# 1655| [MoveConstructor] void StructuredBindingTupleNoRefGet::StructuredBindingTupleNoRefGet(StructuredBindingTupleNoRefGet&&) -# 1655| : +# 1657| [MoveConstructor] void StructuredBindingTupleNoRefGet::StructuredBindingTupleNoRefGet(StructuredBindingTupleNoRefGet&&) +# 1657| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] StructuredBindingTupleNoRefGet && -# 1660| [MemberFunction,TemplateFunction] type StructuredBindingTupleNoRefGet::get() -# 1660| : -# 1664| [CopyAssignmentOperator] std::tuple_size& std::tuple_size::operator=(std::tuple_size const&) -# 1664| : +# 1662| [MemberFunction,TemplateFunction] type StructuredBindingTupleNoRefGet::get() +# 1662| : +# 1666| [CopyAssignmentOperator] std::tuple_size& std::tuple_size::operator=(std::tuple_size const&) +# 1666| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const tuple_size & -# 1664| [MoveAssignmentOperator] std::tuple_size& std::tuple_size::operator=(std::tuple_size&&) -# 1664| : +# 1666| [MoveAssignmentOperator] std::tuple_size& std::tuple_size::operator=(std::tuple_size&&) +# 1666| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] tuple_size && -# 1669| [CopyAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element const&) -# 1669| : +# 1671| [CopyAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element const&) +# 1671| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const tuple_element<0, StructuredBindingTupleNoRefGet> & -# 1669| [MoveAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element&&) -# 1669| : +# 1671| [MoveAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element&&) +# 1671| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] tuple_element<0, StructuredBindingTupleNoRefGet> && -# 1673| [CopyAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element const&) -# 1673| : +# 1675| [CopyAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element const&) +# 1675| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const tuple_element<1, StructuredBindingTupleNoRefGet> & -# 1673| [MoveAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element&&) -# 1673| : +# 1675| [MoveAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element&&) +# 1675| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] tuple_element<1, StructuredBindingTupleNoRefGet> && -# 1677| [CopyAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element const&) -# 1677| : +# 1679| [CopyAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element const&) +# 1679| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const tuple_element<2, StructuredBindingTupleNoRefGet> & -# 1677| [MoveAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element&&) -# 1677| : +# 1679| [MoveAssignmentOperator] std::tuple_element& std::tuple_element::operator=(std::tuple_element&&) +# 1679| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] tuple_element<2, StructuredBindingTupleNoRefGet> && -# 1682| [FunctionTemplateSpecialization,MemberFunction] std::tuple_element::type StructuredBindingTupleNoRefGet::get() -# 1682| : -# 1682| getEntryPoint(): [BlockStmt] { ... } -# 1683| getStmt(0): [ReturnStmt] return ... -# 1683| getExpr(): [ImplicitThisFieldAccess,PointerFieldAccess] i -# 1683| Type = [IntType] int -# 1683| ValueCategory = prvalue(load) -# 1683| getQualifier(): [ThisExpr] this -# 1683| Type = [PointerType] StructuredBindingTupleNoRefGet * -# 1683| ValueCategory = prvalue(load) -# 1686| [FunctionTemplateSpecialization,MemberFunction] std::tuple_element::type StructuredBindingTupleNoRefGet::get() -# 1686| : -# 1686| getEntryPoint(): [BlockStmt] { ... } -# 1687| getStmt(0): [ReturnStmt] return ... -# 1687| getExpr(): [ImplicitThisFieldAccess,PointerFieldAccess] r -# 1687| Type = [LValueReferenceType] int & -# 1687| ValueCategory = prvalue(load) -# 1687| getQualifier(): [ThisExpr] this -# 1687| Type = [PointerType] StructuredBindingTupleNoRefGet * -# 1687| ValueCategory = prvalue(load) -# 1687| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1687| Type = [LValueReferenceType] int & -# 1687| ValueCategory = prvalue -# 1687| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1687| Type = [IntType] int -# 1687| ValueCategory = lvalue -# 1690| [FunctionTemplateSpecialization,MemberFunction] std::tuple_element::type StructuredBindingTupleNoRefGet::get() -# 1690| : -# 1690| getEntryPoint(): [BlockStmt] { ... } -# 1691| getStmt(0): [ReturnStmt] return ... -# 1691| getExpr(): [Literal] 5 -# 1691| Type = [IntType] int -# 1691| Value = [Literal] 5 -# 1691| ValueCategory = prvalue -# 1691| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1691| Type = [LValueReferenceType] int & -# 1691| ValueCategory = prvalue -# 1691| getExpr(): [TemporaryObjectExpr] temporary object -# 1691| Type = [IntType] int -# 1691| ValueCategory = lvalue -# 1694| [TopLevelFunction] void tuple_structured_binding_no_ref_get() -# 1694| : -# 1694| getEntryPoint(): [BlockStmt] { ... } -# 1695| getStmt(0): [DeclStmt] declaration -# 1695| getDeclarationEntry(0): [VariableDeclarationEntry] definition of t -# 1695| Type = [Struct] StructuredBindingTupleNoRefGet -# 1695| getVariable().getInitializer(): [Initializer] initializer for t -# 1695| getExpr(): [ConstructorCall] call to StructuredBindingTupleNoRefGet -# 1695| Type = [VoidType] void -# 1695| ValueCategory = prvalue -# 1697| getStmt(1): [BlockStmt] { ... } -# 1698| getStmt(0): [DeclStmt] declaration -# 1698| getDeclarationEntry(0): [VariableDeclarationEntry] definition of (unnamed local variable) -# 1698| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & -# 1698| getVariable().getInitializer(): [Initializer] initializer for (unnamed local variable) -# 1698| getExpr(): [VariableAccess] t -# 1698| Type = [Struct] StructuredBindingTupleNoRefGet -# 1698| ValueCategory = lvalue -# 1698| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1698| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & -# 1698| ValueCategory = prvalue -# 1698| getDeclarationEntry(1): [VariableDeclarationEntry] definition of i -# 1698| Type = [RValueReferenceType] type && +# 1684| [FunctionTemplateSpecialization,MemberFunction] std::tuple_element::type StructuredBindingTupleNoRefGet::get() +# 1684| : +# 1684| getEntryPoint(): [BlockStmt] { ... } +# 1685| getStmt(0): [ReturnStmt] return ... +# 1685| getExpr(): [ImplicitThisFieldAccess,PointerFieldAccess] i +# 1685| Type = [IntType] int +# 1685| ValueCategory = prvalue(load) +# 1685| getQualifier(): [ThisExpr] this +# 1685| Type = [PointerType] StructuredBindingTupleNoRefGet * +# 1685| ValueCategory = prvalue(load) +# 1688| [FunctionTemplateSpecialization,MemberFunction] std::tuple_element::type StructuredBindingTupleNoRefGet::get() +# 1688| : +# 1688| getEntryPoint(): [BlockStmt] { ... } +# 1689| getStmt(0): [ReturnStmt] return ... +# 1689| getExpr(): [ImplicitThisFieldAccess,PointerFieldAccess] r +# 1689| Type = [LValueReferenceType] int & +# 1689| ValueCategory = prvalue(load) +# 1689| getQualifier(): [ThisExpr] this +# 1689| Type = [PointerType] StructuredBindingTupleNoRefGet * +# 1689| ValueCategory = prvalue(load) +# 1689| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1689| Type = [LValueReferenceType] int & +# 1689| ValueCategory = prvalue +# 1689| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1689| Type = [IntType] int +# 1689| ValueCategory = lvalue +# 1692| [FunctionTemplateSpecialization,MemberFunction] std::tuple_element::type StructuredBindingTupleNoRefGet::get() +# 1692| : +# 1692| getEntryPoint(): [BlockStmt] { ... } +# 1693| getStmt(0): [ReturnStmt] return ... +# 1693| getExpr(): [Literal] 5 +# 1693| Type = [IntType] int +# 1693| Value = [Literal] 5 +# 1693| ValueCategory = prvalue +# 1693| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1693| Type = [LValueReferenceType] int & +# 1693| ValueCategory = prvalue +# 1693| getExpr(): [TemporaryObjectExpr] temporary object +# 1693| Type = [IntType] int +# 1693| ValueCategory = lvalue +# 1696| [TopLevelFunction] void tuple_structured_binding_no_ref_get() +# 1696| : +# 1696| getEntryPoint(): [BlockStmt] { ... } +# 1697| getStmt(0): [DeclStmt] declaration +# 1697| getDeclarationEntry(0): [VariableDeclarationEntry] definition of t +# 1697| Type = [Struct] StructuredBindingTupleNoRefGet +# 1697| getVariable().getInitializer(): [Initializer] initializer for t +# 1697| getExpr(): [ConstructorCall] call to StructuredBindingTupleNoRefGet +# 1697| Type = [VoidType] void +# 1697| ValueCategory = prvalue +# 1699| getStmt(1): [BlockStmt] { ... } +# 1700| getStmt(0): [DeclStmt] declaration +# 1700| getDeclarationEntry(0): [VariableDeclarationEntry] definition of (unnamed local variable) +# 1700| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & +# 1700| getVariable().getInitializer(): [Initializer] initializer for (unnamed local variable) +# 1700| getExpr(): [VariableAccess] t +# 1700| Type = [Struct] StructuredBindingTupleNoRefGet +# 1700| ValueCategory = lvalue +# 1700| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1700| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & +# 1700| ValueCategory = prvalue +# 1700| getDeclarationEntry(1): [VariableDeclarationEntry] definition of i +# 1700| Type = [RValueReferenceType] type && #-----| getVariable().getInitializer(): [Initializer] initializer for i -# 1698| getExpr(): [FunctionCall] call to get -# 1698| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1698| ValueCategory = prvalue -# 1698| getQualifier(): [VariableAccess] (unnamed local variable) -# 1698| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & -# 1698| ValueCategory = prvalue(load) -# 1698| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1698| Type = [Struct] StructuredBindingTupleNoRefGet -# 1698| ValueCategory = lvalue -# 1698| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1698| Type = [LValueReferenceType] type & -# 1698| ValueCategory = prvalue -# 1698| getExpr(): [TemporaryObjectExpr] temporary object -# 1698| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1698| ValueCategory = lvalue -# 1698| getDeclarationEntry(2): [VariableDeclarationEntry] definition of r -# 1698| Type = [NestedTypedefType,UsingAliasTypedefType] type -#-----| getVariable().getInitializer(): [Initializer] initializer for r -# 1698| getExpr(): [FunctionCall] call to get -# 1698| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1698| ValueCategory = prvalue -# 1698| getQualifier(): [VariableAccess] (unnamed local variable) -# 1698| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & -# 1698| ValueCategory = prvalue(load) -# 1698| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1698| Type = [Struct] StructuredBindingTupleNoRefGet -# 1698| ValueCategory = lvalue -# 1698| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1698| Type = [LValueReferenceType] int & -# 1698| ValueCategory = prvalue -# 1698| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1698| Type = [IntType] int -# 1698| ValueCategory = lvalue -# 1698| getDeclarationEntry(3): [VariableDeclarationEntry] definition of rv -# 1698| Type = [NestedTypedefType,UsingAliasTypedefType] type -#-----| getVariable().getInitializer(): [Initializer] initializer for rv -# 1698| getExpr(): [FunctionCall] call to get -# 1698| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1698| ValueCategory = prvalue -# 1698| getQualifier(): [VariableAccess] (unnamed local variable) -# 1698| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & -# 1698| ValueCategory = prvalue(load) -# 1698| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1698| Type = [Struct] StructuredBindingTupleNoRefGet -# 1698| ValueCategory = lvalue -# 1698| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1698| Type = [LValueReferenceType] int & -# 1698| ValueCategory = prvalue -# 1698| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1698| Type = [IntType] int -# 1698| ValueCategory = xvalue -# 1699| getStmt(1): [ExprStmt] ExprStmt -# 1699| getExpr(): [AssignExpr] ... = ... -# 1699| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1699| ValueCategory = lvalue -# 1699| getLValue(): [VariableAccess] i -# 1699| Type = [RValueReferenceType] type && -# 1699| ValueCategory = prvalue(load) -# 1699| getRValue(): [Literal] 4 -# 1699| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1699| Value = [Literal] 4 -# 1699| ValueCategory = prvalue -# 1699| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1699| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1699| ValueCategory = lvalue -# 1700| getStmt(2): [DeclStmt] declaration -# 1700| getDeclarationEntry(0): [VariableDeclarationEntry] definition of ri -# 1700| Type = [LValueReferenceType] int & -# 1700| getVariable().getInitializer(): [Initializer] initializer for ri -# 1700| getExpr(): [VariableAccess] i -# 1700| Type = [RValueReferenceType] type && -# 1700| ValueCategory = prvalue(load) +# 1700| getExpr(): [FunctionCall] call to get +# 1700| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1700| ValueCategory = prvalue +# 1700| getQualifier(): [VariableAccess] (unnamed local variable) +# 1700| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & +# 1700| ValueCategory = prvalue(load) +# 1700| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1700| Type = [Struct] StructuredBindingTupleNoRefGet +# 1700| ValueCategory = lvalue # 1700| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) # 1700| Type = [LValueReferenceType] type & # 1700| ValueCategory = prvalue -# 1700| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1700| getExpr(): [TemporaryObjectExpr] temporary object # 1700| Type = [NestedTypedefType,UsingAliasTypedefType] type # 1700| ValueCategory = lvalue -# 1701| getStmt(3): [DeclStmt] declaration -# 1701| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v -# 1701| Type = [IntType] int -# 1701| getVariable().getInitializer(): [Initializer] initializer for v -# 1701| getExpr(): [VariableAccess] i -# 1701| Type = [RValueReferenceType] type && -# 1701| ValueCategory = prvalue(load) -# 1701| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1701| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1701| ValueCategory = prvalue(load) -# 1702| getStmt(4): [ExprStmt] ExprStmt -# 1702| getExpr(): [AssignExpr] ... = ... -# 1702| Type = [IntType] int -# 1702| ValueCategory = lvalue -# 1702| getLValue(): [VariableAccess] r -# 1702| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1702| ValueCategory = prvalue(load) -# 1702| getRValue(): [Literal] 5 -# 1702| Type = [IntType] int -# 1702| Value = [Literal] 5 -# 1702| ValueCategory = prvalue -# 1702| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1702| Type = [IntType] int -# 1702| ValueCategory = lvalue -# 1703| getStmt(5): [DeclStmt] declaration -# 1703| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rr -# 1703| Type = [LValueReferenceType] int & -# 1703| getVariable().getInitializer(): [Initializer] initializer for rr -# 1703| getExpr(): [VariableAccess] r +# 1700| getDeclarationEntry(2): [VariableDeclarationEntry] definition of r +# 1700| Type = [NestedTypedefType,UsingAliasTypedefType] type +#-----| getVariable().getInitializer(): [Initializer] initializer for r +# 1700| getExpr(): [FunctionCall] call to get +# 1700| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1700| ValueCategory = prvalue +# 1700| getQualifier(): [VariableAccess] (unnamed local variable) +# 1700| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & +# 1700| ValueCategory = prvalue(load) +# 1700| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1700| Type = [Struct] StructuredBindingTupleNoRefGet +# 1700| ValueCategory = lvalue +# 1700| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1700| Type = [LValueReferenceType] int & +# 1700| ValueCategory = prvalue +# 1700| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1700| Type = [IntType] int +# 1700| ValueCategory = lvalue +# 1700| getDeclarationEntry(3): [VariableDeclarationEntry] definition of rv +# 1700| Type = [NestedTypedefType,UsingAliasTypedefType] type +#-----| getVariable().getInitializer(): [Initializer] initializer for rv +# 1700| getExpr(): [FunctionCall] call to get +# 1700| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1700| ValueCategory = prvalue +# 1700| getQualifier(): [VariableAccess] (unnamed local variable) +# 1700| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & +# 1700| ValueCategory = prvalue(load) +# 1700| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1700| Type = [Struct] StructuredBindingTupleNoRefGet +# 1700| ValueCategory = lvalue +# 1700| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1700| Type = [LValueReferenceType] int & +# 1700| ValueCategory = prvalue +# 1700| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1700| Type = [IntType] int +# 1700| ValueCategory = xvalue +# 1701| getStmt(1): [ExprStmt] ExprStmt +# 1701| getExpr(): [AssignExpr] ... = ... +# 1701| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1701| ValueCategory = lvalue +# 1701| getLValue(): [VariableAccess] i +# 1701| Type = [RValueReferenceType] type && +# 1701| ValueCategory = prvalue(load) +# 1701| getRValue(): [Literal] 4 +# 1701| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1701| Value = [Literal] 4 +# 1701| ValueCategory = prvalue +# 1701| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1701| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1701| ValueCategory = lvalue +# 1702| getStmt(2): [DeclStmt] declaration +# 1702| getDeclarationEntry(0): [VariableDeclarationEntry] definition of ri +# 1702| Type = [LValueReferenceType] int & +# 1702| getVariable().getInitializer(): [Initializer] initializer for ri +# 1702| getExpr(): [VariableAccess] i +# 1702| Type = [RValueReferenceType] type && +# 1702| ValueCategory = prvalue(load) +# 1702| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1702| Type = [LValueReferenceType] type & +# 1702| ValueCategory = prvalue +# 1702| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1702| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1702| ValueCategory = lvalue +# 1703| getStmt(3): [DeclStmt] declaration +# 1703| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v +# 1703| Type = [IntType] int +# 1703| getVariable().getInitializer(): [Initializer] initializer for v +# 1703| getExpr(): [VariableAccess] i +# 1703| Type = [RValueReferenceType] type && +# 1703| ValueCategory = prvalue(load) +# 1703| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) # 1703| Type = [NestedTypedefType,UsingAliasTypedefType] type # 1703| ValueCategory = prvalue(load) -# 1703| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1703| Type = [LValueReferenceType] int & -# 1703| ValueCategory = prvalue -# 1703| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1703| Type = [IntType] int -# 1703| ValueCategory = lvalue -# 1704| getStmt(6): [DeclStmt] declaration -# 1704| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w +# 1704| getStmt(4): [ExprStmt] ExprStmt +# 1704| getExpr(): [AssignExpr] ... = ... # 1704| Type = [IntType] int -# 1704| getVariable().getInitializer(): [Initializer] initializer for w -# 1704| getExpr(): [VariableAccess] r -# 1704| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1704| ValueCategory = prvalue(load) -# 1704| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1704| Type = [IntType] int -# 1704| ValueCategory = prvalue(load) -# 1707| getStmt(2): [BlockStmt] { ... } -# 1708| getStmt(0): [DeclStmt] declaration -# 1708| getDeclarationEntry(0): [VariableDeclarationEntry] definition of unnamed_local_variable -# 1708| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & -# 1708| getVariable().getInitializer(): [Initializer] initializer for unnamed_local_variable -# 1708| getExpr(): [VariableAccess] t -# 1708| Type = [Struct] StructuredBindingTupleNoRefGet -# 1708| ValueCategory = lvalue -# 1708| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1708| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & -# 1708| ValueCategory = prvalue -# 1709| getStmt(1): [DeclStmt] declaration -# 1709| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i -# 1709| Type = [RValueReferenceType] type && -# 1709| getVariable().getInitializer(): [Initializer] initializer for i -# 1709| getExpr(): [FunctionCall] call to get -# 1709| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1709| ValueCategory = prvalue -# 1709| getQualifier(): [VariableAccess] unnamed_local_variable -# 1709| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & -# 1709| ValueCategory = prvalue(load) -# 1709| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1709| Type = [Struct] StructuredBindingTupleNoRefGet -# 1709| ValueCategory = lvalue -# 1709| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1709| Type = [LValueReferenceType] type & -# 1709| ValueCategory = prvalue -# 1709| getExpr(): [TemporaryObjectExpr] temporary object -# 1709| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1709| ValueCategory = lvalue -# 1710| getStmt(2): [DeclStmt] declaration -# 1710| getDeclarationEntry(0): [VariableDeclarationEntry] definition of r -# 1710| Type = [LValueReferenceType] int & -# 1710| getVariable().getInitializer(): [Initializer] initializer for r -# 1710| getExpr(): [FunctionCall] call to get -# 1710| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1710| ValueCategory = prvalue -# 1710| getQualifier(): [VariableAccess] unnamed_local_variable -# 1710| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & -# 1710| ValueCategory = prvalue(load) -# 1710| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1710| Type = [Struct] StructuredBindingTupleNoRefGet -# 1710| ValueCategory = lvalue +# 1704| ValueCategory = lvalue +# 1704| getLValue(): [VariableAccess] r +# 1704| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1704| ValueCategory = prvalue(load) +# 1704| getRValue(): [Literal] 5 +# 1704| Type = [IntType] int +# 1704| Value = [Literal] 5 +# 1704| ValueCategory = prvalue +# 1704| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1704| Type = [IntType] int +# 1704| ValueCategory = lvalue +# 1705| getStmt(5): [DeclStmt] declaration +# 1705| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rr +# 1705| Type = [LValueReferenceType] int & +# 1705| getVariable().getInitializer(): [Initializer] initializer for rr +# 1705| getExpr(): [VariableAccess] r +# 1705| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1705| ValueCategory = prvalue(load) +# 1705| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1705| Type = [LValueReferenceType] int & +# 1705| ValueCategory = prvalue +# 1705| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1705| Type = [IntType] int +# 1705| ValueCategory = lvalue +# 1706| getStmt(6): [DeclStmt] declaration +# 1706| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w +# 1706| Type = [IntType] int +# 1706| getVariable().getInitializer(): [Initializer] initializer for w +# 1706| getExpr(): [VariableAccess] r +# 1706| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1706| ValueCategory = prvalue(load) +# 1706| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1706| Type = [IntType] int +# 1706| ValueCategory = prvalue(load) +# 1709| getStmt(2): [BlockStmt] { ... } +# 1710| getStmt(0): [DeclStmt] declaration +# 1710| getDeclarationEntry(0): [VariableDeclarationEntry] definition of unnamed_local_variable +# 1710| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & +# 1710| getVariable().getInitializer(): [Initializer] initializer for unnamed_local_variable +# 1710| getExpr(): [VariableAccess] t +# 1710| Type = [Struct] StructuredBindingTupleNoRefGet +# 1710| ValueCategory = lvalue # 1710| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1710| Type = [LValueReferenceType] int & +# 1710| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & # 1710| ValueCategory = prvalue -# 1710| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1710| Type = [IntType] int -# 1710| ValueCategory = lvalue -# 1711| getStmt(3): [DeclStmt] declaration -# 1711| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rv -# 1711| Type = [RValueReferenceType] int && -# 1711| getVariable().getInitializer(): [Initializer] initializer for rv +# 1711| getStmt(1): [DeclStmt] declaration +# 1711| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i +# 1711| Type = [RValueReferenceType] type && +# 1711| getVariable().getInitializer(): [Initializer] initializer for i # 1711| getExpr(): [FunctionCall] call to get # 1711| Type = [NestedTypedefType,UsingAliasTypedefType] type # 1711| ValueCategory = prvalue @@ -16597,113 +16559,151 @@ ir.cpp: # 1711| Type = [Struct] StructuredBindingTupleNoRefGet # 1711| ValueCategory = lvalue # 1711| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1711| Type = [LValueReferenceType] int & +# 1711| Type = [LValueReferenceType] type & # 1711| ValueCategory = prvalue -# 1711| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1711| Type = [IntType] int -# 1711| ValueCategory = xvalue -# 1712| getStmt(4): [ExprStmt] ExprStmt -# 1712| getExpr(): [AssignExpr] ... = ... -# 1712| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1712| ValueCategory = lvalue -# 1712| getLValue(): [VariableAccess] i -# 1712| Type = [RValueReferenceType] type && -# 1712| ValueCategory = prvalue(load) -# 1712| getRValue(): [Literal] 4 -# 1712| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1712| Value = [Literal] 4 -# 1712| ValueCategory = prvalue -# 1712| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1712| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1712| ValueCategory = lvalue -# 1713| getStmt(5): [DeclStmt] declaration -# 1713| getDeclarationEntry(0): [VariableDeclarationEntry] definition of ri -# 1713| Type = [LValueReferenceType] int & -# 1713| getVariable().getInitializer(): [Initializer] initializer for ri -# 1713| getExpr(): [VariableAccess] i -# 1713| Type = [RValueReferenceType] type && -# 1713| ValueCategory = prvalue(load) +# 1711| getExpr(): [TemporaryObjectExpr] temporary object +# 1711| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1711| ValueCategory = lvalue +# 1712| getStmt(2): [DeclStmt] declaration +# 1712| getDeclarationEntry(0): [VariableDeclarationEntry] definition of r +# 1712| Type = [LValueReferenceType] int & +# 1712| getVariable().getInitializer(): [Initializer] initializer for r +# 1712| getExpr(): [FunctionCall] call to get +# 1712| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1712| ValueCategory = prvalue +# 1712| getQualifier(): [VariableAccess] unnamed_local_variable +# 1712| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & +# 1712| ValueCategory = prvalue(load) +# 1712| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1712| Type = [Struct] StructuredBindingTupleNoRefGet +# 1712| ValueCategory = lvalue +# 1712| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1712| Type = [LValueReferenceType] int & +# 1712| ValueCategory = prvalue +# 1712| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1712| Type = [IntType] int +# 1712| ValueCategory = lvalue +# 1713| getStmt(3): [DeclStmt] declaration +# 1713| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rv +# 1713| Type = [RValueReferenceType] int && +# 1713| getVariable().getInitializer(): [Initializer] initializer for rv +# 1713| getExpr(): [FunctionCall] call to get +# 1713| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1713| ValueCategory = prvalue +# 1713| getQualifier(): [VariableAccess] unnamed_local_variable +# 1713| Type = [LValueReferenceType] StructuredBindingTupleNoRefGet & +# 1713| ValueCategory = prvalue(load) +# 1713| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1713| Type = [Struct] StructuredBindingTupleNoRefGet +# 1713| ValueCategory = lvalue # 1713| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1713| Type = [LValueReferenceType] type & +# 1713| Type = [LValueReferenceType] int & # 1713| ValueCategory = prvalue # 1713| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1713| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1713| ValueCategory = lvalue -# 1714| getStmt(6): [DeclStmt] declaration -# 1714| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v -# 1714| Type = [IntType] int -# 1714| getVariable().getInitializer(): [Initializer] initializer for v -# 1714| getExpr(): [VariableAccess] i -# 1714| Type = [RValueReferenceType] type && -# 1714| ValueCategory = prvalue(load) -# 1714| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1714| Type = [NestedTypedefType,UsingAliasTypedefType] type -# 1714| ValueCategory = prvalue(load) -# 1715| getStmt(7): [ExprStmt] ExprStmt -# 1715| getExpr(): [AssignExpr] ... = ... -# 1715| Type = [IntType] int -# 1715| ValueCategory = lvalue -# 1715| getLValue(): [VariableAccess] r -# 1715| Type = [LValueReferenceType] int & -# 1715| ValueCategory = prvalue(load) -# 1715| getRValue(): [Literal] 5 -# 1715| Type = [IntType] int -# 1715| Value = [Literal] 5 -# 1715| ValueCategory = prvalue -# 1715| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1715| Type = [IntType] int -# 1715| ValueCategory = lvalue -# 1716| getStmt(8): [DeclStmt] declaration -# 1716| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rr -# 1716| Type = [LValueReferenceType] int & -# 1716| getVariable().getInitializer(): [Initializer] initializer for rr -# 1716| getExpr(): [VariableAccess] r -# 1716| Type = [LValueReferenceType] int & +# 1713| Type = [IntType] int +# 1713| ValueCategory = xvalue +# 1714| getStmt(4): [ExprStmt] ExprStmt +# 1714| getExpr(): [AssignExpr] ... = ... +# 1714| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1714| ValueCategory = lvalue +# 1714| getLValue(): [VariableAccess] i +# 1714| Type = [RValueReferenceType] type && +# 1714| ValueCategory = prvalue(load) +# 1714| getRValue(): [Literal] 4 +# 1714| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1714| Value = [Literal] 4 +# 1714| ValueCategory = prvalue +# 1714| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1714| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1714| ValueCategory = lvalue +# 1715| getStmt(5): [DeclStmt] declaration +# 1715| getDeclarationEntry(0): [VariableDeclarationEntry] definition of ri +# 1715| Type = [LValueReferenceType] int & +# 1715| getVariable().getInitializer(): [Initializer] initializer for ri +# 1715| getExpr(): [VariableAccess] i +# 1715| Type = [RValueReferenceType] type && +# 1715| ValueCategory = prvalue(load) +# 1715| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1715| Type = [LValueReferenceType] type & +# 1715| ValueCategory = prvalue +# 1715| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1715| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1715| ValueCategory = lvalue +# 1716| getStmt(6): [DeclStmt] declaration +# 1716| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v +# 1716| Type = [IntType] int +# 1716| getVariable().getInitializer(): [Initializer] initializer for v +# 1716| getExpr(): [VariableAccess] i +# 1716| Type = [RValueReferenceType] type && # 1716| ValueCategory = prvalue(load) -# 1716| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1716| Type = [LValueReferenceType] int & -# 1716| ValueCategory = prvalue -# 1716| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1716| Type = [IntType] int -# 1716| ValueCategory = lvalue -# 1717| getStmt(9): [DeclStmt] declaration -# 1717| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w +# 1716| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1716| Type = [NestedTypedefType,UsingAliasTypedefType] type +# 1716| ValueCategory = prvalue(load) +# 1717| getStmt(7): [ExprStmt] ExprStmt +# 1717| getExpr(): [AssignExpr] ... = ... # 1717| Type = [IntType] int -# 1717| getVariable().getInitializer(): [Initializer] initializer for w -# 1717| getExpr(): [VariableAccess] r -# 1717| Type = [LValueReferenceType] int & -# 1717| ValueCategory = prvalue(load) -# 1717| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1717| Type = [IntType] int -# 1717| ValueCategory = prvalue(load) -# 1719| getStmt(3): [ReturnStmt] return ... -# 1721| [TopLevelFunction] void array_structured_binding_non_ref_init() -# 1721| : -# 1721| getEntryPoint(): [BlockStmt] { ... } -# 1722| getStmt(0): [DeclStmt] declaration -# 1722| getDeclarationEntry(0): [VariableDeclarationEntry] definition of xs -# 1722| Type = [ArrayType] int[2] -# 1722| getVariable().getInitializer(): [Initializer] initializer for xs -# 1722| getExpr(): [ArrayAggregateLiteral] {...} -# 1722| Type = [ArrayType] int[2] -# 1722| ValueCategory = prvalue -# 1722| getAnElementExpr(0): [Literal] 1 -# 1722| Type = [IntType] int -# 1722| Value = [Literal] 1 -# 1722| ValueCategory = prvalue -# 1722| getAnElementExpr(1): [Literal] 2 -# 1722| Type = [IntType] int -# 1722| Value = [Literal] 2 -# 1722| ValueCategory = prvalue -# 1723| getStmt(1): [DeclStmt] declaration -# 1723| getDeclarationEntry(0): [VariableDeclarationEntry] definition of (unnamed local variable) -# 1723| Type = [ArrayType] int[2] -# 1723| getVariable().getInitializer(): [Initializer] initializer for (unnamed local variable) -# 1723| getExpr(): [VariableAccess] xs -# 1723| Type = [ArrayType] int[2] -# 1723| ValueCategory = prvalue(load) -# 1723| getDeclarationEntry(1): [VariableDeclarationEntry] definition of x0 -# 1723| Type = [IntType] int +# 1717| ValueCategory = lvalue +# 1717| getLValue(): [VariableAccess] r +# 1717| Type = [LValueReferenceType] int & +# 1717| ValueCategory = prvalue(load) +# 1717| getRValue(): [Literal] 5 +# 1717| Type = [IntType] int +# 1717| Value = [Literal] 5 +# 1717| ValueCategory = prvalue +# 1717| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1717| Type = [IntType] int +# 1717| ValueCategory = lvalue +# 1718| getStmt(8): [DeclStmt] declaration +# 1718| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rr +# 1718| Type = [LValueReferenceType] int & +# 1718| getVariable().getInitializer(): [Initializer] initializer for rr +# 1718| getExpr(): [VariableAccess] r +# 1718| Type = [LValueReferenceType] int & +# 1718| ValueCategory = prvalue(load) +# 1718| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1718| Type = [LValueReferenceType] int & +# 1718| ValueCategory = prvalue +# 1718| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1718| Type = [IntType] int +# 1718| ValueCategory = lvalue +# 1719| getStmt(9): [DeclStmt] declaration +# 1719| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w +# 1719| Type = [IntType] int +# 1719| getVariable().getInitializer(): [Initializer] initializer for w +# 1719| getExpr(): [VariableAccess] r +# 1719| Type = [LValueReferenceType] int & +# 1719| ValueCategory = prvalue(load) +# 1719| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1719| Type = [IntType] int +# 1719| ValueCategory = prvalue(load) +# 1721| getStmt(3): [ReturnStmt] return ... +# 1723| [TopLevelFunction] void array_structured_binding_non_ref_init() +# 1723| : +# 1723| getEntryPoint(): [BlockStmt] { ... } +# 1724| getStmt(0): [DeclStmt] declaration +# 1724| getDeclarationEntry(0): [VariableDeclarationEntry] definition of xs +# 1724| Type = [ArrayType] int[2] +# 1724| getVariable().getInitializer(): [Initializer] initializer for xs +# 1724| getExpr(): [ArrayAggregateLiteral] {...} +# 1724| Type = [ArrayType] int[2] +# 1724| ValueCategory = prvalue +# 1724| getAnElementExpr(0): [Literal] 1 +# 1724| Type = [IntType] int +# 1724| Value = [Literal] 1 +# 1724| ValueCategory = prvalue +# 1724| getAnElementExpr(1): [Literal] 2 +# 1724| Type = [IntType] int +# 1724| Value = [Literal] 2 +# 1724| ValueCategory = prvalue +# 1725| getStmt(1): [DeclStmt] declaration +# 1725| getDeclarationEntry(0): [VariableDeclarationEntry] definition of (unnamed local variable) +# 1725| Type = [ArrayType] int[2] +# 1725| getVariable().getInitializer(): [Initializer] initializer for (unnamed local variable) +# 1725| getExpr(): [VariableAccess] xs +# 1725| Type = [ArrayType] int[2] +# 1725| ValueCategory = prvalue(load) +# 1725| getDeclarationEntry(1): [VariableDeclarationEntry] definition of x0 +# 1725| Type = [IntType] int #-----| getVariable().getInitializer(): [Initializer] initializer for x0 #-----| getExpr(): [ArrayExpr] access to array #-----| Type = [IntType] int @@ -16718,8 +16718,8 @@ ir.cpp: #-----| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion #-----| Type = [IntPointerType] int * #-----| ValueCategory = prvalue -# 1723| getDeclarationEntry(2): [VariableDeclarationEntry] definition of x1 -# 1723| Type = [IntType] int +# 1725| getDeclarationEntry(2): [VariableDeclarationEntry] definition of x1 +# 1725| Type = [IntType] int #-----| getVariable().getInitializer(): [Initializer] initializer for x1 #-----| getExpr(): [ArrayExpr] access to array #-----| Type = [IntType] int @@ -16734,351 +16734,351 @@ ir.cpp: #-----| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion #-----| Type = [IntPointerType] int * #-----| ValueCategory = prvalue -# 1724| getStmt(2): [ReturnStmt] return ... -# 1726| [CopyAssignmentOperator] CapturedLambdaMyObj& CapturedLambdaMyObj::operator=(CapturedLambdaMyObj const&) -# 1726| : +# 1726| getStmt(2): [ReturnStmt] return ... +# 1728| [CopyAssignmentOperator] CapturedLambdaMyObj& CapturedLambdaMyObj::operator=(CapturedLambdaMyObj const&) +# 1728| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const CapturedLambdaMyObj & -# 1726| [MoveAssignmentOperator] CapturedLambdaMyObj& CapturedLambdaMyObj::operator=(CapturedLambdaMyObj&&) -# 1726| : +# 1728| [MoveAssignmentOperator] CapturedLambdaMyObj& CapturedLambdaMyObj::operator=(CapturedLambdaMyObj&&) +# 1728| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] CapturedLambdaMyObj && -# 1726| [CopyConstructor] void CapturedLambdaMyObj::CapturedLambdaMyObj(CapturedLambdaMyObj const&) -# 1726| : +# 1728| [CopyConstructor] void CapturedLambdaMyObj::CapturedLambdaMyObj(CapturedLambdaMyObj const&) +# 1728| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const CapturedLambdaMyObj & -# 1726| [MoveConstructor] void CapturedLambdaMyObj::CapturedLambdaMyObj(CapturedLambdaMyObj&&) -# 1726| : +# 1728| [MoveConstructor] void CapturedLambdaMyObj::CapturedLambdaMyObj(CapturedLambdaMyObj&&) +# 1728| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] CapturedLambdaMyObj && -# 1729| [Constructor] void CapturedLambdaMyObj::CapturedLambdaMyObj() -# 1729| : -# 1729| : -# 1729| getEntryPoint(): [BlockStmt] { ... } -# 1729| getStmt(0): [ReturnStmt] return ... -# 1732| [TopLevelFunction] void captured_lambda(int, int&, int&&) -# 1732| : -# 1732| getParameter(0): [Parameter] x -# 1732| Type = [IntType] int -# 1732| getParameter(1): [Parameter] y -# 1732| Type = [LValueReferenceType] int & -# 1732| getParameter(2): [Parameter] z -# 1732| Type = [RValueReferenceType] int && -# 1733| getEntryPoint(): [BlockStmt] { ... } -# 1734| getStmt(0): [DeclStmt] declaration -# 1734| getDeclarationEntry(0): [VariableDeclarationEntry] definition of obj1 -# 1734| Type = [LValueReferenceType] const CapturedLambdaMyObj & -# 1734| getVariable().getInitializer(): [Initializer] initializer for obj1 -# 1734| getExpr(): [ConstructorCall] call to CapturedLambdaMyObj -# 1734| Type = [VoidType] void -# 1734| ValueCategory = prvalue -# 1734| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1734| Type = [LValueReferenceType] const CapturedLambdaMyObj & -# 1734| ValueCategory = prvalue -# 1734| getExpr(): [CStyleCast] (const CapturedLambdaMyObj)... -# 1734| Conversion = [GlvalueConversion] glvalue conversion -# 1734| Type = [SpecifiedType] const CapturedLambdaMyObj -# 1734| ValueCategory = lvalue -# 1734| getExpr(): [TemporaryObjectExpr] temporary object -# 1734| Type = [Class] CapturedLambdaMyObj -# 1734| ValueCategory = lvalue -# 1735| getStmt(1): [DeclStmt] declaration -# 1735| getDeclarationEntry(0): [VariableDeclarationEntry] definition of obj2 -# 1735| Type = [Class] CapturedLambdaMyObj -# 1735| getVariable().getInitializer(): [Initializer] initializer for obj2 -# 1735| getExpr(): [ConstructorCall] call to CapturedLambdaMyObj -# 1735| Type = [VoidType] void -# 1735| ValueCategory = prvalue -# 1737| getStmt(2): [DeclStmt] declaration -# 1737| getDeclarationEntry(0): [VariableDeclarationEntry] definition of lambda_outer -# 1737| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1737| getVariable().getInitializer(): [Initializer] initializer for lambda_outer -# 1737| getExpr(): [LambdaExpression] [...](...){...} -# 1737| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1731| [Constructor] void CapturedLambdaMyObj::CapturedLambdaMyObj() +# 1731| : +# 1731| : +# 1731| getEntryPoint(): [BlockStmt] { ... } +# 1731| getStmt(0): [ReturnStmt] return ... +# 1734| [TopLevelFunction] void captured_lambda(int, int&, int&&) +# 1734| : +# 1734| getParameter(0): [Parameter] x +# 1734| Type = [IntType] int +# 1734| getParameter(1): [Parameter] y +# 1734| Type = [LValueReferenceType] int & +# 1734| getParameter(2): [Parameter] z +# 1734| Type = [RValueReferenceType] int && +# 1735| getEntryPoint(): [BlockStmt] { ... } +# 1736| getStmt(0): [DeclStmt] declaration +# 1736| getDeclarationEntry(0): [VariableDeclarationEntry] definition of obj1 +# 1736| Type = [LValueReferenceType] const CapturedLambdaMyObj & +# 1736| getVariable().getInitializer(): [Initializer] initializer for obj1 +# 1736| getExpr(): [ConstructorCall] call to CapturedLambdaMyObj +# 1736| Type = [VoidType] void +# 1736| ValueCategory = prvalue +# 1736| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1736| Type = [LValueReferenceType] const CapturedLambdaMyObj & +# 1736| ValueCategory = prvalue +# 1736| getExpr(): [CStyleCast] (const CapturedLambdaMyObj)... +# 1736| Conversion = [GlvalueConversion] glvalue conversion +# 1736| Type = [SpecifiedType] const CapturedLambdaMyObj +# 1736| ValueCategory = lvalue +# 1736| getExpr(): [TemporaryObjectExpr] temporary object +# 1736| Type = [Class] CapturedLambdaMyObj +# 1736| ValueCategory = lvalue +# 1737| getStmt(1): [DeclStmt] declaration +# 1737| getDeclarationEntry(0): [VariableDeclarationEntry] definition of obj2 +# 1737| Type = [Class] CapturedLambdaMyObj +# 1737| getVariable().getInitializer(): [Initializer] initializer for obj2 +# 1737| getExpr(): [ConstructorCall] call to CapturedLambdaMyObj +# 1737| Type = [VoidType] void # 1737| ValueCategory = prvalue -# 1737| getInitializer(): [ClassAggregateLiteral] {...} -# 1737| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1737| ValueCategory = prvalue -# 1737| getAFieldExpr(obj1): [VariableAccess] obj1 -# 1737| Type = [LValueReferenceType] const CapturedLambdaMyObj & -# 1737| ValueCategory = prvalue(load) -# 1737| getAFieldExpr(obj2): [VariableAccess] obj2 -# 1737| Type = [Class] CapturedLambdaMyObj -# 1737| ValueCategory = prvalue(load) -# 1737| getAFieldExpr(x): [VariableAccess] x -# 1737| Type = [IntType] int -# 1737| ValueCategory = prvalue(load) -# 1737| getAFieldExpr(y): [VariableAccess] y -# 1737| Type = [LValueReferenceType] int & -# 1737| ValueCategory = prvalue(load) -# 1737| getAFieldExpr(z): [VariableAccess] z -# 1737| Type = [RValueReferenceType] int && -# 1737| ValueCategory = prvalue(load) +# 1739| getStmt(2): [DeclStmt] declaration +# 1739| getDeclarationEntry(0): [VariableDeclarationEntry] definition of lambda_outer +# 1739| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1739| getVariable().getInitializer(): [Initializer] initializer for lambda_outer +# 1739| getExpr(): [LambdaExpression] [...](...){...} +# 1739| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1739| ValueCategory = prvalue +# 1739| getInitializer(): [ClassAggregateLiteral] {...} +# 1739| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1739| ValueCategory = prvalue +# 1739| getAFieldExpr(obj1): [VariableAccess] obj1 +# 1739| Type = [LValueReferenceType] const CapturedLambdaMyObj & +# 1739| ValueCategory = prvalue(load) +# 1739| getAFieldExpr(obj2): [VariableAccess] obj2 +# 1739| Type = [Class] CapturedLambdaMyObj +# 1739| ValueCategory = prvalue(load) +# 1739| getAFieldExpr(x): [VariableAccess] x +# 1739| Type = [IntType] int +# 1739| ValueCategory = prvalue(load) +# 1739| getAFieldExpr(y): [VariableAccess] y +# 1739| Type = [LValueReferenceType] int & +# 1739| ValueCategory = prvalue(load) +# 1739| getAFieldExpr(z): [VariableAccess] z +# 1739| Type = [RValueReferenceType] int && +# 1739| ValueCategory = prvalue(load) #-----| getAFieldExpr(obj1).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [SpecifiedType] const CapturedLambdaMyObj #-----| ValueCategory = prvalue(load) -# 1739| getAFieldExpr(y).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1739| Type = [IntType] int -# 1739| ValueCategory = prvalue(load) -# 1739| getAFieldExpr(z).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1739| Type = [IntType] int -# 1739| ValueCategory = prvalue(load) -# 1740| getStmt(3): [ReturnStmt] return ... -# 1737| [CopyAssignmentOperator] (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1737, col. 25)& (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1737, col. 25)::operator=((void captured_lambda(int, int&, int&&))::(lambda [] type at line 1737, col. 25) const&) -# 1737| : +# 1741| getAFieldExpr(y).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1741| Type = [IntType] int +# 1741| ValueCategory = prvalue(load) +# 1741| getAFieldExpr(z).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1741| Type = [IntType] int +# 1741| ValueCategory = prvalue(load) +# 1742| getStmt(3): [ReturnStmt] return ... +# 1739| [CopyAssignmentOperator] (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1739, col. 25)& (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1739, col. 25)::operator=((void captured_lambda(int, int&, int&&))::(lambda [] type at line 1739, col. 25) const&) +# 1739| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const lambda [] type at line 1737, col. 25 & -# 1737| [CopyConstructor] void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1737, col. 25)::(unnamed constructor)((void captured_lambda(int, int&, int&&))::(lambda [] type at line 1737, col. 25) const&) -# 1737| : +#-----| Type = [LValueReferenceType] const lambda [] type at line 1739, col. 25 & +# 1739| [CopyConstructor] void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1739, col. 25)::(unnamed constructor)((void captured_lambda(int, int&, int&&))::(lambda [] type at line 1739, col. 25) const&) +# 1739| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const lambda [] type at line 1737, col. 25 & -# 1737| [MoveConstructor] void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1737, col. 25)::(unnamed constructor)((void captured_lambda(int, int&, int&&))::(lambda [] type at line 1737, col. 25)&&) -# 1737| : +#-----| Type = [LValueReferenceType] const lambda [] type at line 1739, col. 25 & +# 1739| [MoveConstructor] void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1739, col. 25)::(unnamed constructor)((void captured_lambda(int, int&, int&&))::(lambda [] type at line 1739, col. 25)&&) +# 1739| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [RValueReferenceType] lambda [] type at line 1737, col. 25 && -# 1737| [Constructor] void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1737, col. 25)::(unnamed constructor)() -# 1737| : -# 1737| [ConstMemberFunction] void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1737, col. 25)::operator()() const -# 1737| : -# 1737| getEntryPoint(): [BlockStmt] { ... } -# 1738| getStmt(0): [DeclStmt] declaration -# 1738| getDeclarationEntry(0): [VariableDeclarationEntry] definition of lambda_inner -# 1738| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1738| getVariable().getInitializer(): [Initializer] initializer for lambda_inner -# 1738| getExpr(): [LambdaExpression] [...](...){...} -# 1738| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1738| ValueCategory = prvalue -# 1738| getInitializer(): [ClassAggregateLiteral] {...} -# 1738| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1738| ValueCategory = prvalue -# 1738| getAFieldExpr(obj1): [PointerFieldAccess] obj1 -# 1738| Type = [SpecifiedType] const CapturedLambdaMyObj -# 1738| ValueCategory = prvalue(load) -# 1738| getQualifier(): [ThisExpr] this -# 1738| Type = [PointerType] lambda [] type at line 1738, col. 29 * -# 1738| ValueCategory = prvalue(load) -# 1738| getAFieldExpr(obj2): [PointerFieldAccess] obj2 -# 1738| Type = [Class] CapturedLambdaMyObj -# 1738| ValueCategory = prvalue(load) -# 1738| getQualifier(): [ThisExpr] this -# 1738| Type = [PointerType] lambda [] type at line 1738, col. 29 * -# 1738| ValueCategory = prvalue(load) -# 1738| getAFieldExpr(x): [PointerFieldAccess] x -# 1738| Type = [IntType] int -# 1738| ValueCategory = prvalue(load) -# 1738| getQualifier(): [ThisExpr] this -# 1738| Type = [PointerType] const lambda [] type at line 1737, col. 25 * -# 1738| ValueCategory = prvalue(load) -# 1738| getAFieldExpr(y): [PointerFieldAccess] y -# 1738| Type = [IntType] int -# 1738| ValueCategory = prvalue(load) -# 1738| getQualifier(): [ThisExpr] this -# 1738| Type = [PointerType] const lambda [] type at line 1737, col. 25 * -# 1738| ValueCategory = prvalue(load) -# 1738| getAFieldExpr(z): [PointerFieldAccess] z -# 1738| Type = [IntType] int -# 1738| ValueCategory = prvalue(load) -# 1738| getQualifier(): [ThisExpr] this -# 1738| Type = [PointerType] const lambda [] type at line 1737, col. 25 * -# 1738| ValueCategory = prvalue(load) -# 1739| getStmt(1): [ReturnStmt] return ... -# 1738| [CopyAssignmentOperator] (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1737, col. 25)::operator()() const)::(lambda [] type at line 1738, col. 29)& (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1737, col. 25)::operator()() const)::(lambda [] type at line 1738, col. 29)::operator=((void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1737, col. 25)::operator()() const)::(lambda [] type at line 1738, col. 29) const&) -# 1738| : +#-----| Type = [RValueReferenceType] lambda [] type at line 1739, col. 25 && +# 1739| [Constructor] void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1739, col. 25)::(unnamed constructor)() +# 1739| : +# 1739| [ConstMemberFunction] void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1739, col. 25)::operator()() const +# 1739| : +# 1739| getEntryPoint(): [BlockStmt] { ... } +# 1740| getStmt(0): [DeclStmt] declaration +# 1740| getDeclarationEntry(0): [VariableDeclarationEntry] definition of lambda_inner +# 1740| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1740| getVariable().getInitializer(): [Initializer] initializer for lambda_inner +# 1740| getExpr(): [LambdaExpression] [...](...){...} +# 1740| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1740| ValueCategory = prvalue +# 1740| getInitializer(): [ClassAggregateLiteral] {...} +# 1740| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1740| ValueCategory = prvalue +# 1740| getAFieldExpr(obj1): [PointerFieldAccess] obj1 +# 1740| Type = [SpecifiedType] const CapturedLambdaMyObj +# 1740| ValueCategory = prvalue(load) +# 1740| getQualifier(): [ThisExpr] this +# 1740| Type = [PointerType] lambda [] type at line 1740, col. 29 * +# 1740| ValueCategory = prvalue(load) +# 1740| getAFieldExpr(obj2): [PointerFieldAccess] obj2 +# 1740| Type = [Class] CapturedLambdaMyObj +# 1740| ValueCategory = prvalue(load) +# 1740| getQualifier(): [ThisExpr] this +# 1740| Type = [PointerType] lambda [] type at line 1740, col. 29 * +# 1740| ValueCategory = prvalue(load) +# 1740| getAFieldExpr(x): [PointerFieldAccess] x +# 1740| Type = [IntType] int +# 1740| ValueCategory = prvalue(load) +# 1740| getQualifier(): [ThisExpr] this +# 1740| Type = [PointerType] const lambda [] type at line 1739, col. 25 * +# 1740| ValueCategory = prvalue(load) +# 1740| getAFieldExpr(y): [PointerFieldAccess] y +# 1740| Type = [IntType] int +# 1740| ValueCategory = prvalue(load) +# 1740| getQualifier(): [ThisExpr] this +# 1740| Type = [PointerType] const lambda [] type at line 1739, col. 25 * +# 1740| ValueCategory = prvalue(load) +# 1740| getAFieldExpr(z): [PointerFieldAccess] z +# 1740| Type = [IntType] int +# 1740| ValueCategory = prvalue(load) +# 1740| getQualifier(): [ThisExpr] this +# 1740| Type = [PointerType] const lambda [] type at line 1739, col. 25 * +# 1740| ValueCategory = prvalue(load) +# 1741| getStmt(1): [ReturnStmt] return ... +# 1740| [CopyAssignmentOperator] (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1739, col. 25)::operator()() const)::(lambda [] type at line 1740, col. 29)& (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1739, col. 25)::operator()() const)::(lambda [] type at line 1740, col. 29)::operator=((void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1739, col. 25)::operator()() const)::(lambda [] type at line 1740, col. 29) const&) +# 1740| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const lambda [] type at line 1738, col. 29 & -# 1738| [CopyConstructor] void (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1737, col. 25)::operator()() const)::(lambda [] type at line 1738, col. 29)::(unnamed constructor)((void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1737, col. 25)::operator()() const)::(lambda [] type at line 1738, col. 29) const&) -# 1738| : +#-----| Type = [LValueReferenceType] const lambda [] type at line 1740, col. 29 & +# 1740| [CopyConstructor] void (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1739, col. 25)::operator()() const)::(lambda [] type at line 1740, col. 29)::(unnamed constructor)((void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1739, col. 25)::operator()() const)::(lambda [] type at line 1740, col. 29) const&) +# 1740| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const lambda [] type at line 1738, col. 29 & -# 1738| [MoveConstructor] void (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1737, col. 25)::operator()() const)::(lambda [] type at line 1738, col. 29)::(unnamed constructor)((void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1737, col. 25)::operator()() const)::(lambda [] type at line 1738, col. 29)&&) -# 1738| : +#-----| Type = [LValueReferenceType] const lambda [] type at line 1740, col. 29 & +# 1740| [MoveConstructor] void (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1739, col. 25)::operator()() const)::(lambda [] type at line 1740, col. 29)::(unnamed constructor)((void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1739, col. 25)::operator()() const)::(lambda [] type at line 1740, col. 29)&&) +# 1740| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [RValueReferenceType] lambda [] type at line 1738, col. 29 && -# 1738| [Constructor] void (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1737, col. 25)::operator()() const)::(lambda [] type at line 1738, col. 29)::(unnamed constructor)() -# 1738| : -# 1738| [ConstMemberFunction] void (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1737, col. 25)::operator()() const)::(lambda [] type at line 1738, col. 29)::operator()() const -# 1738| : -# 1738| getEntryPoint(): [BlockStmt] { ... } -# 1738| getStmt(0): [EmptyStmt] ; -# 1738| getStmt(1): [ReturnStmt] return ... -# 1742| [TopLevelFunction] int goto_on_same_line() -# 1742| : -# 1742| getEntryPoint(): [BlockStmt] { ... } -# 1743| getStmt(0): [DeclStmt] declaration -# 1743| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 1743| Type = [IntType] int -# 1743| getVariable().getInitializer(): [Initializer] initializer for x -# 1743| getExpr(): [Literal] 42 -# 1743| Type = [IntType] int -# 1743| Value = [Literal] 42 -# 1743| ValueCategory = prvalue -# 1744| getStmt(1): [GotoStmt] goto ... -# 1744| getStmt(2): [LabelStmt] label ...: -# 1745| getStmt(3): [ReturnStmt] return ... -# 1745| getExpr(): [VariableAccess] x +#-----| Type = [RValueReferenceType] lambda [] type at line 1740, col. 29 && +# 1740| [Constructor] void (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1739, col. 25)::operator()() const)::(lambda [] type at line 1740, col. 29)::(unnamed constructor)() +# 1740| : +# 1740| [ConstMemberFunction] void (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1739, col. 25)::operator()() const)::(lambda [] type at line 1740, col. 29)::operator()() const +# 1740| : +# 1740| getEntryPoint(): [BlockStmt] { ... } +# 1740| getStmt(0): [EmptyStmt] ; +# 1740| getStmt(1): [ReturnStmt] return ... +# 1744| [TopLevelFunction] int goto_on_same_line() +# 1744| : +# 1744| getEntryPoint(): [BlockStmt] { ... } +# 1745| getStmt(0): [DeclStmt] declaration +# 1745| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x # 1745| Type = [IntType] int -# 1745| ValueCategory = prvalue(load) -# 1748| [CopyAssignmentOperator] TrivialLambdaClass& TrivialLambdaClass::operator=(TrivialLambdaClass const&) -# 1748| : +# 1745| getVariable().getInitializer(): [Initializer] initializer for x +# 1745| getExpr(): [Literal] 42 +# 1745| Type = [IntType] int +# 1745| Value = [Literal] 42 +# 1745| ValueCategory = prvalue +# 1746| getStmt(1): [GotoStmt] goto ... +# 1746| getStmt(2): [LabelStmt] label ...: +# 1747| getStmt(3): [ReturnStmt] return ... +# 1747| getExpr(): [VariableAccess] x +# 1747| Type = [IntType] int +# 1747| ValueCategory = prvalue(load) +# 1750| [CopyAssignmentOperator] TrivialLambdaClass& TrivialLambdaClass::operator=(TrivialLambdaClass const&) +# 1750| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const TrivialLambdaClass & -# 1748| [MoveAssignmentOperator] TrivialLambdaClass& TrivialLambdaClass::operator=(TrivialLambdaClass&&) -# 1748| : +# 1750| [MoveAssignmentOperator] TrivialLambdaClass& TrivialLambdaClass::operator=(TrivialLambdaClass&&) +# 1750| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] TrivialLambdaClass && -# 1750| [ConstMemberFunction] void TrivialLambdaClass::m() const -# 1750| : -# 1750| getEntryPoint(): [BlockStmt] { ... } -# 1751| getStmt(0): [DeclStmt] declaration -# 1751| getDeclarationEntry(0): [VariableDeclarationEntry] definition of l_m_outer -# 1751| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1751| getVariable().getInitializer(): [Initializer] initializer for l_m_outer -# 1751| getExpr(): [LambdaExpression] [...](...){...} -# 1751| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1751| ValueCategory = prvalue -# 1751| getInitializer(): [ClassAggregateLiteral] {...} -# 1751| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1751| ValueCategory = prvalue -# 1751| getAFieldExpr((captured this)): [PointerDereferenceExpr] * ... -# 1751| Type = [SpecifiedType] const TrivialLambdaClass -# 1751| ValueCategory = prvalue(load) -# 1751| getOperand(): [ThisExpr] this -# 1751| Type = [SpecifiedType] const TrivialLambdaClass *const -# 1751| ValueCategory = prvalue(load) +# 1752| [ConstMemberFunction] void TrivialLambdaClass::m() const +# 1752| : +# 1752| getEntryPoint(): [BlockStmt] { ... } +# 1753| getStmt(0): [DeclStmt] declaration +# 1753| getDeclarationEntry(0): [VariableDeclarationEntry] definition of l_m_outer +# 1753| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1753| getVariable().getInitializer(): [Initializer] initializer for l_m_outer +# 1753| getExpr(): [LambdaExpression] [...](...){...} +# 1753| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1753| ValueCategory = prvalue +# 1753| getInitializer(): [ClassAggregateLiteral] {...} +# 1753| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1753| ValueCategory = prvalue +# 1753| getAFieldExpr((captured this)): [PointerDereferenceExpr] * ... +# 1753| Type = [SpecifiedType] const TrivialLambdaClass +# 1753| ValueCategory = prvalue(load) +# 1753| getOperand(): [ThisExpr] this +# 1753| Type = [SpecifiedType] const TrivialLambdaClass *const +# 1753| ValueCategory = prvalue(load) +# 1760| getStmt(1): [ReturnStmt] return ... +# 1753| [CopyAssignmentOperator] (void TrivialLambdaClass::m() const)::(lambda [] type at line 1753, col. 26)& (void TrivialLambdaClass::m() const)::(lambda [] type at line 1753, col. 26)::operator=((void TrivialLambdaClass::m() const)::(lambda [] type at line 1753, col. 26) const&) +# 1753| : +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [LValueReferenceType] const lambda [] type at line 1753, col. 26 & +# 1753| [CopyConstructor] void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1753, col. 26)::(unnamed constructor)((void TrivialLambdaClass::m() const)::(lambda [] type at line 1753, col. 26) const&) +# 1753| : +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [LValueReferenceType] const lambda [] type at line 1753, col. 26 & +# 1753| [MoveConstructor] void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1753, col. 26)::(unnamed constructor)((void TrivialLambdaClass::m() const)::(lambda [] type at line 1753, col. 26)&&) +# 1753| : +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [RValueReferenceType] lambda [] type at line 1753, col. 26 && +# 1753| [Constructor] void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1753, col. 26)::(unnamed constructor)() +# 1753| : +# 1753| [ConstMemberFunction] void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1753, col. 26)::operator()() const +# 1753| : +# 1753| getEntryPoint(): [BlockStmt] { ... } +# 1754| getStmt(0): [ExprStmt] ExprStmt +# 1754| getExpr(): [FunctionCall] call to m +# 1754| Type = [VoidType] void +# 1754| ValueCategory = prvalue +# 1754| getQualifier(): [AddressOfExpr] & ... +# 1754| Type = [PointerType] const TrivialLambdaClass * +# 1754| ValueCategory = prvalue +# 1754| getOperand(): [ImplicitThisFieldAccess,PointerFieldAccess] (captured this) +# 1754| Type = [SpecifiedType] const TrivialLambdaClass +# 1754| ValueCategory = lvalue +# 1754| getQualifier(): [ThisExpr] this +# 1754| Type = [PointerType] const lambda [] type at line 1753, col. 26 * +# 1754| ValueCategory = prvalue(load) +# 1756| getStmt(1): [DeclStmt] declaration +# 1756| getDeclarationEntry(0): [VariableDeclarationEntry] definition of l_m_inner +# 1756| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1756| getVariable().getInitializer(): [Initializer] initializer for l_m_inner +# 1756| getExpr(): [LambdaExpression] [...](...){...} +# 1756| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1756| ValueCategory = prvalue +# 1756| getInitializer(): [ClassAggregateLiteral] {...} +# 1756| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1756| ValueCategory = prvalue +# 1756| getAFieldExpr((captured this)): [PointerFieldAccess] (captured this) +# 1756| Type = [SpecifiedType] const TrivialLambdaClass +# 1756| ValueCategory = prvalue(load) +# 1756| getQualifier(): [ThisExpr] this +# 1756| Type = [PointerType] lambda [] type at line 1756, col. 30 * +# 1756| ValueCategory = prvalue(load) +# 1759| getStmt(2): [ReturnStmt] return ... +# 1756| [CopyAssignmentOperator] (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1753, col. 26)::operator()() const)::(lambda [] type at line 1756, col. 30)& (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1753, col. 26)::operator()() const)::(lambda [] type at line 1756, col. 30)::operator=((void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1753, col. 26)::operator()() const)::(lambda [] type at line 1756, col. 30) const&) +# 1756| : +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [LValueReferenceType] const lambda [] type at line 1756, col. 30 & +# 1756| [CopyConstructor] void (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1753, col. 26)::operator()() const)::(lambda [] type at line 1756, col. 30)::(unnamed constructor)((void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1753, col. 26)::operator()() const)::(lambda [] type at line 1756, col. 30) const&) +# 1756| : +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [LValueReferenceType] const lambda [] type at line 1756, col. 30 & +# 1756| [MoveConstructor] void (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1753, col. 26)::operator()() const)::(lambda [] type at line 1756, col. 30)::(unnamed constructor)((void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1753, col. 26)::operator()() const)::(lambda [] type at line 1756, col. 30)&&) +# 1756| : +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [RValueReferenceType] lambda [] type at line 1756, col. 30 && +# 1756| [Constructor] void (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1753, col. 26)::operator()() const)::(lambda [] type at line 1756, col. 30)::(unnamed constructor)() +# 1756| : +# 1756| [ConstMemberFunction] void (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1753, col. 26)::operator()() const)::(lambda [] type at line 1756, col. 30)::operator()() const +# 1756| : +# 1756| getEntryPoint(): [BlockStmt] { ... } +# 1757| getStmt(0): [ExprStmt] ExprStmt +# 1757| getExpr(): [FunctionCall] call to m +# 1757| Type = [VoidType] void +# 1757| ValueCategory = prvalue +# 1757| getQualifier(): [AddressOfExpr] & ... +# 1757| Type = [PointerType] const TrivialLambdaClass * +# 1757| ValueCategory = prvalue +# 1757| getOperand(): [ImplicitThisFieldAccess,PointerFieldAccess] (captured this) +# 1757| Type = [SpecifiedType] const TrivialLambdaClass +# 1757| ValueCategory = lvalue +# 1757| getQualifier(): [ThisExpr] this +# 1757| Type = [PointerType] const lambda [] type at line 1756, col. 30 * +# 1757| ValueCategory = prvalue(load) # 1758| getStmt(1): [ReturnStmt] return ... -# 1751| [CopyAssignmentOperator] (void TrivialLambdaClass::m() const)::(lambda [] type at line 1751, col. 26)& (void TrivialLambdaClass::m() const)::(lambda [] type at line 1751, col. 26)::operator=((void TrivialLambdaClass::m() const)::(lambda [] type at line 1751, col. 26) const&) -# 1751| : -#-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const lambda [] type at line 1751, col. 26 & -# 1751| [CopyConstructor] void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1751, col. 26)::(unnamed constructor)((void TrivialLambdaClass::m() const)::(lambda [] type at line 1751, col. 26) const&) -# 1751| : -#-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const lambda [] type at line 1751, col. 26 & -# 1751| [MoveConstructor] void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1751, col. 26)::(unnamed constructor)((void TrivialLambdaClass::m() const)::(lambda [] type at line 1751, col. 26)&&) -# 1751| : -#-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [RValueReferenceType] lambda [] type at line 1751, col. 26 && -# 1751| [Constructor] void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1751, col. 26)::(unnamed constructor)() -# 1751| : -# 1751| [ConstMemberFunction] void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1751, col. 26)::operator()() const -# 1751| : -# 1751| getEntryPoint(): [BlockStmt] { ... } -# 1752| getStmt(0): [ExprStmt] ExprStmt -# 1752| getExpr(): [FunctionCall] call to m -# 1752| Type = [VoidType] void -# 1752| ValueCategory = prvalue -# 1752| getQualifier(): [AddressOfExpr] & ... -# 1752| Type = [PointerType] const TrivialLambdaClass * -# 1752| ValueCategory = prvalue -# 1752| getOperand(): [ImplicitThisFieldAccess,PointerFieldAccess] (captured this) -# 1752| Type = [SpecifiedType] const TrivialLambdaClass -# 1752| ValueCategory = lvalue -# 1752| getQualifier(): [ThisExpr] this -# 1752| Type = [PointerType] const lambda [] type at line 1751, col. 26 * -# 1752| ValueCategory = prvalue(load) -# 1754| getStmt(1): [DeclStmt] declaration -# 1754| getDeclarationEntry(0): [VariableDeclarationEntry] definition of l_m_inner -# 1754| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1754| getVariable().getInitializer(): [Initializer] initializer for l_m_inner -# 1754| getExpr(): [LambdaExpression] [...](...){...} -# 1754| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1754| ValueCategory = prvalue -# 1754| getInitializer(): [ClassAggregateLiteral] {...} -# 1754| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1754| ValueCategory = prvalue -# 1754| getAFieldExpr((captured this)): [PointerFieldAccess] (captured this) -# 1754| Type = [SpecifiedType] const TrivialLambdaClass -# 1754| ValueCategory = prvalue(load) -# 1754| getQualifier(): [ThisExpr] this -# 1754| Type = [PointerType] lambda [] type at line 1754, col. 30 * -# 1754| ValueCategory = prvalue(load) -# 1757| getStmt(2): [ReturnStmt] return ... -# 1754| [CopyAssignmentOperator] (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1751, col. 26)::operator()() const)::(lambda [] type at line 1754, col. 30)& (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1751, col. 26)::operator()() const)::(lambda [] type at line 1754, col. 30)::operator=((void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1751, col. 26)::operator()() const)::(lambda [] type at line 1754, col. 30) const&) -# 1754| : -#-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const lambda [] type at line 1754, col. 30 & -# 1754| [CopyConstructor] void (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1751, col. 26)::operator()() const)::(lambda [] type at line 1754, col. 30)::(unnamed constructor)((void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1751, col. 26)::operator()() const)::(lambda [] type at line 1754, col. 30) const&) -# 1754| : -#-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const lambda [] type at line 1754, col. 30 & -# 1754| [MoveConstructor] void (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1751, col. 26)::operator()() const)::(lambda [] type at line 1754, col. 30)::(unnamed constructor)((void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1751, col. 26)::operator()() const)::(lambda [] type at line 1754, col. 30)&&) -# 1754| : -#-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [RValueReferenceType] lambda [] type at line 1754, col. 30 && -# 1754| [Constructor] void (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1751, col. 26)::operator()() const)::(lambda [] type at line 1754, col. 30)::(unnamed constructor)() -# 1754| : -# 1754| [ConstMemberFunction] void (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1751, col. 26)::operator()() const)::(lambda [] type at line 1754, col. 30)::operator()() const -# 1754| : -# 1754| getEntryPoint(): [BlockStmt] { ... } -# 1755| getStmt(0): [ExprStmt] ExprStmt -# 1755| getExpr(): [FunctionCall] call to m -# 1755| Type = [VoidType] void -# 1755| ValueCategory = prvalue -# 1755| getQualifier(): [AddressOfExpr] & ... -# 1755| Type = [PointerType] const TrivialLambdaClass * -# 1755| ValueCategory = prvalue -# 1755| getOperand(): [ImplicitThisFieldAccess,PointerFieldAccess] (captured this) -# 1755| Type = [SpecifiedType] const TrivialLambdaClass -# 1755| ValueCategory = lvalue -# 1755| getQualifier(): [ThisExpr] this -# 1755| Type = [PointerType] const lambda [] type at line 1754, col. 30 * -# 1755| ValueCategory = prvalue(load) -# 1756| getStmt(1): [ReturnStmt] return ... -# 1761| [TopLevelFunction] void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&) -# 1761| : -# 1761| getParameter(0): [Parameter] p1 -# 1761| Type = [Class] TrivialLambdaClass -# 1761| getParameter(1): [Parameter] p2 -# 1761| Type = [LValueReferenceType] TrivialLambdaClass & -# 1761| getParameter(2): [Parameter] p3 -# 1761| Type = [RValueReferenceType] TrivialLambdaClass && -# 1761| getEntryPoint(): [BlockStmt] { ... } -# 1762| getStmt(0): [DeclStmt] declaration -# 1762| getDeclarationEntry(0): [VariableDeclarationEntry] definition of l1 -# 1762| Type = [SpecifiedType] const TrivialLambdaClass -# 1763| getStmt(1): [DeclStmt] declaration -# 1763| getDeclarationEntry(0): [VariableDeclarationEntry] definition of l2 -# 1763| Type = [LValueReferenceType] const TrivialLambdaClass & -# 1763| getVariable().getInitializer(): [Initializer] initializer for l2 -# 1763| getExpr(): [Literal] 0 -# 1763| Type = [Class] TrivialLambdaClass -# 1763| Value = [Literal] 0 -# 1763| ValueCategory = prvalue -# 1763| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 1763| Type = [LValueReferenceType] const TrivialLambdaClass & -# 1763| ValueCategory = prvalue -# 1763| getExpr(): [CStyleCast] (const TrivialLambdaClass)... -# 1763| Conversion = [GlvalueConversion] glvalue conversion -# 1763| Type = [SpecifiedType] const TrivialLambdaClass -# 1763| ValueCategory = lvalue -# 1763| getExpr(): [TemporaryObjectExpr] temporary object -# 1763| Type = [Class] TrivialLambdaClass -# 1763| ValueCategory = lvalue -# 1765| getStmt(2): [DeclStmt] declaration -# 1765| getDeclarationEntry(0): [VariableDeclarationEntry] definition of l_outer1 -# 1765| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1765| getVariable().getInitializer(): [Initializer] initializer for l_outer1 -# 1765| getExpr(): [LambdaExpression] [...](...){...} -# 1765| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1763| [TopLevelFunction] void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&) +# 1763| : +# 1763| getParameter(0): [Parameter] p1 +# 1763| Type = [Class] TrivialLambdaClass +# 1763| getParameter(1): [Parameter] p2 +# 1763| Type = [LValueReferenceType] TrivialLambdaClass & +# 1763| getParameter(2): [Parameter] p3 +# 1763| Type = [RValueReferenceType] TrivialLambdaClass && +# 1763| getEntryPoint(): [BlockStmt] { ... } +# 1764| getStmt(0): [DeclStmt] declaration +# 1764| getDeclarationEntry(0): [VariableDeclarationEntry] definition of l1 +# 1764| Type = [SpecifiedType] const TrivialLambdaClass +# 1765| getStmt(1): [DeclStmt] declaration +# 1765| getDeclarationEntry(0): [VariableDeclarationEntry] definition of l2 +# 1765| Type = [LValueReferenceType] const TrivialLambdaClass & +# 1765| getVariable().getInitializer(): [Initializer] initializer for l2 +# 1765| getExpr(): [Literal] 0 +# 1765| Type = [Class] TrivialLambdaClass +# 1765| Value = [Literal] 0 # 1765| ValueCategory = prvalue -# 1765| getInitializer(): [ClassAggregateLiteral] {...} -# 1765| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1765| ValueCategory = prvalue -# 1765| getAFieldExpr(p1): [VariableAccess] p1 +# 1765| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 1765| Type = [LValueReferenceType] const TrivialLambdaClass & +# 1765| ValueCategory = prvalue +# 1765| getExpr(): [CStyleCast] (const TrivialLambdaClass)... +# 1765| Conversion = [GlvalueConversion] glvalue conversion +# 1765| Type = [SpecifiedType] const TrivialLambdaClass +# 1765| ValueCategory = lvalue +# 1765| getExpr(): [TemporaryObjectExpr] temporary object # 1765| Type = [Class] TrivialLambdaClass -# 1765| ValueCategory = prvalue(load) -# 1765| getAFieldExpr(p2): [VariableAccess] p2 -# 1765| Type = [LValueReferenceType] TrivialLambdaClass & -# 1765| ValueCategory = prvalue(load) -# 1765| getAFieldExpr(p3): [VariableAccess] p3 -# 1765| Type = [RValueReferenceType] TrivialLambdaClass && -# 1765| ValueCategory = prvalue(load) -# 1765| getAFieldExpr(l1): [VariableAccess] l1 -# 1765| Type = [SpecifiedType] const TrivialLambdaClass -# 1765| ValueCategory = prvalue(load) -# 1765| getAFieldExpr(l2): [VariableAccess] l2 -# 1765| Type = [LValueReferenceType] const TrivialLambdaClass & -# 1765| ValueCategory = prvalue(load) +# 1765| ValueCategory = lvalue +# 1767| getStmt(2): [DeclStmt] declaration +# 1767| getDeclarationEntry(0): [VariableDeclarationEntry] definition of l_outer1 +# 1767| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1767| getVariable().getInitializer(): [Initializer] initializer for l_outer1 +# 1767| getExpr(): [LambdaExpression] [...](...){...} +# 1767| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1767| ValueCategory = prvalue +# 1767| getInitializer(): [ClassAggregateLiteral] {...} +# 1767| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1767| ValueCategory = prvalue +# 1767| getAFieldExpr(p1): [VariableAccess] p1 +# 1767| Type = [Class] TrivialLambdaClass +# 1767| ValueCategory = prvalue(load) +# 1767| getAFieldExpr(p2): [VariableAccess] p2 +# 1767| Type = [LValueReferenceType] TrivialLambdaClass & +# 1767| ValueCategory = prvalue(load) +# 1767| getAFieldExpr(p3): [VariableAccess] p3 +# 1767| Type = [RValueReferenceType] TrivialLambdaClass && +# 1767| ValueCategory = prvalue(load) +# 1767| getAFieldExpr(l1): [VariableAccess] l1 +# 1767| Type = [SpecifiedType] const TrivialLambdaClass +# 1767| ValueCategory = prvalue(load) +# 1767| getAFieldExpr(l2): [VariableAccess] l2 +# 1767| Type = [LValueReferenceType] const TrivialLambdaClass & +# 1767| ValueCategory = prvalue(load) #-----| getAFieldExpr(p2).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [Class] TrivialLambdaClass #-----| ValueCategory = prvalue(load) @@ -17088,741 +17088,741 @@ ir.cpp: #-----| getAFieldExpr(l2).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [SpecifiedType] const TrivialLambdaClass #-----| ValueCategory = prvalue(load) -# 1768| getStmt(3): [ReturnStmt] return ... -# 1765| [CopyAssignmentOperator] (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1765, col. 21)& (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1765, col. 21)::operator=((void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1765, col. 21) const&) -# 1765| : +# 1770| getStmt(3): [ReturnStmt] return ... +# 1767| [CopyAssignmentOperator] (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1767, col. 21)& (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1767, col. 21)::operator=((void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1767, col. 21) const&) +# 1767| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const lambda [] type at line 1765, col. 21 & -# 1765| [CopyConstructor] void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1765, col. 21)::(unnamed constructor)((void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1765, col. 21) const&) -# 1765| : +#-----| Type = [LValueReferenceType] const lambda [] type at line 1767, col. 21 & +# 1767| [CopyConstructor] void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1767, col. 21)::(unnamed constructor)((void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1767, col. 21) const&) +# 1767| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const lambda [] type at line 1765, col. 21 & -# 1765| [MoveConstructor] void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1765, col. 21)::(unnamed constructor)((void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1765, col. 21)&&) -# 1765| : +#-----| Type = [LValueReferenceType] const lambda [] type at line 1767, col. 21 & +# 1767| [MoveConstructor] void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1767, col. 21)::(unnamed constructor)((void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1767, col. 21)&&) +# 1767| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [RValueReferenceType] lambda [] type at line 1765, col. 21 && -# 1765| [Constructor] void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1765, col. 21)::(unnamed constructor)() -# 1765| : -# 1765| [ConstMemberFunction] void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1765, col. 21)::operator()() const -# 1765| : -# 1765| getEntryPoint(): [BlockStmt] { ... } -# 1766| getStmt(0): [DeclStmt] declaration -# 1766| getDeclarationEntry(0): [VariableDeclarationEntry] definition of l_inner1 -# 1766| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1766| getVariable().getInitializer(): [Initializer] initializer for l_inner1 -# 1766| getExpr(): [LambdaExpression] [...](...){...} -# 1766| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1766| ValueCategory = prvalue -# 1766| getInitializer(): [ClassAggregateLiteral] {...} -# 1766| Type = [Closure,LocalClass] decltype([...](...){...}) -# 1766| ValueCategory = prvalue -# 1766| getAFieldExpr(p1): [PointerFieldAccess] p1 -# 1766| Type = [Class] TrivialLambdaClass -# 1766| ValueCategory = prvalue(load) -# 1766| getQualifier(): [ThisExpr] this -# 1766| Type = [PointerType] lambda [] type at line 1766, col. 25 * -# 1766| ValueCategory = prvalue(load) -# 1767| getStmt(1): [ReturnStmt] return ... -# 1766| [CopyAssignmentOperator] (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1765, col. 21)::operator()() const)::(lambda [] type at line 1766, col. 25)& (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1765, col. 21)::operator()() const)::(lambda [] type at line 1766, col. 25)::operator=((void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1765, col. 21)::operator()() const)::(lambda [] type at line 1766, col. 25) const&) -# 1766| : +#-----| Type = [RValueReferenceType] lambda [] type at line 1767, col. 21 && +# 1767| [Constructor] void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1767, col. 21)::(unnamed constructor)() +# 1767| : +# 1767| [ConstMemberFunction] void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1767, col. 21)::operator()() const +# 1767| : +# 1767| getEntryPoint(): [BlockStmt] { ... } +# 1768| getStmt(0): [DeclStmt] declaration +# 1768| getDeclarationEntry(0): [VariableDeclarationEntry] definition of l_inner1 +# 1768| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1768| getVariable().getInitializer(): [Initializer] initializer for l_inner1 +# 1768| getExpr(): [LambdaExpression] [...](...){...} +# 1768| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1768| ValueCategory = prvalue +# 1768| getInitializer(): [ClassAggregateLiteral] {...} +# 1768| Type = [Closure,LocalClass] decltype([...](...){...}) +# 1768| ValueCategory = prvalue +# 1768| getAFieldExpr(p1): [PointerFieldAccess] p1 +# 1768| Type = [Class] TrivialLambdaClass +# 1768| ValueCategory = prvalue(load) +# 1768| getQualifier(): [ThisExpr] this +# 1768| Type = [PointerType] lambda [] type at line 1768, col. 25 * +# 1768| ValueCategory = prvalue(load) +# 1769| getStmt(1): [ReturnStmt] return ... +# 1768| [CopyAssignmentOperator] (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1767, col. 21)::operator()() const)::(lambda [] type at line 1768, col. 25)& (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1767, col. 21)::operator()() const)::(lambda [] type at line 1768, col. 25)::operator=((void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1767, col. 21)::operator()() const)::(lambda [] type at line 1768, col. 25) const&) +# 1768| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const lambda [] type at line 1766, col. 25 & -# 1766| [CopyConstructor] void (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1765, col. 21)::operator()() const)::(lambda [] type at line 1766, col. 25)::(unnamed constructor)((void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1765, col. 21)::operator()() const)::(lambda [] type at line 1766, col. 25) const&) -# 1766| : +#-----| Type = [LValueReferenceType] const lambda [] type at line 1768, col. 25 & +# 1768| [CopyConstructor] void (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1767, col. 21)::operator()() const)::(lambda [] type at line 1768, col. 25)::(unnamed constructor)((void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1767, col. 21)::operator()() const)::(lambda [] type at line 1768, col. 25) const&) +# 1768| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const lambda [] type at line 1766, col. 25 & -# 1766| [MoveConstructor] void (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1765, col. 21)::operator()() const)::(lambda [] type at line 1766, col. 25)::(unnamed constructor)((void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1765, col. 21)::operator()() const)::(lambda [] type at line 1766, col. 25)&&) -# 1766| : +#-----| Type = [LValueReferenceType] const lambda [] type at line 1768, col. 25 & +# 1768| [MoveConstructor] void (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1767, col. 21)::operator()() const)::(lambda [] type at line 1768, col. 25)::(unnamed constructor)((void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1767, col. 21)::operator()() const)::(lambda [] type at line 1768, col. 25)&&) +# 1768| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [RValueReferenceType] lambda [] type at line 1766, col. 25 && -# 1766| [Constructor] void (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1765, col. 21)::operator()() const)::(lambda [] type at line 1766, col. 25)::(unnamed constructor)() -# 1766| : -# 1766| [ConstMemberFunction] void (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1765, col. 21)::operator()() const)::(lambda [] type at line 1766, col. 25)::operator()() const -# 1766| : -# 1766| getEntryPoint(): [BlockStmt] { ... } -# 1766| getStmt(0): [ReturnStmt] return ... -# 1770| [CopyAssignmentOperator] CopyConstructorWithImplicitArgumentClass& CopyConstructorWithImplicitArgumentClass::operator=(CopyConstructorWithImplicitArgumentClass const&) -# 1770| : +#-----| Type = [RValueReferenceType] lambda [] type at line 1768, col. 25 && +# 1768| [Constructor] void (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1767, col. 21)::operator()() const)::(lambda [] type at line 1768, col. 25)::(unnamed constructor)() +# 1768| : +# 1768| [ConstMemberFunction] void (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1767, col. 21)::operator()() const)::(lambda [] type at line 1768, col. 25)::operator()() const +# 1768| : +# 1768| getEntryPoint(): [BlockStmt] { ... } +# 1768| getStmt(0): [ReturnStmt] return ... +# 1772| [CopyAssignmentOperator] CopyConstructorWithImplicitArgumentClass& CopyConstructorWithImplicitArgumentClass::operator=(CopyConstructorWithImplicitArgumentClass const&) +# 1772| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const CopyConstructorWithImplicitArgumentClass & -# 1773| [Constructor] void CopyConstructorWithImplicitArgumentClass::CopyConstructorWithImplicitArgumentClass() -# 1773| : -# 1773| : -# 1773| getEntryPoint(): [BlockStmt] { ... } -# 1773| getStmt(0): [ReturnStmt] return ... -# 1774| [CopyConstructor] void CopyConstructorWithImplicitArgumentClass::CopyConstructorWithImplicitArgumentClass(CopyConstructorWithImplicitArgumentClass const&) -# 1774| : -# 1774| getParameter(0): [Parameter] c -# 1774| Type = [LValueReferenceType] const CopyConstructorWithImplicitArgumentClass & -# 1774| : -# 1774| getEntryPoint(): [BlockStmt] { ... } -# 1775| getStmt(0): [ExprStmt] ExprStmt -# 1775| getExpr(): [AssignExpr] ... = ... -# 1775| Type = [IntType] int -# 1775| ValueCategory = lvalue -# 1775| getLValue(): [ImplicitThisFieldAccess,PointerFieldAccess] x -# 1775| Type = [IntType] int -# 1775| ValueCategory = lvalue -# 1775| getQualifier(): [ThisExpr] this -# 1775| Type = [PointerType] CopyConstructorWithImplicitArgumentClass * -# 1775| ValueCategory = prvalue(load) -# 1775| getRValue(): [ReferenceFieldAccess] x -# 1775| Type = [IntType] int -# 1775| ValueCategory = prvalue(load) -# 1775| getQualifier(): [VariableAccess] c -# 1775| Type = [LValueReferenceType] const CopyConstructorWithImplicitArgumentClass & -# 1775| ValueCategory = prvalue(load) -# 1775| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1775| Type = [SpecifiedType] const CopyConstructorWithImplicitArgumentClass -# 1775| ValueCategory = lvalue -# 1776| getStmt(1): [ReturnStmt] return ... -# 1779| [CopyAssignmentOperator] CopyConstructorWithBitwiseCopyClass& CopyConstructorWithBitwiseCopyClass::operator=(CopyConstructorWithBitwiseCopyClass const&) -# 1779| : +# 1775| [Constructor] void CopyConstructorWithImplicitArgumentClass::CopyConstructorWithImplicitArgumentClass() +# 1775| : +# 1775| : +# 1775| getEntryPoint(): [BlockStmt] { ... } +# 1775| getStmt(0): [ReturnStmt] return ... +# 1776| [CopyConstructor] void CopyConstructorWithImplicitArgumentClass::CopyConstructorWithImplicitArgumentClass(CopyConstructorWithImplicitArgumentClass const&) +# 1776| : +# 1776| getParameter(0): [Parameter] c +# 1776| Type = [LValueReferenceType] const CopyConstructorWithImplicitArgumentClass & +# 1776| : +# 1776| getEntryPoint(): [BlockStmt] { ... } +# 1777| getStmt(0): [ExprStmt] ExprStmt +# 1777| getExpr(): [AssignExpr] ... = ... +# 1777| Type = [IntType] int +# 1777| ValueCategory = lvalue +# 1777| getLValue(): [ImplicitThisFieldAccess,PointerFieldAccess] x +# 1777| Type = [IntType] int +# 1777| ValueCategory = lvalue +# 1777| getQualifier(): [ThisExpr] this +# 1777| Type = [PointerType] CopyConstructorWithImplicitArgumentClass * +# 1777| ValueCategory = prvalue(load) +# 1777| getRValue(): [ReferenceFieldAccess] x +# 1777| Type = [IntType] int +# 1777| ValueCategory = prvalue(load) +# 1777| getQualifier(): [VariableAccess] c +# 1777| Type = [LValueReferenceType] const CopyConstructorWithImplicitArgumentClass & +# 1777| ValueCategory = prvalue(load) +# 1777| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1777| Type = [SpecifiedType] const CopyConstructorWithImplicitArgumentClass +# 1777| ValueCategory = lvalue +# 1778| getStmt(1): [ReturnStmt] return ... +# 1781| [CopyAssignmentOperator] CopyConstructorWithBitwiseCopyClass& CopyConstructorWithBitwiseCopyClass::operator=(CopyConstructorWithBitwiseCopyClass const&) +# 1781| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const CopyConstructorWithBitwiseCopyClass & -# 1779| [MoveAssignmentOperator] CopyConstructorWithBitwiseCopyClass& CopyConstructorWithBitwiseCopyClass::operator=(CopyConstructorWithBitwiseCopyClass&&) -# 1779| : +# 1781| [MoveAssignmentOperator] CopyConstructorWithBitwiseCopyClass& CopyConstructorWithBitwiseCopyClass::operator=(CopyConstructorWithBitwiseCopyClass&&) +# 1781| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] CopyConstructorWithBitwiseCopyClass && -# 1779| [CopyConstructor] void CopyConstructorWithBitwiseCopyClass::CopyConstructorWithBitwiseCopyClass(CopyConstructorWithBitwiseCopyClass const&) -# 1779| : +# 1781| [CopyConstructor] void CopyConstructorWithBitwiseCopyClass::CopyConstructorWithBitwiseCopyClass(CopyConstructorWithBitwiseCopyClass const&) +# 1781| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const CopyConstructorWithBitwiseCopyClass & -# 1779| [MoveConstructor] void CopyConstructorWithBitwiseCopyClass::CopyConstructorWithBitwiseCopyClass(CopyConstructorWithBitwiseCopyClass&&) -# 1779| : +# 1781| [MoveConstructor] void CopyConstructorWithBitwiseCopyClass::CopyConstructorWithBitwiseCopyClass(CopyConstructorWithBitwiseCopyClass&&) +# 1781| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] CopyConstructorWithBitwiseCopyClass && -# 1782| [Constructor] void CopyConstructorWithBitwiseCopyClass::CopyConstructorWithBitwiseCopyClass() -# 1782| : -# 1782| : -# 1782| getEntryPoint(): [BlockStmt] { ... } -# 1782| getStmt(0): [ReturnStmt] return ... -# 1785| [CopyAssignmentOperator] CopyConstructorTestNonVirtualClass& CopyConstructorTestNonVirtualClass::operator=(CopyConstructorTestNonVirtualClass const&) -# 1785| : +# 1784| [Constructor] void CopyConstructorWithBitwiseCopyClass::CopyConstructorWithBitwiseCopyClass() +# 1784| : +# 1784| : +# 1784| getEntryPoint(): [BlockStmt] { ... } +# 1784| getStmt(0): [ReturnStmt] return ... +# 1787| [CopyAssignmentOperator] CopyConstructorTestNonVirtualClass& CopyConstructorTestNonVirtualClass::operator=(CopyConstructorTestNonVirtualClass const&) +# 1787| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const CopyConstructorTestNonVirtualClass & -# 1785| [MoveAssignmentOperator] CopyConstructorTestNonVirtualClass& CopyConstructorTestNonVirtualClass::operator=(CopyConstructorTestNonVirtualClass&&) -# 1785| : +# 1787| [MoveAssignmentOperator] CopyConstructorTestNonVirtualClass& CopyConstructorTestNonVirtualClass::operator=(CopyConstructorTestNonVirtualClass&&) +# 1787| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] CopyConstructorTestNonVirtualClass && -# 1785| [CopyConstructor] void CopyConstructorTestNonVirtualClass::CopyConstructorTestNonVirtualClass(CopyConstructorTestNonVirtualClass const&) -# 1785| : +# 1787| [CopyConstructor] void CopyConstructorTestNonVirtualClass::CopyConstructorTestNonVirtualClass(CopyConstructorTestNonVirtualClass const&) +# 1787| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const CopyConstructorTestNonVirtualClass & -# 1785| : -# 1785| getInitializer(0): [ConstructorDirectInit] call to CopyConstructorWithImplicitArgumentClass -# 1785| Type = [VoidType] void -# 1785| ValueCategory = prvalue -# 1785| getArgument(0): [VariableAccess] (unnamed parameter 0) -# 1785| Type = [LValueReferenceType] const CopyConstructorTestNonVirtualClass & -# 1785| ValueCategory = prvalue(load) -# 1785| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 1785| Type = [LValueReferenceType] const CopyConstructorWithImplicitArgumentClass & -# 1785| ValueCategory = prvalue -# 1785| getExpr(): [CStyleCast] (const CopyConstructorWithImplicitArgumentClass)... -# 1785| Conversion = [BaseClassConversion] base class conversion -# 1785| Type = [SpecifiedType] const CopyConstructorWithImplicitArgumentClass -# 1785| ValueCategory = lvalue -# 1785| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1785| Type = [SpecifiedType] const CopyConstructorTestNonVirtualClass -# 1785| ValueCategory = lvalue -# 1785| getInitializer(1): [ConstructorInit] constructor init -# 1785| Type = [VirtualBaseClass] CopyConstructorWithBitwiseCopyClass -# 1785| ValueCategory = prvalue -# 1785| getEntryPoint(): [BlockStmt] { ... } -# 1785| getStmt(0): [ReturnStmt] return ... -# 1785| [MoveConstructor] void CopyConstructorTestNonVirtualClass::CopyConstructorTestNonVirtualClass(CopyConstructorTestNonVirtualClass&&) -# 1785| : +# 1787| : +# 1787| getInitializer(0): [ConstructorDirectInit] call to CopyConstructorWithImplicitArgumentClass +# 1787| Type = [VoidType] void +# 1787| ValueCategory = prvalue +# 1787| getArgument(0): [VariableAccess] (unnamed parameter 0) +# 1787| Type = [LValueReferenceType] const CopyConstructorTestNonVirtualClass & +# 1787| ValueCategory = prvalue(load) +# 1787| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 1787| Type = [LValueReferenceType] const CopyConstructorWithImplicitArgumentClass & +# 1787| ValueCategory = prvalue +# 1787| getExpr(): [CStyleCast] (const CopyConstructorWithImplicitArgumentClass)... +# 1787| Conversion = [BaseClassConversion] base class conversion +# 1787| Type = [SpecifiedType] const CopyConstructorWithImplicitArgumentClass +# 1787| ValueCategory = lvalue +# 1787| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1787| Type = [SpecifiedType] const CopyConstructorTestNonVirtualClass +# 1787| ValueCategory = lvalue +# 1787| getInitializer(1): [ConstructorInit] constructor init +# 1787| Type = [VirtualBaseClass] CopyConstructorWithBitwiseCopyClass +# 1787| ValueCategory = prvalue +# 1787| getEntryPoint(): [BlockStmt] { ... } +# 1787| getStmt(0): [ReturnStmt] return ... +# 1787| [MoveConstructor] void CopyConstructorTestNonVirtualClass::CopyConstructorTestNonVirtualClass(CopyConstructorTestNonVirtualClass&&) +# 1787| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] CopyConstructorTestNonVirtualClass && -# 1789| [Constructor] void CopyConstructorTestNonVirtualClass::CopyConstructorTestNonVirtualClass() -# 1789| : -# 1789| : -# 1789| getInitializer(0): [ConstructorDirectInit] call to CopyConstructorWithImplicitArgumentClass -# 1789| Type = [VoidType] void -# 1789| ValueCategory = prvalue -# 1789| getInitializer(1): [ConstructorDirectInit] call to CopyConstructorWithBitwiseCopyClass -# 1789| Type = [VoidType] void -# 1789| ValueCategory = prvalue -# 1789| getEntryPoint(): [BlockStmt] { ... } -# 1789| getStmt(0): [ReturnStmt] return ... -# 1792| [CopyAssignmentOperator] CopyConstructorTestVirtualClass& CopyConstructorTestVirtualClass::operator=(CopyConstructorTestVirtualClass const&) -# 1792| : +# 1791| [Constructor] void CopyConstructorTestNonVirtualClass::CopyConstructorTestNonVirtualClass() +# 1791| : +# 1791| : +# 1791| getInitializer(0): [ConstructorDirectInit] call to CopyConstructorWithImplicitArgumentClass +# 1791| Type = [VoidType] void +# 1791| ValueCategory = prvalue +# 1791| getInitializer(1): [ConstructorDirectInit] call to CopyConstructorWithBitwiseCopyClass +# 1791| Type = [VoidType] void +# 1791| ValueCategory = prvalue +# 1791| getEntryPoint(): [BlockStmt] { ... } +# 1791| getStmt(0): [ReturnStmt] return ... +# 1794| [CopyAssignmentOperator] CopyConstructorTestVirtualClass& CopyConstructorTestVirtualClass::operator=(CopyConstructorTestVirtualClass const&) +# 1794| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const CopyConstructorTestVirtualClass & -# 1792| [MoveAssignmentOperator] CopyConstructorTestVirtualClass& CopyConstructorTestVirtualClass::operator=(CopyConstructorTestVirtualClass&&) -# 1792| : +# 1794| [MoveAssignmentOperator] CopyConstructorTestVirtualClass& CopyConstructorTestVirtualClass::operator=(CopyConstructorTestVirtualClass&&) +# 1794| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] CopyConstructorTestVirtualClass && -# 1792| [CopyConstructor] void CopyConstructorTestVirtualClass::CopyConstructorTestVirtualClass(CopyConstructorTestVirtualClass const&) -# 1792| : +# 1794| [CopyConstructor] void CopyConstructorTestVirtualClass::CopyConstructorTestVirtualClass(CopyConstructorTestVirtualClass const&) +# 1794| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const CopyConstructorTestVirtualClass & -# 1792| : -# 1792| getInitializer(0): [ConstructorVirtualInit] call to CopyConstructorWithImplicitArgumentClass -# 1792| Type = [VoidType] void -# 1792| ValueCategory = prvalue -# 1792| getArgument(0): [VariableAccess] (unnamed parameter 0) -# 1792| Type = [LValueReferenceType] const CopyConstructorTestVirtualClass & -# 1792| ValueCategory = prvalue(load) -# 1792| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 1792| Type = [LValueReferenceType] const CopyConstructorWithImplicitArgumentClass & -# 1792| ValueCategory = prvalue -# 1792| getExpr(): [CStyleCast] (const CopyConstructorWithImplicitArgumentClass)... -# 1792| Conversion = [BaseClassConversion] base class conversion -# 1792| Type = [SpecifiedType] const CopyConstructorWithImplicitArgumentClass -# 1792| ValueCategory = lvalue -# 1792| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1792| Type = [SpecifiedType] const CopyConstructorTestVirtualClass -# 1792| ValueCategory = lvalue -# 1792| getInitializer(1): [ConstructorInit] constructor init -# 1792| Type = [VirtualBaseClass] CopyConstructorWithBitwiseCopyClass -# 1792| ValueCategory = prvalue -# 1792| getEntryPoint(): [BlockStmt] { ... } -# 1792| getStmt(0): [ReturnStmt] return ... -# 1792| [MoveConstructor] void CopyConstructorTestVirtualClass::CopyConstructorTestVirtualClass(CopyConstructorTestVirtualClass&&) -# 1792| : +# 1794| : +# 1794| getInitializer(0): [ConstructorVirtualInit] call to CopyConstructorWithImplicitArgumentClass +# 1794| Type = [VoidType] void +# 1794| ValueCategory = prvalue +# 1794| getArgument(0): [VariableAccess] (unnamed parameter 0) +# 1794| Type = [LValueReferenceType] const CopyConstructorTestVirtualClass & +# 1794| ValueCategory = prvalue(load) +# 1794| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 1794| Type = [LValueReferenceType] const CopyConstructorWithImplicitArgumentClass & +# 1794| ValueCategory = prvalue +# 1794| getExpr(): [CStyleCast] (const CopyConstructorWithImplicitArgumentClass)... +# 1794| Conversion = [BaseClassConversion] base class conversion +# 1794| Type = [SpecifiedType] const CopyConstructorWithImplicitArgumentClass +# 1794| ValueCategory = lvalue +# 1794| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1794| Type = [SpecifiedType] const CopyConstructorTestVirtualClass +# 1794| ValueCategory = lvalue +# 1794| getInitializer(1): [ConstructorInit] constructor init +# 1794| Type = [VirtualBaseClass] CopyConstructorWithBitwiseCopyClass +# 1794| ValueCategory = prvalue +# 1794| getEntryPoint(): [BlockStmt] { ... } +# 1794| getStmt(0): [ReturnStmt] return ... +# 1794| [MoveConstructor] void CopyConstructorTestVirtualClass::CopyConstructorTestVirtualClass(CopyConstructorTestVirtualClass&&) +# 1794| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] CopyConstructorTestVirtualClass && -# 1796| [Constructor] void CopyConstructorTestVirtualClass::CopyConstructorTestVirtualClass() -# 1796| : -# 1796| : -# 1796| getInitializer(0): [ConstructorVirtualInit] call to CopyConstructorWithImplicitArgumentClass -# 1796| Type = [VoidType] void -# 1796| ValueCategory = prvalue -# 1796| getInitializer(1): [ConstructorVirtualInit] call to CopyConstructorWithBitwiseCopyClass -# 1796| Type = [VoidType] void -# 1796| ValueCategory = prvalue -# 1796| getEntryPoint(): [BlockStmt] { ... } -# 1796| getStmt(0): [ReturnStmt] return ... -# 1799| [TopLevelFunction] int implicit_copy_constructor_test(CopyConstructorTestNonVirtualClass const&, CopyConstructorTestVirtualClass const&) -# 1799| : -# 1800| getParameter(0): [Parameter] x -# 1800| Type = [LValueReferenceType] const CopyConstructorTestNonVirtualClass & -# 1801| getParameter(1): [Parameter] y -# 1801| Type = [LValueReferenceType] const CopyConstructorTestVirtualClass & -# 1801| getEntryPoint(): [BlockStmt] { ... } -# 1802| getStmt(0): [DeclStmt] declaration -# 1802| getDeclarationEntry(0): [VariableDeclarationEntry] definition of cx -# 1802| Type = [Class] CopyConstructorTestNonVirtualClass -# 1802| getVariable().getInitializer(): [Initializer] initializer for cx -# 1802| getExpr(): [ConstructorCall] call to CopyConstructorTestNonVirtualClass -# 1802| Type = [VoidType] void -# 1802| ValueCategory = prvalue -# 1802| getArgument(0): [VariableAccess] x -# 1802| Type = [LValueReferenceType] const CopyConstructorTestNonVirtualClass & -# 1802| ValueCategory = prvalue(load) -# 1802| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 1802| Type = [LValueReferenceType] const CopyConstructorTestNonVirtualClass & -# 1802| ValueCategory = prvalue -# 1802| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1802| Type = [SpecifiedType] const CopyConstructorTestNonVirtualClass -# 1802| ValueCategory = lvalue -# 1803| getStmt(1): [DeclStmt] declaration -# 1803| getDeclarationEntry(0): [VariableDeclarationEntry] definition of cy -# 1803| Type = [Class] CopyConstructorTestVirtualClass -# 1803| getVariable().getInitializer(): [Initializer] initializer for cy -# 1803| getExpr(): [ConstructorCall] call to CopyConstructorTestVirtualClass -# 1803| Type = [VoidType] void -# 1803| ValueCategory = prvalue -# 1803| getArgument(0): [VariableAccess] y -# 1803| Type = [LValueReferenceType] const CopyConstructorTestVirtualClass & -# 1803| ValueCategory = prvalue(load) -# 1803| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 1803| Type = [LValueReferenceType] const CopyConstructorTestVirtualClass & -# 1803| ValueCategory = prvalue -# 1803| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 1803| Type = [SpecifiedType] const CopyConstructorTestVirtualClass -# 1803| ValueCategory = lvalue -# 1804| getStmt(2): [ReturnStmt] return ... -# 1806| [TopLevelFunction] void if_initialization(int) -# 1806| : -# 1806| getParameter(0): [Parameter] x -# 1806| Type = [IntType] int -# 1806| getEntryPoint(): [BlockStmt] { ... } -# 1807| getStmt(0): [IfStmt] if (...) ... -# 1807| getInitialization(): [DeclStmt] declaration -# 1807| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 1807| Type = [IntType] int -# 1807| getVariable().getInitializer(): [Initializer] initializer for y -# 1807| getExpr(): [VariableAccess] x -# 1807| Type = [IntType] int -# 1807| ValueCategory = prvalue(load) -# 1807| getCondition(): [AddExpr] ... + ... -# 1807| Type = [IntType] int -# 1807| ValueCategory = prvalue -# 1807| getLeftOperand(): [VariableAccess] x -# 1807| Type = [IntType] int -# 1807| ValueCategory = prvalue(load) -# 1807| getRightOperand(): [Literal] 1 -# 1807| Type = [IntType] int -# 1807| Value = [Literal] 1 -# 1807| ValueCategory = prvalue -# 1807| getThen(): [BlockStmt] { ... } -# 1808| getStmt(0): [ExprStmt] ExprStmt -# 1808| getExpr(): [AssignExpr] ... = ... -# 1808| Type = [IntType] int -# 1808| ValueCategory = lvalue -# 1808| getLValue(): [VariableAccess] x -# 1808| Type = [IntType] int -# 1808| ValueCategory = lvalue -# 1808| getRValue(): [AddExpr] ... + ... -# 1808| Type = [IntType] int -# 1808| ValueCategory = prvalue -# 1808| getLeftOperand(): [VariableAccess] x -# 1808| Type = [IntType] int -# 1808| ValueCategory = prvalue(load) -# 1808| getRightOperand(): [VariableAccess] y -# 1808| Type = [IntType] int -# 1808| ValueCategory = prvalue(load) -# 1807| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1807| Conversion = [BoolConversion] conversion to bool -# 1807| Type = [BoolType] bool -# 1807| ValueCategory = prvalue -# 1811| getStmt(1): [DeclStmt] declaration -# 1811| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w -# 1811| Type = [IntType] int -# 1812| getStmt(2): [IfStmt] if (...) ... -# 1812| getInitialization(): [ExprStmt] ExprStmt -# 1812| getExpr(): [AssignExpr] ... = ... -# 1812| Type = [IntType] int -# 1812| ValueCategory = lvalue -# 1812| getLValue(): [VariableAccess] w -# 1812| Type = [IntType] int -# 1812| ValueCategory = lvalue -# 1812| getRValue(): [VariableAccess] x -# 1812| Type = [IntType] int -# 1812| ValueCategory = prvalue(load) -# 1812| getCondition(): [AddExpr] ... + ... -# 1812| Type = [IntType] int -# 1812| ValueCategory = prvalue -# 1812| getLeftOperand(): [VariableAccess] x -# 1812| Type = [IntType] int -# 1812| ValueCategory = prvalue(load) -# 1812| getRightOperand(): [Literal] 1 -# 1812| Type = [IntType] int -# 1812| Value = [Literal] 1 -# 1812| ValueCategory = prvalue -# 1812| getThen(): [BlockStmt] { ... } -# 1813| getStmt(0): [ExprStmt] ExprStmt -# 1813| getExpr(): [AssignExpr] ... = ... -# 1813| Type = [IntType] int -# 1813| ValueCategory = lvalue -# 1813| getLValue(): [VariableAccess] x -# 1813| Type = [IntType] int -# 1813| ValueCategory = lvalue -# 1813| getRValue(): [AddExpr] ... + ... -# 1813| Type = [IntType] int -# 1813| ValueCategory = prvalue -# 1813| getLeftOperand(): [VariableAccess] x -# 1813| Type = [IntType] int -# 1813| ValueCategory = prvalue(load) -# 1813| getRightOperand(): [VariableAccess] w -# 1813| Type = [IntType] int -# 1813| ValueCategory = prvalue(load) -# 1812| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1812| Conversion = [BoolConversion] conversion to bool -# 1812| Type = [BoolType] bool -# 1812| ValueCategory = prvalue -# 1816| getStmt(3): [IfStmt] if (...) ... -# 1816| getInitialization(): [ExprStmt] ExprStmt -# 1816| getExpr(): [AssignExpr] ... = ... -# 1816| Type = [IntType] int -# 1816| ValueCategory = lvalue -# 1816| getLValue(): [VariableAccess] w -# 1816| Type = [IntType] int -# 1816| ValueCategory = lvalue -# 1816| getRValue(): [VariableAccess] x -# 1816| Type = [IntType] int -# 1816| ValueCategory = prvalue(load) -# 1816| getCondition(): [ConditionDeclExpr] (condition decl) -# 1816| Type = [BoolType] bool -# 1816| ValueCategory = prvalue -# 1816| getVariableAccess(): [VariableAccess] w2 -# 1816| Type = [IntType] int -# 1816| ValueCategory = prvalue(load) -# 1816| getInitializingExpr(): [VariableAccess] w -# 1816| Type = [IntType] int -# 1816| ValueCategory = prvalue(load) -# 1816| getVariableAccess().getFullyConverted(): [CStyleCast] (bool)... -# 1816| Conversion = [BoolConversion] conversion to bool -# 1816| Type = [BoolType] bool -# 1816| ValueCategory = prvalue -# 1816| getThen(): [BlockStmt] { ... } -# 1817| getStmt(0): [ExprStmt] ExprStmt -# 1817| getExpr(): [AssignExpr] ... = ... -# 1817| Type = [IntType] int -# 1817| ValueCategory = lvalue -# 1817| getLValue(): [VariableAccess] x -# 1817| Type = [IntType] int -# 1817| ValueCategory = lvalue -# 1817| getRValue(): [AddExpr] ... + ... -# 1817| Type = [IntType] int -# 1817| ValueCategory = prvalue -# 1817| getLeftOperand(): [VariableAccess] x -# 1817| Type = [IntType] int -# 1817| ValueCategory = prvalue(load) -# 1817| getRightOperand(): [VariableAccess] w -# 1817| Type = [IntType] int -# 1817| ValueCategory = prvalue(load) -# 1820| getStmt(4): [IfStmt] if (...) ... -# 1820| getInitialization(): [DeclStmt] declaration -# 1820| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v -# 1820| Type = [IntType] int -# 1820| getVariable().getInitializer(): [Initializer] initializer for v -# 1820| getExpr(): [VariableAccess] x -# 1820| Type = [IntType] int -# 1820| ValueCategory = prvalue(load) -# 1820| getCondition(): [ConditionDeclExpr] (condition decl) -# 1820| Type = [BoolType] bool -# 1820| ValueCategory = prvalue -# 1820| getVariableAccess(): [VariableAccess] v2 -# 1820| Type = [IntType] int -# 1820| ValueCategory = prvalue(load) -# 1820| getInitializingExpr(): [VariableAccess] v -# 1820| Type = [IntType] int -# 1820| ValueCategory = prvalue(load) -# 1820| getVariableAccess().getFullyConverted(): [CStyleCast] (bool)... -# 1820| Conversion = [BoolConversion] conversion to bool -# 1820| Type = [BoolType] bool -# 1820| ValueCategory = prvalue -# 1820| getThen(): [BlockStmt] { ... } -# 1821| getStmt(0): [ExprStmt] ExprStmt -# 1821| getExpr(): [AssignExpr] ... = ... -# 1821| Type = [IntType] int -# 1821| ValueCategory = lvalue -# 1821| getLValue(): [VariableAccess] x -# 1821| Type = [IntType] int -# 1821| ValueCategory = lvalue -# 1821| getRValue(): [AddExpr] ... + ... -# 1821| Type = [IntType] int -# 1821| ValueCategory = prvalue -# 1821| getLeftOperand(): [VariableAccess] x -# 1821| Type = [IntType] int -# 1821| ValueCategory = prvalue(load) -# 1821| getRightOperand(): [VariableAccess] v -# 1821| Type = [IntType] int -# 1821| ValueCategory = prvalue(load) -# 1824| getStmt(5): [DeclStmt] declaration -# 1824| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z -# 1824| Type = [IntType] int -# 1824| getVariable().getInitializer(): [Initializer] initializer for z -# 1824| getExpr(): [VariableAccess] x -# 1824| Type = [IntType] int -# 1824| ValueCategory = prvalue(load) -# 1825| getStmt(6): [IfStmt] if (...) ... -# 1825| getCondition(): [VariableAccess] z -# 1825| Type = [IntType] int -# 1825| ValueCategory = prvalue(load) -# 1825| getThen(): [BlockStmt] { ... } -# 1826| getStmt(0): [ExprStmt] ExprStmt -# 1826| getExpr(): [AssignExpr] ... = ... +# 1798| [Constructor] void CopyConstructorTestVirtualClass::CopyConstructorTestVirtualClass() +# 1798| : +# 1798| : +# 1798| getInitializer(0): [ConstructorVirtualInit] call to CopyConstructorWithImplicitArgumentClass +# 1798| Type = [VoidType] void +# 1798| ValueCategory = prvalue +# 1798| getInitializer(1): [ConstructorVirtualInit] call to CopyConstructorWithBitwiseCopyClass +# 1798| Type = [VoidType] void +# 1798| ValueCategory = prvalue +# 1798| getEntryPoint(): [BlockStmt] { ... } +# 1798| getStmt(0): [ReturnStmt] return ... +# 1801| [TopLevelFunction] int implicit_copy_constructor_test(CopyConstructorTestNonVirtualClass const&, CopyConstructorTestVirtualClass const&) +# 1801| : +# 1802| getParameter(0): [Parameter] x +# 1802| Type = [LValueReferenceType] const CopyConstructorTestNonVirtualClass & +# 1803| getParameter(1): [Parameter] y +# 1803| Type = [LValueReferenceType] const CopyConstructorTestVirtualClass & +# 1803| getEntryPoint(): [BlockStmt] { ... } +# 1804| getStmt(0): [DeclStmt] declaration +# 1804| getDeclarationEntry(0): [VariableDeclarationEntry] definition of cx +# 1804| Type = [Class] CopyConstructorTestNonVirtualClass +# 1804| getVariable().getInitializer(): [Initializer] initializer for cx +# 1804| getExpr(): [ConstructorCall] call to CopyConstructorTestNonVirtualClass +# 1804| Type = [VoidType] void +# 1804| ValueCategory = prvalue +# 1804| getArgument(0): [VariableAccess] x +# 1804| Type = [LValueReferenceType] const CopyConstructorTestNonVirtualClass & +# 1804| ValueCategory = prvalue(load) +# 1804| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 1804| Type = [LValueReferenceType] const CopyConstructorTestNonVirtualClass & +# 1804| ValueCategory = prvalue +# 1804| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1804| Type = [SpecifiedType] const CopyConstructorTestNonVirtualClass +# 1804| ValueCategory = lvalue +# 1805| getStmt(1): [DeclStmt] declaration +# 1805| getDeclarationEntry(0): [VariableDeclarationEntry] definition of cy +# 1805| Type = [Class] CopyConstructorTestVirtualClass +# 1805| getVariable().getInitializer(): [Initializer] initializer for cy +# 1805| getExpr(): [ConstructorCall] call to CopyConstructorTestVirtualClass +# 1805| Type = [VoidType] void +# 1805| ValueCategory = prvalue +# 1805| getArgument(0): [VariableAccess] y +# 1805| Type = [LValueReferenceType] const CopyConstructorTestVirtualClass & +# 1805| ValueCategory = prvalue(load) +# 1805| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 1805| Type = [LValueReferenceType] const CopyConstructorTestVirtualClass & +# 1805| ValueCategory = prvalue +# 1805| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 1805| Type = [SpecifiedType] const CopyConstructorTestVirtualClass +# 1805| ValueCategory = lvalue +# 1806| getStmt(2): [ReturnStmt] return ... +# 1808| [TopLevelFunction] void if_initialization(int) +# 1808| : +# 1808| getParameter(0): [Parameter] x +# 1808| Type = [IntType] int +# 1808| getEntryPoint(): [BlockStmt] { ... } +# 1809| getStmt(0): [IfStmt] if (...) ... +# 1809| getInitialization(): [DeclStmt] declaration +# 1809| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 1809| Type = [IntType] int +# 1809| getVariable().getInitializer(): [Initializer] initializer for y +# 1809| getExpr(): [VariableAccess] x +# 1809| Type = [IntType] int +# 1809| ValueCategory = prvalue(load) +# 1809| getCondition(): [AddExpr] ... + ... +# 1809| Type = [IntType] int +# 1809| ValueCategory = prvalue +# 1809| getLeftOperand(): [VariableAccess] x +# 1809| Type = [IntType] int +# 1809| ValueCategory = prvalue(load) +# 1809| getRightOperand(): [Literal] 1 +# 1809| Type = [IntType] int +# 1809| Value = [Literal] 1 +# 1809| ValueCategory = prvalue +# 1809| getThen(): [BlockStmt] { ... } +# 1810| getStmt(0): [ExprStmt] ExprStmt +# 1810| getExpr(): [AssignExpr] ... = ... +# 1810| Type = [IntType] int +# 1810| ValueCategory = lvalue +# 1810| getLValue(): [VariableAccess] x +# 1810| Type = [IntType] int +# 1810| ValueCategory = lvalue +# 1810| getRValue(): [AddExpr] ... + ... +# 1810| Type = [IntType] int +# 1810| ValueCategory = prvalue +# 1810| getLeftOperand(): [VariableAccess] x +# 1810| Type = [IntType] int +# 1810| ValueCategory = prvalue(load) +# 1810| getRightOperand(): [VariableAccess] y +# 1810| Type = [IntType] int +# 1810| ValueCategory = prvalue(load) +# 1809| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 1809| Conversion = [BoolConversion] conversion to bool +# 1809| Type = [BoolType] bool +# 1809| ValueCategory = prvalue +# 1813| getStmt(1): [DeclStmt] declaration +# 1813| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w +# 1813| Type = [IntType] int +# 1814| getStmt(2): [IfStmt] if (...) ... +# 1814| getInitialization(): [ExprStmt] ExprStmt +# 1814| getExpr(): [AssignExpr] ... = ... +# 1814| Type = [IntType] int +# 1814| ValueCategory = lvalue +# 1814| getLValue(): [VariableAccess] w +# 1814| Type = [IntType] int +# 1814| ValueCategory = lvalue +# 1814| getRValue(): [VariableAccess] x +# 1814| Type = [IntType] int +# 1814| ValueCategory = prvalue(load) +# 1814| getCondition(): [AddExpr] ... + ... +# 1814| Type = [IntType] int +# 1814| ValueCategory = prvalue +# 1814| getLeftOperand(): [VariableAccess] x +# 1814| Type = [IntType] int +# 1814| ValueCategory = prvalue(load) +# 1814| getRightOperand(): [Literal] 1 +# 1814| Type = [IntType] int +# 1814| Value = [Literal] 1 +# 1814| ValueCategory = prvalue +# 1814| getThen(): [BlockStmt] { ... } +# 1815| getStmt(0): [ExprStmt] ExprStmt +# 1815| getExpr(): [AssignExpr] ... = ... +# 1815| Type = [IntType] int +# 1815| ValueCategory = lvalue +# 1815| getLValue(): [VariableAccess] x +# 1815| Type = [IntType] int +# 1815| ValueCategory = lvalue +# 1815| getRValue(): [AddExpr] ... + ... +# 1815| Type = [IntType] int +# 1815| ValueCategory = prvalue +# 1815| getLeftOperand(): [VariableAccess] x +# 1815| Type = [IntType] int +# 1815| ValueCategory = prvalue(load) +# 1815| getRightOperand(): [VariableAccess] w +# 1815| Type = [IntType] int +# 1815| ValueCategory = prvalue(load) +# 1814| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 1814| Conversion = [BoolConversion] conversion to bool +# 1814| Type = [BoolType] bool +# 1814| ValueCategory = prvalue +# 1818| getStmt(3): [IfStmt] if (...) ... +# 1818| getInitialization(): [ExprStmt] ExprStmt +# 1818| getExpr(): [AssignExpr] ... = ... +# 1818| Type = [IntType] int +# 1818| ValueCategory = lvalue +# 1818| getLValue(): [VariableAccess] w +# 1818| Type = [IntType] int +# 1818| ValueCategory = lvalue +# 1818| getRValue(): [VariableAccess] x +# 1818| Type = [IntType] int +# 1818| ValueCategory = prvalue(load) +# 1818| getCondition(): [ConditionDeclExpr] (condition decl) +# 1818| Type = [BoolType] bool +# 1818| ValueCategory = prvalue +# 1818| getVariableAccess(): [VariableAccess] w2 +# 1818| Type = [IntType] int +# 1818| ValueCategory = prvalue(load) +# 1818| getInitializingExpr(): [VariableAccess] w +# 1818| Type = [IntType] int +# 1818| ValueCategory = prvalue(load) +# 1818| getVariableAccess().getFullyConverted(): [CStyleCast] (bool)... +# 1818| Conversion = [BoolConversion] conversion to bool +# 1818| Type = [BoolType] bool +# 1818| ValueCategory = prvalue +# 1818| getThen(): [BlockStmt] { ... } +# 1819| getStmt(0): [ExprStmt] ExprStmt +# 1819| getExpr(): [AssignExpr] ... = ... +# 1819| Type = [IntType] int +# 1819| ValueCategory = lvalue +# 1819| getLValue(): [VariableAccess] x +# 1819| Type = [IntType] int +# 1819| ValueCategory = lvalue +# 1819| getRValue(): [AddExpr] ... + ... +# 1819| Type = [IntType] int +# 1819| ValueCategory = prvalue +# 1819| getLeftOperand(): [VariableAccess] x +# 1819| Type = [IntType] int +# 1819| ValueCategory = prvalue(load) +# 1819| getRightOperand(): [VariableAccess] w +# 1819| Type = [IntType] int +# 1819| ValueCategory = prvalue(load) +# 1822| getStmt(4): [IfStmt] if (...) ... +# 1822| getInitialization(): [DeclStmt] declaration +# 1822| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v +# 1822| Type = [IntType] int +# 1822| getVariable().getInitializer(): [Initializer] initializer for v +# 1822| getExpr(): [VariableAccess] x +# 1822| Type = [IntType] int +# 1822| ValueCategory = prvalue(load) +# 1822| getCondition(): [ConditionDeclExpr] (condition decl) +# 1822| Type = [BoolType] bool +# 1822| ValueCategory = prvalue +# 1822| getVariableAccess(): [VariableAccess] v2 +# 1822| Type = [IntType] int +# 1822| ValueCategory = prvalue(load) +# 1822| getInitializingExpr(): [VariableAccess] v +# 1822| Type = [IntType] int +# 1822| ValueCategory = prvalue(load) +# 1822| getVariableAccess().getFullyConverted(): [CStyleCast] (bool)... +# 1822| Conversion = [BoolConversion] conversion to bool +# 1822| Type = [BoolType] bool +# 1822| ValueCategory = prvalue +# 1822| getThen(): [BlockStmt] { ... } +# 1823| getStmt(0): [ExprStmt] ExprStmt +# 1823| getExpr(): [AssignExpr] ... = ... +# 1823| Type = [IntType] int +# 1823| ValueCategory = lvalue +# 1823| getLValue(): [VariableAccess] x +# 1823| Type = [IntType] int +# 1823| ValueCategory = lvalue +# 1823| getRValue(): [AddExpr] ... + ... +# 1823| Type = [IntType] int +# 1823| ValueCategory = prvalue +# 1823| getLeftOperand(): [VariableAccess] x +# 1823| Type = [IntType] int +# 1823| ValueCategory = prvalue(load) +# 1823| getRightOperand(): [VariableAccess] v +# 1823| Type = [IntType] int +# 1823| ValueCategory = prvalue(load) +# 1826| getStmt(5): [DeclStmt] declaration +# 1826| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z +# 1826| Type = [IntType] int +# 1826| getVariable().getInitializer(): [Initializer] initializer for z +# 1826| getExpr(): [VariableAccess] x # 1826| Type = [IntType] int -# 1826| ValueCategory = lvalue -# 1826| getLValue(): [VariableAccess] x -# 1826| Type = [IntType] int -# 1826| ValueCategory = lvalue -# 1826| getRValue(): [AddExpr] ... + ... -# 1826| Type = [IntType] int -# 1826| ValueCategory = prvalue -# 1826| getLeftOperand(): [VariableAccess] x -# 1826| Type = [IntType] int -# 1826| ValueCategory = prvalue(load) -# 1826| getRightOperand(): [VariableAccess] z -# 1826| Type = [IntType] int -# 1826| ValueCategory = prvalue(load) -# 1825| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 1825| Conversion = [BoolConversion] conversion to bool -# 1825| Type = [BoolType] bool -# 1825| ValueCategory = prvalue -# 1829| getStmt(7): [IfStmt] if (...) ... -# 1829| getCondition(): [ConditionDeclExpr] (condition decl) -# 1829| Type = [BoolType] bool -# 1829| ValueCategory = prvalue -# 1829| getVariableAccess(): [VariableAccess] z2 -# 1829| Type = [IntType] int -# 1829| ValueCategory = prvalue(load) -# 1829| getInitializingExpr(): [VariableAccess] z -# 1829| Type = [IntType] int -# 1829| ValueCategory = prvalue(load) -# 1829| getVariableAccess().getFullyConverted(): [CStyleCast] (bool)... -# 1829| Conversion = [BoolConversion] conversion to bool -# 1829| Type = [BoolType] bool -# 1829| ValueCategory = prvalue -# 1829| getThen(): [BlockStmt] { ... } -# 1830| getStmt(0): [ExprStmt] ExprStmt -# 1830| getExpr(): [AssignAddExpr] ... += ... -# 1830| Type = [IntType] int -# 1830| ValueCategory = lvalue -# 1830| getLValue(): [VariableAccess] x -# 1830| Type = [IntType] int -# 1830| ValueCategory = lvalue -# 1830| getRValue(): [VariableAccess] z2 -# 1830| Type = [IntType] int -# 1830| ValueCategory = prvalue(load) -# 1832| getStmt(8): [ReturnStmt] return ... -# 1834| [TopLevelFunction] void switch_initialization(int) -# 1834| : -# 1834| getParameter(0): [Parameter] x -# 1834| Type = [IntType] int -# 1834| getEntryPoint(): [BlockStmt] { ... } -# 1835| getStmt(0): [SwitchStmt] switch (...) ... -# 1835| getInitialization(): [DeclStmt] declaration -# 1835| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 1835| Type = [IntType] int -# 1835| getVariable().getInitializer(): [Initializer] initializer for y -# 1835| getExpr(): [VariableAccess] x -# 1835| Type = [IntType] int -# 1835| ValueCategory = prvalue(load) -# 1835| getExpr(): [AddExpr] ... + ... -# 1835| Type = [IntType] int -# 1835| ValueCategory = prvalue -# 1835| getLeftOperand(): [VariableAccess] x -# 1835| Type = [IntType] int -# 1835| ValueCategory = prvalue(load) -# 1835| getRightOperand(): [Literal] 1 -# 1835| Type = [IntType] int -# 1835| Value = [Literal] 1 -# 1835| ValueCategory = prvalue -# 1835| getStmt(): [BlockStmt] { ... } -# 1836| getStmt(0): [SwitchCase] default: -# 1837| getStmt(1): [ExprStmt] ExprStmt -# 1837| getExpr(): [AssignExpr] ... = ... -# 1837| Type = [IntType] int -# 1837| ValueCategory = lvalue -# 1837| getLValue(): [VariableAccess] x +# 1826| ValueCategory = prvalue(load) +# 1827| getStmt(6): [IfStmt] if (...) ... +# 1827| getCondition(): [VariableAccess] z +# 1827| Type = [IntType] int +# 1827| ValueCategory = prvalue(load) +# 1827| getThen(): [BlockStmt] { ... } +# 1828| getStmt(0): [ExprStmt] ExprStmt +# 1828| getExpr(): [AssignExpr] ... = ... +# 1828| Type = [IntType] int +# 1828| ValueCategory = lvalue +# 1828| getLValue(): [VariableAccess] x +# 1828| Type = [IntType] int +# 1828| ValueCategory = lvalue +# 1828| getRValue(): [AddExpr] ... + ... +# 1828| Type = [IntType] int +# 1828| ValueCategory = prvalue +# 1828| getLeftOperand(): [VariableAccess] x +# 1828| Type = [IntType] int +# 1828| ValueCategory = prvalue(load) +# 1828| getRightOperand(): [VariableAccess] z +# 1828| Type = [IntType] int +# 1828| ValueCategory = prvalue(load) +# 1827| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 1827| Conversion = [BoolConversion] conversion to bool +# 1827| Type = [BoolType] bool +# 1827| ValueCategory = prvalue +# 1831| getStmt(7): [IfStmt] if (...) ... +# 1831| getCondition(): [ConditionDeclExpr] (condition decl) +# 1831| Type = [BoolType] bool +# 1831| ValueCategory = prvalue +# 1831| getVariableAccess(): [VariableAccess] z2 +# 1831| Type = [IntType] int +# 1831| ValueCategory = prvalue(load) +# 1831| getInitializingExpr(): [VariableAccess] z +# 1831| Type = [IntType] int +# 1831| ValueCategory = prvalue(load) +# 1831| getVariableAccess().getFullyConverted(): [CStyleCast] (bool)... +# 1831| Conversion = [BoolConversion] conversion to bool +# 1831| Type = [BoolType] bool +# 1831| ValueCategory = prvalue +# 1831| getThen(): [BlockStmt] { ... } +# 1832| getStmt(0): [ExprStmt] ExprStmt +# 1832| getExpr(): [AssignAddExpr] ... += ... +# 1832| Type = [IntType] int +# 1832| ValueCategory = lvalue +# 1832| getLValue(): [VariableAccess] x +# 1832| Type = [IntType] int +# 1832| ValueCategory = lvalue +# 1832| getRValue(): [VariableAccess] z2 +# 1832| Type = [IntType] int +# 1832| ValueCategory = prvalue(load) +# 1834| getStmt(8): [ReturnStmt] return ... +# 1836| [TopLevelFunction] void switch_initialization(int) +# 1836| : +# 1836| getParameter(0): [Parameter] x +# 1836| Type = [IntType] int +# 1836| getEntryPoint(): [BlockStmt] { ... } +# 1837| getStmt(0): [SwitchStmt] switch (...) ... +# 1837| getInitialization(): [DeclStmt] declaration +# 1837| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 1837| Type = [IntType] int +# 1837| getVariable().getInitializer(): [Initializer] initializer for y +# 1837| getExpr(): [VariableAccess] x # 1837| Type = [IntType] int -# 1837| ValueCategory = lvalue -# 1837| getRValue(): [AddExpr] ... + ... -# 1837| Type = [IntType] int -# 1837| ValueCategory = prvalue -# 1837| getLeftOperand(): [VariableAccess] x -# 1837| Type = [IntType] int -# 1837| ValueCategory = prvalue(load) -# 1837| getRightOperand(): [VariableAccess] y -# 1837| Type = [IntType] int -# 1837| ValueCategory = prvalue(load) -# 1840| getStmt(1): [DeclStmt] declaration -# 1840| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w -# 1840| Type = [IntType] int -# 1841| getStmt(2): [SwitchStmt] switch (...) ... -# 1841| getInitialization(): [ExprStmt] ExprStmt -# 1841| getExpr(): [AssignExpr] ... = ... -# 1841| Type = [IntType] int -# 1841| ValueCategory = lvalue -# 1841| getLValue(): [VariableAccess] w -# 1841| Type = [IntType] int -# 1841| ValueCategory = lvalue -# 1841| getRValue(): [VariableAccess] x -# 1841| Type = [IntType] int -# 1841| ValueCategory = prvalue(load) -# 1841| getExpr(): [AddExpr] ... + ... -# 1841| Type = [IntType] int -# 1841| ValueCategory = prvalue -# 1841| getLeftOperand(): [VariableAccess] x -# 1841| Type = [IntType] int -# 1841| ValueCategory = prvalue(load) -# 1841| getRightOperand(): [Literal] 1 -# 1841| Type = [IntType] int -# 1841| Value = [Literal] 1 -# 1841| ValueCategory = prvalue -# 1841| getStmt(): [BlockStmt] { ... } -# 1842| getStmt(0): [SwitchCase] default: -# 1843| getStmt(1): [ExprStmt] ExprStmt -# 1843| getExpr(): [AssignExpr] ... = ... +# 1837| ValueCategory = prvalue(load) +# 1837| getExpr(): [AddExpr] ... + ... +# 1837| Type = [IntType] int +# 1837| ValueCategory = prvalue +# 1837| getLeftOperand(): [VariableAccess] x +# 1837| Type = [IntType] int +# 1837| ValueCategory = prvalue(load) +# 1837| getRightOperand(): [Literal] 1 +# 1837| Type = [IntType] int +# 1837| Value = [Literal] 1 +# 1837| ValueCategory = prvalue +# 1837| getStmt(): [BlockStmt] { ... } +# 1838| getStmt(0): [SwitchCase] default: +# 1839| getStmt(1): [ExprStmt] ExprStmt +# 1839| getExpr(): [AssignExpr] ... = ... +# 1839| Type = [IntType] int +# 1839| ValueCategory = lvalue +# 1839| getLValue(): [VariableAccess] x +# 1839| Type = [IntType] int +# 1839| ValueCategory = lvalue +# 1839| getRValue(): [AddExpr] ... + ... +# 1839| Type = [IntType] int +# 1839| ValueCategory = prvalue +# 1839| getLeftOperand(): [VariableAccess] x +# 1839| Type = [IntType] int +# 1839| ValueCategory = prvalue(load) +# 1839| getRightOperand(): [VariableAccess] y +# 1839| Type = [IntType] int +# 1839| ValueCategory = prvalue(load) +# 1842| getStmt(1): [DeclStmt] declaration +# 1842| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w +# 1842| Type = [IntType] int +# 1843| getStmt(2): [SwitchStmt] switch (...) ... +# 1843| getInitialization(): [ExprStmt] ExprStmt +# 1843| getExpr(): [AssignExpr] ... = ... +# 1843| Type = [IntType] int +# 1843| ValueCategory = lvalue +# 1843| getLValue(): [VariableAccess] w # 1843| Type = [IntType] int # 1843| ValueCategory = lvalue -# 1843| getLValue(): [VariableAccess] x -# 1843| Type = [IntType] int -# 1843| ValueCategory = lvalue -# 1843| getRValue(): [AddExpr] ... + ... -# 1843| Type = [IntType] int -# 1843| ValueCategory = prvalue -# 1843| getLeftOperand(): [VariableAccess] x -# 1843| Type = [IntType] int -# 1843| ValueCategory = prvalue(load) -# 1843| getRightOperand(): [VariableAccess] w -# 1843| Type = [IntType] int -# 1843| ValueCategory = prvalue(load) -# 1846| getStmt(3): [SwitchStmt] switch (...) ... -# 1846| getInitialization(): [ExprStmt] ExprStmt -# 1846| getExpr(): [AssignExpr] ... = ... -# 1846| Type = [IntType] int -# 1846| ValueCategory = lvalue -# 1846| getLValue(): [VariableAccess] w -# 1846| Type = [IntType] int -# 1846| ValueCategory = lvalue -# 1846| getRValue(): [VariableAccess] x -# 1846| Type = [IntType] int -# 1846| ValueCategory = prvalue(load) -# 1846| getExpr(): [ConditionDeclExpr] (condition decl) -# 1846| Type = [IntType] int -# 1846| ValueCategory = prvalue -# 1846| getVariableAccess(): [VariableAccess] w2 -# 1846| Type = [IntType] int -# 1846| ValueCategory = prvalue(load) -# 1846| getInitializingExpr(): [VariableAccess] w -# 1846| Type = [IntType] int -# 1846| ValueCategory = prvalue(load) -# 1846| getStmt(): [BlockStmt] { ... } -# 1847| getStmt(0): [SwitchCase] default: -# 1848| getStmt(1): [ExprStmt] ExprStmt -# 1848| getExpr(): [AssignExpr] ... = ... +# 1843| getRValue(): [VariableAccess] x +# 1843| Type = [IntType] int +# 1843| ValueCategory = prvalue(load) +# 1843| getExpr(): [AddExpr] ... + ... +# 1843| Type = [IntType] int +# 1843| ValueCategory = prvalue +# 1843| getLeftOperand(): [VariableAccess] x +# 1843| Type = [IntType] int +# 1843| ValueCategory = prvalue(load) +# 1843| getRightOperand(): [Literal] 1 +# 1843| Type = [IntType] int +# 1843| Value = [Literal] 1 +# 1843| ValueCategory = prvalue +# 1843| getStmt(): [BlockStmt] { ... } +# 1844| getStmt(0): [SwitchCase] default: +# 1845| getStmt(1): [ExprStmt] ExprStmt +# 1845| getExpr(): [AssignExpr] ... = ... +# 1845| Type = [IntType] int +# 1845| ValueCategory = lvalue +# 1845| getLValue(): [VariableAccess] x +# 1845| Type = [IntType] int +# 1845| ValueCategory = lvalue +# 1845| getRValue(): [AddExpr] ... + ... +# 1845| Type = [IntType] int +# 1845| ValueCategory = prvalue +# 1845| getLeftOperand(): [VariableAccess] x +# 1845| Type = [IntType] int +# 1845| ValueCategory = prvalue(load) +# 1845| getRightOperand(): [VariableAccess] w +# 1845| Type = [IntType] int +# 1845| ValueCategory = prvalue(load) +# 1848| getStmt(3): [SwitchStmt] switch (...) ... +# 1848| getInitialization(): [ExprStmt] ExprStmt +# 1848| getExpr(): [AssignExpr] ... = ... +# 1848| Type = [IntType] int +# 1848| ValueCategory = lvalue +# 1848| getLValue(): [VariableAccess] w # 1848| Type = [IntType] int # 1848| ValueCategory = lvalue -# 1848| getLValue(): [VariableAccess] x -# 1848| Type = [IntType] int -# 1848| ValueCategory = lvalue -# 1848| getRValue(): [AddExpr] ... + ... -# 1848| Type = [IntType] int -# 1848| ValueCategory = prvalue -# 1848| getLeftOperand(): [VariableAccess] x -# 1848| Type = [IntType] int -# 1848| ValueCategory = prvalue(load) -# 1848| getRightOperand(): [VariableAccess] w -# 1848| Type = [IntType] int -# 1848| ValueCategory = prvalue(load) -# 1851| getStmt(4): [SwitchStmt] switch (...) ... -# 1851| getInitialization(): [DeclStmt] declaration -# 1851| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v -# 1851| Type = [IntType] int -# 1851| getVariable().getInitializer(): [Initializer] initializer for v -# 1851| getExpr(): [VariableAccess] x -# 1851| Type = [IntType] int -# 1851| ValueCategory = prvalue(load) -# 1851| getExpr(): [ConditionDeclExpr] (condition decl) -# 1851| Type = [IntType] int -# 1851| ValueCategory = prvalue -# 1851| getVariableAccess(): [VariableAccess] v2 -# 1851| Type = [IntType] int -# 1851| ValueCategory = prvalue(load) -# 1851| getInitializingExpr(): [VariableAccess] v -# 1851| Type = [IntType] int -# 1851| ValueCategory = prvalue(load) -# 1851| getStmt(): [BlockStmt] { ... } -# 1852| getStmt(0): [SwitchCase] default: -# 1853| getStmt(1): [ExprStmt] ExprStmt -# 1853| getExpr(): [AssignExpr] ... = ... -# 1853| Type = [IntType] int -# 1853| ValueCategory = lvalue -# 1853| getLValue(): [VariableAccess] x +# 1848| getRValue(): [VariableAccess] x +# 1848| Type = [IntType] int +# 1848| ValueCategory = prvalue(load) +# 1848| getExpr(): [ConditionDeclExpr] (condition decl) +# 1848| Type = [IntType] int +# 1848| ValueCategory = prvalue +# 1848| getVariableAccess(): [VariableAccess] w2 +# 1848| Type = [IntType] int +# 1848| ValueCategory = prvalue(load) +# 1848| getInitializingExpr(): [VariableAccess] w +# 1848| Type = [IntType] int +# 1848| ValueCategory = prvalue(load) +# 1848| getStmt(): [BlockStmt] { ... } +# 1849| getStmt(0): [SwitchCase] default: +# 1850| getStmt(1): [ExprStmt] ExprStmt +# 1850| getExpr(): [AssignExpr] ... = ... +# 1850| Type = [IntType] int +# 1850| ValueCategory = lvalue +# 1850| getLValue(): [VariableAccess] x +# 1850| Type = [IntType] int +# 1850| ValueCategory = lvalue +# 1850| getRValue(): [AddExpr] ... + ... +# 1850| Type = [IntType] int +# 1850| ValueCategory = prvalue +# 1850| getLeftOperand(): [VariableAccess] x +# 1850| Type = [IntType] int +# 1850| ValueCategory = prvalue(load) +# 1850| getRightOperand(): [VariableAccess] w +# 1850| Type = [IntType] int +# 1850| ValueCategory = prvalue(load) +# 1853| getStmt(4): [SwitchStmt] switch (...) ... +# 1853| getInitialization(): [DeclStmt] declaration +# 1853| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v +# 1853| Type = [IntType] int +# 1853| getVariable().getInitializer(): [Initializer] initializer for v +# 1853| getExpr(): [VariableAccess] x # 1853| Type = [IntType] int -# 1853| ValueCategory = lvalue -# 1853| getRValue(): [AddExpr] ... + ... -# 1853| Type = [IntType] int -# 1853| ValueCategory = prvalue -# 1853| getLeftOperand(): [VariableAccess] x -# 1853| Type = [IntType] int -# 1853| ValueCategory = prvalue(load) -# 1853| getRightOperand(): [VariableAccess] v -# 1853| Type = [IntType] int -# 1853| ValueCategory = prvalue(load) -# 1856| getStmt(5): [DeclStmt] declaration -# 1856| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z -# 1856| Type = [IntType] int -# 1856| getVariable().getInitializer(): [Initializer] initializer for z -# 1856| getExpr(): [VariableAccess] x -# 1856| Type = [IntType] int -# 1856| ValueCategory = prvalue(load) -# 1857| getStmt(6): [SwitchStmt] switch (...) ... -# 1857| getExpr(): [VariableAccess] z -# 1857| Type = [IntType] int -# 1857| ValueCategory = prvalue(load) -# 1857| getStmt(): [BlockStmt] { ... } -# 1858| getStmt(0): [SwitchCase] default: -# 1859| getStmt(1): [ExprStmt] ExprStmt -# 1859| getExpr(): [AssignExpr] ... = ... -# 1859| Type = [IntType] int -# 1859| ValueCategory = lvalue -# 1859| getLValue(): [VariableAccess] x -# 1859| Type = [IntType] int -# 1859| ValueCategory = lvalue -# 1859| getRValue(): [AddExpr] ... + ... -# 1859| Type = [IntType] int -# 1859| ValueCategory = prvalue -# 1859| getLeftOperand(): [VariableAccess] x -# 1859| Type = [IntType] int -# 1859| ValueCategory = prvalue(load) -# 1859| getRightOperand(): [VariableAccess] z -# 1859| Type = [IntType] int -# 1859| ValueCategory = prvalue(load) -# 1862| getStmt(7): [SwitchStmt] switch (...) ... -# 1862| getExpr(): [ConditionDeclExpr] (condition decl) -# 1862| Type = [IntType] int -# 1862| ValueCategory = prvalue -# 1862| getVariableAccess(): [VariableAccess] z2 -# 1862| Type = [IntType] int -# 1862| ValueCategory = prvalue(load) -# 1862| getInitializingExpr(): [VariableAccess] z -# 1862| Type = [IntType] int -# 1862| ValueCategory = prvalue(load) -# 1862| getStmt(): [BlockStmt] { ... } -# 1863| getStmt(0): [SwitchCase] default: -# 1864| getStmt(1): [ExprStmt] ExprStmt -# 1864| getExpr(): [AssignAddExpr] ... += ... -# 1864| Type = [IntType] int -# 1864| ValueCategory = lvalue -# 1864| getLValue(): [VariableAccess] x -# 1864| Type = [IntType] int -# 1864| ValueCategory = lvalue -# 1864| getRValue(): [VariableAccess] z2 -# 1864| Type = [IntType] int -# 1864| ValueCategory = prvalue(load) -# 1866| getStmt(8): [ReturnStmt] return ... -# 1870| [GlobalVariable] int global_2 -# 1870| getInitializer(): [Initializer] initializer for global_2 -# 1870| getExpr(): [Literal] 1 -# 1870| Type = [IntType] int -# 1870| Value = [Literal] 1 -# 1870| ValueCategory = prvalue -# 1872| [GlobalVariable] int const global_3 -# 1872| getInitializer(): [Initializer] initializer for global_3 -# 1872| getExpr(): [Literal] 2 +# 1853| ValueCategory = prvalue(load) +# 1853| getExpr(): [ConditionDeclExpr] (condition decl) +# 1853| Type = [IntType] int +# 1853| ValueCategory = prvalue +# 1853| getVariableAccess(): [VariableAccess] v2 +# 1853| Type = [IntType] int +# 1853| ValueCategory = prvalue(load) +# 1853| getInitializingExpr(): [VariableAccess] v +# 1853| Type = [IntType] int +# 1853| ValueCategory = prvalue(load) +# 1853| getStmt(): [BlockStmt] { ... } +# 1854| getStmt(0): [SwitchCase] default: +# 1855| getStmt(1): [ExprStmt] ExprStmt +# 1855| getExpr(): [AssignExpr] ... = ... +# 1855| Type = [IntType] int +# 1855| ValueCategory = lvalue +# 1855| getLValue(): [VariableAccess] x +# 1855| Type = [IntType] int +# 1855| ValueCategory = lvalue +# 1855| getRValue(): [AddExpr] ... + ... +# 1855| Type = [IntType] int +# 1855| ValueCategory = prvalue +# 1855| getLeftOperand(): [VariableAccess] x +# 1855| Type = [IntType] int +# 1855| ValueCategory = prvalue(load) +# 1855| getRightOperand(): [VariableAccess] v +# 1855| Type = [IntType] int +# 1855| ValueCategory = prvalue(load) +# 1858| getStmt(5): [DeclStmt] declaration +# 1858| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z +# 1858| Type = [IntType] int +# 1858| getVariable().getInitializer(): [Initializer] initializer for z +# 1858| getExpr(): [VariableAccess] x +# 1858| Type = [IntType] int +# 1858| ValueCategory = prvalue(load) +# 1859| getStmt(6): [SwitchStmt] switch (...) ... +# 1859| getExpr(): [VariableAccess] z +# 1859| Type = [IntType] int +# 1859| ValueCategory = prvalue(load) +# 1859| getStmt(): [BlockStmt] { ... } +# 1860| getStmt(0): [SwitchCase] default: +# 1861| getStmt(1): [ExprStmt] ExprStmt +# 1861| getExpr(): [AssignExpr] ... = ... +# 1861| Type = [IntType] int +# 1861| ValueCategory = lvalue +# 1861| getLValue(): [VariableAccess] x +# 1861| Type = [IntType] int +# 1861| ValueCategory = lvalue +# 1861| getRValue(): [AddExpr] ... + ... +# 1861| Type = [IntType] int +# 1861| ValueCategory = prvalue +# 1861| getLeftOperand(): [VariableAccess] x +# 1861| Type = [IntType] int +# 1861| ValueCategory = prvalue(load) +# 1861| getRightOperand(): [VariableAccess] z +# 1861| Type = [IntType] int +# 1861| ValueCategory = prvalue(load) +# 1864| getStmt(7): [SwitchStmt] switch (...) ... +# 1864| getExpr(): [ConditionDeclExpr] (condition decl) +# 1864| Type = [IntType] int +# 1864| ValueCategory = prvalue +# 1864| getVariableAccess(): [VariableAccess] z2 +# 1864| Type = [IntType] int +# 1864| ValueCategory = prvalue(load) +# 1864| getInitializingExpr(): [VariableAccess] z +# 1864| Type = [IntType] int +# 1864| ValueCategory = prvalue(load) +# 1864| getStmt(): [BlockStmt] { ... } +# 1865| getStmt(0): [SwitchCase] default: +# 1866| getStmt(1): [ExprStmt] ExprStmt +# 1866| getExpr(): [AssignAddExpr] ... += ... +# 1866| Type = [IntType] int +# 1866| ValueCategory = lvalue +# 1866| getLValue(): [VariableAccess] x +# 1866| Type = [IntType] int +# 1866| ValueCategory = lvalue +# 1866| getRValue(): [VariableAccess] z2 +# 1866| Type = [IntType] int +# 1866| ValueCategory = prvalue(load) +# 1868| getStmt(8): [ReturnStmt] return ... +# 1872| [GlobalVariable] int global_2 +# 1872| getInitializer(): [Initializer] initializer for global_2 +# 1872| getExpr(): [Literal] 1 # 1872| Type = [IntType] int -# 1872| Value = [Literal] 2 +# 1872| Value = [Literal] 1 # 1872| ValueCategory = prvalue -# 1874| [GlobalVariable] constructor_only global_4 -# 1874| getInitializer(): [Initializer] initializer for global_4 -# 1874| getExpr(): [ConstructorCall] call to constructor_only -# 1874| Type = [VoidType] void +# 1874| [GlobalVariable] int const global_3 +# 1874| getInitializer(): [Initializer] initializer for global_3 +# 1874| getExpr(): [Literal] 2 +# 1874| Type = [IntType] int +# 1874| Value = [Literal] 2 # 1874| ValueCategory = prvalue -# 1874| getArgument(0): [Literal] 1 -# 1874| Type = [IntType] int -# 1874| Value = [Literal] 1 -# 1874| ValueCategory = prvalue -# 1876| [GlobalVariable] constructor_only global_5 -# 1876| getInitializer(): [Initializer] initializer for global_5 +# 1876| [GlobalVariable] constructor_only global_4 +# 1876| getInitializer(): [Initializer] initializer for global_4 # 1876| getExpr(): [ConstructorCall] call to constructor_only # 1876| Type = [VoidType] void # 1876| ValueCategory = prvalue -# 1876| getArgument(0): [Literal] 2 +# 1876| getArgument(0): [Literal] 1 # 1876| Type = [IntType] int -# 1876| Value = [Literal] 2 +# 1876| Value = [Literal] 1 # 1876| ValueCategory = prvalue -# 1878| [GlobalVariable] char* global_string -# 1878| getInitializer(): [Initializer] initializer for global_string -# 1878| getExpr(): global string -# 1878| Type = [ArrayType] const char[14] -# 1878| Value = [StringLiteral] "global string" -# 1878| ValueCategory = lvalue -# 1878| getExpr().getFullyConverted(): [CStyleCast] (char *)... -# 1878| Conversion = [PointerConversion] pointer conversion -# 1878| Type = [CharPointerType] char * +# 1878| [GlobalVariable] constructor_only global_5 +# 1878| getInitializer(): [Initializer] initializer for global_5 +# 1878| getExpr(): [ConstructorCall] call to constructor_only +# 1878| Type = [VoidType] void # 1878| ValueCategory = prvalue -# 1878| getExpr(): [ArrayToPointerConversion] array to pointer conversion -# 1878| Type = [PointerType] const char * +# 1878| getArgument(0): [Literal] 2 +# 1878| Type = [IntType] int +# 1878| Value = [Literal] 2 # 1878| ValueCategory = prvalue -# 1880| [GlobalVariable] int global_6 -# 1880| getInitializer(): [Initializer] initializer for global_6 -# 1880| getExpr(): [VariableAccess] global_2 -# 1880| Type = [IntType] int -# 1880| ValueCategory = prvalue(load) -# 1883| [CopyAssignmentOperator] block_assignment::A& block_assignment::A::operator=(block_assignment::A const&) -# 1883| : +# 1880| [GlobalVariable] char* global_string +# 1880| getInitializer(): [Initializer] initializer for global_string +# 1880| getExpr(): global string +# 1880| Type = [ArrayType] const char[14] +# 1880| Value = [StringLiteral] "global string" +# 1880| ValueCategory = lvalue +# 1880| getExpr().getFullyConverted(): [CStyleCast] (char *)... +# 1880| Conversion = [PointerConversion] pointer conversion +# 1880| Type = [CharPointerType] char * +# 1880| ValueCategory = prvalue +# 1880| getExpr(): [ArrayToPointerConversion] array to pointer conversion +# 1880| Type = [PointerType] const char * +# 1880| ValueCategory = prvalue +# 1882| [GlobalVariable] int global_6 +# 1882| getInitializer(): [Initializer] initializer for global_6 +# 1882| getExpr(): [VariableAccess] global_2 +# 1882| Type = [IntType] int +# 1882| ValueCategory = prvalue(load) +# 1885| [CopyAssignmentOperator] block_assignment::A& block_assignment::A::operator=(block_assignment::A const&) +# 1885| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const A & -# 1883| [MoveAssignmentOperator] block_assignment::A& block_assignment::A::operator=(block_assignment::A&&) -# 1883| : +# 1885| [MoveAssignmentOperator] block_assignment::A& block_assignment::A::operator=(block_assignment::A&&) +# 1885| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] A && #-----| getEntryPoint(): [BlockStmt] { ... } @@ -17855,43 +17855,43 @@ ir.cpp: #-----| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) #-----| Type = [LValueReferenceType] A & #-----| ValueCategory = prvalue -# 1883| [Constructor] void block_assignment::A::A() -# 1883| : -# 1883| [CopyConstructor] void block_assignment::A::A(block_assignment::A const&) -# 1883| : +# 1885| [Constructor] void block_assignment::A::A() +# 1885| : +# 1885| [CopyConstructor] void block_assignment::A::A(block_assignment::A const&) +# 1885| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const A & -# 1883| [MoveConstructor] void block_assignment::A::A(block_assignment::A&&) -# 1883| : +# 1885| [MoveConstructor] void block_assignment::A::A(block_assignment::A&&) +# 1885| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] A && -# 1885| [VirtualFunction] void block_assignment::A::f() -# 1885| : -# 1888| [CopyAssignmentOperator] block_assignment::B& block_assignment::B::operator=(block_assignment::B const&) -# 1888| : +# 1887| [VirtualFunction] void block_assignment::A::f() +# 1887| : +# 1890| [CopyAssignmentOperator] block_assignment::B& block_assignment::B::operator=(block_assignment::B const&) +# 1890| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const B & -# 1888| [MoveAssignmentOperator] block_assignment::B& block_assignment::B::operator=(block_assignment::B&&) -# 1888| : +# 1890| [MoveAssignmentOperator] block_assignment::B& block_assignment::B::operator=(block_assignment::B&&) +# 1890| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] B && #-----| getEntryPoint(): [BlockStmt] { ... } #-----| getStmt(0): [ExprStmt] ExprStmt -# 1888| getExpr(): [FunctionCall] call to operator= -# 1888| Type = [LValueReferenceType] A & -# 1888| ValueCategory = prvalue -# 1888| getQualifier(): [ThisExpr] this -# 1888| Type = [PointerType] B * -# 1888| ValueCategory = prvalue(load) -# 1888| getArgument(0): [PointerDereferenceExpr] * ... -# 1888| Type = [Class] A -# 1888| ValueCategory = xvalue -# 1888| getOperand(): [AddressOfExpr] & ... -# 1888| Type = [PointerType] B * -# 1888| ValueCategory = prvalue -# 1888| getOperand(): [VariableAccess] (unnamed parameter 0) -# 1888| Type = [RValueReferenceType] B && -# 1888| ValueCategory = prvalue(load) +# 1890| getExpr(): [FunctionCall] call to operator= +# 1890| Type = [LValueReferenceType] A & +# 1890| ValueCategory = prvalue +# 1890| getQualifier(): [ThisExpr] this +# 1890| Type = [PointerType] B * +# 1890| ValueCategory = prvalue(load) +# 1890| getArgument(0): [PointerDereferenceExpr] * ... +# 1890| Type = [Class] A +# 1890| ValueCategory = xvalue +# 1890| getOperand(): [AddressOfExpr] & ... +# 1890| Type = [PointerType] B * +# 1890| ValueCategory = prvalue +# 1890| getOperand(): [VariableAccess] (unnamed parameter 0) +# 1890| Type = [RValueReferenceType] B && +# 1890| ValueCategory = prvalue(load) #-----| getOperand().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [Struct] B #-----| ValueCategory = lvalue @@ -17919,780 +17919,742 @@ ir.cpp: #-----| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) #-----| Type = [LValueReferenceType] B & #-----| ValueCategory = prvalue -# 1888| [CopyConstructor] void block_assignment::B::B(block_assignment::B const&) -# 1888| : +# 1890| [CopyConstructor] void block_assignment::B::B(block_assignment::B const&) +# 1890| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const B & -# 1888| [MoveConstructor] void block_assignment::B::B(block_assignment::B&&) -# 1888| : +# 1890| [MoveConstructor] void block_assignment::B::B(block_assignment::B&&) +# 1890| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] B && -# 1889| [Constructor] void block_assignment::B::B(block_assignment::A*) -# 1889| : -# 1889| getParameter(0): [Parameter] (unnamed parameter 0) -# 1889| Type = [PointerType] A * -# 1892| [TopLevelFunction] void block_assignment::foo() -# 1892| : -# 1892| getEntryPoint(): [BlockStmt] { ... } -# 1893| getStmt(0): [DeclStmt] declaration -# 1893| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v -# 1893| Type = [Struct] B -# 1893| getVariable().getInitializer(): [Initializer] initializer for v -# 1893| getExpr(): [ConstructorCall] call to B -# 1893| Type = [VoidType] void -# 1893| ValueCategory = prvalue -# 1893| getArgument(0): [Literal] 0 -# 1893| Type = [IntType] int -# 1893| Value = [Literal] 0 -# 1893| ValueCategory = prvalue -# 1893| getArgument(0).getFullyConverted(): [CStyleCast] (A *)... -# 1893| Conversion = [IntegralToPointerConversion] integral to pointer conversion -# 1893| Type = [PointerType] A * -# 1893| Value = [CStyleCast] 0 -# 1893| ValueCategory = prvalue -# 1894| getStmt(1): [ExprStmt] ExprStmt -# 1894| getExpr(): [FunctionCall] call to operator= -# 1894| Type = [LValueReferenceType] B & -# 1894| ValueCategory = prvalue -# 1894| getQualifier(): [VariableAccess] v -# 1894| Type = [Struct] B -# 1894| ValueCategory = lvalue -# 1894| getArgument(0): [ConstructorCall] call to B -# 1894| Type = [VoidType] void -# 1894| ValueCategory = prvalue -# 1894| getArgument(0): [Literal] 0 -# 1894| Type = [IntType] int -# 1894| Value = [Literal] 0 -# 1894| ValueCategory = prvalue -# 1894| getArgument(0).getFullyConverted(): [CStyleCast] (A *)... -# 1894| Conversion = [IntegralToPointerConversion] integral to pointer conversion -# 1894| Type = [PointerType] A * -# 1894| Value = [CStyleCast] 0 -# 1894| ValueCategory = prvalue -# 1894| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 1894| Type = [LValueReferenceType] B & -# 1894| ValueCategory = prvalue -# 1894| getExpr(): [TemporaryObjectExpr] temporary object -# 1894| Type = [Struct] B -# 1894| ValueCategory = lvalue -# 1894| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 1894| Type = [Struct] B -# 1894| ValueCategory = lvalue -# 1895| getStmt(2): [ReturnStmt] return ... -# 1898| [TopLevelFunction] void magicvars() -# 1898| : -# 1898| getEntryPoint(): [BlockStmt] { ... } -# 1899| getStmt(0): [DeclStmt] declaration -# 1899| getDeclarationEntry(0): [VariableDeclarationEntry] definition of pf -# 1899| Type = [PointerType] const char * -# 1899| getVariable().getInitializer(): [Initializer] initializer for pf -# 1899| getExpr(): [VariableAccess] __PRETTY_FUNCTION__ -# 1899| Type = [ArrayType] const char[17] -# 1899| ValueCategory = lvalue -# 1899| getExpr().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1899| Type = [PointerType] const char * -# 1899| ValueCategory = prvalue -# 1900| getStmt(1): [DeclStmt] declaration -# 1900| getDeclarationEntry(0): [VariableDeclarationEntry] definition of strfunc -# 1900| Type = [PointerType] const char * -# 1900| getVariable().getInitializer(): [Initializer] initializer for strfunc -# 1900| getExpr(): [VariableAccess] __func__ -# 1900| Type = [ArrayType] const char[10] -# 1900| ValueCategory = lvalue -# 1900| getExpr().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1900| Type = [PointerType] const char * -# 1900| ValueCategory = prvalue -# 1901| getStmt(2): [ReturnStmt] return ... -# 1904| [CopyAssignmentOperator] missing_declaration_entries::S& missing_declaration_entries::S::operator=(missing_declaration_entries::S const&) -# 1904| : +# 1891| [Constructor] void block_assignment::B::B(block_assignment::A*) +# 1891| : +# 1891| getParameter(0): [Parameter] (unnamed parameter 0) +# 1891| Type = [PointerType] A * +# 1894| [TopLevelFunction] void block_assignment::foo() +# 1894| : +# 1894| getEntryPoint(): [BlockStmt] { ... } +# 1895| getStmt(0): [DeclStmt] declaration +# 1895| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v +# 1895| Type = [Struct] B +# 1895| getVariable().getInitializer(): [Initializer] initializer for v +# 1895| getExpr(): [ConstructorCall] call to B +# 1895| Type = [VoidType] void +# 1895| ValueCategory = prvalue +# 1895| getArgument(0): [Literal] 0 +# 1895| Type = [IntType] int +# 1895| Value = [Literal] 0 +# 1895| ValueCategory = prvalue +# 1895| getArgument(0).getFullyConverted(): [CStyleCast] (A *)... +# 1895| Conversion = [IntegralToPointerConversion] integral to pointer conversion +# 1895| Type = [PointerType] A * +# 1895| Value = [CStyleCast] 0 +# 1895| ValueCategory = prvalue +# 1896| getStmt(1): [ExprStmt] ExprStmt +# 1896| getExpr(): [FunctionCall] call to operator= +# 1896| Type = [LValueReferenceType] B & +# 1896| ValueCategory = prvalue +# 1896| getQualifier(): [VariableAccess] v +# 1896| Type = [Struct] B +# 1896| ValueCategory = lvalue +# 1896| getArgument(0): [ConstructorCall] call to B +# 1896| Type = [VoidType] void +# 1896| ValueCategory = prvalue +# 1896| getArgument(0): [Literal] 0 +# 1896| Type = [IntType] int +# 1896| Value = [Literal] 0 +# 1896| ValueCategory = prvalue +# 1896| getArgument(0).getFullyConverted(): [CStyleCast] (A *)... +# 1896| Conversion = [IntegralToPointerConversion] integral to pointer conversion +# 1896| Type = [PointerType] A * +# 1896| Value = [CStyleCast] 0 +# 1896| ValueCategory = prvalue +# 1896| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 1896| Type = [LValueReferenceType] B & +# 1896| ValueCategory = prvalue +# 1896| getExpr(): [TemporaryObjectExpr] temporary object +# 1896| Type = [Struct] B +# 1896| ValueCategory = lvalue +# 1896| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 1896| Type = [Struct] B +# 1896| ValueCategory = lvalue +# 1897| getStmt(2): [ReturnStmt] return ... +# 1900| [TopLevelFunction] void magicvars() +# 1900| : +# 1900| getEntryPoint(): [BlockStmt] { ... } +# 1901| getStmt(0): [DeclStmt] declaration +# 1901| getDeclarationEntry(0): [VariableDeclarationEntry] definition of pf +# 1901| Type = [PointerType] const char * +# 1901| getVariable().getInitializer(): [Initializer] initializer for pf +# 1901| getExpr(): [VariableAccess] __PRETTY_FUNCTION__ +# 1901| Type = [ArrayType] const char[17] +# 1901| ValueCategory = lvalue +# 1901| getExpr().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1901| Type = [PointerType] const char * +# 1901| ValueCategory = prvalue +# 1902| getStmt(1): [DeclStmt] declaration +# 1902| getDeclarationEntry(0): [VariableDeclarationEntry] definition of strfunc +# 1902| Type = [PointerType] const char * +# 1902| getVariable().getInitializer(): [Initializer] initializer for strfunc +# 1902| getExpr(): [VariableAccess] __func__ +# 1902| Type = [ArrayType] const char[10] +# 1902| ValueCategory = lvalue +# 1902| getExpr().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1902| Type = [PointerType] const char * +# 1902| ValueCategory = prvalue +# 1903| getStmt(2): [ReturnStmt] return ... +# 1906| [CopyAssignmentOperator] missing_declaration_entries::S& missing_declaration_entries::S::operator=(missing_declaration_entries::S const&) +# 1906| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const S & -# 1904| [MoveAssignmentOperator] missing_declaration_entries::S& missing_declaration_entries::S::operator=(missing_declaration_entries::S&&) -# 1904| : +# 1906| [MoveAssignmentOperator] missing_declaration_entries::S& missing_declaration_entries::S::operator=(missing_declaration_entries::S&&) +# 1906| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] S && -# 1911| [MemberFunction] void* missing_declaration_entries::Bar1::missing_type_decl_entry(missing_declaration_entries::Bar1::pointer) -# 1911| : -# 1911| getParameter(0): [Parameter] p -# 1911| Type = [CTypedefType,NestedTypedefType] pointer -# 1911| getEntryPoint(): [BlockStmt] { ... } -# 1912| getStmt(0): [DeclStmt] declaration -# 1912| getDeclarationEntry(0): [TypeDeclarationEntry] declaration of _Res -# 1912| Type = [CTypedefType,LocalTypedefType] _Res -# 1913| getStmt(1): [ReturnStmt] return ... -# 1913| getExpr(): [VariableAccess] p -# 1913| Type = [CTypedefType,NestedTypedefType] pointer -# 1913| ValueCategory = prvalue(load) -# 1913| getExpr().getFullyConverted(): [CStyleCast] (void *)... -# 1913| Conversion = [PointerConversion] pointer conversion -# 1913| Type = [VoidPointerType] void * -# 1913| ValueCategory = prvalue -# 1911| [MemberFunction] void* missing_declaration_entries::Bar1::missing_type_decl_entry(missing_declaration_entries::Bar1::pointer) -# 1911| : -# 1911| getParameter(0): [Parameter] p -# 1911| Type = [CTypedefType,NestedTypedefType] pointer -# 1911| getEntryPoint(): [BlockStmt] { ... } -# 1912| getStmt(0): [DeclStmt] declaration -# 1912| getDeclarationEntry(0): [TypeDeclarationEntry] declaration of _Res -# 1912| Type = [CTypedefType,LocalTypedefType] _Res -# 1913| getStmt(1): [ReturnStmt] return ... -# 1913| getExpr(): [VariableAccess] p -# 1913| Type = [CTypedefType,NestedTypedefType] pointer -# 1913| ValueCategory = prvalue(load) -# 1913| getExpr().getFullyConverted(): [CStyleCast] (void *)... -# 1913| Conversion = [PointerConversion] pointer conversion -# 1913| Type = [VoidPointerType] void * -# 1913| ValueCategory = prvalue -# 1917| [TopLevelFunction] void missing_declaration_entries::test1() -# 1917| : -# 1917| getEntryPoint(): [BlockStmt] { ... } -# 1918| getStmt(0): [DeclStmt] declaration -# 1918| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b -# 1918| Type = [ClassTemplateInstantiation,Struct] Bar1 -# 1919| getStmt(1): [ExprStmt] ExprStmt -# 1919| getExpr(): [FunctionCall] call to missing_type_decl_entry -# 1919| Type = [VoidPointerType] void * -# 1919| ValueCategory = prvalue -# 1919| getQualifier(): [VariableAccess] b -# 1919| Type = [ClassTemplateInstantiation,Struct] Bar1 -# 1919| ValueCategory = lvalue -# 1919| getArgument(0): [Literal] 0 -# 1919| Type = [NullPointerType] decltype(nullptr) -# 1919| Value = [Literal] 0 -# 1919| ValueCategory = prvalue -# 1919| getArgument(0).getFullyConverted(): [CStyleCast] (pointer)... -# 1919| Conversion = [PointerConversion] pointer conversion -# 1919| Type = [CTypedefType,NestedTypedefType] pointer -# 1919| Value = [CStyleCast] 0 -# 1919| ValueCategory = prvalue -# 1920| getStmt(2): [ReturnStmt] return ... -# 1924| [MemberFunction] int missing_declaration_entries::Bar2::two_missing_variable_declaration_entries() -# 1924| : -# 1924| getEntryPoint(): [BlockStmt] { ... } -# 1925| getStmt(0): [DeclStmt] declaration -# 1925| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 1925| Type = [ArrayType] int[10] -# 1925| getDeclarationEntry(1): [VariableDeclarationEntry] definition of y -# 1925| Type = [ArrayType] int[10] -# 1926| getStmt(1): [ExprStmt] ExprStmt -# 1926| getExpr(): [AssignExpr] ... = ... -# 1926| Type = [IntType] int -# 1926| ValueCategory = lvalue -# 1926| getLValue(): [PointerDereferenceExpr] * ... -# 1926| Type = [IntType] int -# 1926| ValueCategory = lvalue -# 1926| getOperand(): [VariableAccess] x -# 1926| Type = [ArrayType] int[10] -# 1926| ValueCategory = lvalue -# 1926| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1926| Type = [IntPointerType] int * -# 1926| ValueCategory = prvalue -# 1926| getRValue(): [Literal] 10 -# 1926| Type = [IntType] int -# 1926| Value = [Literal] 10 -# 1926| ValueCategory = prvalue -# 1927| getStmt(2): [ExprStmt] ExprStmt -# 1927| getExpr(): [AssignExpr] ... = ... -# 1927| Type = [IntType] int -# 1927| ValueCategory = lvalue -# 1927| getLValue(): [PointerDereferenceExpr] * ... -# 1927| Type = [IntType] int -# 1927| ValueCategory = lvalue -# 1927| getOperand(): [VariableAccess] y -# 1927| Type = [ArrayType] int[10] -# 1927| ValueCategory = lvalue -# 1927| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1927| Type = [IntPointerType] int * -# 1927| ValueCategory = prvalue -# 1927| getRValue(): [Literal] 10 -# 1927| Type = [IntType] int -# 1927| Value = [Literal] 10 -# 1927| ValueCategory = prvalue -# 1928| getStmt(3): [ReturnStmt] return ... -# 1928| getExpr(): [AddExpr] ... + ... +# 1913| [MemberFunction] void* missing_declaration_entries::Bar1::missing_type_decl_entry(missing_declaration_entries::Bar1::pointer) +# 1913| : +# 1913| getParameter(0): [Parameter] p +# 1913| Type = [CTypedefType,NestedTypedefType] pointer +# 1913| getEntryPoint(): [BlockStmt] { ... } +# 1914| getStmt(0): [DeclStmt] declaration +# 1914| getDeclarationEntry(0): [TypeDeclarationEntry] declaration of _Res +# 1914| Type = [CTypedefType,LocalTypedefType] _Res +# 1915| getStmt(1): [ReturnStmt] return ... +# 1915| getExpr(): [VariableAccess] p +# 1915| Type = [CTypedefType,NestedTypedefType] pointer +# 1915| ValueCategory = prvalue(load) +# 1915| getExpr().getFullyConverted(): [CStyleCast] (void *)... +# 1915| Conversion = [PointerConversion] pointer conversion +# 1915| Type = [VoidPointerType] void * +# 1915| ValueCategory = prvalue +# 1913| [MemberFunction] void* missing_declaration_entries::Bar1::missing_type_decl_entry(missing_declaration_entries::Bar1::pointer) +# 1913| : +# 1913| getParameter(0): [Parameter] p +# 1913| Type = [CTypedefType,NestedTypedefType] pointer +# 1913| getEntryPoint(): [BlockStmt] { ... } +# 1914| getStmt(0): [DeclStmt] declaration +# 1914| getDeclarationEntry(0): [TypeDeclarationEntry] declaration of _Res +# 1914| Type = [CTypedefType,LocalTypedefType] _Res +# 1915| getStmt(1): [ReturnStmt] return ... +# 1915| getExpr(): [VariableAccess] p +# 1915| Type = [CTypedefType,NestedTypedefType] pointer +# 1915| ValueCategory = prvalue(load) +# 1915| getExpr().getFullyConverted(): [CStyleCast] (void *)... +# 1915| Conversion = [PointerConversion] pointer conversion +# 1915| Type = [VoidPointerType] void * +# 1915| ValueCategory = prvalue +# 1919| [TopLevelFunction] void missing_declaration_entries::test1() +# 1919| : +# 1919| getEntryPoint(): [BlockStmt] { ... } +# 1920| getStmt(0): [DeclStmt] declaration +# 1920| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b +# 1920| Type = [ClassTemplateInstantiation,Struct] Bar1 +# 1921| getStmt(1): [ExprStmt] ExprStmt +# 1921| getExpr(): [FunctionCall] call to missing_type_decl_entry +# 1921| Type = [VoidPointerType] void * +# 1921| ValueCategory = prvalue +# 1921| getQualifier(): [VariableAccess] b +# 1921| Type = [ClassTemplateInstantiation,Struct] Bar1 +# 1921| ValueCategory = lvalue +# 1921| getArgument(0): [Literal] 0 +# 1921| Type = [NullPointerType] decltype(nullptr) +# 1921| Value = [Literal] 0 +# 1921| ValueCategory = prvalue +# 1921| getArgument(0).getFullyConverted(): [CStyleCast] (pointer)... +# 1921| Conversion = [PointerConversion] pointer conversion +# 1921| Type = [CTypedefType,NestedTypedefType] pointer +# 1921| Value = [CStyleCast] 0 +# 1921| ValueCategory = prvalue +# 1922| getStmt(2): [ReturnStmt] return ... +# 1926| [MemberFunction] int missing_declaration_entries::Bar2::two_missing_variable_declaration_entries() +# 1926| : +# 1926| getEntryPoint(): [BlockStmt] { ... } +# 1927| getStmt(0): [DeclStmt] declaration +# 1927| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 1927| Type = [ArrayType] int[10] +# 1927| getDeclarationEntry(1): [VariableDeclarationEntry] definition of y +# 1927| Type = [ArrayType] int[10] +# 1928| getStmt(1): [ExprStmt] ExprStmt +# 1928| getExpr(): [AssignExpr] ... = ... # 1928| Type = [IntType] int -# 1928| ValueCategory = prvalue -# 1928| getLeftOperand(): [PointerDereferenceExpr] * ... +# 1928| ValueCategory = lvalue +# 1928| getLValue(): [PointerDereferenceExpr] * ... # 1928| Type = [IntType] int -# 1928| ValueCategory = prvalue(load) +# 1928| ValueCategory = lvalue # 1928| getOperand(): [VariableAccess] x # 1928| Type = [ArrayType] int[10] # 1928| ValueCategory = lvalue # 1928| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion # 1928| Type = [IntPointerType] int * # 1928| ValueCategory = prvalue -# 1928| getRightOperand(): [PointerDereferenceExpr] * ... +# 1928| getRValue(): [Literal] 10 # 1928| Type = [IntType] int -# 1928| ValueCategory = prvalue(load) -# 1928| getOperand(): [VariableAccess] y -# 1928| Type = [ArrayType] int[10] -# 1928| ValueCategory = lvalue -# 1928| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1928| Type = [IntPointerType] int * -# 1928| ValueCategory = prvalue -# 1924| [MemberFunction] int missing_declaration_entries::Bar2::two_missing_variable_declaration_entries() -# 1924| : -# 1924| getEntryPoint(): [BlockStmt] { ... } -# 1925| getStmt(0): [DeclStmt] declaration -# 1925| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 1925| Type = [ArrayType] int[10] -# 1925| getDeclarationEntry(1): [VariableDeclarationEntry] definition of y -# 1925| Type = [ArrayType] int[10] -# 1926| getStmt(1): [ExprStmt] ExprStmt -# 1926| getExpr(): [AssignExpr] ... = ... -# 1926| Type = [IntType] int -# 1926| ValueCategory = lvalue -# 1926| getLValue(): [PointerDereferenceExpr] * ... -# 1926| Type = [IntType] int -# 1926| ValueCategory = lvalue -# 1926| getOperand(): [VariableAccess] x -# 1926| Type = [ArrayType] int[10] -# 1926| ValueCategory = lvalue -# 1926| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1926| Type = [IntPointerType] int * -# 1926| ValueCategory = prvalue -# 1926| getRValue(): [Literal] 10 -# 1926| Type = [IntType] int -# 1926| Value = [Literal] 10 -# 1926| ValueCategory = prvalue -# 1927| getStmt(2): [ExprStmt] ExprStmt -# 1927| getExpr(): [AssignExpr] ... = ... -# 1927| Type = [IntType] int -# 1927| ValueCategory = lvalue -# 1927| getLValue(): [PointerDereferenceExpr] * ... -# 1927| Type = [IntType] int -# 1927| ValueCategory = lvalue -# 1927| getOperand(): [VariableAccess] y -# 1927| Type = [ArrayType] int[10] -# 1927| ValueCategory = lvalue -# 1927| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1927| Type = [IntPointerType] int * -# 1927| ValueCategory = prvalue -# 1927| getRValue(): [Literal] 10 -# 1927| Type = [IntType] int -# 1927| Value = [Literal] 10 -# 1927| ValueCategory = prvalue -# 1928| getStmt(3): [ReturnStmt] return ... -# 1928| getExpr(): [AddExpr] ... + ... +# 1928| Value = [Literal] 10 +# 1928| ValueCategory = prvalue +# 1929| getStmt(2): [ExprStmt] ExprStmt +# 1929| getExpr(): [AssignExpr] ... = ... +# 1929| Type = [IntType] int +# 1929| ValueCategory = lvalue +# 1929| getLValue(): [PointerDereferenceExpr] * ... +# 1929| Type = [IntType] int +# 1929| ValueCategory = lvalue +# 1929| getOperand(): [VariableAccess] y +# 1929| Type = [ArrayType] int[10] +# 1929| ValueCategory = lvalue +# 1929| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1929| Type = [IntPointerType] int * +# 1929| ValueCategory = prvalue +# 1929| getRValue(): [Literal] 10 +# 1929| Type = [IntType] int +# 1929| Value = [Literal] 10 +# 1929| ValueCategory = prvalue +# 1930| getStmt(3): [ReturnStmt] return ... +# 1930| getExpr(): [AddExpr] ... + ... +# 1930| Type = [IntType] int +# 1930| ValueCategory = prvalue +# 1930| getLeftOperand(): [PointerDereferenceExpr] * ... +# 1930| Type = [IntType] int +# 1930| ValueCategory = prvalue(load) +# 1930| getOperand(): [VariableAccess] x +# 1930| Type = [ArrayType] int[10] +# 1930| ValueCategory = lvalue +# 1930| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1930| Type = [IntPointerType] int * +# 1930| ValueCategory = prvalue +# 1930| getRightOperand(): [PointerDereferenceExpr] * ... +# 1930| Type = [IntType] int +# 1930| ValueCategory = prvalue(load) +# 1930| getOperand(): [VariableAccess] y +# 1930| Type = [ArrayType] int[10] +# 1930| ValueCategory = lvalue +# 1930| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1930| Type = [IntPointerType] int * +# 1930| ValueCategory = prvalue +# 1926| [MemberFunction] int missing_declaration_entries::Bar2::two_missing_variable_declaration_entries() +# 1926| : +# 1926| getEntryPoint(): [BlockStmt] { ... } +# 1927| getStmt(0): [DeclStmt] declaration +# 1927| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 1927| Type = [ArrayType] int[10] +# 1927| getDeclarationEntry(1): [VariableDeclarationEntry] definition of y +# 1927| Type = [ArrayType] int[10] +# 1928| getStmt(1): [ExprStmt] ExprStmt +# 1928| getExpr(): [AssignExpr] ... = ... # 1928| Type = [IntType] int -# 1928| ValueCategory = prvalue -# 1928| getLeftOperand(): [PointerDereferenceExpr] * ... +# 1928| ValueCategory = lvalue +# 1928| getLValue(): [PointerDereferenceExpr] * ... # 1928| Type = [IntType] int -# 1928| ValueCategory = prvalue(load) +# 1928| ValueCategory = lvalue # 1928| getOperand(): [VariableAccess] x # 1928| Type = [ArrayType] int[10] # 1928| ValueCategory = lvalue # 1928| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion # 1928| Type = [IntPointerType] int * # 1928| ValueCategory = prvalue -# 1928| getRightOperand(): [PointerDereferenceExpr] * ... +# 1928| getRValue(): [Literal] 10 # 1928| Type = [IntType] int -# 1928| ValueCategory = prvalue(load) -# 1928| getOperand(): [VariableAccess] y -# 1928| Type = [ArrayType] int[10] -# 1928| ValueCategory = lvalue -# 1928| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 1928| Type = [IntPointerType] int * -# 1928| ValueCategory = prvalue -# 1932| [TopLevelFunction] void missing_declaration_entries::test2() -# 1932| : -# 1932| getEntryPoint(): [BlockStmt] { ... } -# 1933| getStmt(0): [DeclStmt] declaration -# 1933| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b -# 1933| Type = [ClassTemplateInstantiation,Struct] Bar2 -# 1934| getStmt(1): [ExprStmt] ExprStmt -# 1934| getExpr(): [FunctionCall] call to two_missing_variable_declaration_entries -# 1934| Type = [IntType] int -# 1934| ValueCategory = prvalue -# 1934| getQualifier(): [VariableAccess] b -# 1934| Type = [ClassTemplateInstantiation,Struct] Bar2 -# 1934| ValueCategory = lvalue -# 1935| getStmt(2): [ReturnStmt] return ... -# 1939| [MemberFunction] int missing_declaration_entries::Bar3::two_more_missing_variable_declaration_entries() -# 1939| : -# 1939| getEntryPoint(): [BlockStmt] { ... } -# 1940| getStmt(0): [DeclStmt] declaration -# 1940| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of g -# 1940| Type = [IntType] int -# 1941| getStmt(1): [DeclStmt] declaration -# 1941| getDeclarationEntry(0): [FunctionDeclarationEntry] declaration of z -# 1941| Type = [IntType] int -# 1942| getStmt(2): [ReturnStmt] return ... -# 1942| getExpr(): [VariableAccess] g -# 1942| Type = [IntType] int -# 1942| ValueCategory = prvalue(load) -# 1939| [MemberFunction] int missing_declaration_entries::Bar3::two_more_missing_variable_declaration_entries() -# 1939| : -# 1939| getEntryPoint(): [BlockStmt] { ... } -# 1940| getStmt(0): [DeclStmt] declaration -# 1940| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of g -# 1940| Type = [IntType] int -# 1941| getStmt(1): [DeclStmt] declaration -# 1941| getDeclarationEntry(0): [FunctionDeclarationEntry] declaration of z -# 1941| Type = [IntType] int -# 1942| getStmt(2): [ReturnStmt] return ... -# 1942| getExpr(): [VariableAccess] g -# 1942| Type = [IntType] int -# 1942| ValueCategory = prvalue(load) -# 1941| [TopLevelFunction] int missing_declaration_entries::z(float) +# 1928| Value = [Literal] 10 +# 1928| ValueCategory = prvalue +# 1929| getStmt(2): [ExprStmt] ExprStmt +# 1929| getExpr(): [AssignExpr] ... = ... +# 1929| Type = [IntType] int +# 1929| ValueCategory = lvalue +# 1929| getLValue(): [PointerDereferenceExpr] * ... +# 1929| Type = [IntType] int +# 1929| ValueCategory = lvalue +# 1929| getOperand(): [VariableAccess] y +# 1929| Type = [ArrayType] int[10] +# 1929| ValueCategory = lvalue +# 1929| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1929| Type = [IntPointerType] int * +# 1929| ValueCategory = prvalue +# 1929| getRValue(): [Literal] 10 +# 1929| Type = [IntType] int +# 1929| Value = [Literal] 10 +# 1929| ValueCategory = prvalue +# 1930| getStmt(3): [ReturnStmt] return ... +# 1930| getExpr(): [AddExpr] ... + ... +# 1930| Type = [IntType] int +# 1930| ValueCategory = prvalue +# 1930| getLeftOperand(): [PointerDereferenceExpr] * ... +# 1930| Type = [IntType] int +# 1930| ValueCategory = prvalue(load) +# 1930| getOperand(): [VariableAccess] x +# 1930| Type = [ArrayType] int[10] +# 1930| ValueCategory = lvalue +# 1930| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1930| Type = [IntPointerType] int * +# 1930| ValueCategory = prvalue +# 1930| getRightOperand(): [PointerDereferenceExpr] * ... +# 1930| Type = [IntType] int +# 1930| ValueCategory = prvalue(load) +# 1930| getOperand(): [VariableAccess] y +# 1930| Type = [ArrayType] int[10] +# 1930| ValueCategory = lvalue +# 1930| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 1930| Type = [IntPointerType] int * +# 1930| ValueCategory = prvalue +# 1934| [TopLevelFunction] void missing_declaration_entries::test2() +# 1934| : +# 1934| getEntryPoint(): [BlockStmt] { ... } +# 1935| getStmt(0): [DeclStmt] declaration +# 1935| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b +# 1935| Type = [ClassTemplateInstantiation,Struct] Bar2 +# 1936| getStmt(1): [ExprStmt] ExprStmt +# 1936| getExpr(): [FunctionCall] call to two_missing_variable_declaration_entries +# 1936| Type = [IntType] int +# 1936| ValueCategory = prvalue +# 1936| getQualifier(): [VariableAccess] b +# 1936| Type = [ClassTemplateInstantiation,Struct] Bar2 +# 1936| ValueCategory = lvalue +# 1937| getStmt(2): [ReturnStmt] return ... +# 1941| [MemberFunction] int missing_declaration_entries::Bar3::two_more_missing_variable_declaration_entries() # 1941| : -# 1941| getParameter(0): [Parameter] (unnamed parameter 0) -# 1941| Type = [FloatType] float -# 1946| [TopLevelFunction] void missing_declaration_entries::test3() -# 1946| : -# 1946| getEntryPoint(): [BlockStmt] { ... } -# 1947| getStmt(0): [DeclStmt] declaration -# 1947| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b -# 1947| Type = [ClassTemplateInstantiation,Struct] Bar3 -# 1948| getStmt(1): [ExprStmt] ExprStmt -# 1948| getExpr(): [FunctionCall] call to two_more_missing_variable_declaration_entries -# 1948| Type = [IntType] int -# 1948| ValueCategory = prvalue -# 1948| getQualifier(): [VariableAccess] b -# 1948| Type = [ClassTemplateInstantiation,Struct] Bar3 -# 1948| ValueCategory = lvalue -# 1949| getStmt(2): [ReturnStmt] return ... -# 1952| [GlobalVariable,VariableTemplateInstantiation] char global_template -# 1952| getInitializer(): [Initializer] initializer for global_template -# 1952| getExpr(): [Literal] 42 -# 1952| Type = [IntType] int -# 1952| Value = [Literal] 42 -# 1952| ValueCategory = prvalue -# 1952| getExpr().getFullyConverted(): [CStyleCast] (char)... -# 1952| Conversion = [IntegralConversion] integral conversion -# 1952| Type = [PlainCharType] char -# 1952| Value = [CStyleCast] 42 -# 1952| ValueCategory = prvalue -# 1952| [GlobalVariable,VariableTemplateInstantiation] int global_template -# 1952| getInitializer(): [Initializer] initializer for global_template -# 1952| getExpr(): [Literal] 42 -# 1952| Type = [IntType] int -# 1952| Value = [Literal] 42 -# 1952| ValueCategory = prvalue -# 1954| [TopLevelFunction] int test_global_template_int() -# 1954| : -# 1954| getEntryPoint(): [BlockStmt] { ... } -# 1955| getStmt(0): [DeclStmt] declaration -# 1955| getDeclarationEntry(0): [VariableDeclarationEntry] definition of local_int -# 1955| Type = [IntType] int -# 1955| getVariable().getInitializer(): [Initializer] initializer for local_int -# 1955| getExpr(): [VariableAccess] global_template -# 1955| Type = [IntType] int -# 1955| ValueCategory = prvalue(load) -# 1956| getStmt(1): [DeclStmt] declaration -# 1956| getDeclarationEntry(0): [VariableDeclarationEntry] definition of local_char -# 1956| Type = [PlainCharType] char -# 1956| getVariable().getInitializer(): [Initializer] initializer for local_char -# 1956| getExpr(): [VariableAccess] global_template -# 1956| Type = [PlainCharType] char -# 1956| ValueCategory = prvalue(load) -# 1957| getStmt(2): [ReturnStmt] return ... -# 1957| getExpr(): [AddExpr] ... + ... +# 1941| getEntryPoint(): [BlockStmt] { ... } +# 1942| getStmt(0): [DeclStmt] declaration +# 1942| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of g +# 1942| Type = [IntType] int +# 1943| getStmt(1): [DeclStmt] declaration +# 1943| getDeclarationEntry(0): [FunctionDeclarationEntry] declaration of z +# 1943| Type = [IntType] int +# 1944| getStmt(2): [ReturnStmt] return ... +# 1944| getExpr(): [VariableAccess] g +# 1944| Type = [IntType] int +# 1944| ValueCategory = prvalue(load) +# 1941| [MemberFunction] int missing_declaration_entries::Bar3::two_more_missing_variable_declaration_entries() +# 1941| : +# 1941| getEntryPoint(): [BlockStmt] { ... } +# 1942| getStmt(0): [DeclStmt] declaration +# 1942| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of g +# 1942| Type = [IntType] int +# 1943| getStmt(1): [DeclStmt] declaration +# 1943| getDeclarationEntry(0): [FunctionDeclarationEntry] declaration of z +# 1943| Type = [IntType] int +# 1944| getStmt(2): [ReturnStmt] return ... +# 1944| getExpr(): [VariableAccess] g +# 1944| Type = [IntType] int +# 1944| ValueCategory = prvalue(load) +# 1943| [TopLevelFunction] int missing_declaration_entries::z(float) +# 1943| : +# 1943| getParameter(0): [Parameter] (unnamed parameter 0) +# 1943| Type = [FloatType] float +# 1948| [TopLevelFunction] void missing_declaration_entries::test3() +# 1948| : +# 1948| getEntryPoint(): [BlockStmt] { ... } +# 1949| getStmt(0): [DeclStmt] declaration +# 1949| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b +# 1949| Type = [ClassTemplateInstantiation,Struct] Bar3 +# 1950| getStmt(1): [ExprStmt] ExprStmt +# 1950| getExpr(): [FunctionCall] call to two_more_missing_variable_declaration_entries +# 1950| Type = [IntType] int +# 1950| ValueCategory = prvalue +# 1950| getQualifier(): [VariableAccess] b +# 1950| Type = [ClassTemplateInstantiation,Struct] Bar3 +# 1950| ValueCategory = lvalue +# 1951| getStmt(2): [ReturnStmt] return ... +# 1954| [GlobalVariable,VariableTemplateInstantiation] char global_template +# 1954| getInitializer(): [Initializer] initializer for global_template +# 1954| getExpr(): [Literal] 42 +# 1954| Type = [IntType] int +# 1954| Value = [Literal] 42 +# 1954| ValueCategory = prvalue +# 1954| getExpr().getFullyConverted(): [CStyleCast] (char)... +# 1954| Conversion = [IntegralConversion] integral conversion +# 1954| Type = [PlainCharType] char +# 1954| Value = [CStyleCast] 42 +# 1954| ValueCategory = prvalue +# 1954| [GlobalVariable,VariableTemplateInstantiation] int global_template +# 1954| getInitializer(): [Initializer] initializer for global_template +# 1954| getExpr(): [Literal] 42 +# 1954| Type = [IntType] int +# 1954| Value = [Literal] 42 +# 1954| ValueCategory = prvalue +# 1956| [TopLevelFunction] int test_global_template_int() +# 1956| : +# 1956| getEntryPoint(): [BlockStmt] { ... } +# 1957| getStmt(0): [DeclStmt] declaration +# 1957| getDeclarationEntry(0): [VariableDeclarationEntry] definition of local_int # 1957| Type = [IntType] int -# 1957| ValueCategory = prvalue -# 1957| getLeftOperand(): [VariableAccess] local_int -# 1957| Type = [IntType] int -# 1957| ValueCategory = prvalue(load) -# 1957| getRightOperand(): [VariableAccess] local_char -# 1957| Type = [PlainCharType] char -# 1957| ValueCategory = prvalue(load) -# 1957| getRightOperand().getFullyConverted(): [CStyleCast] (int)... -# 1957| Conversion = [IntegralConversion] integral conversion -# 1957| Type = [IntType] int -# 1957| ValueCategory = prvalue -# 1960| [TopLevelFunction] void noreturnFunc() -# 1960| : -# 1962| [TopLevelFunction] int noreturnTest(int) +# 1957| getVariable().getInitializer(): [Initializer] initializer for local_int +# 1957| getExpr(): [VariableAccess] global_template +# 1957| Type = [IntType] int +# 1957| ValueCategory = prvalue(load) +# 1958| getStmt(1): [DeclStmt] declaration +# 1958| getDeclarationEntry(0): [VariableDeclarationEntry] definition of local_char +# 1958| Type = [PlainCharType] char +# 1958| getVariable().getInitializer(): [Initializer] initializer for local_char +# 1958| getExpr(): [VariableAccess] global_template +# 1958| Type = [PlainCharType] char +# 1958| ValueCategory = prvalue(load) +# 1959| getStmt(2): [ReturnStmt] return ... +# 1959| getExpr(): [AddExpr] ... + ... +# 1959| Type = [IntType] int +# 1959| ValueCategory = prvalue +# 1959| getLeftOperand(): [VariableAccess] local_int +# 1959| Type = [IntType] int +# 1959| ValueCategory = prvalue(load) +# 1959| getRightOperand(): [VariableAccess] local_char +# 1959| Type = [PlainCharType] char +# 1959| ValueCategory = prvalue(load) +# 1959| getRightOperand().getFullyConverted(): [CStyleCast] (int)... +# 1959| Conversion = [IntegralConversion] integral conversion +# 1959| Type = [IntType] int +# 1959| ValueCategory = prvalue +# 1962| [TopLevelFunction] void noreturnFunc() # 1962| : -# 1962| getParameter(0): [Parameter] x -# 1962| Type = [IntType] int -# 1962| getEntryPoint(): [BlockStmt] { ... } -# 1963| getStmt(0): [IfStmt] if (...) ... -# 1963| getCondition(): [LTExpr] ... < ... -# 1963| Type = [BoolType] bool -# 1963| ValueCategory = prvalue -# 1963| getLesserOperand(): [VariableAccess] x -# 1963| Type = [IntType] int -# 1963| ValueCategory = prvalue(load) -# 1963| getGreaterOperand(): [Literal] 10 -# 1963| Type = [IntType] int -# 1963| Value = [Literal] 10 -# 1963| ValueCategory = prvalue -# 1963| getThen(): [BlockStmt] { ... } -# 1964| getStmt(0): [ReturnStmt] return ... -# 1964| getExpr(): [VariableAccess] x -# 1964| Type = [IntType] int -# 1964| ValueCategory = prvalue(load) -# 1965| getElse(): [BlockStmt] { ... } -# 1966| getStmt(0): [ExprStmt] ExprStmt -# 1966| getExpr(): [FunctionCall] call to noreturnFunc -# 1966| Type = [VoidType] void -# 1966| ValueCategory = prvalue -# 1968| getStmt(1): [ReturnStmt] return ... -# 1970| [TopLevelFunction] int noreturnTest2(int) -# 1970| : -# 1970| getParameter(0): [Parameter] x -# 1970| Type = [IntType] int -# 1970| getEntryPoint(): [BlockStmt] { ... } -# 1971| getStmt(0): [IfStmt] if (...) ... -# 1971| getCondition(): [LTExpr] ... < ... -# 1971| Type = [BoolType] bool -# 1971| ValueCategory = prvalue -# 1971| getLesserOperand(): [VariableAccess] x -# 1971| Type = [IntType] int -# 1971| ValueCategory = prvalue(load) -# 1971| getGreaterOperand(): [Literal] 10 -# 1971| Type = [IntType] int -# 1971| Value = [Literal] 10 -# 1971| ValueCategory = prvalue -# 1971| getThen(): [BlockStmt] { ... } -# 1972| getStmt(0): [ExprStmt] ExprStmt -# 1972| getExpr(): [FunctionCall] call to noreturnFunc -# 1972| Type = [VoidType] void -# 1972| ValueCategory = prvalue -# 1974| getStmt(1): [ReturnStmt] return ... -# 1974| getExpr(): [VariableAccess] x -# 1974| Type = [IntType] int -# 1974| ValueCategory = prvalue(load) -# 1977| [TopLevelFunction] int static_function(int) -# 1977| : -# 1977| getParameter(0): [Parameter] x -# 1977| Type = [IntType] int -# 1977| getEntryPoint(): [BlockStmt] { ... } -# 1978| getStmt(0): [ReturnStmt] return ... -# 1978| getExpr(): [VariableAccess] x -# 1978| Type = [IntType] int -# 1978| ValueCategory = prvalue(load) -# 1981| [TopLevelFunction] void test_static_functions_with_assignments() -# 1981| : -# 1981| getEntryPoint(): [BlockStmt] { ... } -# 1982| getStmt(0): [DeclStmt] declaration -# 1982| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c -# 1982| Type = [Class] C -# 1982| getVariable().getInitializer(): [Initializer] initializer for c -# 1982| getExpr(): [ConstructorCall] call to C -# 1982| Type = [VoidType] void -# 1982| ValueCategory = prvalue -# 1983| getStmt(1): [DeclStmt] declaration -# 1983| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 1983| Type = [IntType] int -# 1984| getStmt(2): [ExprStmt] ExprStmt -# 1984| getExpr(): [AssignExpr] ... = ... -# 1984| Type = [IntType] int -# 1984| ValueCategory = lvalue -# 1984| getLValue(): [VariableAccess] x -# 1984| Type = [IntType] int -# 1984| ValueCategory = lvalue -# 1984| getRValue(): [FunctionCall] call to StaticMemberFunction -# 1984| Type = [IntType] int -# 1984| ValueCategory = prvalue -# 1984| getQualifier(): [VariableAccess] c -# 1984| Type = [Class] C -# 1984| ValueCategory = lvalue -# 1984| getArgument(0): [Literal] 10 -# 1984| Type = [IntType] int -# 1984| Value = [Literal] 10 +# 1964| [TopLevelFunction] int noreturnTest(int) +# 1964| : +# 1964| getParameter(0): [Parameter] x +# 1964| Type = [IntType] int +# 1964| getEntryPoint(): [BlockStmt] { ... } +# 1965| getStmt(0): [IfStmt] if (...) ... +# 1965| getCondition(): [LTExpr] ... < ... +# 1965| Type = [BoolType] bool +# 1965| ValueCategory = prvalue +# 1965| getLesserOperand(): [VariableAccess] x +# 1965| Type = [IntType] int +# 1965| ValueCategory = prvalue(load) +# 1965| getGreaterOperand(): [Literal] 10 +# 1965| Type = [IntType] int +# 1965| Value = [Literal] 10 +# 1965| ValueCategory = prvalue +# 1965| getThen(): [BlockStmt] { ... } +# 1966| getStmt(0): [ReturnStmt] return ... +# 1966| getExpr(): [VariableAccess] x +# 1966| Type = [IntType] int +# 1966| ValueCategory = prvalue(load) +# 1967| getElse(): [BlockStmt] { ... } +# 1968| getStmt(0): [ExprStmt] ExprStmt +# 1968| getExpr(): [FunctionCall] call to noreturnFunc +# 1968| Type = [VoidType] void +# 1968| ValueCategory = prvalue +# 1970| getStmt(1): [ReturnStmt] return ... +# 1972| [TopLevelFunction] int noreturnTest2(int) +# 1972| : +# 1972| getParameter(0): [Parameter] x +# 1972| Type = [IntType] int +# 1972| getEntryPoint(): [BlockStmt] { ... } +# 1973| getStmt(0): [IfStmt] if (...) ... +# 1973| getCondition(): [LTExpr] ... < ... +# 1973| Type = [BoolType] bool +# 1973| ValueCategory = prvalue +# 1973| getLesserOperand(): [VariableAccess] x +# 1973| Type = [IntType] int +# 1973| ValueCategory = prvalue(load) +# 1973| getGreaterOperand(): [Literal] 10 +# 1973| Type = [IntType] int +# 1973| Value = [Literal] 10 +# 1973| ValueCategory = prvalue +# 1973| getThen(): [BlockStmt] { ... } +# 1974| getStmt(0): [ExprStmt] ExprStmt +# 1974| getExpr(): [FunctionCall] call to noreturnFunc +# 1974| Type = [VoidType] void +# 1974| ValueCategory = prvalue +# 1976| getStmt(1): [ReturnStmt] return ... +# 1976| getExpr(): [VariableAccess] x +# 1976| Type = [IntType] int +# 1976| ValueCategory = prvalue(load) +# 1979| [TopLevelFunction] int static_function(int) +# 1979| : +# 1979| getParameter(0): [Parameter] x +# 1979| Type = [IntType] int +# 1979| getEntryPoint(): [BlockStmt] { ... } +# 1980| getStmt(0): [ReturnStmt] return ... +# 1980| getExpr(): [VariableAccess] x +# 1980| Type = [IntType] int +# 1980| ValueCategory = prvalue(load) +# 1983| [TopLevelFunction] void test_static_functions_with_assignments() +# 1983| : +# 1983| getEntryPoint(): [BlockStmt] { ... } +# 1984| getStmt(0): [DeclStmt] declaration +# 1984| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c +# 1984| Type = [Class] C +# 1984| getVariable().getInitializer(): [Initializer] initializer for c +# 1984| getExpr(): [ConstructorCall] call to C +# 1984| Type = [VoidType] void # 1984| ValueCategory = prvalue -# 1985| getStmt(3): [DeclStmt] declaration -# 1985| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 1985| getStmt(1): [DeclStmt] declaration +# 1985| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x # 1985| Type = [IntType] int -# 1986| getStmt(4): [ExprStmt] ExprStmt +# 1986| getStmt(2): [ExprStmt] ExprStmt # 1986| getExpr(): [AssignExpr] ... = ... # 1986| Type = [IntType] int # 1986| ValueCategory = lvalue -# 1986| getLValue(): [VariableAccess] y +# 1986| getLValue(): [VariableAccess] x # 1986| Type = [IntType] int # 1986| ValueCategory = lvalue # 1986| getRValue(): [FunctionCall] call to StaticMemberFunction # 1986| Type = [IntType] int # 1986| ValueCategory = prvalue +# 1986| getQualifier(): [VariableAccess] c +# 1986| Type = [Class] C +# 1986| ValueCategory = lvalue # 1986| getArgument(0): [Literal] 10 # 1986| Type = [IntType] int # 1986| Value = [Literal] 10 # 1986| ValueCategory = prvalue -# 1987| getStmt(5): [DeclStmt] declaration -# 1987| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z +# 1987| getStmt(3): [DeclStmt] declaration +# 1987| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y # 1987| Type = [IntType] int -# 1988| getStmt(6): [ExprStmt] ExprStmt +# 1988| getStmt(4): [ExprStmt] ExprStmt # 1988| getExpr(): [AssignExpr] ... = ... # 1988| Type = [IntType] int # 1988| ValueCategory = lvalue -# 1988| getLValue(): [VariableAccess] z +# 1988| getLValue(): [VariableAccess] y # 1988| Type = [IntType] int # 1988| ValueCategory = lvalue -# 1988| getRValue(): [FunctionCall] call to static_function +# 1988| getRValue(): [FunctionCall] call to StaticMemberFunction # 1988| Type = [IntType] int # 1988| ValueCategory = prvalue # 1988| getArgument(0): [Literal] 10 # 1988| Type = [IntType] int # 1988| Value = [Literal] 10 # 1988| ValueCategory = prvalue -# 1989| getStmt(7): [ReturnStmt] return ... -# 1989| getImplicitDestructorCall(0): [DestructorCall] call to ~C -# 1989| Type = [VoidType] void -# 1989| ValueCategory = prvalue -# 1989| getQualifier(): [VariableAccess] c -# 1989| Type = [Class] C -# 1989| ValueCategory = lvalue -# 1991| [TopLevelFunction] void test_double_assign() -# 1991| : -# 1991| getEntryPoint(): [BlockStmt] { ... } -# 1992| getStmt(0): [DeclStmt] declaration -# 1992| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i -# 1992| Type = [IntType] int -# 1992| getDeclarationEntry(1): [VariableDeclarationEntry] definition of j -# 1992| Type = [IntType] int -# 1993| getStmt(1): [ExprStmt] ExprStmt -# 1993| getExpr(): [AssignExpr] ... = ... -# 1993| Type = [IntType] int -# 1993| ValueCategory = lvalue -# 1993| getLValue(): [VariableAccess] i -# 1993| Type = [IntType] int -# 1993| ValueCategory = lvalue -# 1993| getRValue(): [AssignExpr] ... = ... -# 1993| Type = [IntType] int -# 1993| ValueCategory = prvalue(load) -# 1993| getLValue(): [VariableAccess] j -# 1993| Type = [IntType] int -# 1993| ValueCategory = lvalue -# 1993| getRValue(): [Literal] 40 -# 1993| Type = [IntType] int -# 1993| Value = [Literal] 40 -# 1993| ValueCategory = prvalue -# 1994| getStmt(2): [ReturnStmt] return ... -# 1996| [TopLevelFunction] void test_assign_with_assign_operation() -# 1996| : -# 1996| getEntryPoint(): [BlockStmt] { ... } -# 1997| getStmt(0): [DeclStmt] declaration -# 1997| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i -# 1997| Type = [IntType] int -# 1997| getDeclarationEntry(1): [VariableDeclarationEntry] definition of j -# 1997| Type = [IntType] int -# 1997| getVariable().getInitializer(): [Initializer] initializer for j -# 1997| getExpr(): [Literal] 0 -# 1997| Type = [IntType] int -# 1997| Value = [Literal] 0 -# 1997| ValueCategory = prvalue -# 1998| getStmt(1): [ExprStmt] ExprStmt -# 1998| getExpr(): [AssignExpr] ... = ... -# 1998| Type = [IntType] int -# 1998| ValueCategory = lvalue -# 1998| getLValue(): [VariableAccess] i -# 1998| Type = [IntType] int -# 1998| ValueCategory = lvalue -# 1998| getRValue(): [AssignAddExpr] ... += ... -# 1998| Type = [IntType] int -# 1998| ValueCategory = prvalue(load) -# 1998| getLValue(): [VariableAccess] j -# 1998| Type = [IntType] int -# 1998| ValueCategory = lvalue -# 1998| getRValue(): [Literal] 40 -# 1998| Type = [IntType] int -# 1998| Value = [Literal] 40 -# 1998| ValueCategory = prvalue -# 1998| getRValue().getFullyConverted(): [ParenthesisExpr] (...) -# 1998| Type = [IntType] int -# 1998| ValueCategory = prvalue(load) -# 1999| getStmt(2): [ReturnStmt] return ... -# 2001| [CopyAssignmentOperator] D& D::operator=(D const&) -# 2001| : +# 1989| getStmt(5): [DeclStmt] declaration +# 1989| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z +# 1989| Type = [IntType] int +# 1990| getStmt(6): [ExprStmt] ExprStmt +# 1990| getExpr(): [AssignExpr] ... = ... +# 1990| Type = [IntType] int +# 1990| ValueCategory = lvalue +# 1990| getLValue(): [VariableAccess] z +# 1990| Type = [IntType] int +# 1990| ValueCategory = lvalue +# 1990| getRValue(): [FunctionCall] call to static_function +# 1990| Type = [IntType] int +# 1990| ValueCategory = prvalue +# 1990| getArgument(0): [Literal] 10 +# 1990| Type = [IntType] int +# 1990| Value = [Literal] 10 +# 1990| ValueCategory = prvalue +# 1991| getStmt(7): [ReturnStmt] return ... +# 1991| getImplicitDestructorCall(0): [DestructorCall] call to ~C +# 1991| Type = [VoidType] void +# 1991| ValueCategory = prvalue +# 1991| getQualifier(): [VariableAccess] c +# 1991| Type = [Class] C +# 1991| ValueCategory = lvalue +# 1993| [TopLevelFunction] void test_double_assign() +# 1993| : +# 1993| getEntryPoint(): [BlockStmt] { ... } +# 1994| getStmt(0): [DeclStmt] declaration +# 1994| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i +# 1994| Type = [IntType] int +# 1994| getDeclarationEntry(1): [VariableDeclarationEntry] definition of j +# 1994| Type = [IntType] int +# 1995| getStmt(1): [ExprStmt] ExprStmt +# 1995| getExpr(): [AssignExpr] ... = ... +# 1995| Type = [IntType] int +# 1995| ValueCategory = lvalue +# 1995| getLValue(): [VariableAccess] i +# 1995| Type = [IntType] int +# 1995| ValueCategory = lvalue +# 1995| getRValue(): [AssignExpr] ... = ... +# 1995| Type = [IntType] int +# 1995| ValueCategory = prvalue(load) +# 1995| getLValue(): [VariableAccess] j +# 1995| Type = [IntType] int +# 1995| ValueCategory = lvalue +# 1995| getRValue(): [Literal] 40 +# 1995| Type = [IntType] int +# 1995| Value = [Literal] 40 +# 1995| ValueCategory = prvalue +# 1996| getStmt(2): [ReturnStmt] return ... +# 1998| [TopLevelFunction] void test_assign_with_assign_operation() +# 1998| : +# 1998| getEntryPoint(): [BlockStmt] { ... } +# 1999| getStmt(0): [DeclStmt] declaration +# 1999| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i +# 1999| Type = [IntType] int +# 1999| getDeclarationEntry(1): [VariableDeclarationEntry] definition of j +# 1999| Type = [IntType] int +# 1999| getVariable().getInitializer(): [Initializer] initializer for j +# 1999| getExpr(): [Literal] 0 +# 1999| Type = [IntType] int +# 1999| Value = [Literal] 0 +# 1999| ValueCategory = prvalue +# 2000| getStmt(1): [ExprStmt] ExprStmt +# 2000| getExpr(): [AssignExpr] ... = ... +# 2000| Type = [IntType] int +# 2000| ValueCategory = lvalue +# 2000| getLValue(): [VariableAccess] i +# 2000| Type = [IntType] int +# 2000| ValueCategory = lvalue +# 2000| getRValue(): [AssignAddExpr] ... += ... +# 2000| Type = [IntType] int +# 2000| ValueCategory = prvalue(load) +# 2000| getLValue(): [VariableAccess] j +# 2000| Type = [IntType] int +# 2000| ValueCategory = lvalue +# 2000| getRValue(): [Literal] 40 +# 2000| Type = [IntType] int +# 2000| Value = [Literal] 40 +# 2000| ValueCategory = prvalue +# 2000| getRValue().getFullyConverted(): [ParenthesisExpr] (...) +# 2000| Type = [IntType] int +# 2000| ValueCategory = prvalue(load) +# 2001| getStmt(2): [ReturnStmt] return ... +# 2003| [CopyAssignmentOperator] D& D::operator=(D const&) +# 2003| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const D & -# 2001| [MoveAssignmentOperator] D& D::operator=(D&&) -# 2001| : +# 2003| [MoveAssignmentOperator] D& D::operator=(D&&) +# 2003| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] D && -# 2005| [MemberFunction] D& D::ReferenceStaticMemberFunction() -# 2005| : -# 2005| getEntryPoint(): [BlockStmt] { ... } -# 2006| getStmt(0): [ReturnStmt] return ... -# 2006| getExpr(): [VariableAccess] x -# 2006| Type = [Class] D -# 2006| ValueCategory = lvalue -# 2006| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 2006| Type = [LValueReferenceType] D & -# 2006| ValueCategory = prvalue -# 2008| [MemberFunction] D D::ObjectStaticMemberFunction() -# 2008| : -# 2008| getEntryPoint(): [BlockStmt] { ... } -# 2009| getStmt(0): [ReturnStmt] return ... -# 2009| getExpr(): [VariableAccess] x -# 2009| Type = [Class] D -# 2009| ValueCategory = prvalue(load) -# 2013| [TopLevelFunction] void test_static_member_functions_with_reference_return() -# 2013| : -# 2013| getEntryPoint(): [BlockStmt] { ... } -# 2014| getStmt(0): [DeclStmt] declaration -# 2014| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d -# 2014| Type = [Class] D -# 2016| getStmt(1): [ExprStmt] ExprStmt -# 2016| getExpr(): [FunctionCall] call to ReferenceStaticMemberFunction -# 2016| Type = [LValueReferenceType] D & -# 2016| ValueCategory = prvalue -# 2016| getQualifier(): [VariableAccess] d -# 2016| Type = [Class] D -# 2016| ValueCategory = lvalue -# 2016| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2007| [MemberFunction] D& D::ReferenceStaticMemberFunction() +# 2007| : +# 2007| getEntryPoint(): [BlockStmt] { ... } +# 2008| getStmt(0): [ReturnStmt] return ... +# 2008| getExpr(): [VariableAccess] x +# 2008| Type = [Class] D +# 2008| ValueCategory = lvalue +# 2008| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 2008| Type = [LValueReferenceType] D & +# 2008| ValueCategory = prvalue +# 2010| [MemberFunction] D D::ObjectStaticMemberFunction() +# 2010| : +# 2010| getEntryPoint(): [BlockStmt] { ... } +# 2011| getStmt(0): [ReturnStmt] return ... +# 2011| getExpr(): [VariableAccess] x +# 2011| Type = [Class] D +# 2011| ValueCategory = prvalue(load) +# 2015| [TopLevelFunction] void test_static_member_functions_with_reference_return() +# 2015| : +# 2015| getEntryPoint(): [BlockStmt] { ... } +# 2016| getStmt(0): [DeclStmt] declaration +# 2016| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d # 2016| Type = [Class] D -# 2016| ValueCategory = lvalue -# 2017| getStmt(2): [ExprStmt] ExprStmt -# 2017| getExpr(): [FunctionCall] call to ReferenceStaticMemberFunction -# 2017| Type = [LValueReferenceType] D & -# 2017| ValueCategory = prvalue -# 2017| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2017| Type = [Class] D -# 2017| ValueCategory = lvalue -# 2018| getStmt(3): [ExprStmt] ExprStmt -# 2018| getExpr(): [FunctionCall] call to ObjectStaticMemberFunction -# 2018| Type = [Class] D +# 2018| getStmt(1): [ExprStmt] ExprStmt +# 2018| getExpr(): [FunctionCall] call to ReferenceStaticMemberFunction +# 2018| Type = [LValueReferenceType] D & # 2018| ValueCategory = prvalue # 2018| getQualifier(): [VariableAccess] d # 2018| Type = [Class] D # 2018| ValueCategory = lvalue -# 2019| getStmt(4): [ExprStmt] ExprStmt -# 2019| getExpr(): [FunctionCall] call to ObjectStaticMemberFunction -# 2019| Type = [Class] D +# 2018| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2018| Type = [Class] D +# 2018| ValueCategory = lvalue +# 2019| getStmt(2): [ExprStmt] ExprStmt +# 2019| getExpr(): [FunctionCall] call to ReferenceStaticMemberFunction +# 2019| Type = [LValueReferenceType] D & # 2019| ValueCategory = prvalue -# 2021| getStmt(5): [DeclStmt] declaration -# 2021| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2019| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2019| Type = [Class] D +# 2019| ValueCategory = lvalue +# 2020| getStmt(3): [ExprStmt] ExprStmt +# 2020| getExpr(): [FunctionCall] call to ObjectStaticMemberFunction +# 2020| Type = [Class] D +# 2020| ValueCategory = prvalue +# 2020| getQualifier(): [VariableAccess] d +# 2020| Type = [Class] D +# 2020| ValueCategory = lvalue +# 2021| getStmt(4): [ExprStmt] ExprStmt +# 2021| getExpr(): [FunctionCall] call to ObjectStaticMemberFunction # 2021| Type = [Class] D -# 2022| getStmt(6): [ExprStmt] ExprStmt -# 2022| getExpr(): [AssignExpr] ... = ... -# 2022| Type = [Class] D -# 2022| ValueCategory = lvalue -# 2022| getLValue(): [VariableAccess] x -# 2022| Type = [Class] D -# 2022| ValueCategory = lvalue -# 2022| getRValue(): [FunctionCall] call to ReferenceStaticMemberFunction -# 2022| Type = [LValueReferenceType] D & -# 2022| ValueCategory = prvalue -# 2022| getQualifier(): [VariableAccess] d -# 2022| Type = [Class] D -# 2022| ValueCategory = lvalue -# 2022| getRValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2022| Type = [Class] D -# 2022| ValueCategory = prvalue(load) -# 2023| getStmt(7): [DeclStmt] declaration -# 2023| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 2021| ValueCategory = prvalue +# 2023| getStmt(5): [DeclStmt] declaration +# 2023| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x # 2023| Type = [Class] D -# 2024| getStmt(8): [ExprStmt] ExprStmt +# 2024| getStmt(6): [ExprStmt] ExprStmt # 2024| getExpr(): [AssignExpr] ... = ... # 2024| Type = [Class] D # 2024| ValueCategory = lvalue -# 2024| getLValue(): [VariableAccess] y +# 2024| getLValue(): [VariableAccess] x # 2024| Type = [Class] D # 2024| ValueCategory = lvalue # 2024| getRValue(): [FunctionCall] call to ReferenceStaticMemberFunction # 2024| Type = [LValueReferenceType] D & # 2024| ValueCategory = prvalue +# 2024| getQualifier(): [VariableAccess] d +# 2024| Type = [Class] D +# 2024| ValueCategory = lvalue # 2024| getRValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) # 2024| Type = [Class] D # 2024| ValueCategory = prvalue(load) -# 2025| getStmt(9): [DeclStmt] declaration -# 2025| getDeclarationEntry(0): [VariableDeclarationEntry] definition of j +# 2025| getStmt(7): [DeclStmt] declaration +# 2025| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y # 2025| Type = [Class] D -# 2026| getStmt(10): [ExprStmt] ExprStmt +# 2026| getStmt(8): [ExprStmt] ExprStmt # 2026| getExpr(): [AssignExpr] ... = ... # 2026| Type = [Class] D # 2026| ValueCategory = lvalue -# 2026| getLValue(): [VariableAccess] j +# 2026| getLValue(): [VariableAccess] y # 2026| Type = [Class] D # 2026| ValueCategory = lvalue -# 2026| getRValue(): [FunctionCall] call to ObjectStaticMemberFunction -# 2026| Type = [Class] D +# 2026| getRValue(): [FunctionCall] call to ReferenceStaticMemberFunction +# 2026| Type = [LValueReferenceType] D & # 2026| ValueCategory = prvalue -# 2026| getQualifier(): [VariableAccess] d -# 2026| Type = [Class] D -# 2026| ValueCategory = lvalue -# 2027| getStmt(11): [DeclStmt] declaration -# 2027| getDeclarationEntry(0): [VariableDeclarationEntry] definition of k +# 2026| getRValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2026| Type = [Class] D +# 2026| ValueCategory = prvalue(load) +# 2027| getStmt(9): [DeclStmt] declaration +# 2027| getDeclarationEntry(0): [VariableDeclarationEntry] definition of j # 2027| Type = [Class] D -# 2028| getStmt(12): [ExprStmt] ExprStmt +# 2028| getStmt(10): [ExprStmt] ExprStmt # 2028| getExpr(): [AssignExpr] ... = ... # 2028| Type = [Class] D # 2028| ValueCategory = lvalue -# 2028| getLValue(): [VariableAccess] k +# 2028| getLValue(): [VariableAccess] j # 2028| Type = [Class] D # 2028| ValueCategory = lvalue # 2028| getRValue(): [FunctionCall] call to ObjectStaticMemberFunction # 2028| Type = [Class] D # 2028| ValueCategory = prvalue -# 2029| getStmt(13): [ReturnStmt] return ... -# 2031| [TopLevelFunction] void test_volatile() -# 2031| : -# 2031| getEntryPoint(): [BlockStmt] { ... } -# 2032| getStmt(0): [DeclStmt] declaration -# 2032| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 2032| Type = [SpecifiedType] volatile int -# 2033| getStmt(1): [ExprStmt] ExprStmt -# 2033| getExpr(): [VariableAccess] x -# 2033| Type = [IntType] int -# 2033| ValueCategory = prvalue(load) -# 2034| getStmt(2): [ReturnStmt] return ... -# 2036| [CopyAssignmentOperator] ValCat& ValCat::operator=(ValCat const&) -# 2036| : +# 2028| getQualifier(): [VariableAccess] d +# 2028| Type = [Class] D +# 2028| ValueCategory = lvalue +# 2029| getStmt(11): [DeclStmt] declaration +# 2029| getDeclarationEntry(0): [VariableDeclarationEntry] definition of k +# 2029| Type = [Class] D +# 2030| getStmt(12): [ExprStmt] ExprStmt +# 2030| getExpr(): [AssignExpr] ... = ... +# 2030| Type = [Class] D +# 2030| ValueCategory = lvalue +# 2030| getLValue(): [VariableAccess] k +# 2030| Type = [Class] D +# 2030| ValueCategory = lvalue +# 2030| getRValue(): [FunctionCall] call to ObjectStaticMemberFunction +# 2030| Type = [Class] D +# 2030| ValueCategory = prvalue +# 2031| getStmt(13): [ReturnStmt] return ... +# 2033| [TopLevelFunction] void test_volatile() +# 2033| : +# 2033| getEntryPoint(): [BlockStmt] { ... } +# 2034| getStmt(0): [DeclStmt] declaration +# 2034| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2034| Type = [SpecifiedType] volatile int +# 2035| getStmt(1): [ExprStmt] ExprStmt +# 2035| getExpr(): [VariableAccess] x +# 2035| Type = [IntType] int +# 2035| ValueCategory = prvalue(load) +# 2036| getStmt(2): [ReturnStmt] return ... +# 2038| [CopyAssignmentOperator] ValCat& ValCat::operator=(ValCat const&) +# 2038| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const ValCat & -# 2036| [MoveAssignmentOperator] ValCat& ValCat::operator=(ValCat&&) -# 2036| : +# 2038| [MoveAssignmentOperator] ValCat& ValCat::operator=(ValCat&&) +# 2038| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] ValCat && -# 2037| [MemberFunction] ValCat& ValCat::lvalue() -# 2037| : -# 2038| [MemberFunction] ValCat&& ValCat::xvalue() -# 2038| : -# 2039| [MemberFunction] ValCat ValCat::prvalue() +# 2039| [MemberFunction] ValCat& ValCat::lvalue() # 2039| : -# 2042| [TopLevelFunction] void value_category_test() -# 2042| : -# 2042| getEntryPoint(): [BlockStmt] { ... } -# 2043| getStmt(0): [DeclStmt] declaration -# 2043| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c -# 2043| Type = [Struct] ValCat -# 2045| getStmt(1): [ExprStmt] ExprStmt -# 2045| getExpr(): [AssignExpr] ... = ... +# 2040| [MemberFunction] ValCat&& ValCat::xvalue() +# 2040| : +# 2041| [MemberFunction] ValCat ValCat::prvalue() +# 2041| : +# 2044| [TopLevelFunction] void value_category_test() +# 2044| : +# 2044| getEntryPoint(): [BlockStmt] { ... } +# 2045| getStmt(0): [DeclStmt] declaration +# 2045| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c # 2045| Type = [Struct] ValCat -# 2045| ValueCategory = lvalue -# 2045| getLValue(): [FunctionCall] call to lvalue -# 2045| Type = [LValueReferenceType] ValCat & -# 2045| ValueCategory = prvalue -# 2045| getQualifier(): [VariableAccess] c -# 2045| Type = [Struct] ValCat -# 2045| ValueCategory = lvalue -# 2045| getRValue(): [ClassAggregateLiteral] {...} -# 2045| Type = [Struct] ValCat -# 2045| ValueCategory = prvalue -# 2045| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2045| Type = [Struct] ValCat -# 2045| ValueCategory = lvalue -#-----| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object -#-----| Type = [Struct] ValCat -#-----| ValueCategory = prvalue(load) -# 2046| getStmt(2): [ExprStmt] ExprStmt -# 2046| getExpr(): [AssignExpr] ... = ... -# 2046| Type = [Struct] ValCat -# 2046| ValueCategory = lvalue -# 2046| getLValue(): [FunctionCall] call to xvalue -# 2046| Type = [RValueReferenceType] ValCat && -# 2046| ValueCategory = prvalue -# 2046| getQualifier(): [VariableAccess] c -# 2046| Type = [Struct] ValCat -# 2046| ValueCategory = lvalue -# 2046| getRValue(): [ClassAggregateLiteral] {...} -# 2046| Type = [Struct] ValCat -# 2046| ValueCategory = prvalue -# 2046| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2046| Type = [Struct] ValCat -# 2046| ValueCategory = lvalue -#-----| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object -#-----| Type = [Struct] ValCat -#-----| ValueCategory = prvalue(load) -# 2047| getStmt(3): [ExprStmt] ExprStmt +# 2047| getStmt(1): [ExprStmt] ExprStmt # 2047| getExpr(): [AssignExpr] ... = ... # 2047| Type = [Struct] ValCat # 2047| ValueCategory = lvalue -# 2047| getLValue(): [FunctionCall] call to prvalue -# 2047| Type = [Struct] ValCat +# 2047| getLValue(): [FunctionCall] call to lvalue +# 2047| Type = [LValueReferenceType] ValCat & # 2047| ValueCategory = prvalue # 2047| getQualifier(): [VariableAccess] c # 2047| Type = [Struct] ValCat @@ -18700,19 +18662,22 @@ ir.cpp: # 2047| getRValue(): [ClassAggregateLiteral] {...} # 2047| Type = [Struct] ValCat # 2047| ValueCategory = prvalue -# 2047| getLValue().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2047| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) # 2047| Type = [Struct] ValCat # 2047| ValueCategory = lvalue #-----| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object #-----| Type = [Struct] ValCat #-----| ValueCategory = prvalue(load) -# 2048| getStmt(4): [ExprStmt] ExprStmt +# 2048| getStmt(2): [ExprStmt] ExprStmt # 2048| getExpr(): [AssignExpr] ... = ... # 2048| Type = [Struct] ValCat # 2048| ValueCategory = lvalue -# 2048| getLValue(): [FunctionCall] call to lvalue -# 2048| Type = [LValueReferenceType] ValCat & +# 2048| getLValue(): [FunctionCall] call to xvalue +# 2048| Type = [RValueReferenceType] ValCat && # 2048| ValueCategory = prvalue +# 2048| getQualifier(): [VariableAccess] c +# 2048| Type = [Struct] ValCat +# 2048| ValueCategory = lvalue # 2048| getRValue(): [ClassAggregateLiteral] {...} # 2048| Type = [Struct] ValCat # 2048| ValueCategory = prvalue @@ -18722,127 +18687,123 @@ ir.cpp: #-----| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object #-----| Type = [Struct] ValCat #-----| ValueCategory = prvalue(load) -# 2049| getStmt(5): [ExprStmt] ExprStmt +# 2049| getStmt(3): [ExprStmt] ExprStmt # 2049| getExpr(): [AssignExpr] ... = ... # 2049| Type = [Struct] ValCat # 2049| ValueCategory = lvalue -# 2049| getLValue(): [FunctionCall] call to xvalue -# 2049| Type = [RValueReferenceType] ValCat && +# 2049| getLValue(): [FunctionCall] call to prvalue +# 2049| Type = [Struct] ValCat # 2049| ValueCategory = prvalue +# 2049| getQualifier(): [VariableAccess] c +# 2049| Type = [Struct] ValCat +# 2049| ValueCategory = lvalue # 2049| getRValue(): [ClassAggregateLiteral] {...} # 2049| Type = [Struct] ValCat # 2049| ValueCategory = prvalue -# 2049| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2049| getLValue().getFullyConverted(): [TemporaryObjectExpr] temporary object # 2049| Type = [Struct] ValCat # 2049| ValueCategory = lvalue #-----| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object #-----| Type = [Struct] ValCat #-----| ValueCategory = prvalue(load) -# 2050| getStmt(6): [ExprStmt] ExprStmt +# 2050| getStmt(4): [ExprStmt] ExprStmt # 2050| getExpr(): [AssignExpr] ... = ... # 2050| Type = [Struct] ValCat # 2050| ValueCategory = lvalue -# 2050| getLValue(): [FunctionCall] call to prvalue -# 2050| Type = [Struct] ValCat +# 2050| getLValue(): [FunctionCall] call to lvalue +# 2050| Type = [LValueReferenceType] ValCat & # 2050| ValueCategory = prvalue # 2050| getRValue(): [ClassAggregateLiteral] {...} # 2050| Type = [Struct] ValCat # 2050| ValueCategory = prvalue -# 2050| getLValue().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2050| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) # 2050| Type = [Struct] ValCat # 2050| ValueCategory = lvalue #-----| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object #-----| Type = [Struct] ValCat #-----| ValueCategory = prvalue(load) -# 2051| getStmt(7): [ReturnStmt] return ... -# 2053| [TopLevelFunction] void SetStaticFuncPtr() -# 2053| : -# 2053| getEntryPoint(): [BlockStmt] { ... } -# 2054| getStmt(0): [DeclStmt] declaration -# 2054| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c -# 2054| Type = [Class] C -# 2054| getVariable().getInitializer(): [Initializer] initializer for c -# 2054| getExpr(): [ConstructorCall] call to C -# 2054| Type = [VoidType] void -# 2054| ValueCategory = prvalue -# 2055| getStmt(1): [DeclStmt] declaration -# 2055| getDeclarationEntry(0): [VariableDeclarationEntry] definition of pfn -# 2055| Type = [FunctionPointerType] ..(*)(..) -# 2055| getVariable().getInitializer(): [Initializer] initializer for pfn -# 2055| getExpr(): [FunctionAccess] StaticMemberFunction -# 2055| Type = [FunctionPointerType] ..(*)(..) -# 2055| ValueCategory = prvalue(load) -# 2056| getStmt(2): [ExprStmt] ExprStmt -# 2056| getExpr(): [AssignExpr] ... = ... -# 2056| Type = [FunctionPointerType] ..(*)(..) -# 2056| ValueCategory = lvalue -# 2056| getLValue(): [VariableAccess] pfn -# 2056| Type = [FunctionPointerType] ..(*)(..) -# 2056| ValueCategory = lvalue -# 2056| getRValue(): [FunctionAccess] StaticMemberFunction -# 2056| Type = [FunctionPointerType] ..(*)(..) -# 2056| ValueCategory = prvalue(load) -# 2056| getQualifier(): [VariableAccess] c -# 2056| Type = [Class] C -# 2056| ValueCategory = lvalue -# 2057| getStmt(3): [ReturnStmt] return ... -# 2057| getImplicitDestructorCall(0): [DestructorCall] call to ~C -# 2057| Type = [VoidType] void -# 2057| ValueCategory = prvalue -# 2057| getQualifier(): [VariableAccess] c -# 2057| Type = [Class] C -# 2057| ValueCategory = lvalue -# 2059| [TopLevelFunction] void TernaryTestInt(bool, int, int, int) -# 2059| : -# 2059| getParameter(0): [Parameter] a -# 2059| Type = [BoolType] bool -# 2059| getParameter(1): [Parameter] x -# 2059| Type = [IntType] int -# 2059| getParameter(2): [Parameter] y -# 2059| Type = [IntType] int -# 2059| getParameter(3): [Parameter] z -# 2059| Type = [IntType] int -# 2059| getEntryPoint(): [BlockStmt] { ... } -# 2060| getStmt(0): [ExprStmt] ExprStmt -# 2060| getExpr(): [AssignExpr] ... = ... -# 2060| Type = [IntType] int -# 2060| ValueCategory = lvalue -# 2060| getLValue(): [VariableAccess] z -# 2060| Type = [IntType] int -# 2060| ValueCategory = lvalue -# 2060| getRValue(): [ConditionalExpr] ... ? ... : ... -# 2060| Type = [IntType] int -# 2060| ValueCategory = prvalue(load) -# 2060| getCondition(): [VariableAccess] a -# 2060| Type = [BoolType] bool -# 2060| ValueCategory = prvalue(load) -# 2060| getThen(): [VariableAccess] x -# 2060| Type = [IntType] int -# 2060| ValueCategory = prvalue(load) -# 2060| getElse(): [VariableAccess] y -# 2060| Type = [IntType] int -# 2060| ValueCategory = prvalue(load) -# 2061| getStmt(1): [ExprStmt] ExprStmt -# 2061| getExpr(): [AssignExpr] ... = ... -# 2061| Type = [IntType] int -# 2061| ValueCategory = lvalue -# 2061| getLValue(): [VariableAccess] z -# 2061| Type = [IntType] int -# 2061| ValueCategory = lvalue -# 2061| getRValue(): [ConditionalExpr] ... ? ... : ... -# 2061| Type = [IntType] int -# 2061| ValueCategory = prvalue(load) -# 2061| getCondition(): [VariableAccess] a -# 2061| Type = [BoolType] bool -# 2061| ValueCategory = prvalue(load) -# 2061| getThen(): [VariableAccess] x -# 2061| Type = [IntType] int -# 2061| ValueCategory = prvalue(load) -# 2061| getElse(): [Literal] 5 -# 2061| Type = [IntType] int -# 2061| Value = [Literal] 5 -# 2061| ValueCategory = prvalue -# 2062| getStmt(2): [ExprStmt] ExprStmt +# 2051| getStmt(5): [ExprStmt] ExprStmt +# 2051| getExpr(): [AssignExpr] ... = ... +# 2051| Type = [Struct] ValCat +# 2051| ValueCategory = lvalue +# 2051| getLValue(): [FunctionCall] call to xvalue +# 2051| Type = [RValueReferenceType] ValCat && +# 2051| ValueCategory = prvalue +# 2051| getRValue(): [ClassAggregateLiteral] {...} +# 2051| Type = [Struct] ValCat +# 2051| ValueCategory = prvalue +# 2051| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2051| Type = [Struct] ValCat +# 2051| ValueCategory = lvalue +#-----| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object +#-----| Type = [Struct] ValCat +#-----| ValueCategory = prvalue(load) +# 2052| getStmt(6): [ExprStmt] ExprStmt +# 2052| getExpr(): [AssignExpr] ... = ... +# 2052| Type = [Struct] ValCat +# 2052| ValueCategory = lvalue +# 2052| getLValue(): [FunctionCall] call to prvalue +# 2052| Type = [Struct] ValCat +# 2052| ValueCategory = prvalue +# 2052| getRValue(): [ClassAggregateLiteral] {...} +# 2052| Type = [Struct] ValCat +# 2052| ValueCategory = prvalue +# 2052| getLValue().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2052| Type = [Struct] ValCat +# 2052| ValueCategory = lvalue +#-----| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object +#-----| Type = [Struct] ValCat +#-----| ValueCategory = prvalue(load) +# 2053| getStmt(7): [ReturnStmt] return ... +# 2055| [TopLevelFunction] void SetStaticFuncPtr() +# 2055| : +# 2055| getEntryPoint(): [BlockStmt] { ... } +# 2056| getStmt(0): [DeclStmt] declaration +# 2056| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c +# 2056| Type = [Class] C +# 2056| getVariable().getInitializer(): [Initializer] initializer for c +# 2056| getExpr(): [ConstructorCall] call to C +# 2056| Type = [VoidType] void +# 2056| ValueCategory = prvalue +# 2057| getStmt(1): [DeclStmt] declaration +# 2057| getDeclarationEntry(0): [VariableDeclarationEntry] definition of pfn +# 2057| Type = [FunctionPointerType] ..(*)(..) +# 2057| getVariable().getInitializer(): [Initializer] initializer for pfn +# 2057| getExpr(): [FunctionAccess] StaticMemberFunction +# 2057| Type = [FunctionPointerType] ..(*)(..) +# 2057| ValueCategory = prvalue(load) +# 2058| getStmt(2): [ExprStmt] ExprStmt +# 2058| getExpr(): [AssignExpr] ... = ... +# 2058| Type = [FunctionPointerType] ..(*)(..) +# 2058| ValueCategory = lvalue +# 2058| getLValue(): [VariableAccess] pfn +# 2058| Type = [FunctionPointerType] ..(*)(..) +# 2058| ValueCategory = lvalue +# 2058| getRValue(): [FunctionAccess] StaticMemberFunction +# 2058| Type = [FunctionPointerType] ..(*)(..) +# 2058| ValueCategory = prvalue(load) +# 2058| getQualifier(): [VariableAccess] c +# 2058| Type = [Class] C +# 2058| ValueCategory = lvalue +# 2059| getStmt(3): [ReturnStmt] return ... +# 2059| getImplicitDestructorCall(0): [DestructorCall] call to ~C +# 2059| Type = [VoidType] void +# 2059| ValueCategory = prvalue +# 2059| getQualifier(): [VariableAccess] c +# 2059| Type = [Class] C +# 2059| ValueCategory = lvalue +# 2061| [TopLevelFunction] void TernaryTestInt(bool, int, int, int) +# 2061| : +# 2061| getParameter(0): [Parameter] a +# 2061| Type = [BoolType] bool +# 2061| getParameter(1): [Parameter] x +# 2061| Type = [IntType] int +# 2061| getParameter(2): [Parameter] y +# 2061| Type = [IntType] int +# 2061| getParameter(3): [Parameter] z +# 2061| Type = [IntType] int +# 2061| getEntryPoint(): [BlockStmt] { ... } +# 2062| getStmt(0): [ExprStmt] ExprStmt # 2062| getExpr(): [AssignExpr] ... = ... # 2062| Type = [IntType] int # 2062| ValueCategory = lvalue @@ -18851,110 +18812,101 @@ ir.cpp: # 2062| ValueCategory = lvalue # 2062| getRValue(): [ConditionalExpr] ... ? ... : ... # 2062| Type = [IntType] int -# 2062| ValueCategory = prvalue +# 2062| ValueCategory = prvalue(load) # 2062| getCondition(): [VariableAccess] a # 2062| Type = [BoolType] bool # 2062| ValueCategory = prvalue(load) -# 2062| getThen(): [Literal] 3 +# 2062| getThen(): [VariableAccess] x # 2062| Type = [IntType] int -# 2062| Value = [Literal] 3 -# 2062| ValueCategory = prvalue -# 2062| getElse(): [Literal] 5 +# 2062| ValueCategory = prvalue(load) +# 2062| getElse(): [VariableAccess] y # 2062| Type = [IntType] int -# 2062| Value = [Literal] 5 -# 2062| ValueCategory = prvalue -# 2063| getStmt(3): [ExprStmt] ExprStmt +# 2062| ValueCategory = prvalue(load) +# 2063| getStmt(1): [ExprStmt] ExprStmt # 2063| getExpr(): [AssignExpr] ... = ... # 2063| Type = [IntType] int # 2063| ValueCategory = lvalue -# 2063| getLValue(): [ConditionalExpr] ... ? ... : ... +# 2063| getLValue(): [VariableAccess] z # 2063| Type = [IntType] int # 2063| ValueCategory = lvalue +# 2063| getRValue(): [ConditionalExpr] ... ? ... : ... +# 2063| Type = [IntType] int +# 2063| ValueCategory = prvalue(load) # 2063| getCondition(): [VariableAccess] a # 2063| Type = [BoolType] bool # 2063| ValueCategory = prvalue(load) # 2063| getThen(): [VariableAccess] x # 2063| Type = [IntType] int -# 2063| ValueCategory = lvalue -# 2063| getElse(): [VariableAccess] y +# 2063| ValueCategory = prvalue(load) +# 2063| getElse(): [Literal] 5 # 2063| Type = [IntType] int -# 2063| ValueCategory = lvalue -# 2063| getRValue(): [Literal] 7 -# 2063| Type = [IntType] int -# 2063| Value = [Literal] 7 -# 2063| ValueCategory = prvalue -# 2063| getLValue().getFullyConverted(): [ParenthesisExpr] (...) -# 2063| Type = [IntType] int -# 2063| ValueCategory = lvalue -# 2064| getStmt(4): [ReturnStmt] return ... -# 2066| [CopyAssignmentOperator] TernaryPodObj& TernaryPodObj::operator=(TernaryPodObj const&) -# 2066| : +# 2063| Value = [Literal] 5 +# 2063| ValueCategory = prvalue +# 2064| getStmt(2): [ExprStmt] ExprStmt +# 2064| getExpr(): [AssignExpr] ... = ... +# 2064| Type = [IntType] int +# 2064| ValueCategory = lvalue +# 2064| getLValue(): [VariableAccess] z +# 2064| Type = [IntType] int +# 2064| ValueCategory = lvalue +# 2064| getRValue(): [ConditionalExpr] ... ? ... : ... +# 2064| Type = [IntType] int +# 2064| ValueCategory = prvalue +# 2064| getCondition(): [VariableAccess] a +# 2064| Type = [BoolType] bool +# 2064| ValueCategory = prvalue(load) +# 2064| getThen(): [Literal] 3 +# 2064| Type = [IntType] int +# 2064| Value = [Literal] 3 +# 2064| ValueCategory = prvalue +# 2064| getElse(): [Literal] 5 +# 2064| Type = [IntType] int +# 2064| Value = [Literal] 5 +# 2064| ValueCategory = prvalue +# 2065| getStmt(3): [ExprStmt] ExprStmt +# 2065| getExpr(): [AssignExpr] ... = ... +# 2065| Type = [IntType] int +# 2065| ValueCategory = lvalue +# 2065| getLValue(): [ConditionalExpr] ... ? ... : ... +# 2065| Type = [IntType] int +# 2065| ValueCategory = lvalue +# 2065| getCondition(): [VariableAccess] a +# 2065| Type = [BoolType] bool +# 2065| ValueCategory = prvalue(load) +# 2065| getThen(): [VariableAccess] x +# 2065| Type = [IntType] int +# 2065| ValueCategory = lvalue +# 2065| getElse(): [VariableAccess] y +# 2065| Type = [IntType] int +# 2065| ValueCategory = lvalue +# 2065| getRValue(): [Literal] 7 +# 2065| Type = [IntType] int +# 2065| Value = [Literal] 7 +# 2065| ValueCategory = prvalue +# 2065| getLValue().getFullyConverted(): [ParenthesisExpr] (...) +# 2065| Type = [IntType] int +# 2065| ValueCategory = lvalue +# 2066| getStmt(4): [ReturnStmt] return ... +# 2068| [CopyAssignmentOperator] TernaryPodObj& TernaryPodObj::operator=(TernaryPodObj const&) +# 2068| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const TernaryPodObj & -# 2066| [MoveAssignmentOperator] TernaryPodObj& TernaryPodObj::operator=(TernaryPodObj&&) -# 2066| : +# 2068| [MoveAssignmentOperator] TernaryPodObj& TernaryPodObj::operator=(TernaryPodObj&&) +# 2068| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] TernaryPodObj && -# 2069| [TopLevelFunction] void TernaryTestPodObj(bool, TernaryPodObj, TernaryPodObj, TernaryPodObj) -# 2069| : -# 2069| getParameter(0): [Parameter] a -# 2069| Type = [BoolType] bool -# 2069| getParameter(1): [Parameter] x -# 2069| Type = [Struct] TernaryPodObj -# 2069| getParameter(2): [Parameter] y -# 2069| Type = [Struct] TernaryPodObj -# 2069| getParameter(3): [Parameter] z -# 2069| Type = [Struct] TernaryPodObj -# 2069| getEntryPoint(): [BlockStmt] { ... } -# 2070| getStmt(0): [ExprStmt] ExprStmt -# 2070| getExpr(): [AssignExpr] ... = ... -# 2070| Type = [Struct] TernaryPodObj -# 2070| ValueCategory = lvalue -# 2070| getLValue(): [VariableAccess] z -# 2070| Type = [Struct] TernaryPodObj -# 2070| ValueCategory = lvalue -# 2070| getRValue(): [ConditionalExpr] ... ? ... : ... -# 2070| Type = [Struct] TernaryPodObj -# 2070| ValueCategory = prvalue(load) -# 2070| getCondition(): [VariableAccess] a -# 2070| Type = [BoolType] bool -# 2070| ValueCategory = prvalue(load) -# 2070| getThen(): [VariableAccess] x -# 2070| Type = [Struct] TernaryPodObj -# 2070| ValueCategory = prvalue(load) -# 2070| getElse(): [VariableAccess] y -# 2070| Type = [Struct] TernaryPodObj -# 2070| ValueCategory = prvalue(load) -# 2071| getStmt(1): [ExprStmt] ExprStmt -# 2071| getExpr(): [AssignExpr] ... = ... -# 2071| Type = [Struct] TernaryPodObj -# 2071| ValueCategory = lvalue -# 2071| getLValue(): [VariableAccess] z -# 2071| Type = [Struct] TernaryPodObj -# 2071| ValueCategory = lvalue -# 2071| getRValue(): [ConditionalExpr] ... ? ... : ... -# 2071| Type = [Struct] TernaryPodObj -# 2071| ValueCategory = prvalue -# 2071| getCondition(): [VariableAccess] a -# 2071| Type = [BoolType] bool -# 2071| ValueCategory = prvalue(load) -# 2071| getThen(): [VariableAccess] x -# 2071| Type = [Struct] TernaryPodObj -# 2071| ValueCategory = prvalue(load) -# 2071| getElse(): [Literal] 0 -# 2071| Type = [Struct] TernaryPodObj -# 2071| Value = [Literal] 0 -# 2071| ValueCategory = prvalue -# 2071| getThen().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2071| Type = [Struct] TernaryPodObj -# 2071| ValueCategory = prvalue(load) -# 2071| getElse().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2071| Type = [Struct] TernaryPodObj -# 2071| ValueCategory = prvalue(load) -# 2071| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2071| Type = [Struct] TernaryPodObj -# 2071| ValueCategory = prvalue(load) -# 2072| getStmt(2): [ExprStmt] ExprStmt +# 2071| [TopLevelFunction] void TernaryTestPodObj(bool, TernaryPodObj, TernaryPodObj, TernaryPodObj) +# 2071| : +# 2071| getParameter(0): [Parameter] a +# 2071| Type = [BoolType] bool +# 2071| getParameter(1): [Parameter] x +# 2071| Type = [Struct] TernaryPodObj +# 2071| getParameter(2): [Parameter] y +# 2071| Type = [Struct] TernaryPodObj +# 2071| getParameter(3): [Parameter] z +# 2071| Type = [Struct] TernaryPodObj +# 2071| getEntryPoint(): [BlockStmt] { ... } +# 2072| getStmt(0): [ExprStmt] ExprStmt # 2072| getExpr(): [AssignExpr] ... = ... # 2072| Type = [Struct] TernaryPodObj # 2072| ValueCategory = lvalue @@ -18963,62 +18915,110 @@ ir.cpp: # 2072| ValueCategory = lvalue # 2072| getRValue(): [ConditionalExpr] ... ? ... : ... # 2072| Type = [Struct] TernaryPodObj -# 2072| ValueCategory = prvalue +# 2072| ValueCategory = prvalue(load) # 2072| getCondition(): [VariableAccess] a # 2072| Type = [BoolType] bool # 2072| ValueCategory = prvalue(load) -# 2072| getThen(): [Literal] 0 -# 2072| Type = [Struct] TernaryPodObj -# 2072| Value = [Literal] 0 -# 2072| ValueCategory = prvalue -# 2072| getElse(): [Literal] 0 -# 2072| Type = [Struct] TernaryPodObj -# 2072| Value = [Literal] 0 -# 2072| ValueCategory = prvalue -# 2072| getThen().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2072| getThen(): [VariableAccess] x # 2072| Type = [Struct] TernaryPodObj # 2072| ValueCategory = prvalue(load) -# 2072| getElse().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2072| getElse(): [VariableAccess] y # 2072| Type = [Struct] TernaryPodObj # 2072| ValueCategory = prvalue(load) -# 2072| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2072| Type = [Struct] TernaryPodObj -# 2072| ValueCategory = prvalue(load) -# 2073| getStmt(3): [ExprStmt] ExprStmt +# 2073| getStmt(1): [ExprStmt] ExprStmt # 2073| getExpr(): [AssignExpr] ... = ... # 2073| Type = [Struct] TernaryPodObj # 2073| ValueCategory = lvalue -# 2073| getLValue(): [AssignExpr] ... = ... +# 2073| getLValue(): [VariableAccess] z # 2073| Type = [Struct] TernaryPodObj # 2073| ValueCategory = lvalue -# 2073| getLValue(): [VariableAccess] z -# 2073| Type = [Struct] TernaryPodObj -# 2073| ValueCategory = lvalue -# 2073| getRValue(): [ConditionalExpr] ... ? ... : ... +# 2073| getRValue(): [ConditionalExpr] ... ? ... : ... +# 2073| Type = [Struct] TernaryPodObj +# 2073| ValueCategory = prvalue +# 2073| getCondition(): [VariableAccess] a +# 2073| Type = [BoolType] bool +# 2073| ValueCategory = prvalue(load) +# 2073| getThen(): [VariableAccess] x +# 2073| Type = [Struct] TernaryPodObj +# 2073| ValueCategory = prvalue(load) +# 2073| getElse(): [Literal] 0 +# 2073| Type = [Struct] TernaryPodObj +# 2073| Value = [Literal] 0 +# 2073| ValueCategory = prvalue +# 2073| getThen().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2073| Type = [Struct] TernaryPodObj +# 2073| ValueCategory = prvalue(load) +# 2073| getElse().getFullyConverted(): [TemporaryObjectExpr] temporary object # 2073| Type = [Struct] TernaryPodObj # 2073| ValueCategory = prvalue(load) -# 2073| getCondition(): [VariableAccess] a -# 2073| Type = [BoolType] bool -# 2073| ValueCategory = prvalue(load) -# 2073| getThen(): [VariableAccess] x -# 2073| Type = [Struct] TernaryPodObj -# 2073| ValueCategory = prvalue(load) -# 2073| getElse(): [VariableAccess] y -# 2073| Type = [Struct] TernaryPodObj -# 2073| ValueCategory = prvalue(load) -# 2073| getRValue(): [Literal] 0 -# 2073| Type = [Struct] TernaryPodObj -# 2073| Value = [Literal] 0 -# 2073| ValueCategory = prvalue -# 2073| getLValue().getFullyConverted(): [ParenthesisExpr] (...) -# 2073| Type = [Struct] TernaryPodObj -# 2073| ValueCategory = lvalue # 2073| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object # 2073| Type = [Struct] TernaryPodObj # 2073| ValueCategory = prvalue(load) -# 2074| getStmt(4): [ReturnStmt] return ... -# 2076| [CopyAssignmentOperator] TernaryNonPodObj& TernaryNonPodObj::operator=(TernaryNonPodObj const&) -# 2076| : +# 2074| getStmt(2): [ExprStmt] ExprStmt +# 2074| getExpr(): [AssignExpr] ... = ... +# 2074| Type = [Struct] TernaryPodObj +# 2074| ValueCategory = lvalue +# 2074| getLValue(): [VariableAccess] z +# 2074| Type = [Struct] TernaryPodObj +# 2074| ValueCategory = lvalue +# 2074| getRValue(): [ConditionalExpr] ... ? ... : ... +# 2074| Type = [Struct] TernaryPodObj +# 2074| ValueCategory = prvalue +# 2074| getCondition(): [VariableAccess] a +# 2074| Type = [BoolType] bool +# 2074| ValueCategory = prvalue(load) +# 2074| getThen(): [Literal] 0 +# 2074| Type = [Struct] TernaryPodObj +# 2074| Value = [Literal] 0 +# 2074| ValueCategory = prvalue +# 2074| getElse(): [Literal] 0 +# 2074| Type = [Struct] TernaryPodObj +# 2074| Value = [Literal] 0 +# 2074| ValueCategory = prvalue +# 2074| getThen().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2074| Type = [Struct] TernaryPodObj +# 2074| ValueCategory = prvalue(load) +# 2074| getElse().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2074| Type = [Struct] TernaryPodObj +# 2074| ValueCategory = prvalue(load) +# 2074| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2074| Type = [Struct] TernaryPodObj +# 2074| ValueCategory = prvalue(load) +# 2075| getStmt(3): [ExprStmt] ExprStmt +# 2075| getExpr(): [AssignExpr] ... = ... +# 2075| Type = [Struct] TernaryPodObj +# 2075| ValueCategory = lvalue +# 2075| getLValue(): [AssignExpr] ... = ... +# 2075| Type = [Struct] TernaryPodObj +# 2075| ValueCategory = lvalue +# 2075| getLValue(): [VariableAccess] z +# 2075| Type = [Struct] TernaryPodObj +# 2075| ValueCategory = lvalue +# 2075| getRValue(): [ConditionalExpr] ... ? ... : ... +# 2075| Type = [Struct] TernaryPodObj +# 2075| ValueCategory = prvalue(load) +# 2075| getCondition(): [VariableAccess] a +# 2075| Type = [BoolType] bool +# 2075| ValueCategory = prvalue(load) +# 2075| getThen(): [VariableAccess] x +# 2075| Type = [Struct] TernaryPodObj +# 2075| ValueCategory = prvalue(load) +# 2075| getElse(): [VariableAccess] y +# 2075| Type = [Struct] TernaryPodObj +# 2075| ValueCategory = prvalue(load) +# 2075| getRValue(): [Literal] 0 +# 2075| Type = [Struct] TernaryPodObj +# 2075| Value = [Literal] 0 +# 2075| ValueCategory = prvalue +# 2075| getLValue().getFullyConverted(): [ParenthesisExpr] (...) +# 2075| Type = [Struct] TernaryPodObj +# 2075| ValueCategory = lvalue +# 2075| getRValue().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2075| Type = [Struct] TernaryPodObj +# 2075| ValueCategory = prvalue(load) +# 2076| getStmt(4): [ReturnStmt] return ... +# 2078| [CopyAssignmentOperator] TernaryNonPodObj& TernaryNonPodObj::operator=(TernaryNonPodObj const&) +# 2078| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const TernaryNonPodObj & #-----| getEntryPoint(): [BlockStmt] { ... } @@ -19032,118 +19032,35 @@ ir.cpp: #-----| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) #-----| Type = [LValueReferenceType] TernaryNonPodObj & #-----| ValueCategory = prvalue -# 2076| [Constructor] void TernaryNonPodObj::TernaryNonPodObj() -# 2076| : -# 2076| : -# 2076| getEntryPoint(): [BlockStmt] { ... } -# 2076| getStmt(0): [ReturnStmt] return ... -# 2076| [CopyConstructor] void TernaryNonPodObj::TernaryNonPodObj(TernaryNonPodObj const&) -# 2076| : +# 2078| [Constructor] void TernaryNonPodObj::TernaryNonPodObj() +# 2078| : +# 2078| : +# 2078| getEntryPoint(): [BlockStmt] { ... } +# 2078| getStmt(0): [ReturnStmt] return ... +# 2078| [CopyConstructor] void TernaryNonPodObj::TernaryNonPodObj(TernaryNonPodObj const&) +# 2078| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const TernaryNonPodObj & -# 2076| : -# 2076| getEntryPoint(): [BlockStmt] { ... } -# 2076| getStmt(0): [ReturnStmt] return ... -# 2077| [Destructor,VirtualFunction] void TernaryNonPodObj::~TernaryNonPodObj() -# 2077| : -# 2077| getEntryPoint(): [BlockStmt] { ... } -# 2077| getStmt(0): [ReturnStmt] return ... -# 2077| : -# 2080| [TopLevelFunction] void TernaryTestNonPodObj(bool, TernaryNonPodObj, TernaryNonPodObj, TernaryNonPodObj) -# 2080| : -# 2080| getParameter(0): [Parameter] a -# 2080| Type = [BoolType] bool -# 2080| getParameter(1): [Parameter] x -# 2080| Type = [Struct] TernaryNonPodObj -# 2080| getParameter(2): [Parameter] y -# 2080| Type = [Struct] TernaryNonPodObj -# 2080| getParameter(3): [Parameter] z -# 2080| Type = [Struct] TernaryNonPodObj -# 2080| getEntryPoint(): [BlockStmt] { ... } -# 2081| getStmt(0): [ExprStmt] ExprStmt -# 2081| getExpr(): [FunctionCall] call to operator= -# 2081| Type = [LValueReferenceType] TernaryNonPodObj & -# 2081| ValueCategory = prvalue -# 2081| getQualifier(): [VariableAccess] z -# 2081| Type = [Struct] TernaryNonPodObj -# 2081| ValueCategory = lvalue -# 2081| getArgument(0): [ConditionalExpr] ... ? ... : ... -# 2081| Type = [Struct] TernaryNonPodObj -# 2081| ValueCategory = lvalue -# 2081| getCondition(): [VariableAccess] a -# 2081| Type = [BoolType] bool -# 2081| ValueCategory = prvalue(load) -# 2081| getThen(): [VariableAccess] x -# 2081| Type = [Struct] TernaryNonPodObj -# 2081| ValueCategory = lvalue -# 2081| getElse(): [VariableAccess] y -# 2081| Type = [Struct] TernaryNonPodObj -# 2081| ValueCategory = lvalue -# 2081| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 2081| Type = [LValueReferenceType] const TernaryNonPodObj & -# 2081| ValueCategory = prvalue -# 2081| getExpr(): [CStyleCast] (const TernaryNonPodObj)... -# 2081| Conversion = [GlvalueConversion] glvalue conversion -# 2081| Type = [SpecifiedType] const TernaryNonPodObj -# 2081| ValueCategory = lvalue -# 2081| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2081| Type = [Struct] TernaryNonPodObj -# 2081| ValueCategory = lvalue -# 2082| getStmt(1): [ExprStmt] ExprStmt -# 2082| getExpr(): [FunctionCall] call to operator= -# 2082| Type = [LValueReferenceType] TernaryNonPodObj & -# 2082| ValueCategory = prvalue -# 2082| getQualifier(): [VariableAccess] z -# 2082| Type = [Struct] TernaryNonPodObj -# 2082| ValueCategory = lvalue -# 2082| getArgument(0): [ConditionalExpr] ... ? ... : ... -# 2082| Type = [Struct] TernaryNonPodObj -# 2082| ValueCategory = prvalue -# 2082| getCondition(): [VariableAccess] a -# 2082| Type = [BoolType] bool -# 2082| ValueCategory = prvalue(load) -# 2082| getThen(): [ConstructorCall] call to TernaryNonPodObj -# 2082| Type = [VoidType] void -# 2082| ValueCategory = prvalue -# 2082| getArgument(0): [VariableAccess] x -# 2082| Type = [Struct] TernaryNonPodObj -# 2082| ValueCategory = lvalue -# 2082| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 2082| Type = [LValueReferenceType] const TernaryNonPodObj & -# 2082| ValueCategory = prvalue -# 2082| getExpr(): [CStyleCast] (const TernaryNonPodObj)... -# 2082| Conversion = [GlvalueConversion] glvalue conversion -# 2082| Type = [SpecifiedType] const TernaryNonPodObj -# 2082| ValueCategory = lvalue -# 2082| getElse(): [ConstructorCall] call to TernaryNonPodObj -# 2082| Type = [VoidType] void -# 2082| ValueCategory = prvalue -# 2082| getThen().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2082| Type = [Struct] TernaryNonPodObj -# 2082| ValueCategory = prvalue(load) -# 2082| getElse().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2082| Type = [Struct] TernaryNonPodObj -# 2082| ValueCategory = prvalue(load) -# 2082| getImplicitDestructorCall(0): [DestructorCall] call to ~TernaryNonPodObj -# 2082| Type = [VoidType] void -# 2082| ValueCategory = prvalue -# 2082| getQualifier(): [ReuseExpr] reuse of temporary object -# 2082| Type = [Struct] TernaryNonPodObj -# 2082| ValueCategory = xvalue -# 2082| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 2082| Type = [LValueReferenceType] const TernaryNonPodObj & -# 2082| ValueCategory = prvalue -# 2082| getExpr(): [CStyleCast] (const TernaryNonPodObj)... -# 2082| Conversion = [GlvalueConversion] glvalue conversion -# 2082| Type = [SpecifiedType] const TernaryNonPodObj -# 2082| ValueCategory = lvalue -# 2082| getExpr(): [TemporaryObjectExpr] temporary object -# 2082| Type = [Struct] TernaryNonPodObj -# 2082| ValueCategory = lvalue -# 2082| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2082| Type = [Struct] TernaryNonPodObj -# 2082| ValueCategory = lvalue -# 2083| getStmt(2): [ExprStmt] ExprStmt +# 2078| : +# 2078| getEntryPoint(): [BlockStmt] { ... } +# 2078| getStmt(0): [ReturnStmt] return ... +# 2079| [Destructor,VirtualFunction] void TernaryNonPodObj::~TernaryNonPodObj() +# 2079| : +# 2079| getEntryPoint(): [BlockStmt] { ... } +# 2079| getStmt(0): [ReturnStmt] return ... +# 2079| : +# 2082| [TopLevelFunction] void TernaryTestNonPodObj(bool, TernaryNonPodObj, TernaryNonPodObj, TernaryNonPodObj) +# 2082| : +# 2082| getParameter(0): [Parameter] a +# 2082| Type = [BoolType] bool +# 2082| getParameter(1): [Parameter] x +# 2082| Type = [Struct] TernaryNonPodObj +# 2082| getParameter(2): [Parameter] y +# 2082| Type = [Struct] TernaryNonPodObj +# 2082| getParameter(3): [Parameter] z +# 2082| Type = [Struct] TernaryNonPodObj +# 2082| getEntryPoint(): [BlockStmt] { ... } +# 2083| getStmt(0): [ExprStmt] ExprStmt # 2083| getExpr(): [FunctionCall] call to operator= # 2083| Type = [LValueReferenceType] TernaryNonPodObj & # 2083| ValueCategory = prvalue @@ -19152,28 +19069,16 @@ ir.cpp: # 2083| ValueCategory = lvalue # 2083| getArgument(0): [ConditionalExpr] ... ? ... : ... # 2083| Type = [Struct] TernaryNonPodObj -# 2083| ValueCategory = prvalue +# 2083| ValueCategory = lvalue # 2083| getCondition(): [VariableAccess] a # 2083| Type = [BoolType] bool # 2083| ValueCategory = prvalue(load) -# 2083| getThen(): [ConstructorCall] call to TernaryNonPodObj -# 2083| Type = [VoidType] void -# 2083| ValueCategory = prvalue -# 2083| getElse(): [ConstructorCall] call to TernaryNonPodObj -# 2083| Type = [VoidType] void -# 2083| ValueCategory = prvalue -# 2083| getThen().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2083| getThen(): [VariableAccess] x # 2083| Type = [Struct] TernaryNonPodObj -# 2083| ValueCategory = prvalue(load) -# 2083| getElse().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2083| ValueCategory = lvalue +# 2083| getElse(): [VariableAccess] y # 2083| Type = [Struct] TernaryNonPodObj -# 2083| ValueCategory = prvalue(load) -# 2083| getImplicitDestructorCall(0): [DestructorCall] call to ~TernaryNonPodObj -# 2083| Type = [VoidType] void -# 2083| ValueCategory = prvalue -# 2083| getQualifier(): [ReuseExpr] reuse of temporary object -# 2083| Type = [Struct] TernaryNonPodObj -# 2083| ValueCategory = xvalue +# 2083| ValueCategory = lvalue # 2083| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) # 2083| Type = [LValueReferenceType] const TernaryNonPodObj & # 2083| ValueCategory = prvalue @@ -19181,56 +19086,50 @@ ir.cpp: # 2083| Conversion = [GlvalueConversion] glvalue conversion # 2083| Type = [SpecifiedType] const TernaryNonPodObj # 2083| ValueCategory = lvalue -# 2083| getExpr(): [TemporaryObjectExpr] temporary object -# 2083| Type = [Struct] TernaryNonPodObj -# 2083| ValueCategory = lvalue # 2083| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) # 2083| Type = [Struct] TernaryNonPodObj # 2083| ValueCategory = lvalue -# 2084| getStmt(3): [ExprStmt] ExprStmt +# 2084| getStmt(1): [ExprStmt] ExprStmt # 2084| getExpr(): [FunctionCall] call to operator= # 2084| Type = [LValueReferenceType] TernaryNonPodObj & # 2084| ValueCategory = prvalue -# 2084| getQualifier(): [FunctionCall] call to operator= -# 2084| Type = [LValueReferenceType] TernaryNonPodObj & +# 2084| getQualifier(): [VariableAccess] z +# 2084| Type = [Struct] TernaryNonPodObj +# 2084| ValueCategory = lvalue +# 2084| getArgument(0): [ConditionalExpr] ... ? ... : ... +# 2084| Type = [Struct] TernaryNonPodObj # 2084| ValueCategory = prvalue -# 2084| getQualifier(): [VariableAccess] z -# 2084| Type = [Struct] TernaryNonPodObj -# 2084| ValueCategory = lvalue -# 2084| getArgument(0): [ConditionalExpr] ... ? ... : ... -# 2084| Type = [Struct] TernaryNonPodObj -# 2084| ValueCategory = lvalue -# 2084| getCondition(): [VariableAccess] a -# 2084| Type = [BoolType] bool -# 2084| ValueCategory = prvalue(load) -# 2084| getThen(): [VariableAccess] x -# 2084| Type = [Struct] TernaryNonPodObj -# 2084| ValueCategory = lvalue -# 2084| getElse(): [VariableAccess] y -# 2084| Type = [Struct] TernaryNonPodObj -# 2084| ValueCategory = lvalue -# 2084| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 2084| Type = [LValueReferenceType] const TernaryNonPodObj & +# 2084| getCondition(): [VariableAccess] a +# 2084| Type = [BoolType] bool +# 2084| ValueCategory = prvalue(load) +# 2084| getThen(): [ConstructorCall] call to TernaryNonPodObj +# 2084| Type = [VoidType] void # 2084| ValueCategory = prvalue -# 2084| getExpr(): [CStyleCast] (const TernaryNonPodObj)... -# 2084| Conversion = [GlvalueConversion] glvalue conversion -# 2084| Type = [SpecifiedType] const TernaryNonPodObj +# 2084| getArgument(0): [VariableAccess] x +# 2084| Type = [Struct] TernaryNonPodObj # 2084| ValueCategory = lvalue -# 2084| getArgument(0): [ConstructorCall] call to TernaryNonPodObj -# 2084| Type = [VoidType] void -# 2084| ValueCategory = prvalue +# 2084| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 2084| Type = [LValueReferenceType] const TernaryNonPodObj & +# 2084| ValueCategory = prvalue +# 2084| getExpr(): [CStyleCast] (const TernaryNonPodObj)... +# 2084| Conversion = [GlvalueConversion] glvalue conversion +# 2084| Type = [SpecifiedType] const TernaryNonPodObj +# 2084| ValueCategory = lvalue +# 2084| getElse(): [ConstructorCall] call to TernaryNonPodObj +# 2084| Type = [VoidType] void +# 2084| ValueCategory = prvalue +# 2084| getThen().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2084| Type = [Struct] TernaryNonPodObj +# 2084| ValueCategory = prvalue(load) +# 2084| getElse().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2084| Type = [Struct] TernaryNonPodObj +# 2084| ValueCategory = prvalue(load) # 2084| getImplicitDestructorCall(0): [DestructorCall] call to ~TernaryNonPodObj # 2084| Type = [VoidType] void # 2084| ValueCategory = prvalue # 2084| getQualifier(): [ReuseExpr] reuse of temporary object # 2084| Type = [Struct] TernaryNonPodObj # 2084| ValueCategory = xvalue -# 2084| getQualifier().getFullyConverted(): [ParenthesisExpr] (...) -# 2084| Type = [Struct] TernaryNonPodObj -# 2084| ValueCategory = lvalue -# 2084| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 2084| Type = [Struct] TernaryNonPodObj -# 2084| ValueCategory = lvalue # 2084| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) # 2084| Type = [LValueReferenceType] const TernaryNonPodObj & # 2084| ValueCategory = prvalue @@ -19244,956 +19143,919 @@ ir.cpp: # 2084| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) # 2084| Type = [Struct] TernaryNonPodObj # 2084| ValueCategory = lvalue -# 2085| getStmt(4): [ReturnStmt] return ... -# 2087| [TopLevelFunction] void CommaTestHelper(unsigned int) -# 2087| : -# 2087| getParameter(0): [Parameter] (unnamed parameter 0) -# 2087| Type = [IntType] unsigned int -# 2089| [TopLevelFunction] unsigned int CommaTest(unsigned int) +# 2085| getStmt(2): [ExprStmt] ExprStmt +# 2085| getExpr(): [FunctionCall] call to operator= +# 2085| Type = [LValueReferenceType] TernaryNonPodObj & +# 2085| ValueCategory = prvalue +# 2085| getQualifier(): [VariableAccess] z +# 2085| Type = [Struct] TernaryNonPodObj +# 2085| ValueCategory = lvalue +# 2085| getArgument(0): [ConditionalExpr] ... ? ... : ... +# 2085| Type = [Struct] TernaryNonPodObj +# 2085| ValueCategory = prvalue +# 2085| getCondition(): [VariableAccess] a +# 2085| Type = [BoolType] bool +# 2085| ValueCategory = prvalue(load) +# 2085| getThen(): [ConstructorCall] call to TernaryNonPodObj +# 2085| Type = [VoidType] void +# 2085| ValueCategory = prvalue +# 2085| getElse(): [ConstructorCall] call to TernaryNonPodObj +# 2085| Type = [VoidType] void +# 2085| ValueCategory = prvalue +# 2085| getThen().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2085| Type = [Struct] TernaryNonPodObj +# 2085| ValueCategory = prvalue(load) +# 2085| getElse().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2085| Type = [Struct] TernaryNonPodObj +# 2085| ValueCategory = prvalue(load) +# 2085| getImplicitDestructorCall(0): [DestructorCall] call to ~TernaryNonPodObj +# 2085| Type = [VoidType] void +# 2085| ValueCategory = prvalue +# 2085| getQualifier(): [ReuseExpr] reuse of temporary object +# 2085| Type = [Struct] TernaryNonPodObj +# 2085| ValueCategory = xvalue +# 2085| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 2085| Type = [LValueReferenceType] const TernaryNonPodObj & +# 2085| ValueCategory = prvalue +# 2085| getExpr(): [CStyleCast] (const TernaryNonPodObj)... +# 2085| Conversion = [GlvalueConversion] glvalue conversion +# 2085| Type = [SpecifiedType] const TernaryNonPodObj +# 2085| ValueCategory = lvalue +# 2085| getExpr(): [TemporaryObjectExpr] temporary object +# 2085| Type = [Struct] TernaryNonPodObj +# 2085| ValueCategory = lvalue +# 2085| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2085| Type = [Struct] TernaryNonPodObj +# 2085| ValueCategory = lvalue +# 2086| getStmt(3): [ExprStmt] ExprStmt +# 2086| getExpr(): [FunctionCall] call to operator= +# 2086| Type = [LValueReferenceType] TernaryNonPodObj & +# 2086| ValueCategory = prvalue +# 2086| getQualifier(): [FunctionCall] call to operator= +# 2086| Type = [LValueReferenceType] TernaryNonPodObj & +# 2086| ValueCategory = prvalue +# 2086| getQualifier(): [VariableAccess] z +# 2086| Type = [Struct] TernaryNonPodObj +# 2086| ValueCategory = lvalue +# 2086| getArgument(0): [ConditionalExpr] ... ? ... : ... +# 2086| Type = [Struct] TernaryNonPodObj +# 2086| ValueCategory = lvalue +# 2086| getCondition(): [VariableAccess] a +# 2086| Type = [BoolType] bool +# 2086| ValueCategory = prvalue(load) +# 2086| getThen(): [VariableAccess] x +# 2086| Type = [Struct] TernaryNonPodObj +# 2086| ValueCategory = lvalue +# 2086| getElse(): [VariableAccess] y +# 2086| Type = [Struct] TernaryNonPodObj +# 2086| ValueCategory = lvalue +# 2086| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 2086| Type = [LValueReferenceType] const TernaryNonPodObj & +# 2086| ValueCategory = prvalue +# 2086| getExpr(): [CStyleCast] (const TernaryNonPodObj)... +# 2086| Conversion = [GlvalueConversion] glvalue conversion +# 2086| Type = [SpecifiedType] const TernaryNonPodObj +# 2086| ValueCategory = lvalue +# 2086| getArgument(0): [ConstructorCall] call to TernaryNonPodObj +# 2086| Type = [VoidType] void +# 2086| ValueCategory = prvalue +# 2086| getImplicitDestructorCall(0): [DestructorCall] call to ~TernaryNonPodObj +# 2086| Type = [VoidType] void +# 2086| ValueCategory = prvalue +# 2086| getQualifier(): [ReuseExpr] reuse of temporary object +# 2086| Type = [Struct] TernaryNonPodObj +# 2086| ValueCategory = xvalue +# 2086| getQualifier().getFullyConverted(): [ParenthesisExpr] (...) +# 2086| Type = [Struct] TernaryNonPodObj +# 2086| ValueCategory = lvalue +# 2086| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 2086| Type = [Struct] TernaryNonPodObj +# 2086| ValueCategory = lvalue +# 2086| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 2086| Type = [LValueReferenceType] const TernaryNonPodObj & +# 2086| ValueCategory = prvalue +# 2086| getExpr(): [CStyleCast] (const TernaryNonPodObj)... +# 2086| Conversion = [GlvalueConversion] glvalue conversion +# 2086| Type = [SpecifiedType] const TernaryNonPodObj +# 2086| ValueCategory = lvalue +# 2086| getExpr(): [TemporaryObjectExpr] temporary object +# 2086| Type = [Struct] TernaryNonPodObj +# 2086| ValueCategory = lvalue +# 2086| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2086| Type = [Struct] TernaryNonPodObj +# 2086| ValueCategory = lvalue +# 2087| getStmt(4): [ReturnStmt] return ... +# 2089| [TopLevelFunction] void CommaTestHelper(unsigned int) # 2089| : -# 2089| getParameter(0): [Parameter] x +# 2089| getParameter(0): [Parameter] (unnamed parameter 0) # 2089| Type = [IntType] unsigned int -# 2089| getEntryPoint(): [BlockStmt] { ... } -# 2090| getStmt(0): [DeclStmt] declaration -# 2090| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 2090| Type = [IntType] unsigned int -# 2091| getStmt(1): [ExprStmt] ExprStmt -# 2091| getExpr(): [AssignExpr] ... = ... -# 2091| Type = [IntType] unsigned int -# 2091| ValueCategory = lvalue -# 2091| getLValue(): [VariableAccess] y -# 2091| Type = [IntType] unsigned int -# 2091| ValueCategory = lvalue -# 2091| getRValue(): [ConditionalExpr] ... ? ... : ... -# 2091| Type = [IntType] unsigned int -# 2091| ValueCategory = prvalue(load) -# 2091| getCondition(): [LTExpr] ... < ... -# 2091| Type = [BoolType] bool -# 2091| ValueCategory = prvalue -# 2091| getLesserOperand(): [VariableAccess] x -# 2091| Type = [IntType] unsigned int -# 2091| ValueCategory = prvalue(load) -# 2091| getGreaterOperand(): [Literal] 100 -# 2091| Type = [IntType] int -# 2091| Value = [Literal] 100 -# 2091| ValueCategory = prvalue -# 2091| getGreaterOperand().getFullyConverted(): [CStyleCast] (unsigned int)... -# 2091| Conversion = [IntegralConversion] integral conversion -# 2091| Type = [IntType] unsigned int -# 2091| Value = [CStyleCast] 100 -# 2091| ValueCategory = prvalue -# 2092| getThen(): [CommaExpr] ... , ... -# 2092| Type = [IntType] unsigned int -# 2092| ValueCategory = prvalue(load) -# 2092| getLeftOperand(): [FunctionCall] call to CommaTestHelper -# 2092| Type = [VoidType] void -# 2092| ValueCategory = prvalue -# 2092| getArgument(0): [VariableAccess] x -# 2092| Type = [IntType] unsigned int -# 2092| ValueCategory = prvalue(load) -# 2092| getRightOperand(): [VariableAccess] x -# 2092| Type = [IntType] unsigned int -# 2092| ValueCategory = prvalue(load) -# 2093| getElse(): [CommaExpr] ... , ... -# 2093| Type = [IntType] int +# 2091| [TopLevelFunction] unsigned int CommaTest(unsigned int) +# 2091| : +# 2091| getParameter(0): [Parameter] x +# 2091| Type = [IntType] unsigned int +# 2091| getEntryPoint(): [BlockStmt] { ... } +# 2092| getStmt(0): [DeclStmt] declaration +# 2092| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 2092| Type = [IntType] unsigned int +# 2093| getStmt(1): [ExprStmt] ExprStmt +# 2093| getExpr(): [AssignExpr] ... = ... +# 2093| Type = [IntType] unsigned int +# 2093| ValueCategory = lvalue +# 2093| getLValue(): [VariableAccess] y +# 2093| Type = [IntType] unsigned int +# 2093| ValueCategory = lvalue +# 2093| getRValue(): [ConditionalExpr] ... ? ... : ... +# 2093| Type = [IntType] unsigned int +# 2093| ValueCategory = prvalue(load) +# 2093| getCondition(): [LTExpr] ... < ... +# 2093| Type = [BoolType] bool # 2093| ValueCategory = prvalue -# 2093| getLeftOperand(): [FunctionCall] call to CommaTestHelper -# 2093| Type = [VoidType] void -# 2093| ValueCategory = prvalue -# 2093| getArgument(0): [VariableAccess] x -# 2093| Type = [IntType] unsigned int -# 2093| ValueCategory = prvalue(load) -# 2093| getRightOperand(): [Literal] 10 +# 2093| getLesserOperand(): [VariableAccess] x +# 2093| Type = [IntType] unsigned int +# 2093| ValueCategory = prvalue(load) +# 2093| getGreaterOperand(): [Literal] 100 # 2093| Type = [IntType] int -# 2093| Value = [Literal] 10 +# 2093| Value = [Literal] 100 # 2093| ValueCategory = prvalue -# 2092| getThen().getFullyConverted(): [ParenthesisExpr] (...) -# 2092| Type = [IntType] unsigned int -# 2092| ValueCategory = prvalue(load) -# 2093| getElse().getFullyConverted(): [CStyleCast] (unsigned int)... -# 2093| Conversion = [IntegralConversion] integral conversion -# 2093| Type = [IntType] unsigned int -# 2093| ValueCategory = prvalue -# 2093| getExpr(): [ParenthesisExpr] (...) -# 2093| Type = [IntType] int +# 2093| getGreaterOperand().getFullyConverted(): [CStyleCast] (unsigned int)... +# 2093| Conversion = [IntegralConversion] integral conversion +# 2093| Type = [IntType] unsigned int +# 2093| Value = [CStyleCast] 100 # 2093| ValueCategory = prvalue -# 2094| getStmt(2): [ReturnStmt] return ... -# 2096| [TopLevelFunction] void NewDeleteMem() -# 2096| : -# 2096| getEntryPoint(): [BlockStmt] { ... } -# 2097| getStmt(0): [DeclStmt] declaration -# 2097| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 2097| Type = [IntPointerType] int * -# 2097| getVariable().getInitializer(): [Initializer] initializer for x -# 2097| getExpr(): [NewExpr] new -# 2097| Type = [IntPointerType] int * -# 2097| ValueCategory = prvalue -# 2098| getStmt(1): [ExprStmt] ExprStmt -# 2098| getExpr(): [AssignExpr] ... = ... -# 2098| Type = [IntType] int -# 2098| ValueCategory = lvalue -# 2098| getLValue(): [PointerDereferenceExpr] * ... -# 2098| Type = [IntType] int -# 2098| ValueCategory = lvalue -# 2098| getOperand(): [VariableAccess] x -# 2098| Type = [IntPointerType] int * -# 2098| ValueCategory = prvalue(load) -# 2098| getRValue(): [Literal] 6 -# 2098| Type = [IntType] int -# 2098| Value = [Literal] 6 -# 2098| ValueCategory = prvalue -# 2099| getStmt(2): [ExprStmt] ExprStmt -# 2099| getExpr(): [DeleteExpr] delete -# 2099| Type = [VoidType] void -# 2099| ValueCategory = prvalue -# 2099| getExprWithReuse(): [VariableAccess] x -# 2099| Type = [IntPointerType] int * -# 2099| ValueCategory = prvalue(load) -# 2100| getStmt(3): [ReturnStmt] return ... -# 2102| [CopyAssignmentOperator] Base2& Base2::operator=(Base2 const&) -# 2102| : -#-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const Base2 & -# 2102| [Constructor] void Base2::Base2() -# 2102| : -# 2102| : -# 2102| getEntryPoint(): [BlockStmt] { ... } -# 2102| getStmt(0): [ReturnStmt] return ... -# 2102| [CopyConstructor] void Base2::Base2(Base2 const&) -# 2102| : -#-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const Base2 & -# 2104| [MemberFunction] void Base2::operator delete(void*) +# 2094| getThen(): [CommaExpr] ... , ... +# 2094| Type = [IntType] unsigned int +# 2094| ValueCategory = prvalue(load) +# 2094| getLeftOperand(): [FunctionCall] call to CommaTestHelper +# 2094| Type = [VoidType] void +# 2094| ValueCategory = prvalue +# 2094| getArgument(0): [VariableAccess] x +# 2094| Type = [IntType] unsigned int +# 2094| ValueCategory = prvalue(load) +# 2094| getRightOperand(): [VariableAccess] x +# 2094| Type = [IntType] unsigned int +# 2094| ValueCategory = prvalue(load) +# 2095| getElse(): [CommaExpr] ... , ... +# 2095| Type = [IntType] int +# 2095| ValueCategory = prvalue +# 2095| getLeftOperand(): [FunctionCall] call to CommaTestHelper +# 2095| Type = [VoidType] void +# 2095| ValueCategory = prvalue +# 2095| getArgument(0): [VariableAccess] x +# 2095| Type = [IntType] unsigned int +# 2095| ValueCategory = prvalue(load) +# 2095| getRightOperand(): [Literal] 10 +# 2095| Type = [IntType] int +# 2095| Value = [Literal] 10 +# 2095| ValueCategory = prvalue +# 2094| getThen().getFullyConverted(): [ParenthesisExpr] (...) +# 2094| Type = [IntType] unsigned int +# 2094| ValueCategory = prvalue(load) +# 2095| getElse().getFullyConverted(): [CStyleCast] (unsigned int)... +# 2095| Conversion = [IntegralConversion] integral conversion +# 2095| Type = [IntType] unsigned int +# 2095| ValueCategory = prvalue +# 2095| getExpr(): [ParenthesisExpr] (...) +# 2095| Type = [IntType] int +# 2095| ValueCategory = prvalue +# 2096| getStmt(2): [ReturnStmt] return ... +# 2098| [TopLevelFunction] void NewDeleteMem() +# 2098| : +# 2098| getEntryPoint(): [BlockStmt] { ... } +# 2099| getStmt(0): [DeclStmt] declaration +# 2099| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2099| Type = [IntPointerType] int * +# 2099| getVariable().getInitializer(): [Initializer] initializer for x +# 2099| getExpr(): [NewExpr] new +# 2099| Type = [IntPointerType] int * +# 2099| ValueCategory = prvalue +# 2100| getStmt(1): [ExprStmt] ExprStmt +# 2100| getExpr(): [AssignExpr] ... = ... +# 2100| Type = [IntType] int +# 2100| ValueCategory = lvalue +# 2100| getLValue(): [PointerDereferenceExpr] * ... +# 2100| Type = [IntType] int +# 2100| ValueCategory = lvalue +# 2100| getOperand(): [VariableAccess] x +# 2100| Type = [IntPointerType] int * +# 2100| ValueCategory = prvalue(load) +# 2100| getRValue(): [Literal] 6 +# 2100| Type = [IntType] int +# 2100| Value = [Literal] 6 +# 2100| ValueCategory = prvalue +# 2101| getStmt(2): [ExprStmt] ExprStmt +# 2101| getExpr(): [DeleteExpr] delete +# 2101| Type = [VoidType] void +# 2101| ValueCategory = prvalue +# 2101| getExprWithReuse(): [VariableAccess] x +# 2101| Type = [IntPointerType] int * +# 2101| ValueCategory = prvalue(load) +# 2102| getStmt(3): [ReturnStmt] return ... +# 2104| [CopyAssignmentOperator] Base2& Base2::operator=(Base2 const&) # 2104| : -# 2104| getParameter(0): [Parameter] p -# 2104| Type = [VoidPointerType] void * +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [LValueReferenceType] const Base2 & +# 2104| [Constructor] void Base2::Base2() +# 2104| : +# 2104| : # 2104| getEntryPoint(): [BlockStmt] { ... } -# 2105| getStmt(0): [ReturnStmt] return ... -# 2106| [Destructor,VirtualFunction] void Base2::~Base2() +# 2104| getStmt(0): [ReturnStmt] return ... +# 2104| [CopyConstructor] void Base2::Base2(Base2 const&) +# 2104| : +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [LValueReferenceType] const Base2 & +# 2106| [MemberFunction] void Base2::operator delete(void*) # 2106| : +# 2106| getParameter(0): [Parameter] p +# 2106| Type = [VoidPointerType] void * # 2106| getEntryPoint(): [BlockStmt] { ... } -# 2106| getStmt(0): [ReturnStmt] return ... -# 2106| : -# 2109| [CopyAssignmentOperator] Derived2& Derived2::operator=(Derived2 const&) -# 2109| : +# 2107| getStmt(0): [ReturnStmt] return ... +# 2108| [Destructor,VirtualFunction] void Base2::~Base2() +# 2108| : +# 2108| getEntryPoint(): [BlockStmt] { ... } +# 2108| getStmt(0): [ReturnStmt] return ... +# 2108| : +# 2111| [CopyAssignmentOperator] Derived2& Derived2::operator=(Derived2 const&) +# 2111| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const Derived2 & -# 2109| [Constructor] void Derived2::Derived2() -# 2109| : -# 2109| : -# 2109| getInitializer(0): [ConstructorDirectInit] call to Base2 -# 2109| Type = [VoidType] void -# 2109| ValueCategory = prvalue -# 2109| getEntryPoint(): [BlockStmt] { ... } -# 2109| getStmt(0): [ReturnStmt] return ... -# 2109| [CopyConstructor] void Derived2::Derived2(Derived2 const&) -# 2109| : +# 2111| [Constructor] void Derived2::Derived2() +# 2111| : +# 2111| : +# 2111| getInitializer(0): [ConstructorDirectInit] call to Base2 +# 2111| Type = [VoidType] void +# 2111| ValueCategory = prvalue +# 2111| getEntryPoint(): [BlockStmt] { ... } +# 2111| getStmt(0): [ReturnStmt] return ... +# 2111| [CopyConstructor] void Derived2::Derived2(Derived2 const&) +# 2111| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const Derived2 & -# 2112| [Destructor,VirtualFunction] void Derived2::~Derived2() -# 2112| : -# 2112| getEntryPoint(): [BlockStmt] { ... } -# 2112| getStmt(0): [ReturnStmt] return ... -# 2112| : -# 2112| getDestruction(0): [DestructorDirectDestruction] call to ~Base2 -# 2112| Type = [VoidType] void -# 2112| ValueCategory = prvalue -# 2114| [MemberFunction] void Derived2::operator delete(void*) +# 2114| [Destructor,VirtualFunction] void Derived2::~Derived2() # 2114| : -# 2114| getParameter(0): [Parameter] p -# 2114| Type = [VoidPointerType] void * # 2114| getEntryPoint(): [BlockStmt] { ... } -# 2115| getStmt(0): [ReturnStmt] return ... -# 2119| [TopLevelFunction] int virtual_delete() -# 2119| : -# 2120| getEntryPoint(): [BlockStmt] { ... } -# 2121| getStmt(0): [DeclStmt] declaration -# 2121| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b1 -# 2121| Type = [PointerType] Base2 * -# 2121| getVariable().getInitializer(): [Initializer] initializer for b1 -# 2121| getExpr(): [NewExpr] new -# 2121| Type = [PointerType] Base2 * -# 2121| ValueCategory = prvalue -# 2121| getInitializer(): [ConstructorCall] call to Base2 -# 2121| Type = [VoidType] void -# 2121| ValueCategory = prvalue -# 2122| getStmt(1): [ExprStmt] ExprStmt -# 2122| getExpr(): [DeleteExpr] delete -# 2122| Type = [VoidType] void -# 2122| ValueCategory = prvalue -# 2122| getDeallocatorCall(): [FunctionCall] call to operator delete -# 2122| Type = [VoidType] void -# 2122| ValueCategory = prvalue -# 2122| getDestructorCall(): [DestructorCall] call to ~Base2 -# 2122| Type = [VoidType] void -# 2122| ValueCategory = prvalue -# 2122| getQualifier(): [VariableAccess] b1 -# 2122| Type = [PointerType] Base2 * -# 2122| ValueCategory = prvalue(load) -# 2122| getExprWithReuse(): [ReuseExpr] reuse of b1 -# 2122| Type = [PointerType] Base2 * -# 2122| ValueCategory = prvalue -# 2124| getStmt(2): [DeclStmt] declaration -# 2124| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b2 -# 2124| Type = [PointerType] Base2 * -# 2124| getVariable().getInitializer(): [Initializer] initializer for b2 -# 2124| getExpr(): [NewExpr] new -# 2124| Type = [PointerType] Derived2 * -# 2124| ValueCategory = prvalue -# 2124| getInitializer(): [ConstructorCall] call to Derived2 -# 2124| Type = [VoidType] void -# 2124| ValueCategory = prvalue -# 2124| getExpr().getFullyConverted(): [CStyleCast] (Base2 *)... -# 2124| Conversion = [BaseClassConversion] base class conversion +# 2114| getStmt(0): [ReturnStmt] return ... +# 2114| : +# 2114| getDestruction(0): [DestructorDirectDestruction] call to ~Base2 +# 2114| Type = [VoidType] void +# 2114| ValueCategory = prvalue +# 2116| [MemberFunction] void Derived2::operator delete(void*) +# 2116| : +# 2116| getParameter(0): [Parameter] p +# 2116| Type = [VoidPointerType] void * +# 2116| getEntryPoint(): [BlockStmt] { ... } +# 2117| getStmt(0): [ReturnStmt] return ... +# 2121| [TopLevelFunction] int virtual_delete() +# 2121| : +# 2122| getEntryPoint(): [BlockStmt] { ... } +# 2123| getStmt(0): [DeclStmt] declaration +# 2123| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b1 +# 2123| Type = [PointerType] Base2 * +# 2123| getVariable().getInitializer(): [Initializer] initializer for b1 +# 2123| getExpr(): [NewExpr] new +# 2123| Type = [PointerType] Base2 * +# 2123| ValueCategory = prvalue +# 2123| getInitializer(): [ConstructorCall] call to Base2 +# 2123| Type = [VoidType] void +# 2123| ValueCategory = prvalue +# 2124| getStmt(1): [ExprStmt] ExprStmt +# 2124| getExpr(): [DeleteExpr] delete +# 2124| Type = [VoidType] void +# 2124| ValueCategory = prvalue +# 2124| getDeallocatorCall(): [FunctionCall] call to operator delete +# 2124| Type = [VoidType] void +# 2124| ValueCategory = prvalue +# 2124| getDestructorCall(): [DestructorCall] call to ~Base2 +# 2124| Type = [VoidType] void +# 2124| ValueCategory = prvalue +# 2124| getQualifier(): [VariableAccess] b1 # 2124| Type = [PointerType] Base2 * -# 2124| ValueCategory = prvalue -# 2125| getStmt(3): [ExprStmt] ExprStmt -# 2125| getExpr(): [DeleteExpr] delete -# 2125| Type = [VoidType] void -# 2125| ValueCategory = prvalue -# 2125| getDeallocatorCall(): [FunctionCall] call to operator delete -# 2125| Type = [VoidType] void -# 2125| ValueCategory = prvalue -# 2125| getDestructorCall(): [DestructorCall] call to ~Base2 -# 2125| Type = [VoidType] void -# 2125| ValueCategory = prvalue -# 2125| getQualifier(): [VariableAccess] b2 -# 2125| Type = [PointerType] Base2 * -# 2125| ValueCategory = prvalue(load) -# 2125| getExprWithReuse(): [ReuseExpr] reuse of b2 -# 2125| Type = [PointerType] Base2 * -# 2125| ValueCategory = prvalue -# 2127| getStmt(4): [DeclStmt] declaration -# 2127| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d -# 2127| Type = [PointerType] Derived2 * -# 2127| getVariable().getInitializer(): [Initializer] initializer for d -# 2127| getExpr(): [NewExpr] new -# 2127| Type = [PointerType] Derived2 * -# 2127| ValueCategory = prvalue -# 2127| getInitializer(): [ConstructorCall] call to Derived2 -# 2127| Type = [VoidType] void -# 2127| ValueCategory = prvalue -# 2128| getStmt(5): [ExprStmt] ExprStmt -# 2128| getExpr(): [DeleteExpr] delete -# 2128| Type = [VoidType] void -# 2128| ValueCategory = prvalue -# 2128| getDeallocatorCall(): [FunctionCall] call to operator delete -# 2128| Type = [VoidType] void -# 2128| ValueCategory = prvalue -# 2128| getDestructorCall(): [DestructorCall] call to ~Derived2 -# 2128| Type = [VoidType] void -# 2128| ValueCategory = prvalue -# 2128| getQualifier(): [VariableAccess] d -# 2128| Type = [PointerType] Derived2 * -# 2128| ValueCategory = prvalue(load) -# 2128| getExprWithReuse(): [ReuseExpr] reuse of d -# 2128| Type = [PointerType] Derived2 * -# 2128| ValueCategory = prvalue -# 2129| getStmt(6): [ReturnStmt] return ... -# 2131| [TopLevelFunction] void test_constant_folding_use(int) -# 2131| : -# 2131| getParameter(0): [Parameter] (unnamed parameter 0) -# 2131| Type = [IntType] int -# 2133| [TopLevelFunction] void test_constant_folding() +# 2124| ValueCategory = prvalue(load) +# 2124| getExprWithReuse(): [ReuseExpr] reuse of b1 +# 2124| Type = [PointerType] Base2 * +# 2124| ValueCategory = prvalue +# 2126| getStmt(2): [DeclStmt] declaration +# 2126| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b2 +# 2126| Type = [PointerType] Base2 * +# 2126| getVariable().getInitializer(): [Initializer] initializer for b2 +# 2126| getExpr(): [NewExpr] new +# 2126| Type = [PointerType] Derived2 * +# 2126| ValueCategory = prvalue +# 2126| getInitializer(): [ConstructorCall] call to Derived2 +# 2126| Type = [VoidType] void +# 2126| ValueCategory = prvalue +# 2126| getExpr().getFullyConverted(): [CStyleCast] (Base2 *)... +# 2126| Conversion = [BaseClassConversion] base class conversion +# 2126| Type = [PointerType] Base2 * +# 2126| ValueCategory = prvalue +# 2127| getStmt(3): [ExprStmt] ExprStmt +# 2127| getExpr(): [DeleteExpr] delete +# 2127| Type = [VoidType] void +# 2127| ValueCategory = prvalue +# 2127| getDeallocatorCall(): [FunctionCall] call to operator delete +# 2127| Type = [VoidType] void +# 2127| ValueCategory = prvalue +# 2127| getDestructorCall(): [DestructorCall] call to ~Base2 +# 2127| Type = [VoidType] void +# 2127| ValueCategory = prvalue +# 2127| getQualifier(): [VariableAccess] b2 +# 2127| Type = [PointerType] Base2 * +# 2127| ValueCategory = prvalue(load) +# 2127| getExprWithReuse(): [ReuseExpr] reuse of b2 +# 2127| Type = [PointerType] Base2 * +# 2127| ValueCategory = prvalue +# 2129| getStmt(4): [DeclStmt] declaration +# 2129| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d +# 2129| Type = [PointerType] Derived2 * +# 2129| getVariable().getInitializer(): [Initializer] initializer for d +# 2129| getExpr(): [NewExpr] new +# 2129| Type = [PointerType] Derived2 * +# 2129| ValueCategory = prvalue +# 2129| getInitializer(): [ConstructorCall] call to Derived2 +# 2129| Type = [VoidType] void +# 2129| ValueCategory = prvalue +# 2130| getStmt(5): [ExprStmt] ExprStmt +# 2130| getExpr(): [DeleteExpr] delete +# 2130| Type = [VoidType] void +# 2130| ValueCategory = prvalue +# 2130| getDeallocatorCall(): [FunctionCall] call to operator delete +# 2130| Type = [VoidType] void +# 2130| ValueCategory = prvalue +# 2130| getDestructorCall(): [DestructorCall] call to ~Derived2 +# 2130| Type = [VoidType] void +# 2130| ValueCategory = prvalue +# 2130| getQualifier(): [VariableAccess] d +# 2130| Type = [PointerType] Derived2 * +# 2130| ValueCategory = prvalue(load) +# 2130| getExprWithReuse(): [ReuseExpr] reuse of d +# 2130| Type = [PointerType] Derived2 * +# 2130| ValueCategory = prvalue +# 2131| getStmt(6): [ReturnStmt] return ... +# 2133| [TopLevelFunction] void test_constant_folding_use(int) # 2133| : -# 2133| getEntryPoint(): [BlockStmt] { ... } -# 2134| getStmt(0): [DeclStmt] declaration -# 2134| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 2134| Type = [SpecifiedType] const int -# 2134| getVariable().getInitializer(): [Initializer] initializer for x -# 2134| getExpr(): [Literal] 116 -# 2134| Type = [IntType] int -# 2134| Value = [Literal] 116 -# 2134| ValueCategory = prvalue -# 2135| getStmt(1): [ExprStmt] ExprStmt -# 2135| getExpr(): [FunctionCall] call to test_constant_folding_use -# 2135| Type = [VoidType] void -# 2135| ValueCategory = prvalue -# 2135| getArgument(0): [VariableAccess] x -# 2135| Type = [IntType] int -# 2135| Value = [VariableAccess] 116 -# 2135| ValueCategory = prvalue(load) -# 2136| getStmt(2): [ReturnStmt] return ... -# 2138| [TopLevelFunction] void exit(int) -# 2138| : -# 2138| getParameter(0): [Parameter] code -# 2138| Type = [IntType] int -# 2140| [TopLevelFunction] int NonExit() +# 2133| getParameter(0): [Parameter] (unnamed parameter 0) +# 2133| Type = [IntType] int +# 2135| [TopLevelFunction] void test_constant_folding() +# 2135| : +# 2135| getEntryPoint(): [BlockStmt] { ... } +# 2136| getStmt(0): [DeclStmt] declaration +# 2136| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2136| Type = [SpecifiedType] const int +# 2136| getVariable().getInitializer(): [Initializer] initializer for x +# 2136| getExpr(): [Literal] 116 +# 2136| Type = [IntType] int +# 2136| Value = [Literal] 116 +# 2136| ValueCategory = prvalue +# 2137| getStmt(1): [ExprStmt] ExprStmt +# 2137| getExpr(): [FunctionCall] call to test_constant_folding_use +# 2137| Type = [VoidType] void +# 2137| ValueCategory = prvalue +# 2137| getArgument(0): [VariableAccess] x +# 2137| Type = [IntType] int +# 2137| Value = [VariableAccess] 116 +# 2137| ValueCategory = prvalue(load) +# 2138| getStmt(2): [ReturnStmt] return ... +# 2140| [TopLevelFunction] void exit(int) # 2140| : -# 2140| getEntryPoint(): [BlockStmt] { ... } -# 2141| getStmt(0): [DeclStmt] declaration -# 2141| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 2141| Type = [IntType] int -# 2141| getVariable().getInitializer(): [Initializer] initializer for x -# 2141| getExpr(): [FunctionCall] call to Add -# 2141| Type = [IntType] int -# 2141| ValueCategory = prvalue -# 2141| getArgument(0): [Literal] 3 -# 2141| Type = [IntType] int -# 2141| Value = [Literal] 3 -# 2141| ValueCategory = prvalue -# 2141| getArgument(1): [Literal] 4 -# 2141| Type = [IntType] int -# 2141| Value = [Literal] 4 -# 2141| ValueCategory = prvalue -# 2142| getStmt(1): [IfStmt] if (...) ... -# 2142| getCondition(): [EQExpr] ... == ... -# 2142| Type = [BoolType] bool -# 2142| ValueCategory = prvalue -# 2142| getLeftOperand(): [VariableAccess] x -# 2142| Type = [IntType] int -# 2142| ValueCategory = prvalue(load) -# 2142| getRightOperand(): [Literal] 7 -# 2142| Type = [IntType] int -# 2142| Value = [Literal] 7 -# 2142| ValueCategory = prvalue -# 2143| getThen(): [ExprStmt] ExprStmt -# 2143| getExpr(): [FunctionCall] call to exit -# 2143| Type = [VoidType] void -# 2143| ValueCategory = prvalue -# 2143| getArgument(0): [Literal] 3 +# 2140| getParameter(0): [Parameter] code +# 2140| Type = [IntType] int +# 2142| [TopLevelFunction] int NonExit() +# 2142| : +# 2142| getEntryPoint(): [BlockStmt] { ... } +# 2143| getStmt(0): [DeclStmt] declaration +# 2143| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2143| Type = [IntType] int +# 2143| getVariable().getInitializer(): [Initializer] initializer for x +# 2143| getExpr(): [FunctionCall] call to Add # 2143| Type = [IntType] int -# 2143| Value = [Literal] 3 # 2143| ValueCategory = prvalue -# 2144| getStmt(2): [ExprStmt] ExprStmt -# 2144| getExpr(): [FunctionCall] call to VoidFunc -# 2144| Type = [VoidType] void +# 2143| getArgument(0): [Literal] 3 +# 2143| Type = [IntType] int +# 2143| Value = [Literal] 3 +# 2143| ValueCategory = prvalue +# 2143| getArgument(1): [Literal] 4 +# 2143| Type = [IntType] int +# 2143| Value = [Literal] 4 +# 2143| ValueCategory = prvalue +# 2144| getStmt(1): [IfStmt] if (...) ... +# 2144| getCondition(): [EQExpr] ... == ... +# 2144| Type = [BoolType] bool # 2144| ValueCategory = prvalue -# 2145| getStmt(3): [ReturnStmt] return ... -# 2145| getExpr(): [VariableAccess] x -# 2145| Type = [IntType] int -# 2145| ValueCategory = prvalue(load) -# 2148| [TopLevelFunction] void CallsNonExit() -# 2148| : -# 2148| getEntryPoint(): [BlockStmt] { ... } -# 2149| getStmt(0): [ExprStmt] ExprStmt -# 2149| getExpr(): [FunctionCall] call to VoidFunc -# 2149| Type = [VoidType] void -# 2149| ValueCategory = prvalue -# 2150| getStmt(1): [ExprStmt] ExprStmt -# 2150| getExpr(): [FunctionCall] call to exit -# 2150| Type = [VoidType] void -# 2150| ValueCategory = prvalue -# 2150| getArgument(0): [Literal] 3 -# 2150| Type = [IntType] int -# 2150| Value = [Literal] 3 -# 2150| ValueCategory = prvalue -# 2151| getStmt(2): [ReturnStmt] return ... -# 2153| [TopLevelFunction] int TransNonExit() -# 2153| : -# 2153| getEntryPoint(): [BlockStmt] { ... } -# 2154| getStmt(0): [DeclStmt] declaration -# 2154| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 2154| Type = [IntType] int -# 2154| getVariable().getInitializer(): [Initializer] initializer for x -# 2154| getExpr(): [FunctionCall] call to Add -# 2154| Type = [IntType] int -# 2154| ValueCategory = prvalue -# 2154| getArgument(0): [Literal] 3 -# 2154| Type = [IntType] int -# 2154| Value = [Literal] 3 -# 2154| ValueCategory = prvalue -# 2154| getArgument(1): [Literal] 4 -# 2154| Type = [IntType] int -# 2154| Value = [Literal] 4 -# 2154| ValueCategory = prvalue -# 2155| getStmt(1): [IfStmt] if (...) ... -# 2155| getCondition(): [EQExpr] ... == ... -# 2155| Type = [BoolType] bool -# 2155| ValueCategory = prvalue -# 2155| getLeftOperand(): [VariableAccess] x -# 2155| Type = [IntType] int -# 2155| ValueCategory = prvalue(load) -# 2155| getRightOperand(): [Literal] 7 -# 2155| Type = [IntType] int -# 2155| Value = [Literal] 7 -# 2155| ValueCategory = prvalue -# 2156| getThen(): [ExprStmt] ExprStmt -# 2156| getExpr(): [FunctionCall] call to CallsNonExit -# 2156| Type = [VoidType] void -# 2156| ValueCategory = prvalue -# 2157| getStmt(2): [ExprStmt] ExprStmt -# 2157| getExpr(): [FunctionCall] call to VoidFunc -# 2157| Type = [VoidType] void +# 2144| getLeftOperand(): [VariableAccess] x +# 2144| Type = [IntType] int +# 2144| ValueCategory = prvalue(load) +# 2144| getRightOperand(): [Literal] 7 +# 2144| Type = [IntType] int +# 2144| Value = [Literal] 7 +# 2144| ValueCategory = prvalue +# 2145| getThen(): [ExprStmt] ExprStmt +# 2145| getExpr(): [FunctionCall] call to exit +# 2145| Type = [VoidType] void +# 2145| ValueCategory = prvalue +# 2145| getArgument(0): [Literal] 3 +# 2145| Type = [IntType] int +# 2145| Value = [Literal] 3 +# 2145| ValueCategory = prvalue +# 2146| getStmt(2): [ExprStmt] ExprStmt +# 2146| getExpr(): [FunctionCall] call to VoidFunc +# 2146| Type = [VoidType] void +# 2146| ValueCategory = prvalue +# 2147| getStmt(3): [ReturnStmt] return ... +# 2147| getExpr(): [VariableAccess] x +# 2147| Type = [IntType] int +# 2147| ValueCategory = prvalue(load) +# 2150| [TopLevelFunction] void CallsNonExit() +# 2150| : +# 2150| getEntryPoint(): [BlockStmt] { ... } +# 2151| getStmt(0): [ExprStmt] ExprStmt +# 2151| getExpr(): [FunctionCall] call to VoidFunc +# 2151| Type = [VoidType] void +# 2151| ValueCategory = prvalue +# 2152| getStmt(1): [ExprStmt] ExprStmt +# 2152| getExpr(): [FunctionCall] call to exit +# 2152| Type = [VoidType] void +# 2152| ValueCategory = prvalue +# 2152| getArgument(0): [Literal] 3 +# 2152| Type = [IntType] int +# 2152| Value = [Literal] 3 +# 2152| ValueCategory = prvalue +# 2153| getStmt(2): [ReturnStmt] return ... +# 2155| [TopLevelFunction] int TransNonExit() +# 2155| : +# 2155| getEntryPoint(): [BlockStmt] { ... } +# 2156| getStmt(0): [DeclStmt] declaration +# 2156| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2156| Type = [IntType] int +# 2156| getVariable().getInitializer(): [Initializer] initializer for x +# 2156| getExpr(): [FunctionCall] call to Add +# 2156| Type = [IntType] int +# 2156| ValueCategory = prvalue +# 2156| getArgument(0): [Literal] 3 +# 2156| Type = [IntType] int +# 2156| Value = [Literal] 3 +# 2156| ValueCategory = prvalue +# 2156| getArgument(1): [Literal] 4 +# 2156| Type = [IntType] int +# 2156| Value = [Literal] 4 +# 2156| ValueCategory = prvalue +# 2157| getStmt(1): [IfStmt] if (...) ... +# 2157| getCondition(): [EQExpr] ... == ... +# 2157| Type = [BoolType] bool # 2157| ValueCategory = prvalue -# 2158| getStmt(3): [ReturnStmt] return ... -# 2158| getExpr(): [VariableAccess] x -# 2158| Type = [IntType] int -# 2158| ValueCategory = prvalue(load) -# 2161| [TopLevelFunction] void newArrayCorrectType(size_t) -# 2161| : -# 2161| getParameter(0): [Parameter] n -# 2161| Type = [CTypedefType,Size_t] size_t -# 2161| getEntryPoint(): [BlockStmt] { ... } -# 2162| getStmt(0): [ExprStmt] ExprStmt -# 2162| getExpr(): [NewArrayExpr] new[] -# 2162| Type = [IntPointerType] int * -# 2162| ValueCategory = prvalue -# 2162| getExtent(): [VariableAccess] n -# 2162| Type = [CTypedefType,Size_t] size_t -# 2162| ValueCategory = prvalue(load) -# 2163| getStmt(1): [ExprStmt] ExprStmt -# 2163| getExpr(): [NewArrayExpr] new[] -# 2163| Type = [IntPointerType] int * -# 2163| ValueCategory = prvalue -# 2163| getAllocatorCall(): [FunctionCall] call to operator new[] -# 2163| Type = [VoidPointerType] void * -# 2163| ValueCategory = prvalue -# 2163| getArgument(0): [ErrorExpr] -# 2163| Type = [LongType] unsigned long -# 2163| ValueCategory = prvalue -# 2163| getArgument(1): [Literal] 1.0 -# 2163| Type = [FloatType] float -# 2163| Value = [Literal] 1.0 -# 2163| ValueCategory = prvalue -# 2163| getExtent(): [VariableAccess] n -# 2163| Type = [CTypedefType,Size_t] size_t -# 2163| ValueCategory = prvalue(load) -# 2164| getStmt(2): [ExprStmt] ExprStmt +# 2157| getLeftOperand(): [VariableAccess] x +# 2157| Type = [IntType] int +# 2157| ValueCategory = prvalue(load) +# 2157| getRightOperand(): [Literal] 7 +# 2157| Type = [IntType] int +# 2157| Value = [Literal] 7 +# 2157| ValueCategory = prvalue +# 2158| getThen(): [ExprStmt] ExprStmt +# 2158| getExpr(): [FunctionCall] call to CallsNonExit +# 2158| Type = [VoidType] void +# 2158| ValueCategory = prvalue +# 2159| getStmt(2): [ExprStmt] ExprStmt +# 2159| getExpr(): [FunctionCall] call to VoidFunc +# 2159| Type = [VoidType] void +# 2159| ValueCategory = prvalue +# 2160| getStmt(3): [ReturnStmt] return ... +# 2160| getExpr(): [VariableAccess] x +# 2160| Type = [IntType] int +# 2160| ValueCategory = prvalue(load) +# 2163| [TopLevelFunction] void newArrayCorrectType(size_t) +# 2163| : +# 2163| getParameter(0): [Parameter] n +# 2163| Type = [CTypedefType,Size_t] size_t +# 2163| getEntryPoint(): [BlockStmt] { ... } +# 2164| getStmt(0): [ExprStmt] ExprStmt # 2164| getExpr(): [NewArrayExpr] new[] -# 2164| Type = [PointerType] String * +# 2164| Type = [IntPointerType] int * # 2164| ValueCategory = prvalue -# 2164| getInitializer(): [ArrayAggregateLiteral] {...} -# 2164| Type = [ArrayType] String[] -# 2164| ValueCategory = prvalue -# 2164| getAnElementExpr(0): [ConstructorCall] call to String -# 2164| Type = [VoidType] void -# 2164| ValueCategory = prvalue # 2164| getExtent(): [VariableAccess] n # 2164| Type = [CTypedefType,Size_t] size_t # 2164| ValueCategory = prvalue(load) -# 2165| getStmt(3): [ExprStmt] ExprStmt +# 2165| getStmt(1): [ExprStmt] ExprStmt # 2165| getExpr(): [NewArrayExpr] new[] -# 2165| Type = [PointerType] Overaligned * +# 2165| Type = [IntPointerType] int * # 2165| ValueCategory = prvalue +# 2165| getAllocatorCall(): [FunctionCall] call to operator new[] +# 2165| Type = [VoidPointerType] void * +# 2165| ValueCategory = prvalue +# 2165| getArgument(0): [ErrorExpr] +# 2165| Type = [LongType] unsigned long +# 2165| ValueCategory = prvalue +# 2165| getArgument(1): [Literal] 1.0 +# 2165| Type = [FloatType] float +# 2165| Value = [Literal] 1.0 +# 2165| ValueCategory = prvalue # 2165| getExtent(): [VariableAccess] n # 2165| Type = [CTypedefType,Size_t] size_t # 2165| ValueCategory = prvalue(load) -# 2165| getAlignmentArgument(): [Literal] 128 -# 2165| Type = [ScopedEnum] align_val_t -# 2165| Value = [Literal] 128 -# 2165| ValueCategory = prvalue -# 2166| getStmt(4): [ExprStmt] ExprStmt +# 2166| getStmt(2): [ExprStmt] ExprStmt # 2166| getExpr(): [NewArrayExpr] new[] -# 2166| Type = [PointerType] DefaultCtorWithDefaultParam * +# 2166| Type = [PointerType] String * # 2166| ValueCategory = prvalue # 2166| getInitializer(): [ArrayAggregateLiteral] {...} -# 2166| Type = [ArrayType] DefaultCtorWithDefaultParam[] +# 2166| Type = [ArrayType] String[] # 2166| ValueCategory = prvalue -# 2166| getAnElementExpr(0): [ConstructorCall] call to DefaultCtorWithDefaultParam +# 2166| getAnElementExpr(0): [ConstructorCall] call to String # 2166| Type = [VoidType] void # 2166| ValueCategory = prvalue # 2166| getExtent(): [VariableAccess] n # 2166| Type = [CTypedefType,Size_t] size_t # 2166| ValueCategory = prvalue(load) -# 2167| getStmt(5): [ExprStmt] ExprStmt +# 2167| getStmt(3): [ExprStmt] ExprStmt # 2167| getExpr(): [NewArrayExpr] new[] -# 2167| Type = [IntPointerType] int * +# 2167| Type = [PointerType] Overaligned * # 2167| ValueCategory = prvalue -# 2167| getInitializer(): [ArrayAggregateLiteral] {...} -# 2167| Type = [ArrayType] int[3] -# 2167| ValueCategory = prvalue -# 2167| getAnElementExpr(0): [Literal] 0 -# 2167| Type = [IntType] int -# 2167| Value = [Literal] 0 -# 2167| ValueCategory = prvalue -# 2167| getAnElementExpr(1): [Literal] 1 -# 2167| Type = [IntType] int -# 2167| Value = [Literal] 1 -# 2167| ValueCategory = prvalue -# 2167| getAnElementExpr(2): [Literal] 2 -# 2167| Type = [IntType] int -# 2167| Value = [Literal] 2 -# 2167| ValueCategory = prvalue # 2167| getExtent(): [VariableAccess] n # 2167| Type = [CTypedefType,Size_t] size_t # 2167| ValueCategory = prvalue(load) -# 2168| getStmt(6): [ReturnStmt] return ... -# 2170| [TopLevelFunction] double strtod(char const*, char**) -# 2170| : -# 2170| getParameter(0): [Parameter] str -# 2170| Type = [PointerType] const char * -# 2170| getParameter(1): [Parameter] endptr -# 2170| Type = [PointerType] char ** -# 2172| [TopLevelFunction] char* test_strtod(char*) +# 2167| getAlignmentArgument(): [Literal] 128 +# 2167| Type = [ScopedEnum] align_val_t +# 2167| Value = [Literal] 128 +# 2167| ValueCategory = prvalue +# 2168| getStmt(4): [ExprStmt] ExprStmt +# 2168| getExpr(): [NewArrayExpr] new[] +# 2168| Type = [PointerType] DefaultCtorWithDefaultParam * +# 2168| ValueCategory = prvalue +# 2168| getInitializer(): [ArrayAggregateLiteral] {...} +# 2168| Type = [ArrayType] DefaultCtorWithDefaultParam[] +# 2168| ValueCategory = prvalue +# 2168| getAnElementExpr(0): [ConstructorCall] call to DefaultCtorWithDefaultParam +# 2168| Type = [VoidType] void +# 2168| ValueCategory = prvalue +# 2168| getExtent(): [VariableAccess] n +# 2168| Type = [CTypedefType,Size_t] size_t +# 2168| ValueCategory = prvalue(load) +# 2169| getStmt(5): [ExprStmt] ExprStmt +# 2169| getExpr(): [NewArrayExpr] new[] +# 2169| Type = [IntPointerType] int * +# 2169| ValueCategory = prvalue +# 2169| getInitializer(): [ArrayAggregateLiteral] {...} +# 2169| Type = [ArrayType] int[3] +# 2169| ValueCategory = prvalue +# 2169| getAnElementExpr(0): [Literal] 0 +# 2169| Type = [IntType] int +# 2169| Value = [Literal] 0 +# 2169| ValueCategory = prvalue +# 2169| getAnElementExpr(1): [Literal] 1 +# 2169| Type = [IntType] int +# 2169| Value = [Literal] 1 +# 2169| ValueCategory = prvalue +# 2169| getAnElementExpr(2): [Literal] 2 +# 2169| Type = [IntType] int +# 2169| Value = [Literal] 2 +# 2169| ValueCategory = prvalue +# 2169| getExtent(): [VariableAccess] n +# 2169| Type = [CTypedefType,Size_t] size_t +# 2169| ValueCategory = prvalue(load) +# 2170| getStmt(6): [ReturnStmt] return ... +# 2172| [TopLevelFunction] double strtod(char const*, char**) # 2172| : -# 2172| getParameter(0): [Parameter] s -# 2172| Type = [CharPointerType] char * -# 2172| getEntryPoint(): [BlockStmt] { ... } -# 2173| getStmt(0): [DeclStmt] declaration -# 2173| getDeclarationEntry(0): [VariableDeclarationEntry] definition of end -# 2173| Type = [CharPointerType] char * -# 2174| getStmt(1): [DeclStmt] declaration -# 2174| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d -# 2174| Type = [DoubleType] double -# 2174| getVariable().getInitializer(): [Initializer] initializer for d -# 2174| getExpr(): [FunctionCall] call to strtod -# 2174| Type = [DoubleType] double -# 2174| ValueCategory = prvalue -# 2174| getArgument(0): [VariableAccess] s -# 2174| Type = [CharPointerType] char * -# 2174| ValueCategory = prvalue(load) -# 2174| getArgument(1): [AddressOfExpr] & ... -# 2174| Type = [PointerType] char ** -# 2174| ValueCategory = prvalue -# 2174| getOperand(): [VariableAccess] end -# 2174| Type = [CharPointerType] char * -# 2174| ValueCategory = lvalue -# 2174| getArgument(0).getFullyConverted(): [CStyleCast] (const char *)... -# 2174| Conversion = [PointerConversion] pointer conversion -# 2174| Type = [PointerType] const char * -# 2174| ValueCategory = prvalue -# 2175| getStmt(2): [ReturnStmt] return ... -# 2175| getExpr(): [VariableAccess] end +# 2172| getParameter(0): [Parameter] str +# 2172| Type = [PointerType] const char * +# 2172| getParameter(1): [Parameter] endptr +# 2172| Type = [PointerType] char ** +# 2174| [TopLevelFunction] char* test_strtod(char*) +# 2174| : +# 2174| getParameter(0): [Parameter] s +# 2174| Type = [CharPointerType] char * +# 2174| getEntryPoint(): [BlockStmt] { ... } +# 2175| getStmt(0): [DeclStmt] declaration +# 2175| getDeclarationEntry(0): [VariableDeclarationEntry] definition of end # 2175| Type = [CharPointerType] char * -# 2175| ValueCategory = prvalue(load) -# 2178| [CopyAssignmentOperator] HasOperatorBool& HasOperatorBool::operator=(HasOperatorBool const&) -# 2178| : +# 2176| getStmt(1): [DeclStmt] declaration +# 2176| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d +# 2176| Type = [DoubleType] double +# 2176| getVariable().getInitializer(): [Initializer] initializer for d +# 2176| getExpr(): [FunctionCall] call to strtod +# 2176| Type = [DoubleType] double +# 2176| ValueCategory = prvalue +# 2176| getArgument(0): [VariableAccess] s +# 2176| Type = [CharPointerType] char * +# 2176| ValueCategory = prvalue(load) +# 2176| getArgument(1): [AddressOfExpr] & ... +# 2176| Type = [PointerType] char ** +# 2176| ValueCategory = prvalue +# 2176| getOperand(): [VariableAccess] end +# 2176| Type = [CharPointerType] char * +# 2176| ValueCategory = lvalue +# 2176| getArgument(0).getFullyConverted(): [CStyleCast] (const char *)... +# 2176| Conversion = [PointerConversion] pointer conversion +# 2176| Type = [PointerType] const char * +# 2176| ValueCategory = prvalue +# 2177| getStmt(2): [ReturnStmt] return ... +# 2177| getExpr(): [VariableAccess] end +# 2177| Type = [CharPointerType] char * +# 2177| ValueCategory = prvalue(load) +# 2180| [CopyAssignmentOperator] HasOperatorBool& HasOperatorBool::operator=(HasOperatorBool const&) +# 2180| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const HasOperatorBool & -# 2178| [MoveAssignmentOperator] HasOperatorBool& HasOperatorBool::operator=(HasOperatorBool&&) -# 2178| : +# 2180| [MoveAssignmentOperator] HasOperatorBool& HasOperatorBool::operator=(HasOperatorBool&&) +# 2180| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] HasOperatorBool && -# 2179| [ConversionOperator] bool HasOperatorBool::operator bool() -# 2179| : -# 2182| [TopLevelFunction] void call_as_child_of_ConditionDeclExpr() -# 2182| : -# 2182| getEntryPoint(): [BlockStmt] { ... } -# 2183| getStmt(0): [IfStmt] if (...) ... -# 2183| getCondition(): [ConditionDeclExpr] (condition decl) -# 2183| Type = [BoolType] bool -# 2183| ValueCategory = prvalue -# 2183| getChild(0): [FunctionCall] call to operator bool -# 2183| Type = [BoolType] bool -# 2183| ValueCategory = prvalue -# 2183| getQualifier(): [VariableAccess] b -# 2183| Type = [Struct] HasOperatorBool -# 2183| ValueCategory = prvalue(load) -# 2183| getInitializingExpr(): [Literal] 0 -# 2183| Type = [Struct] HasOperatorBool -# 2183| Value = [Literal] 0 -# 2183| ValueCategory = prvalue -# 2183| getThen(): [BlockStmt] { ... } -# 2184| getStmt(1): [ReturnStmt] return ... -# 2186| [CopyAssignmentOperator] ClassWithDestructor& ClassWithDestructor::operator=(ClassWithDestructor const&) -# 2186| : +# 2181| [ConversionOperator] bool HasOperatorBool::operator bool() +# 2181| : +# 2184| [TopLevelFunction] void call_as_child_of_ConditionDeclExpr() +# 2184| : +# 2184| getEntryPoint(): [BlockStmt] { ... } +# 2185| getStmt(0): [IfStmt] if (...) ... +# 2185| getCondition(): [ConditionDeclExpr] (condition decl) +# 2185| Type = [BoolType] bool +# 2185| ValueCategory = prvalue +# 2185| getChild(0): [FunctionCall] call to operator bool +# 2185| Type = [BoolType] bool +# 2185| ValueCategory = prvalue +# 2185| getQualifier(): [VariableAccess] b +# 2185| Type = [Struct] HasOperatorBool +# 2185| ValueCategory = prvalue(load) +# 2185| getInitializingExpr(): [Literal] 0 +# 2185| Type = [Struct] HasOperatorBool +# 2185| Value = [Literal] 0 +# 2185| ValueCategory = prvalue +# 2185| getThen(): [BlockStmt] { ... } +# 2186| getStmt(1): [ReturnStmt] return ... +# 2188| [CopyAssignmentOperator] ClassWithDestructor& ClassWithDestructor::operator=(ClassWithDestructor const&) +# 2188| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const ClassWithDestructor & -# 2186| [CopyConstructor] void ClassWithDestructor::ClassWithDestructor(ClassWithDestructor const&) -# 2186| : +# 2188| [CopyConstructor] void ClassWithDestructor::ClassWithDestructor(ClassWithDestructor const&) +# 2188| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const ClassWithDestructor & -# 2186| : -# 2186| getInitializer(0): [ConstructorFieldInit] constructor init of field x -# 2186| Type = [CharPointerType] char * -# 2186| ValueCategory = prvalue -# 2186| getExpr(): [ReferenceFieldAccess] x -# 2186| Type = [CharPointerType] char * -# 2186| ValueCategory = prvalue(load) -# 2186| getQualifier(): [VariableAccess] (unnamed parameter 0) -# 2186| Type = [LValueReferenceType] const ClassWithDestructor & -# 2186| ValueCategory = prvalue(load) -# 2186| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2186| Type = [SpecifiedType] const ClassWithDestructor -# 2186| ValueCategory = lvalue -# 2186| getEntryPoint(): [BlockStmt] { ... } -# 2186| getStmt(0): [ReturnStmt] return ... -# 2189| [Constructor] void ClassWithDestructor::ClassWithDestructor() -# 2189| : -# 2189| : -# 2189| getEntryPoint(): [BlockStmt] { ... } -# 2189| getStmt(0): [ExprStmt] ExprStmt -# 2189| getExpr(): [AssignExpr] ... = ... -# 2189| Type = [CharPointerType] char * -# 2189| ValueCategory = lvalue -# 2189| getLValue(): [ImplicitThisFieldAccess,PointerFieldAccess] x -# 2189| Type = [CharPointerType] char * -# 2189| ValueCategory = lvalue -# 2189| getQualifier(): [ThisExpr] this -# 2189| Type = [PointerType] ClassWithDestructor * -# 2189| ValueCategory = prvalue(load) -# 2189| getRValue(): [NewExpr] new -# 2189| Type = [CharPointerType] char * -# 2189| ValueCategory = prvalue -# 2189| getStmt(1): [ReturnStmt] return ... -# 2190| [Destructor] void ClassWithDestructor::~ClassWithDestructor() -# 2190| : -# 2190| getEntryPoint(): [BlockStmt] { ... } -# 2190| getStmt(0): [ExprStmt] ExprStmt -# 2190| getExpr(): [DeleteExpr] delete -# 2190| Type = [VoidType] void -# 2190| ValueCategory = prvalue -# 2190| getExprWithReuse(): [ImplicitThisFieldAccess,PointerFieldAccess] x -# 2190| Type = [CharPointerType] char * -# 2190| ValueCategory = prvalue(load) -# 2190| getQualifier(): [ThisExpr] this -# 2190| Type = [PointerType] ClassWithDestructor * -# 2190| ValueCategory = prvalue(load) -# 2190| getStmt(1): [ReturnStmt] return ... -# 2190| : -# 2192| [MemberFunction] void ClassWithDestructor::set_x(char) +# 2188| : +# 2188| getInitializer(0): [ConstructorFieldInit] constructor init of field x +# 2188| Type = [CharPointerType] char * +# 2188| ValueCategory = prvalue +# 2188| getExpr(): [ReferenceFieldAccess] x +# 2188| Type = [CharPointerType] char * +# 2188| ValueCategory = prvalue(load) +# 2188| getQualifier(): [VariableAccess] (unnamed parameter 0) +# 2188| Type = [LValueReferenceType] const ClassWithDestructor & +# 2188| ValueCategory = prvalue(load) +# 2188| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2188| Type = [SpecifiedType] const ClassWithDestructor +# 2188| ValueCategory = lvalue +# 2188| getEntryPoint(): [BlockStmt] { ... } +# 2188| getStmt(0): [ReturnStmt] return ... +# 2191| [Constructor] void ClassWithDestructor::ClassWithDestructor() +# 2191| : +# 2191| : +# 2191| getEntryPoint(): [BlockStmt] { ... } +# 2191| getStmt(0): [ExprStmt] ExprStmt +# 2191| getExpr(): [AssignExpr] ... = ... +# 2191| Type = [CharPointerType] char * +# 2191| ValueCategory = lvalue +# 2191| getLValue(): [ImplicitThisFieldAccess,PointerFieldAccess] x +# 2191| Type = [CharPointerType] char * +# 2191| ValueCategory = lvalue +# 2191| getQualifier(): [ThisExpr] this +# 2191| Type = [PointerType] ClassWithDestructor * +# 2191| ValueCategory = prvalue(load) +# 2191| getRValue(): [NewExpr] new +# 2191| Type = [CharPointerType] char * +# 2191| ValueCategory = prvalue +# 2191| getStmt(1): [ReturnStmt] return ... +# 2192| [Destructor] void ClassWithDestructor::~ClassWithDestructor() # 2192| : -# 2192| getParameter(0): [Parameter] y -# 2192| Type = [PlainCharType] char # 2192| getEntryPoint(): [BlockStmt] { ... } # 2192| getStmt(0): [ExprStmt] ExprStmt -# 2192| getExpr(): [AssignExpr] ... = ... -# 2192| Type = [PlainCharType] char -# 2192| ValueCategory = lvalue -# 2192| getLValue(): [PointerDereferenceExpr] * ... -# 2192| Type = [PlainCharType] char -# 2192| ValueCategory = lvalue -# 2192| getOperand(): [ImplicitThisFieldAccess,PointerFieldAccess] x -# 2192| Type = [CharPointerType] char * -# 2192| ValueCategory = prvalue(load) -# 2192| getQualifier(): [ThisExpr] this -# 2192| Type = [PointerType] ClassWithDestructor * -# 2192| ValueCategory = prvalue(load) -# 2192| getRValue(): [VariableAccess] y -# 2192| Type = [PlainCharType] char +# 2192| getExpr(): [DeleteExpr] delete +# 2192| Type = [VoidType] void +# 2192| ValueCategory = prvalue +# 2192| getExprWithReuse(): [ImplicitThisFieldAccess,PointerFieldAccess] x +# 2192| Type = [CharPointerType] char * # 2192| ValueCategory = prvalue(load) +# 2192| getQualifier(): [ThisExpr] this +# 2192| Type = [PointerType] ClassWithDestructor * +# 2192| ValueCategory = prvalue(load) # 2192| getStmt(1): [ReturnStmt] return ... -# 2193| [MemberFunction] char ClassWithDestructor::get_x() -# 2193| : -# 2193| getEntryPoint(): [BlockStmt] { ... } -# 2193| getStmt(0): [ReturnStmt] return ... -# 2193| getExpr(): [PointerDereferenceExpr] * ... -# 2193| Type = [PlainCharType] char -# 2193| ValueCategory = prvalue(load) -# 2193| getOperand(): [ImplicitThisFieldAccess,PointerFieldAccess] x -# 2193| Type = [CharPointerType] char * -# 2193| ValueCategory = prvalue(load) -# 2193| getQualifier(): [ThisExpr] this -# 2193| Type = [PointerType] ClassWithDestructor * -# 2193| ValueCategory = prvalue(load) -# 2194| [ConstMemberFunction,ConversionOperator] bool ClassWithDestructor::operator bool() const +# 2192| : +# 2194| [MemberFunction] void ClassWithDestructor::set_x(char) # 2194| : -# 2197| [GlobalVariable] bool initialization_with_destructor_bool -# 2197| getInitializer(): [Initializer] initializer for initialization_with_destructor_bool -# 2197| getExpr(): [Literal] 1 -# 2197| Type = [BoolType] bool -# 2197| Value = [Literal] 1 -# 2197| ValueCategory = prvalue -# 2199| [TopLevelFunction] void initialization_with_destructor(bool, char) -# 2199| : -# 2199| getParameter(0): [Parameter] b +# 2194| getParameter(0): [Parameter] y +# 2194| Type = [PlainCharType] char +# 2194| getEntryPoint(): [BlockStmt] { ... } +# 2194| getStmt(0): [ExprStmt] ExprStmt +# 2194| getExpr(): [AssignExpr] ... = ... +# 2194| Type = [PlainCharType] char +# 2194| ValueCategory = lvalue +# 2194| getLValue(): [PointerDereferenceExpr] * ... +# 2194| Type = [PlainCharType] char +# 2194| ValueCategory = lvalue +# 2194| getOperand(): [ImplicitThisFieldAccess,PointerFieldAccess] x +# 2194| Type = [CharPointerType] char * +# 2194| ValueCategory = prvalue(load) +# 2194| getQualifier(): [ThisExpr] this +# 2194| Type = [PointerType] ClassWithDestructor * +# 2194| ValueCategory = prvalue(load) +# 2194| getRValue(): [VariableAccess] y +# 2194| Type = [PlainCharType] char +# 2194| ValueCategory = prvalue(load) +# 2194| getStmt(1): [ReturnStmt] return ... +# 2195| [MemberFunction] char ClassWithDestructor::get_x() +# 2195| : +# 2195| getEntryPoint(): [BlockStmt] { ... } +# 2195| getStmt(0): [ReturnStmt] return ... +# 2195| getExpr(): [PointerDereferenceExpr] * ... +# 2195| Type = [PlainCharType] char +# 2195| ValueCategory = prvalue(load) +# 2195| getOperand(): [ImplicitThisFieldAccess,PointerFieldAccess] x +# 2195| Type = [CharPointerType] char * +# 2195| ValueCategory = prvalue(load) +# 2195| getQualifier(): [ThisExpr] this +# 2195| Type = [PointerType] ClassWithDestructor * +# 2195| ValueCategory = prvalue(load) +# 2196| [ConstMemberFunction,ConversionOperator] bool ClassWithDestructor::operator bool() const +# 2196| : +# 2199| [GlobalVariable] bool initialization_with_destructor_bool +# 2199| getInitializer(): [Initializer] initializer for initialization_with_destructor_bool +# 2199| getExpr(): [Literal] 1 # 2199| Type = [BoolType] bool -# 2199| getParameter(1): [Parameter] c -# 2199| Type = [PlainCharType] char -# 2199| getEntryPoint(): [BlockStmt] { ... } -# 2200| getStmt(0): [IfStmt] if (...) ... -# 2200| getInitialization(): [DeclStmt] declaration -# 2200| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 2200| Type = [Class] ClassWithDestructor -# 2200| getVariable().getInitializer(): [Initializer] initializer for x -# 2200| getExpr(): [ConstructorCall] call to ClassWithDestructor -# 2200| Type = [VoidType] void -# 2200| ValueCategory = prvalue -# 2200| getCondition(): [VariableAccess] b -# 2200| Type = [BoolType] bool -# 2200| ValueCategory = prvalue(load) -# 2201| getThen(): [ExprStmt] ExprStmt -# 2201| getExpr(): [FunctionCall] call to set_x -# 2201| Type = [VoidType] void -# 2201| ValueCategory = prvalue -# 2201| getQualifier(): [VariableAccess] x -# 2201| Type = [Class] ClassWithDestructor -# 2201| ValueCategory = lvalue -# 2201| getArgument(0): [CharLiteral] 97 -# 2201| Type = [PlainCharType] char -# 2201| Value = [CharLiteral] 97 -# 2201| ValueCategory = prvalue -# 2201| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2201| Type = [VoidType] void -# 2201| ValueCategory = prvalue -# 2201| getQualifier(): [VariableAccess] x -# 2201| Type = [Class] ClassWithDestructor -# 2201| ValueCategory = lvalue -# 2203| getStmt(1): [ConstexprIfStmt] if constexpr (...) ... -# 2203| getInitialization(): [DeclStmt] declaration -# 2203| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2199| Value = [Literal] 1 +# 2199| ValueCategory = prvalue +# 2201| [TopLevelFunction] void initialization_with_destructor(bool, char) +# 2201| : +# 2201| getParameter(0): [Parameter] b +# 2201| Type = [BoolType] bool +# 2201| getParameter(1): [Parameter] c +# 2201| Type = [PlainCharType] char +# 2201| getEntryPoint(): [BlockStmt] { ... } +# 2202| getStmt(0): [IfStmt] if (...) ... +# 2202| getInitialization(): [DeclStmt] declaration +# 2202| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2202| Type = [Class] ClassWithDestructor +# 2202| getVariable().getInitializer(): [Initializer] initializer for x +# 2202| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2202| Type = [VoidType] void +# 2202| ValueCategory = prvalue +# 2202| getCondition(): [VariableAccess] b +# 2202| Type = [BoolType] bool +# 2202| ValueCategory = prvalue(load) +# 2203| getThen(): [ExprStmt] ExprStmt +# 2203| getExpr(): [FunctionCall] call to set_x +# 2203| Type = [VoidType] void +# 2203| ValueCategory = prvalue +# 2203| getQualifier(): [VariableAccess] x +# 2203| Type = [Class] ClassWithDestructor +# 2203| ValueCategory = lvalue +# 2203| getArgument(0): [CharLiteral] 97 +# 2203| Type = [PlainCharType] char +# 2203| Value = [CharLiteral] 97 +# 2203| ValueCategory = prvalue +# 2203| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2203| Type = [VoidType] void +# 2203| ValueCategory = prvalue +# 2203| getQualifier(): [VariableAccess] x # 2203| Type = [Class] ClassWithDestructor -# 2203| getVariable().getInitializer(): [Initializer] initializer for x -# 2203| getExpr(): [ConstructorCall] call to ClassWithDestructor -# 2203| Type = [VoidType] void -# 2203| ValueCategory = prvalue -# 2203| getCondition(): [VariableAccess] initialization_with_destructor_bool -# 2203| Type = [BoolType] bool -# 2203| Value = [VariableAccess] 1 -# 2203| ValueCategory = prvalue(load) -# 2204| getThen(): [ExprStmt] ExprStmt -# 2204| getExpr(): [FunctionCall] call to set_x -# 2204| Type = [VoidType] void -# 2204| ValueCategory = prvalue -# 2204| getQualifier(): [VariableAccess] x -# 2204| Type = [Class] ClassWithDestructor -# 2204| ValueCategory = lvalue -# 2204| getArgument(0): [CharLiteral] 97 -# 2204| Type = [PlainCharType] char -# 2204| Value = [CharLiteral] 97 -# 2204| ValueCategory = prvalue -# 2204| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2204| Type = [VoidType] void -# 2204| ValueCategory = prvalue -# 2204| getQualifier(): [VariableAccess] x -# 2204| Type = [Class] ClassWithDestructor -# 2204| ValueCategory = lvalue -# 2206| getStmt(2): [SwitchStmt] switch (...) ... -# 2206| getInitialization(): [DeclStmt] declaration -# 2206| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 2206| Type = [Class] ClassWithDestructor -# 2206| getVariable().getInitializer(): [Initializer] initializer for x -# 2206| getExpr(): [ConstructorCall] call to ClassWithDestructor -# 2206| Type = [VoidType] void -# 2206| ValueCategory = prvalue -# 2206| getExpr(): [VariableAccess] c -# 2206| Type = [PlainCharType] char -# 2206| ValueCategory = prvalue(load) -# 2206| getStmt(): [BlockStmt] { ... } -# 2207| getStmt(0): [SwitchCase] case ...: -# 2207| getExpr(): [CharLiteral] 97 -# 2207| Type = [PlainCharType] char -# 2207| Value = [CharLiteral] 97 -# 2207| ValueCategory = prvalue -# 2207| getExpr().getFullyConverted(): [CStyleCast] (int)... -# 2207| Conversion = [IntegralConversion] integral conversion -# 2207| Type = [IntType] int -# 2207| Value = [CStyleCast] 97 -# 2207| ValueCategory = prvalue -# 2208| getStmt(1): [ExprStmt] ExprStmt -# 2208| getExpr(): [FunctionCall] call to set_x -# 2208| Type = [VoidType] void -# 2208| ValueCategory = prvalue -# 2208| getQualifier(): [VariableAccess] x -# 2208| Type = [Class] ClassWithDestructor -# 2208| ValueCategory = lvalue -# 2208| getArgument(0): [CharLiteral] 97 -# 2208| Type = [PlainCharType] char -# 2208| Value = [CharLiteral] 97 -# 2208| ValueCategory = prvalue -# 2209| getStmt(2): [BreakStmt] break; -# 2213| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2213| Type = [VoidType] void -# 2213| ValueCategory = prvalue -# 2213| getQualifier(): [VariableAccess] x -# 2213| Type = [Class] ClassWithDestructor -# 2213| ValueCategory = lvalue -# 2210| getStmt(3): [SwitchCase] default: -# 2211| getStmt(4): [ExprStmt] ExprStmt -# 2211| getExpr(): [FunctionCall] call to set_x -# 2211| Type = [VoidType] void -# 2211| ValueCategory = prvalue -# 2211| getQualifier(): [VariableAccess] x -# 2211| Type = [Class] ClassWithDestructor -# 2211| ValueCategory = lvalue -# 2211| getArgument(0): [CharLiteral] 98 -# 2211| Type = [PlainCharType] char -# 2211| Value = [CharLiteral] 98 -# 2211| ValueCategory = prvalue -# 2212| getStmt(5): [BreakStmt] break; -# 2213| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2213| Type = [VoidType] void -# 2213| ValueCategory = prvalue -# 2213| getQualifier(): [VariableAccess] x -# 2213| Type = [Class] ClassWithDestructor -# 2213| ValueCategory = lvalue -# 2213| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2213| Type = [VoidType] void -# 2213| ValueCategory = prvalue -# 2213| getQualifier(): [VariableAccess] x -# 2213| Type = [Class] ClassWithDestructor -# 2213| ValueCategory = lvalue -# 2206| getExpr().getFullyConverted(): [CStyleCast] (int)... -# 2206| Conversion = [IntegralConversion] integral conversion -# 2206| Type = [IntType] int +# 2203| ValueCategory = lvalue +# 2205| getStmt(1): [ConstexprIfStmt] if constexpr (...) ... +# 2205| getInitialization(): [DeclStmt] declaration +# 2205| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2205| Type = [Class] ClassWithDestructor +# 2205| getVariable().getInitializer(): [Initializer] initializer for x +# 2205| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2205| Type = [VoidType] void +# 2205| ValueCategory = prvalue +# 2205| getCondition(): [VariableAccess] initialization_with_destructor_bool +# 2205| Type = [BoolType] bool +# 2205| Value = [VariableAccess] 1 +# 2205| ValueCategory = prvalue(load) +# 2206| getThen(): [ExprStmt] ExprStmt +# 2206| getExpr(): [FunctionCall] call to set_x +# 2206| Type = [VoidType] void +# 2206| ValueCategory = prvalue +# 2206| getQualifier(): [VariableAccess] x +# 2206| Type = [Class] ClassWithDestructor +# 2206| ValueCategory = lvalue +# 2206| getArgument(0): [CharLiteral] 97 +# 2206| Type = [PlainCharType] char +# 2206| Value = [CharLiteral] 97 +# 2206| ValueCategory = prvalue +# 2206| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2206| Type = [VoidType] void # 2206| ValueCategory = prvalue -# 2213| getStmt(3): [LabelStmt] label ...: -# 2215| getStmt(4): [DeclStmt] declaration -# 2215| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 2215| Type = [Class] ClassWithDestructor -# 2215| getVariable().getInitializer(): [Initializer] initializer for x -# 2215| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2206| getQualifier(): [VariableAccess] x +# 2206| Type = [Class] ClassWithDestructor +# 2206| ValueCategory = lvalue +# 2208| getStmt(2): [SwitchStmt] switch (...) ... +# 2208| getInitialization(): [DeclStmt] declaration +# 2208| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2208| Type = [Class] ClassWithDestructor +# 2208| getVariable().getInitializer(): [Initializer] initializer for x +# 2208| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2208| Type = [VoidType] void +# 2208| ValueCategory = prvalue +# 2208| getExpr(): [VariableAccess] c +# 2208| Type = [PlainCharType] char +# 2208| ValueCategory = prvalue(load) +# 2208| getStmt(): [BlockStmt] { ... } +# 2209| getStmt(0): [SwitchCase] case ...: +# 2209| getExpr(): [CharLiteral] 97 +# 2209| Type = [PlainCharType] char +# 2209| Value = [CharLiteral] 97 +# 2209| ValueCategory = prvalue +# 2209| getExpr().getFullyConverted(): [CStyleCast] (int)... +# 2209| Conversion = [IntegralConversion] integral conversion +# 2209| Type = [IntType] int +# 2209| Value = [CStyleCast] 97 +# 2209| ValueCategory = prvalue +# 2210| getStmt(1): [ExprStmt] ExprStmt +# 2210| getExpr(): [FunctionCall] call to set_x +# 2210| Type = [VoidType] void +# 2210| ValueCategory = prvalue +# 2210| getQualifier(): [VariableAccess] x +# 2210| Type = [Class] ClassWithDestructor +# 2210| ValueCategory = lvalue +# 2210| getArgument(0): [CharLiteral] 97 +# 2210| Type = [PlainCharType] char +# 2210| Value = [CharLiteral] 97 +# 2210| ValueCategory = prvalue +# 2211| getStmt(2): [BreakStmt] break; +# 2215| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor # 2215| Type = [VoidType] void # 2215| ValueCategory = prvalue -# 2216| getStmt(5): [RangeBasedForStmt] for(...:...) ... -# 2216| getInitialization(): [DeclStmt] declaration -# 2216| getDeclarationEntry(0): [VariableDeclarationEntry] definition of ys -# 2216| Type = [ClassTemplateInstantiation,Struct] vector -# 2216| getVariable().getInitializer(): [Initializer] initializer for ys -# 2216| getExpr(): [ConstructorCall] call to vector -# 2216| Type = [VoidType] void -# 2216| ValueCategory = prvalue -# 2216| getArgument(0): [VariableAccess] x -# 2216| Type = [Class] ClassWithDestructor -# 2216| ValueCategory = prvalue(load) -# 2216| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2216| Type = [VoidType] void -# 2216| ValueCategory = prvalue -# 2216| getQualifier(): [ReuseExpr] reuse of temporary object -# 2216| Type = [Class] ClassWithDestructor -# 2216| ValueCategory = xvalue -# 2216| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2216| Type = [Class] ClassWithDestructor -# 2216| ValueCategory = lvalue -# 2216| getChild(1): [DeclStmt] declaration -# 2216| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__range) -# 2216| Type = [LValueReferenceType] vector & -#-----| getVariable().getInitializer(): [Initializer] initializer for (__range) -# 2216| getExpr(): [VariableAccess] ys -# 2216| Type = [ClassTemplateInstantiation,Struct] vector -# 2216| ValueCategory = lvalue -# 2216| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 2216| Type = [LValueReferenceType] vector & -# 2216| ValueCategory = prvalue -# 2216| getBeginEndDeclaration(): [DeclStmt] declaration -# 2216| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__begin) -# 2216| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -#-----| getVariable().getInitializer(): [Initializer] initializer for (__begin) -# 2216| getExpr(): [FunctionCall] call to begin -# 2216| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2216| ValueCategory = prvalue -# 2216| getQualifier(): [VariableAccess] (__range) -# 2216| Type = [LValueReferenceType] vector & -# 2216| ValueCategory = prvalue(load) -#-----| getQualifier().getFullyConverted(): [CStyleCast] (const vector)... -#-----| Conversion = [GlvalueConversion] glvalue conversion -#-----| Type = [SpecifiedType] const vector -#-----| ValueCategory = lvalue -#-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -#-----| Type = [ClassTemplateInstantiation,Struct] vector -#-----| ValueCategory = lvalue -# 2216| getDeclarationEntry(1): [VariableDeclarationEntry] declaration of (__end) -# 2216| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -#-----| getVariable().getInitializer(): [Initializer] initializer for (__end) -# 2216| getExpr(): [FunctionCall] call to end -# 2216| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2216| ValueCategory = prvalue -# 2216| getQualifier(): [VariableAccess] (__range) -# 2216| Type = [LValueReferenceType] vector & -# 2216| ValueCategory = prvalue(load) -#-----| getQualifier().getFullyConverted(): [CStyleCast] (const vector)... -#-----| Conversion = [GlvalueConversion] glvalue conversion -#-----| Type = [SpecifiedType] const vector -#-----| ValueCategory = lvalue -#-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -#-----| Type = [ClassTemplateInstantiation,Struct] vector -#-----| ValueCategory = lvalue -# 2216| getCondition(): [FunctionCall] call to operator!= -# 2216| Type = [BoolType] bool -# 2216| ValueCategory = prvalue -# 2216| getQualifier(): [VariableAccess] (__begin) -# 2216| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2216| ValueCategory = lvalue -# 2216| getArgument(0): [ConstructorCall] call to iterator -# 2216| Type = [VoidType] void -# 2216| ValueCategory = prvalue -# 2216| getArgument(0): [VariableAccess] (__end) -# 2216| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2216| ValueCategory = lvalue -#-----| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -#-----| Type = [LValueReferenceType] const iterator & -#-----| ValueCategory = prvalue -#-----| getExpr(): [CStyleCast] (const iterator)... -#-----| Conversion = [GlvalueConversion] glvalue conversion -#-----| Type = [SpecifiedType] const iterator -#-----| ValueCategory = lvalue -#-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator)... -#-----| Conversion = [GlvalueConversion] glvalue conversion -#-----| Type = [SpecifiedType] const iterator -#-----| ValueCategory = lvalue -#-----| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object -#-----| Type = [ClassTemplateInstantiation,Struct] iterator -#-----| ValueCategory = lvalue -# 2216| getUpdate(): [FunctionCall] call to operator++ -# 2216| Type = [LValueReferenceType] iterator & -# 2216| ValueCategory = prvalue -# 2216| getQualifier(): [VariableAccess] (__begin) -# 2216| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2216| ValueCategory = lvalue -# 2216| getChild(5): [DeclStmt] declaration -# 2216| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 2216| Type = [Class] ClassWithDestructor -# 2216| getVariable().getInitializer(): [Initializer] initializer for y -# 2216| getExpr(): [OverloadedPointerDereferenceExpr] call to operator* -# 2216| Type = [LValueReferenceType] ClassWithDestructor & -# 2216| ValueCategory = prvalue -# 2216| getQualifier(): [VariableAccess] (__begin) -# 2216| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2216| ValueCategory = lvalue -#-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator)... -#-----| Conversion = [GlvalueConversion] glvalue conversion -#-----| Type = [SpecifiedType] const iterator -#-----| ValueCategory = lvalue -# 2216| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2216| Type = [Class] ClassWithDestructor -# 2216| ValueCategory = prvalue(load) -# 2217| getStmt(): [ExprStmt] ExprStmt -# 2217| getExpr(): [FunctionCall] call to set_x -# 2217| Type = [VoidType] void -# 2217| ValueCategory = prvalue -# 2217| getQualifier(): [VariableAccess] y -# 2217| Type = [Class] ClassWithDestructor -# 2217| ValueCategory = lvalue -# 2217| getArgument(0): [CharLiteral] 97 -# 2217| Type = [PlainCharType] char -# 2217| Value = [CharLiteral] 97 +# 2215| getQualifier(): [VariableAccess] x +# 2215| Type = [Class] ClassWithDestructor +# 2215| ValueCategory = lvalue +# 2212| getStmt(3): [SwitchCase] default: +# 2213| getStmt(4): [ExprStmt] ExprStmt +# 2213| getExpr(): [FunctionCall] call to set_x +# 2213| Type = [VoidType] void +# 2213| ValueCategory = prvalue +# 2213| getQualifier(): [VariableAccess] x +# 2213| Type = [Class] ClassWithDestructor +# 2213| ValueCategory = lvalue +# 2213| getArgument(0): [CharLiteral] 98 +# 2213| Type = [PlainCharType] char +# 2213| Value = [CharLiteral] 98 +# 2213| ValueCategory = prvalue +# 2214| getStmt(5): [BreakStmt] break; +# 2215| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2215| Type = [VoidType] void +# 2215| ValueCategory = prvalue +# 2215| getQualifier(): [VariableAccess] x +# 2215| Type = [Class] ClassWithDestructor +# 2215| ValueCategory = lvalue +# 2215| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2215| Type = [VoidType] void +# 2215| ValueCategory = prvalue +# 2215| getQualifier(): [VariableAccess] x +# 2215| Type = [Class] ClassWithDestructor +# 2215| ValueCategory = lvalue +# 2208| getExpr().getFullyConverted(): [CStyleCast] (int)... +# 2208| Conversion = [IntegralConversion] integral conversion +# 2208| Type = [IntType] int +# 2208| ValueCategory = prvalue +# 2215| getStmt(3): [LabelStmt] label ...: +# 2217| getStmt(4): [DeclStmt] declaration +# 2217| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2217| Type = [Class] ClassWithDestructor +# 2217| getVariable().getInitializer(): [Initializer] initializer for x +# 2217| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2217| Type = [VoidType] void # 2217| ValueCategory = prvalue -# 2216| getImplicitDestructorCall(0): [DestructorCall] call to ~vector -# 2216| Type = [VoidType] void -# 2216| ValueCategory = prvalue -# 2216| getQualifier(): [VariableAccess] ys -# 2216| Type = [ClassTemplateInstantiation,Struct] vector -# 2216| ValueCategory = lvalue -# 2216| getUpdate().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2216| Type = [ClassTemplateInstantiation,Struct] iterator -# 2216| ValueCategory = lvalue -# 2216| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2216| Type = [VoidType] void -# 2216| ValueCategory = prvalue -# 2216| getQualifier(): [VariableAccess] y -# 2216| Type = [Class] ClassWithDestructor -# 2216| ValueCategory = lvalue -# 2219| getStmt(6): [RangeBasedForStmt] for(...:...) ... -# 2219| getInitialization(): [DeclStmt] declaration -# 2219| getDeclarationEntry(0): [VariableDeclarationEntry] definition of ys -# 2219| Type = [ClassTemplateInstantiation,Struct] vector -# 2219| getVariable().getInitializer(): [Initializer] initializer for ys -# 2219| getExpr(): [ConstructorCall] call to vector -# 2219| Type = [VoidType] void -# 2219| ValueCategory = prvalue -# 2219| getArgument(0): [VariableAccess] x -# 2219| Type = [Class] ClassWithDestructor -# 2219| ValueCategory = prvalue(load) -# 2219| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2219| Type = [VoidType] void -# 2219| ValueCategory = prvalue -# 2219| getQualifier(): [ReuseExpr] reuse of temporary object -# 2219| Type = [Class] ClassWithDestructor -# 2219| ValueCategory = xvalue -# 2219| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2219| Type = [Class] ClassWithDestructor -# 2219| ValueCategory = lvalue -# 2219| getChild(1): [DeclStmt] declaration -# 2219| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__range) -# 2219| Type = [LValueReferenceType] vector & +# 2218| getStmt(5): [RangeBasedForStmt] for(...:...) ... +# 2218| getInitialization(): [DeclStmt] declaration +# 2218| getDeclarationEntry(0): [VariableDeclarationEntry] definition of ys +# 2218| Type = [ClassTemplateInstantiation,Struct] vector +# 2218| getVariable().getInitializer(): [Initializer] initializer for ys +# 2218| getExpr(): [ConstructorCall] call to vector +# 2218| Type = [VoidType] void +# 2218| ValueCategory = prvalue +# 2218| getArgument(0): [VariableAccess] x +# 2218| Type = [Class] ClassWithDestructor +# 2218| ValueCategory = prvalue(load) +# 2218| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2218| Type = [VoidType] void +# 2218| ValueCategory = prvalue +# 2218| getQualifier(): [ReuseExpr] reuse of temporary object +# 2218| Type = [Class] ClassWithDestructor +# 2218| ValueCategory = xvalue +# 2218| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2218| Type = [Class] ClassWithDestructor +# 2218| ValueCategory = lvalue +# 2218| getChild(1): [DeclStmt] declaration +# 2218| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__range) +# 2218| Type = [LValueReferenceType] vector & #-----| getVariable().getInitializer(): [Initializer] initializer for (__range) -# 2219| getExpr(): [VariableAccess] ys -# 2219| Type = [ClassTemplateInstantiation,Struct] vector -# 2219| ValueCategory = lvalue -# 2219| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 2219| Type = [LValueReferenceType] vector & -# 2219| ValueCategory = prvalue -# 2219| getBeginEndDeclaration(): [DeclStmt] declaration -# 2219| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__begin) -# 2219| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2218| getExpr(): [VariableAccess] ys +# 2218| Type = [ClassTemplateInstantiation,Struct] vector +# 2218| ValueCategory = lvalue +# 2218| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 2218| Type = [LValueReferenceType] vector & +# 2218| ValueCategory = prvalue +# 2218| getBeginEndDeclaration(): [DeclStmt] declaration +# 2218| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__begin) +# 2218| Type = [NestedTypedefType,UsingAliasTypedefType] iterator #-----| getVariable().getInitializer(): [Initializer] initializer for (__begin) -# 2219| getExpr(): [FunctionCall] call to begin -# 2219| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2219| ValueCategory = prvalue -# 2219| getQualifier(): [VariableAccess] (__range) -# 2219| Type = [LValueReferenceType] vector & -# 2219| ValueCategory = prvalue(load) +# 2218| getExpr(): [FunctionCall] call to begin +# 2218| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2218| ValueCategory = prvalue +# 2218| getQualifier(): [VariableAccess] (__range) +# 2218| Type = [LValueReferenceType] vector & +# 2218| ValueCategory = prvalue(load) #-----| getQualifier().getFullyConverted(): [CStyleCast] (const vector)... #-----| Conversion = [GlvalueConversion] glvalue conversion #-----| Type = [SpecifiedType] const vector @@ -20201,15 +20063,15 @@ ir.cpp: #-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [ClassTemplateInstantiation,Struct] vector #-----| ValueCategory = lvalue -# 2219| getDeclarationEntry(1): [VariableDeclarationEntry] declaration of (__end) -# 2219| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2218| getDeclarationEntry(1): [VariableDeclarationEntry] declaration of (__end) +# 2218| Type = [NestedTypedefType,UsingAliasTypedefType] iterator #-----| getVariable().getInitializer(): [Initializer] initializer for (__end) -# 2219| getExpr(): [FunctionCall] call to end -# 2219| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2219| ValueCategory = prvalue -# 2219| getQualifier(): [VariableAccess] (__range) -# 2219| Type = [LValueReferenceType] vector & -# 2219| ValueCategory = prvalue(load) +# 2218| getExpr(): [FunctionCall] call to end +# 2218| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2218| ValueCategory = prvalue +# 2218| getQualifier(): [VariableAccess] (__range) +# 2218| Type = [LValueReferenceType] vector & +# 2218| ValueCategory = prvalue(load) #-----| getQualifier().getFullyConverted(): [CStyleCast] (const vector)... #-----| Conversion = [GlvalueConversion] glvalue conversion #-----| Type = [SpecifiedType] const vector @@ -20217,18 +20079,18 @@ ir.cpp: #-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [ClassTemplateInstantiation,Struct] vector #-----| ValueCategory = lvalue -# 2219| getCondition(): [FunctionCall] call to operator!= -# 2219| Type = [BoolType] bool -# 2219| ValueCategory = prvalue -# 2219| getQualifier(): [VariableAccess] (__begin) -# 2219| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2219| ValueCategory = lvalue -# 2219| getArgument(0): [ConstructorCall] call to iterator -# 2219| Type = [VoidType] void -# 2219| ValueCategory = prvalue -# 2219| getArgument(0): [VariableAccess] (__end) -# 2219| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2219| ValueCategory = lvalue +# 2218| getCondition(): [FunctionCall] call to operator!= +# 2218| Type = [BoolType] bool +# 2218| ValueCategory = prvalue +# 2218| getQualifier(): [VariableAccess] (__begin) +# 2218| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2218| ValueCategory = lvalue +# 2218| getArgument(0): [ConstructorCall] call to iterator +# 2218| Type = [VoidType] void +# 2218| ValueCategory = prvalue +# 2218| getArgument(0): [VariableAccess] (__end) +# 2218| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2218| ValueCategory = lvalue #-----| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) #-----| Type = [LValueReferenceType] const iterator & #-----| ValueCategory = prvalue @@ -20243,146 +20105,268 @@ ir.cpp: #-----| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object #-----| Type = [ClassTemplateInstantiation,Struct] iterator #-----| ValueCategory = lvalue -# 2219| getUpdate(): [FunctionCall] call to operator++ -# 2219| Type = [LValueReferenceType] iterator & -# 2219| ValueCategory = prvalue -# 2219| getQualifier(): [VariableAccess] (__begin) -# 2219| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2219| ValueCategory = lvalue -# 2219| getChild(5): [DeclStmt] declaration -# 2219| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 2219| Type = [Class] ClassWithDestructor -# 2219| getVariable().getInitializer(): [Initializer] initializer for y -# 2219| getExpr(): [OverloadedPointerDereferenceExpr] call to operator* -# 2219| Type = [LValueReferenceType] ClassWithDestructor & -# 2219| ValueCategory = prvalue -# 2219| getQualifier(): [VariableAccess] (__begin) -# 2219| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2219| ValueCategory = lvalue +# 2218| getUpdate(): [FunctionCall] call to operator++ +# 2218| Type = [LValueReferenceType] iterator & +# 2218| ValueCategory = prvalue +# 2218| getQualifier(): [VariableAccess] (__begin) +# 2218| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2218| ValueCategory = lvalue +# 2218| getChild(5): [DeclStmt] declaration +# 2218| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 2218| Type = [Class] ClassWithDestructor +# 2218| getVariable().getInitializer(): [Initializer] initializer for y +# 2218| getExpr(): [OverloadedPointerDereferenceExpr] call to operator* +# 2218| Type = [LValueReferenceType] ClassWithDestructor & +# 2218| ValueCategory = prvalue +# 2218| getQualifier(): [VariableAccess] (__begin) +# 2218| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2218| ValueCategory = lvalue #-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator)... #-----| Conversion = [GlvalueConversion] glvalue conversion #-----| Type = [SpecifiedType] const iterator #-----| ValueCategory = lvalue -# 2219| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2219| Type = [Class] ClassWithDestructor -# 2219| ValueCategory = prvalue(load) -# 2219| getStmt(): [BlockStmt] { ... } -# 2220| getStmt(0): [ExprStmt] ExprStmt -# 2220| getExpr(): [FunctionCall] call to set_x -# 2220| Type = [VoidType] void -# 2220| ValueCategory = prvalue -# 2220| getQualifier(): [VariableAccess] y -# 2220| Type = [Class] ClassWithDestructor -# 2220| ValueCategory = lvalue -# 2220| getArgument(0): [CharLiteral] 97 -# 2220| Type = [PlainCharType] char -# 2220| Value = [CharLiteral] 97 -# 2220| ValueCategory = prvalue -# 2221| getStmt(1): [IfStmt] if (...) ... -# 2221| getCondition(): [EQExpr] ... == ... -# 2221| Type = [BoolType] bool -# 2221| ValueCategory = prvalue -# 2221| getLeftOperand(): [FunctionCall] call to get_x -# 2221| Type = [PlainCharType] char -# 2221| ValueCategory = prvalue -# 2221| getQualifier(): [VariableAccess] y -# 2221| Type = [Class] ClassWithDestructor -# 2221| ValueCategory = lvalue -# 2221| getRightOperand(): [CharLiteral] 98 -# 2221| Type = [PlainCharType] char -# 2221| Value = [CharLiteral] 98 -# 2221| ValueCategory = prvalue -# 2221| getLeftOperand().getFullyConverted(): [CStyleCast] (int)... -# 2221| Conversion = [IntegralConversion] integral conversion -# 2221| Type = [IntType] int -# 2221| ValueCategory = prvalue -# 2221| getRightOperand().getFullyConverted(): [CStyleCast] (int)... -# 2221| Conversion = [IntegralConversion] integral conversion -# 2221| Type = [IntType] int -# 2221| Value = [CStyleCast] 98 -# 2221| ValueCategory = prvalue -# 2222| getThen(): [ReturnStmt] return ... -# 2219| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2219| Type = [VoidType] void -# 2219| ValueCategory = prvalue -# 2219| getQualifier(): [VariableAccess] y -# 2219| Type = [Class] ClassWithDestructor -# 2219| ValueCategory = lvalue -# 2219| getImplicitDestructorCall(1): [DestructorCall] call to ~vector -# 2219| Type = [VoidType] void -# 2219| ValueCategory = prvalue -# 2219| getQualifier(): [VariableAccess] ys -# 2219| Type = [ClassTemplateInstantiation,Struct] vector -# 2219| ValueCategory = lvalue -# 2234| getImplicitDestructorCall(2): [DestructorCall] call to ~ClassWithDestructor -# 2234| Type = [VoidType] void -# 2234| ValueCategory = prvalue -# 2234| getQualifier(): [VariableAccess] x -# 2234| Type = [Class] ClassWithDestructor -# 2234| ValueCategory = lvalue -# 2219| getImplicitDestructorCall(0): [DestructorCall] call to ~vector -# 2219| Type = [VoidType] void -# 2219| ValueCategory = prvalue -# 2219| getQualifier(): [VariableAccess] ys -# 2219| Type = [ClassTemplateInstantiation,Struct] vector -# 2219| ValueCategory = lvalue -# 2219| getUpdate().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2219| Type = [ClassTemplateInstantiation,Struct] iterator -# 2219| ValueCategory = lvalue -# 2219| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2218| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2218| Type = [Class] ClassWithDestructor +# 2218| ValueCategory = prvalue(load) +# 2219| getStmt(): [ExprStmt] ExprStmt +# 2219| getExpr(): [FunctionCall] call to set_x # 2219| Type = [VoidType] void # 2219| ValueCategory = prvalue # 2219| getQualifier(): [VariableAccess] y # 2219| Type = [Class] ClassWithDestructor # 2219| ValueCategory = lvalue -# 2225| getStmt(7): [RangeBasedForStmt] for(...:...) ... -# 2225| getInitialization(): [DeclStmt] declaration -# 2225| getDeclarationEntry(0): [VariableDeclarationEntry] definition of ys -# 2225| Type = [ClassTemplateInstantiation,Struct] vector -# 2225| getVariable().getInitializer(): [Initializer] initializer for ys -# 2225| getExpr(): [ConstructorCall] call to vector -# 2225| Type = [VoidType] void -# 2225| ValueCategory = prvalue -# 2225| getArgument(0): [Literal] 1 -# 2225| Type = [IntType] int -# 2225| Value = [Literal] 1 -# 2225| ValueCategory = prvalue -# 2225| getChild(1): [DeclStmt] declaration -# 2225| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__range) -# 2225| Type = [LValueReferenceType] vector & +# 2219| getArgument(0): [CharLiteral] 97 +# 2219| Type = [PlainCharType] char +# 2219| Value = [CharLiteral] 97 +# 2219| ValueCategory = prvalue +# 2218| getImplicitDestructorCall(0): [DestructorCall] call to ~vector +# 2218| Type = [VoidType] void +# 2218| ValueCategory = prvalue +# 2218| getQualifier(): [VariableAccess] ys +# 2218| Type = [ClassTemplateInstantiation,Struct] vector +# 2218| ValueCategory = lvalue +# 2218| getUpdate().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2218| Type = [ClassTemplateInstantiation,Struct] iterator +# 2218| ValueCategory = lvalue +# 2218| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2218| Type = [VoidType] void +# 2218| ValueCategory = prvalue +# 2218| getQualifier(): [VariableAccess] y +# 2218| Type = [Class] ClassWithDestructor +# 2218| ValueCategory = lvalue +# 2221| getStmt(6): [RangeBasedForStmt] for(...:...) ... +# 2221| getInitialization(): [DeclStmt] declaration +# 2221| getDeclarationEntry(0): [VariableDeclarationEntry] definition of ys +# 2221| Type = [ClassTemplateInstantiation,Struct] vector +# 2221| getVariable().getInitializer(): [Initializer] initializer for ys +# 2221| getExpr(): [ConstructorCall] call to vector +# 2221| Type = [VoidType] void +# 2221| ValueCategory = prvalue +# 2221| getArgument(0): [VariableAccess] x +# 2221| Type = [Class] ClassWithDestructor +# 2221| ValueCategory = prvalue(load) +# 2221| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2221| Type = [VoidType] void +# 2221| ValueCategory = prvalue +# 2221| getQualifier(): [ReuseExpr] reuse of temporary object +# 2221| Type = [Class] ClassWithDestructor +# 2221| ValueCategory = xvalue +# 2221| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2221| Type = [Class] ClassWithDestructor +# 2221| ValueCategory = lvalue +# 2221| getChild(1): [DeclStmt] declaration +# 2221| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__range) +# 2221| Type = [LValueReferenceType] vector & #-----| getVariable().getInitializer(): [Initializer] initializer for (__range) -# 2225| getExpr(): [VariableAccess] ys -# 2225| Type = [ClassTemplateInstantiation,Struct] vector -# 2225| ValueCategory = lvalue -# 2225| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 2225| Type = [LValueReferenceType] vector & -# 2225| ValueCategory = prvalue -# 2225| getBeginEndDeclaration(): [DeclStmt] declaration -# 2225| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__begin) -# 2225| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2221| getExpr(): [VariableAccess] ys +# 2221| Type = [ClassTemplateInstantiation,Struct] vector +# 2221| ValueCategory = lvalue +# 2221| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 2221| Type = [LValueReferenceType] vector & +# 2221| ValueCategory = prvalue +# 2221| getBeginEndDeclaration(): [DeclStmt] declaration +# 2221| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__begin) +# 2221| Type = [NestedTypedefType,UsingAliasTypedefType] iterator #-----| getVariable().getInitializer(): [Initializer] initializer for (__begin) -# 2225| getExpr(): [FunctionCall] call to begin -# 2225| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2225| ValueCategory = prvalue -# 2225| getQualifier(): [VariableAccess] (__range) -# 2225| Type = [LValueReferenceType] vector & -# 2225| ValueCategory = prvalue(load) -#-----| getQualifier().getFullyConverted(): [CStyleCast] (const vector)... +# 2221| getExpr(): [FunctionCall] call to begin +# 2221| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2221| ValueCategory = prvalue +# 2221| getQualifier(): [VariableAccess] (__range) +# 2221| Type = [LValueReferenceType] vector & +# 2221| ValueCategory = prvalue(load) +#-----| getQualifier().getFullyConverted(): [CStyleCast] (const vector)... #-----| Conversion = [GlvalueConversion] glvalue conversion -#-----| Type = [SpecifiedType] const vector +#-----| Type = [SpecifiedType] const vector #-----| ValueCategory = lvalue #-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -#-----| Type = [ClassTemplateInstantiation,Struct] vector +#-----| Type = [ClassTemplateInstantiation,Struct] vector #-----| ValueCategory = lvalue -# 2225| getDeclarationEntry(1): [VariableDeclarationEntry] declaration of (__end) -# 2225| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2221| getDeclarationEntry(1): [VariableDeclarationEntry] declaration of (__end) +# 2221| Type = [NestedTypedefType,UsingAliasTypedefType] iterator #-----| getVariable().getInitializer(): [Initializer] initializer for (__end) -# 2225| getExpr(): [FunctionCall] call to end -# 2225| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2225| ValueCategory = prvalue -# 2225| getQualifier(): [VariableAccess] (__range) -# 2225| Type = [LValueReferenceType] vector & -# 2225| ValueCategory = prvalue(load) +# 2221| getExpr(): [FunctionCall] call to end +# 2221| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2221| ValueCategory = prvalue +# 2221| getQualifier(): [VariableAccess] (__range) +# 2221| Type = [LValueReferenceType] vector & +# 2221| ValueCategory = prvalue(load) +#-----| getQualifier().getFullyConverted(): [CStyleCast] (const vector)... +#-----| Conversion = [GlvalueConversion] glvalue conversion +#-----| Type = [SpecifiedType] const vector +#-----| ValueCategory = lvalue +#-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +#-----| Type = [ClassTemplateInstantiation,Struct] vector +#-----| ValueCategory = lvalue +# 2221| getCondition(): [FunctionCall] call to operator!= +# 2221| Type = [BoolType] bool +# 2221| ValueCategory = prvalue +# 2221| getQualifier(): [VariableAccess] (__begin) +# 2221| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2221| ValueCategory = lvalue +# 2221| getArgument(0): [ConstructorCall] call to iterator +# 2221| Type = [VoidType] void +# 2221| ValueCategory = prvalue +# 2221| getArgument(0): [VariableAccess] (__end) +# 2221| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2221| ValueCategory = lvalue +#-----| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +#-----| Type = [LValueReferenceType] const iterator & +#-----| ValueCategory = prvalue +#-----| getExpr(): [CStyleCast] (const iterator)... +#-----| Conversion = [GlvalueConversion] glvalue conversion +#-----| Type = [SpecifiedType] const iterator +#-----| ValueCategory = lvalue +#-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator)... +#-----| Conversion = [GlvalueConversion] glvalue conversion +#-----| Type = [SpecifiedType] const iterator +#-----| ValueCategory = lvalue +#-----| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object +#-----| Type = [ClassTemplateInstantiation,Struct] iterator +#-----| ValueCategory = lvalue +# 2221| getUpdate(): [FunctionCall] call to operator++ +# 2221| Type = [LValueReferenceType] iterator & +# 2221| ValueCategory = prvalue +# 2221| getQualifier(): [VariableAccess] (__begin) +# 2221| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2221| ValueCategory = lvalue +# 2221| getChild(5): [DeclStmt] declaration +# 2221| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 2221| Type = [Class] ClassWithDestructor +# 2221| getVariable().getInitializer(): [Initializer] initializer for y +# 2221| getExpr(): [OverloadedPointerDereferenceExpr] call to operator* +# 2221| Type = [LValueReferenceType] ClassWithDestructor & +# 2221| ValueCategory = prvalue +# 2221| getQualifier(): [VariableAccess] (__begin) +# 2221| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2221| ValueCategory = lvalue +#-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator)... +#-----| Conversion = [GlvalueConversion] glvalue conversion +#-----| Type = [SpecifiedType] const iterator +#-----| ValueCategory = lvalue +# 2221| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2221| Type = [Class] ClassWithDestructor +# 2221| ValueCategory = prvalue(load) +# 2221| getStmt(): [BlockStmt] { ... } +# 2222| getStmt(0): [ExprStmt] ExprStmt +# 2222| getExpr(): [FunctionCall] call to set_x +# 2222| Type = [VoidType] void +# 2222| ValueCategory = prvalue +# 2222| getQualifier(): [VariableAccess] y +# 2222| Type = [Class] ClassWithDestructor +# 2222| ValueCategory = lvalue +# 2222| getArgument(0): [CharLiteral] 97 +# 2222| Type = [PlainCharType] char +# 2222| Value = [CharLiteral] 97 +# 2222| ValueCategory = prvalue +# 2223| getStmt(1): [IfStmt] if (...) ... +# 2223| getCondition(): [EQExpr] ... == ... +# 2223| Type = [BoolType] bool +# 2223| ValueCategory = prvalue +# 2223| getLeftOperand(): [FunctionCall] call to get_x +# 2223| Type = [PlainCharType] char +# 2223| ValueCategory = prvalue +# 2223| getQualifier(): [VariableAccess] y +# 2223| Type = [Class] ClassWithDestructor +# 2223| ValueCategory = lvalue +# 2223| getRightOperand(): [CharLiteral] 98 +# 2223| Type = [PlainCharType] char +# 2223| Value = [CharLiteral] 98 +# 2223| ValueCategory = prvalue +# 2223| getLeftOperand().getFullyConverted(): [CStyleCast] (int)... +# 2223| Conversion = [IntegralConversion] integral conversion +# 2223| Type = [IntType] int +# 2223| ValueCategory = prvalue +# 2223| getRightOperand().getFullyConverted(): [CStyleCast] (int)... +# 2223| Conversion = [IntegralConversion] integral conversion +# 2223| Type = [IntType] int +# 2223| Value = [CStyleCast] 98 +# 2223| ValueCategory = prvalue +# 2224| getThen(): [ReturnStmt] return ... +# 2221| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2221| Type = [VoidType] void +# 2221| ValueCategory = prvalue +# 2221| getQualifier(): [VariableAccess] y +# 2221| Type = [Class] ClassWithDestructor +# 2221| ValueCategory = lvalue +# 2221| getImplicitDestructorCall(1): [DestructorCall] call to ~vector +# 2221| Type = [VoidType] void +# 2221| ValueCategory = prvalue +# 2221| getQualifier(): [VariableAccess] ys +# 2221| Type = [ClassTemplateInstantiation,Struct] vector +# 2221| ValueCategory = lvalue +# 2236| getImplicitDestructorCall(2): [DestructorCall] call to ~ClassWithDestructor +# 2236| Type = [VoidType] void +# 2236| ValueCategory = prvalue +# 2236| getQualifier(): [VariableAccess] x +# 2236| Type = [Class] ClassWithDestructor +# 2236| ValueCategory = lvalue +# 2221| getImplicitDestructorCall(0): [DestructorCall] call to ~vector +# 2221| Type = [VoidType] void +# 2221| ValueCategory = prvalue +# 2221| getQualifier(): [VariableAccess] ys +# 2221| Type = [ClassTemplateInstantiation,Struct] vector +# 2221| ValueCategory = lvalue +# 2221| getUpdate().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2221| Type = [ClassTemplateInstantiation,Struct] iterator +# 2221| ValueCategory = lvalue +# 2221| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2221| Type = [VoidType] void +# 2221| ValueCategory = prvalue +# 2221| getQualifier(): [VariableAccess] y +# 2221| Type = [Class] ClassWithDestructor +# 2221| ValueCategory = lvalue +# 2227| getStmt(7): [RangeBasedForStmt] for(...:...) ... +# 2227| getInitialization(): [DeclStmt] declaration +# 2227| getDeclarationEntry(0): [VariableDeclarationEntry] definition of ys +# 2227| Type = [ClassTemplateInstantiation,Struct] vector +# 2227| getVariable().getInitializer(): [Initializer] initializer for ys +# 2227| getExpr(): [ConstructorCall] call to vector +# 2227| Type = [VoidType] void +# 2227| ValueCategory = prvalue +# 2227| getArgument(0): [Literal] 1 +# 2227| Type = [IntType] int +# 2227| Value = [Literal] 1 +# 2227| ValueCategory = prvalue +# 2227| getChild(1): [DeclStmt] declaration +# 2227| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__range) +# 2227| Type = [LValueReferenceType] vector & +#-----| getVariable().getInitializer(): [Initializer] initializer for (__range) +# 2227| getExpr(): [VariableAccess] ys +# 2227| Type = [ClassTemplateInstantiation,Struct] vector +# 2227| ValueCategory = lvalue +# 2227| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 2227| Type = [LValueReferenceType] vector & +# 2227| ValueCategory = prvalue +# 2227| getBeginEndDeclaration(): [DeclStmt] declaration +# 2227| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__begin) +# 2227| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +#-----| getVariable().getInitializer(): [Initializer] initializer for (__begin) +# 2227| getExpr(): [FunctionCall] call to begin +# 2227| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2227| ValueCategory = prvalue +# 2227| getQualifier(): [VariableAccess] (__range) +# 2227| Type = [LValueReferenceType] vector & +# 2227| ValueCategory = prvalue(load) #-----| getQualifier().getFullyConverted(): [CStyleCast] (const vector)... #-----| Conversion = [GlvalueConversion] glvalue conversion #-----| Type = [SpecifiedType] const vector @@ -20390,18 +20374,34 @@ ir.cpp: #-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [ClassTemplateInstantiation,Struct] vector #-----| ValueCategory = lvalue -# 2225| getCondition(): [FunctionCall] call to operator!= -# 2225| Type = [BoolType] bool -# 2225| ValueCategory = prvalue -# 2225| getQualifier(): [VariableAccess] (__begin) -# 2225| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2225| ValueCategory = lvalue -# 2225| getArgument(0): [ConstructorCall] call to iterator -# 2225| Type = [VoidType] void -# 2225| ValueCategory = prvalue -# 2225| getArgument(0): [VariableAccess] (__end) -# 2225| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2225| ValueCategory = lvalue +# 2227| getDeclarationEntry(1): [VariableDeclarationEntry] declaration of (__end) +# 2227| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +#-----| getVariable().getInitializer(): [Initializer] initializer for (__end) +# 2227| getExpr(): [FunctionCall] call to end +# 2227| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2227| ValueCategory = prvalue +# 2227| getQualifier(): [VariableAccess] (__range) +# 2227| Type = [LValueReferenceType] vector & +# 2227| ValueCategory = prvalue(load) +#-----| getQualifier().getFullyConverted(): [CStyleCast] (const vector)... +#-----| Conversion = [GlvalueConversion] glvalue conversion +#-----| Type = [SpecifiedType] const vector +#-----| ValueCategory = lvalue +#-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +#-----| Type = [ClassTemplateInstantiation,Struct] vector +#-----| ValueCategory = lvalue +# 2227| getCondition(): [FunctionCall] call to operator!= +# 2227| Type = [BoolType] bool +# 2227| ValueCategory = prvalue +# 2227| getQualifier(): [VariableAccess] (__begin) +# 2227| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2227| ValueCategory = lvalue +# 2227| getArgument(0): [ConstructorCall] call to iterator +# 2227| Type = [VoidType] void +# 2227| ValueCategory = prvalue +# 2227| getArgument(0): [VariableAccess] (__end) +# 2227| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2227| ValueCategory = lvalue #-----| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) #-----| Type = [LValueReferenceType] const iterator & #-----| ValueCategory = prvalue @@ -20416,103 +20416,103 @@ ir.cpp: #-----| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object #-----| Type = [ClassTemplateInstantiation,Struct] iterator #-----| ValueCategory = lvalue -# 2225| getUpdate(): [FunctionCall] call to operator++ -# 2225| Type = [LValueReferenceType] iterator & -# 2225| ValueCategory = prvalue -# 2225| getQualifier(): [VariableAccess] (__begin) -# 2225| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2225| ValueCategory = lvalue -# 2225| getChild(5): [DeclStmt] declaration -# 2225| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 2225| Type = [IntType] int -# 2225| getVariable().getInitializer(): [Initializer] initializer for y -# 2225| getExpr(): [OverloadedPointerDereferenceExpr] call to operator* -# 2225| Type = [LValueReferenceType] int & -# 2225| ValueCategory = prvalue -# 2225| getQualifier(): [VariableAccess] (__begin) -# 2225| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2225| ValueCategory = lvalue +# 2227| getUpdate(): [FunctionCall] call to operator++ +# 2227| Type = [LValueReferenceType] iterator & +# 2227| ValueCategory = prvalue +# 2227| getQualifier(): [VariableAccess] (__begin) +# 2227| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2227| ValueCategory = lvalue +# 2227| getChild(5): [DeclStmt] declaration +# 2227| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 2227| Type = [IntType] int +# 2227| getVariable().getInitializer(): [Initializer] initializer for y +# 2227| getExpr(): [OverloadedPointerDereferenceExpr] call to operator* +# 2227| Type = [LValueReferenceType] int & +# 2227| ValueCategory = prvalue +# 2227| getQualifier(): [VariableAccess] (__begin) +# 2227| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2227| ValueCategory = lvalue #-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator)... #-----| Conversion = [GlvalueConversion] glvalue conversion #-----| Type = [SpecifiedType] const iterator #-----| ValueCategory = lvalue -# 2225| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2225| Type = [IntType] int -# 2225| ValueCategory = prvalue(load) -# 2225| getStmt(): [BlockStmt] { ... } -# 2226| getStmt(0): [IfStmt] if (...) ... -# 2226| getCondition(): [EQExpr] ... == ... -# 2226| Type = [BoolType] bool -# 2226| ValueCategory = prvalue -# 2226| getLeftOperand(): [VariableAccess] y -# 2226| Type = [IntType] int -# 2226| ValueCategory = prvalue(load) -# 2226| getRightOperand(): [Literal] 1 -# 2226| Type = [IntType] int -# 2226| Value = [Literal] 1 -# 2226| ValueCategory = prvalue -# 2227| getThen(): [ReturnStmt] return ... -# 2225| getImplicitDestructorCall(0): [DestructorCall] call to ~vector -# 2225| Type = [VoidType] void -# 2225| ValueCategory = prvalue -# 2225| getQualifier(): [VariableAccess] ys -# 2225| Type = [ClassTemplateInstantiation,Struct] vector -# 2225| ValueCategory = lvalue -# 2234| getImplicitDestructorCall(1): [DestructorCall] call to ~ClassWithDestructor -# 2234| Type = [VoidType] void -# 2234| ValueCategory = prvalue -# 2234| getQualifier(): [VariableAccess] x -# 2234| Type = [Class] ClassWithDestructor -# 2234| ValueCategory = lvalue -# 2225| getImplicitDestructorCall(0): [DestructorCall] call to ~vector -# 2225| Type = [VoidType] void -# 2225| ValueCategory = prvalue -# 2225| getQualifier(): [VariableAccess] ys -# 2225| Type = [ClassTemplateInstantiation,Struct] vector -# 2225| ValueCategory = lvalue -# 2225| getUpdate().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2225| Type = [ClassTemplateInstantiation,Struct] iterator -# 2225| ValueCategory = lvalue -# 2230| getStmt(8): [RangeBasedForStmt] for(...:...) ... -# 2230| getInitialization(): [DeclStmt] declaration -# 2230| getDeclarationEntry(0): [VariableDeclarationEntry] definition of ys -# 2230| Type = [ClassTemplateInstantiation,Struct] vector -# 2230| getVariable().getInitializer(): [Initializer] initializer for ys -# 2230| getExpr(): [ConstructorCall] call to vector -# 2230| Type = [VoidType] void -# 2230| ValueCategory = prvalue -# 2230| getArgument(0): [VariableAccess] x -# 2230| Type = [Class] ClassWithDestructor -# 2230| ValueCategory = prvalue(load) -# 2230| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2230| Type = [VoidType] void -# 2230| ValueCategory = prvalue -# 2230| getQualifier(): [ReuseExpr] reuse of temporary object -# 2230| Type = [Class] ClassWithDestructor -# 2230| ValueCategory = xvalue -# 2230| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2230| Type = [Class] ClassWithDestructor -# 2230| ValueCategory = lvalue -# 2230| getChild(1): [DeclStmt] declaration -# 2230| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__range) -# 2230| Type = [LValueReferenceType] vector & +# 2227| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2227| Type = [IntType] int +# 2227| ValueCategory = prvalue(load) +# 2227| getStmt(): [BlockStmt] { ... } +# 2228| getStmt(0): [IfStmt] if (...) ... +# 2228| getCondition(): [EQExpr] ... == ... +# 2228| Type = [BoolType] bool +# 2228| ValueCategory = prvalue +# 2228| getLeftOperand(): [VariableAccess] y +# 2228| Type = [IntType] int +# 2228| ValueCategory = prvalue(load) +# 2228| getRightOperand(): [Literal] 1 +# 2228| Type = [IntType] int +# 2228| Value = [Literal] 1 +# 2228| ValueCategory = prvalue +# 2229| getThen(): [ReturnStmt] return ... +# 2227| getImplicitDestructorCall(0): [DestructorCall] call to ~vector +# 2227| Type = [VoidType] void +# 2227| ValueCategory = prvalue +# 2227| getQualifier(): [VariableAccess] ys +# 2227| Type = [ClassTemplateInstantiation,Struct] vector +# 2227| ValueCategory = lvalue +# 2236| getImplicitDestructorCall(1): [DestructorCall] call to ~ClassWithDestructor +# 2236| Type = [VoidType] void +# 2236| ValueCategory = prvalue +# 2236| getQualifier(): [VariableAccess] x +# 2236| Type = [Class] ClassWithDestructor +# 2236| ValueCategory = lvalue +# 2227| getImplicitDestructorCall(0): [DestructorCall] call to ~vector +# 2227| Type = [VoidType] void +# 2227| ValueCategory = prvalue +# 2227| getQualifier(): [VariableAccess] ys +# 2227| Type = [ClassTemplateInstantiation,Struct] vector +# 2227| ValueCategory = lvalue +# 2227| getUpdate().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2227| Type = [ClassTemplateInstantiation,Struct] iterator +# 2227| ValueCategory = lvalue +# 2232| getStmt(8): [RangeBasedForStmt] for(...:...) ... +# 2232| getInitialization(): [DeclStmt] declaration +# 2232| getDeclarationEntry(0): [VariableDeclarationEntry] definition of ys +# 2232| Type = [ClassTemplateInstantiation,Struct] vector +# 2232| getVariable().getInitializer(): [Initializer] initializer for ys +# 2232| getExpr(): [ConstructorCall] call to vector +# 2232| Type = [VoidType] void +# 2232| ValueCategory = prvalue +# 2232| getArgument(0): [VariableAccess] x +# 2232| Type = [Class] ClassWithDestructor +# 2232| ValueCategory = prvalue(load) +# 2232| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2232| Type = [VoidType] void +# 2232| ValueCategory = prvalue +# 2232| getQualifier(): [ReuseExpr] reuse of temporary object +# 2232| Type = [Class] ClassWithDestructor +# 2232| ValueCategory = xvalue +# 2232| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2232| Type = [Class] ClassWithDestructor +# 2232| ValueCategory = lvalue +# 2232| getChild(1): [DeclStmt] declaration +# 2232| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__range) +# 2232| Type = [LValueReferenceType] vector & #-----| getVariable().getInitializer(): [Initializer] initializer for (__range) -# 2230| getExpr(): [VariableAccess] ys -# 2230| Type = [ClassTemplateInstantiation,Struct] vector -# 2230| ValueCategory = lvalue -# 2230| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 2230| Type = [LValueReferenceType] vector & -# 2230| ValueCategory = prvalue -# 2230| getBeginEndDeclaration(): [DeclStmt] declaration -# 2230| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__begin) -# 2230| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2232| getExpr(): [VariableAccess] ys +# 2232| Type = [ClassTemplateInstantiation,Struct] vector +# 2232| ValueCategory = lvalue +# 2232| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 2232| Type = [LValueReferenceType] vector & +# 2232| ValueCategory = prvalue +# 2232| getBeginEndDeclaration(): [DeclStmt] declaration +# 2232| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__begin) +# 2232| Type = [NestedTypedefType,UsingAliasTypedefType] iterator #-----| getVariable().getInitializer(): [Initializer] initializer for (__begin) -# 2230| getExpr(): [FunctionCall] call to begin -# 2230| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2230| ValueCategory = prvalue -# 2230| getQualifier(): [VariableAccess] (__range) -# 2230| Type = [LValueReferenceType] vector & -# 2230| ValueCategory = prvalue(load) +# 2232| getExpr(): [FunctionCall] call to begin +# 2232| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2232| ValueCategory = prvalue +# 2232| getQualifier(): [VariableAccess] (__range) +# 2232| Type = [LValueReferenceType] vector & +# 2232| ValueCategory = prvalue(load) #-----| getQualifier().getFullyConverted(): [CStyleCast] (const vector)... #-----| Conversion = [GlvalueConversion] glvalue conversion #-----| Type = [SpecifiedType] const vector @@ -20520,15 +20520,15 @@ ir.cpp: #-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [ClassTemplateInstantiation,Struct] vector #-----| ValueCategory = lvalue -# 2230| getDeclarationEntry(1): [VariableDeclarationEntry] declaration of (__end) -# 2230| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2232| getDeclarationEntry(1): [VariableDeclarationEntry] declaration of (__end) +# 2232| Type = [NestedTypedefType,UsingAliasTypedefType] iterator #-----| getVariable().getInitializer(): [Initializer] initializer for (__end) -# 2230| getExpr(): [FunctionCall] call to end -# 2230| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2230| ValueCategory = prvalue -# 2230| getQualifier(): [VariableAccess] (__range) -# 2230| Type = [LValueReferenceType] vector & -# 2230| ValueCategory = prvalue(load) +# 2232| getExpr(): [FunctionCall] call to end +# 2232| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2232| ValueCategory = prvalue +# 2232| getQualifier(): [VariableAccess] (__range) +# 2232| Type = [LValueReferenceType] vector & +# 2232| ValueCategory = prvalue(load) #-----| getQualifier().getFullyConverted(): [CStyleCast] (const vector)... #-----| Conversion = [GlvalueConversion] glvalue conversion #-----| Type = [SpecifiedType] const vector @@ -20536,18 +20536,18 @@ ir.cpp: #-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [ClassTemplateInstantiation,Struct] vector #-----| ValueCategory = lvalue -# 2230| getCondition(): [FunctionCall] call to operator!= -# 2230| Type = [BoolType] bool -# 2230| ValueCategory = prvalue -# 2230| getQualifier(): [VariableAccess] (__begin) -# 2230| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2230| ValueCategory = lvalue -# 2230| getArgument(0): [ConstructorCall] call to iterator -# 2230| Type = [VoidType] void -# 2230| ValueCategory = prvalue -# 2230| getArgument(0): [VariableAccess] (__end) -# 2230| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2230| ValueCategory = lvalue +# 2232| getCondition(): [FunctionCall] call to operator!= +# 2232| Type = [BoolType] bool +# 2232| ValueCategory = prvalue +# 2232| getQualifier(): [VariableAccess] (__begin) +# 2232| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2232| ValueCategory = lvalue +# 2232| getArgument(0): [ConstructorCall] call to iterator +# 2232| Type = [VoidType] void +# 2232| ValueCategory = prvalue +# 2232| getArgument(0): [VariableAccess] (__end) +# 2232| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2232| ValueCategory = lvalue #-----| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) #-----| Type = [LValueReferenceType] const iterator & #-----| ValueCategory = prvalue @@ -20562,623 +20562,623 @@ ir.cpp: #-----| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object #-----| Type = [ClassTemplateInstantiation,Struct] iterator #-----| ValueCategory = lvalue -# 2230| getUpdate(): [FunctionCall] call to operator++ -# 2230| Type = [LValueReferenceType] iterator & -# 2230| ValueCategory = prvalue -# 2230| getQualifier(): [VariableAccess] (__begin) -# 2230| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2230| ValueCategory = lvalue -# 2230| getChild(5): [DeclStmt] declaration -# 2230| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 2230| Type = [Class] ClassWithDestructor -# 2230| getVariable().getInitializer(): [Initializer] initializer for y -# 2230| getExpr(): [OverloadedPointerDereferenceExpr] call to operator* -# 2230| Type = [LValueReferenceType] ClassWithDestructor & -# 2230| ValueCategory = prvalue -# 2230| getQualifier(): [VariableAccess] (__begin) -# 2230| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2230| ValueCategory = lvalue +# 2232| getUpdate(): [FunctionCall] call to operator++ +# 2232| Type = [LValueReferenceType] iterator & +# 2232| ValueCategory = prvalue +# 2232| getQualifier(): [VariableAccess] (__begin) +# 2232| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2232| ValueCategory = lvalue +# 2232| getChild(5): [DeclStmt] declaration +# 2232| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 2232| Type = [Class] ClassWithDestructor +# 2232| getVariable().getInitializer(): [Initializer] initializer for y +# 2232| getExpr(): [OverloadedPointerDereferenceExpr] call to operator* +# 2232| Type = [LValueReferenceType] ClassWithDestructor & +# 2232| ValueCategory = prvalue +# 2232| getQualifier(): [VariableAccess] (__begin) +# 2232| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2232| ValueCategory = lvalue #-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator)... #-----| Conversion = [GlvalueConversion] glvalue conversion #-----| Type = [SpecifiedType] const iterator #-----| ValueCategory = lvalue -# 2230| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2230| Type = [Class] ClassWithDestructor -# 2230| ValueCategory = prvalue(load) -# 2230| getStmt(): [BlockStmt] { ... } -# 2231| getStmt(0): [DeclStmt] declaration -# 2231| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z1 -# 2231| Type = [Class] ClassWithDestructor -# 2231| getVariable().getInitializer(): [Initializer] initializer for z1 -# 2231| getExpr(): [ConstructorCall] call to ClassWithDestructor -# 2231| Type = [VoidType] void -# 2231| ValueCategory = prvalue -# 2232| getStmt(1): [DeclStmt] declaration -# 2232| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z2 +# 2232| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2232| Type = [Class] ClassWithDestructor +# 2232| ValueCategory = prvalue(load) +# 2232| getStmt(): [BlockStmt] { ... } +# 2233| getStmt(0): [DeclStmt] declaration +# 2233| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z1 +# 2233| Type = [Class] ClassWithDestructor +# 2233| getVariable().getInitializer(): [Initializer] initializer for z1 +# 2233| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2233| Type = [VoidType] void +# 2233| ValueCategory = prvalue +# 2234| getStmt(1): [DeclStmt] declaration +# 2234| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z2 +# 2234| Type = [Class] ClassWithDestructor +# 2234| getVariable().getInitializer(): [Initializer] initializer for z2 +# 2234| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2234| Type = [VoidType] void +# 2234| ValueCategory = prvalue +# 2235| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2235| Type = [VoidType] void +# 2235| ValueCategory = prvalue +# 2235| getQualifier(): [VariableAccess] z2 +# 2235| Type = [Class] ClassWithDestructor +# 2235| ValueCategory = lvalue +# 2235| getImplicitDestructorCall(1): [DestructorCall] call to ~ClassWithDestructor +# 2235| Type = [VoidType] void +# 2235| ValueCategory = prvalue +# 2235| getQualifier(): [VariableAccess] z1 +# 2235| Type = [Class] ClassWithDestructor +# 2235| ValueCategory = lvalue +# 2232| getImplicitDestructorCall(0): [DestructorCall] call to ~vector +# 2232| Type = [VoidType] void +# 2232| ValueCategory = prvalue +# 2232| getQualifier(): [VariableAccess] ys +# 2232| Type = [ClassTemplateInstantiation,Struct] vector +# 2232| ValueCategory = lvalue +# 2232| getUpdate().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2232| Type = [ClassTemplateInstantiation,Struct] iterator +# 2232| ValueCategory = lvalue +# 2232| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2232| Type = [VoidType] void +# 2232| ValueCategory = prvalue +# 2232| getQualifier(): [VariableAccess] y # 2232| Type = [Class] ClassWithDestructor -# 2232| getVariable().getInitializer(): [Initializer] initializer for z2 -# 2232| getExpr(): [ConstructorCall] call to ClassWithDestructor -# 2232| Type = [VoidType] void -# 2232| ValueCategory = prvalue -# 2233| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2233| Type = [VoidType] void -# 2233| ValueCategory = prvalue -# 2233| getQualifier(): [VariableAccess] z2 -# 2233| Type = [Class] ClassWithDestructor -# 2233| ValueCategory = lvalue -# 2233| getImplicitDestructorCall(1): [DestructorCall] call to ~ClassWithDestructor -# 2233| Type = [VoidType] void -# 2233| ValueCategory = prvalue -# 2233| getQualifier(): [VariableAccess] z1 -# 2233| Type = [Class] ClassWithDestructor -# 2233| ValueCategory = lvalue -# 2230| getImplicitDestructorCall(0): [DestructorCall] call to ~vector -# 2230| Type = [VoidType] void -# 2230| ValueCategory = prvalue -# 2230| getQualifier(): [VariableAccess] ys -# 2230| Type = [ClassTemplateInstantiation,Struct] vector -# 2230| ValueCategory = lvalue -# 2230| getUpdate().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2230| Type = [ClassTemplateInstantiation,Struct] iterator -# 2230| ValueCategory = lvalue -# 2230| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2230| Type = [VoidType] void -# 2230| ValueCategory = prvalue -# 2230| getQualifier(): [VariableAccess] y -# 2230| Type = [Class] ClassWithDestructor -# 2230| ValueCategory = lvalue -# 2234| getStmt(9): [ReturnStmt] return ... -# 2234| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2234| Type = [VoidType] void -# 2234| ValueCategory = prvalue -# 2234| getQualifier(): [VariableAccess] x -# 2234| Type = [Class] ClassWithDestructor -# 2234| ValueCategory = lvalue -# 2236| [TopLevelFunction] void static_variable_with_destructor_1() -# 2236| : -# 2236| getEntryPoint(): [BlockStmt] { ... } -# 2237| getStmt(0): [DeclStmt] declaration -# 2237| getDeclarationEntry(0): [VariableDeclarationEntry] definition of a -# 2237| Type = [Class] ClassWithDestructor -# 2237| getVariable().getInitializer(): [Initializer] initializer for a -# 2237| getExpr(): [ConstructorCall] call to ClassWithDestructor -# 2237| Type = [VoidType] void -# 2237| ValueCategory = prvalue -# 2238| getStmt(1): [DeclStmt] declaration -# 2238| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b -# 2238| Type = [Class] ClassWithDestructor +# 2232| ValueCategory = lvalue +# 2236| getStmt(9): [ReturnStmt] return ... +# 2236| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2236| Type = [VoidType] void +# 2236| ValueCategory = prvalue +# 2236| getQualifier(): [VariableAccess] x +# 2236| Type = [Class] ClassWithDestructor +# 2236| ValueCategory = lvalue +# 2238| [TopLevelFunction] void static_variable_with_destructor_1() +# 2238| : +# 2238| getEntryPoint(): [BlockStmt] { ... } +# 2239| getStmt(0): [DeclStmt] declaration +# 2239| getDeclarationEntry(0): [VariableDeclarationEntry] definition of a +# 2239| Type = [Class] ClassWithDestructor +# 2239| getVariable().getInitializer(): [Initializer] initializer for a +# 2239| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2239| Type = [VoidType] void +# 2239| ValueCategory = prvalue +# 2240| getStmt(1): [DeclStmt] declaration +# 2240| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b +# 2240| Type = [Class] ClassWithDestructor #-----| getVariable().getInitializer(): [Initializer] initializer for b #-----| getExpr(): [ConstructorCall] call to ClassWithDestructor #-----| Type = [VoidType] void #-----| ValueCategory = prvalue -# 2239| getStmt(2): [ReturnStmt] return ... -# 2239| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2239| Type = [VoidType] void -# 2239| ValueCategory = prvalue -# 2239| getQualifier(): [VariableAccess] a -# 2239| Type = [Class] ClassWithDestructor -# 2239| ValueCategory = lvalue -# 2241| [TopLevelFunction] void static_variable_with_destructor_2() -# 2241| : -# 2241| getEntryPoint(): [BlockStmt] { ... } -# 2242| getStmt(0): [DeclStmt] declaration -# 2242| getDeclarationEntry(0): [VariableDeclarationEntry] definition of a -# 2242| Type = [Class] ClassWithDestructor +# 2241| getStmt(2): [ReturnStmt] return ... +# 2241| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2241| Type = [VoidType] void +# 2241| ValueCategory = prvalue +# 2241| getQualifier(): [VariableAccess] a +# 2241| Type = [Class] ClassWithDestructor +# 2241| ValueCategory = lvalue +# 2243| [TopLevelFunction] void static_variable_with_destructor_2() +# 2243| : +# 2243| getEntryPoint(): [BlockStmt] { ... } +# 2244| getStmt(0): [DeclStmt] declaration +# 2244| getDeclarationEntry(0): [VariableDeclarationEntry] definition of a +# 2244| Type = [Class] ClassWithDestructor #-----| getVariable().getInitializer(): [Initializer] initializer for a #-----| getExpr(): [ConstructorCall] call to ClassWithDestructor #-----| Type = [VoidType] void #-----| ValueCategory = prvalue -# 2243| getStmt(1): [DeclStmt] declaration -# 2243| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b -# 2243| Type = [Class] ClassWithDestructor -# 2243| getVariable().getInitializer(): [Initializer] initializer for b -# 2243| getExpr(): [ConstructorCall] call to ClassWithDestructor -# 2243| Type = [VoidType] void -# 2243| ValueCategory = prvalue -# 2244| getStmt(2): [ReturnStmt] return ... -# 2244| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2244| Type = [VoidType] void -# 2244| ValueCategory = prvalue -# 2244| getQualifier(): [VariableAccess] b -# 2244| Type = [Class] ClassWithDestructor -# 2244| ValueCategory = lvalue -# 2246| [TopLevelFunction] void static_variable_with_destructor_3() -# 2246| : -# 2246| getEntryPoint(): [BlockStmt] { ... } -# 2247| getStmt(0): [DeclStmt] declaration -# 2247| getDeclarationEntry(0): [VariableDeclarationEntry] definition of a -# 2247| Type = [Class] ClassWithDestructor -# 2247| getVariable().getInitializer(): [Initializer] initializer for a -# 2247| getExpr(): [ConstructorCall] call to ClassWithDestructor -# 2247| Type = [VoidType] void -# 2247| ValueCategory = prvalue -# 2248| getStmt(1): [DeclStmt] declaration -# 2248| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b -# 2248| Type = [Class] ClassWithDestructor -# 2248| getVariable().getInitializer(): [Initializer] initializer for b -# 2248| getExpr(): [ConstructorCall] call to ClassWithDestructor -# 2248| Type = [VoidType] void -# 2248| ValueCategory = prvalue -# 2249| getStmt(2): [DeclStmt] declaration -# 2249| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c +# 2245| getStmt(1): [DeclStmt] declaration +# 2245| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b +# 2245| Type = [Class] ClassWithDestructor +# 2245| getVariable().getInitializer(): [Initializer] initializer for b +# 2245| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2245| Type = [VoidType] void +# 2245| ValueCategory = prvalue +# 2246| getStmt(2): [ReturnStmt] return ... +# 2246| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2246| Type = [VoidType] void +# 2246| ValueCategory = prvalue +# 2246| getQualifier(): [VariableAccess] b +# 2246| Type = [Class] ClassWithDestructor +# 2246| ValueCategory = lvalue +# 2248| [TopLevelFunction] void static_variable_with_destructor_3() +# 2248| : +# 2248| getEntryPoint(): [BlockStmt] { ... } +# 2249| getStmt(0): [DeclStmt] declaration +# 2249| getDeclarationEntry(0): [VariableDeclarationEntry] definition of a # 2249| Type = [Class] ClassWithDestructor +# 2249| getVariable().getInitializer(): [Initializer] initializer for a +# 2249| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2249| Type = [VoidType] void +# 2249| ValueCategory = prvalue +# 2250| getStmt(1): [DeclStmt] declaration +# 2250| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b +# 2250| Type = [Class] ClassWithDestructor +# 2250| getVariable().getInitializer(): [Initializer] initializer for b +# 2250| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2250| Type = [VoidType] void +# 2250| ValueCategory = prvalue +# 2251| getStmt(2): [DeclStmt] declaration +# 2251| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c +# 2251| Type = [Class] ClassWithDestructor #-----| getVariable().getInitializer(): [Initializer] initializer for c #-----| getExpr(): [ConstructorCall] call to ClassWithDestructor #-----| Type = [VoidType] void #-----| ValueCategory = prvalue -# 2250| getStmt(3): [ReturnStmt] return ... -# 2250| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2250| Type = [VoidType] void -# 2250| ValueCategory = prvalue -# 2250| getQualifier(): [VariableAccess] b -# 2250| Type = [Class] ClassWithDestructor -# 2250| ValueCategory = lvalue -# 2250| getImplicitDestructorCall(1): [DestructorCall] call to ~ClassWithDestructor -# 2250| Type = [VoidType] void -# 2250| ValueCategory = prvalue -# 2250| getQualifier(): [VariableAccess] a -# 2250| Type = [Class] ClassWithDestructor -# 2250| ValueCategory = lvalue -# 2252| [GlobalVariable] ClassWithDestructor global_class_with_destructor -# 2252| getInitializer(): [Initializer] initializer for global_class_with_destructor -# 2252| getExpr(): [ConstructorCall] call to ClassWithDestructor -# 2252| Type = [VoidType] void -# 2252| ValueCategory = prvalue -# 2256| [FunctionTemplateInstantiation,TopLevelFunction] ClassWithDestructor& vacuous_destructor_call::get(ClassWithDestructor&) -# 2256| : -# 2256| getParameter(0): [Parameter] t -# 2256| Type = [LValueReferenceType] ClassWithDestructor & -# 2256| getEntryPoint(): [BlockStmt] { ... } -# 2256| getStmt(0): [ReturnStmt] return ... -# 2256| getExpr(): [VariableAccess] t -# 2256| Type = [LValueReferenceType] ClassWithDestructor & -# 2256| ValueCategory = prvalue(load) -# 2256| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 2256| Type = [LValueReferenceType] ClassWithDestructor & -# 2256| ValueCategory = prvalue -# 2256| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 2256| Type = [Class] ClassWithDestructor -# 2256| ValueCategory = lvalue -# 2256| [TemplateFunction,TopLevelFunction] T& vacuous_destructor_call::get(T&) -# 2256| : -# 2256| getParameter(0): [Parameter] t -# 2256| Type = [LValueReferenceType] T & -# 2256| getEntryPoint(): [BlockStmt] { ... } -# 2256| getStmt(0): [ReturnStmt] return ... -# 2256| getExpr(): [VariableAccess] t -# 2256| Type = [LValueReferenceType] T & -# 2256| ValueCategory = prvalue(load) -# 2256| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2256| Type = [TypeTemplateParameter] T -# 2256| ValueCategory = lvalue -# 2256| [FunctionTemplateInstantiation,TopLevelFunction] int& vacuous_destructor_call::get(int&) -# 2256| : -# 2256| getParameter(0): [Parameter] t -# 2256| Type = [LValueReferenceType] int & -# 2256| getEntryPoint(): [BlockStmt] { ... } -# 2256| getStmt(0): [ReturnStmt] return ... -# 2256| getExpr(): [VariableAccess] t -# 2256| Type = [LValueReferenceType] int & -# 2256| ValueCategory = prvalue(load) -# 2256| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 2256| Type = [LValueReferenceType] int & -# 2256| ValueCategory = prvalue -# 2256| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 2256| Type = [IntType] int -# 2256| ValueCategory = lvalue -# 2259| [FunctionTemplateInstantiation,TopLevelFunction] void vacuous_destructor_call::call_destructor(ClassWithDestructor&) -# 2259| : -# 2259| getParameter(0): [Parameter] t -# 2259| Type = [LValueReferenceType] ClassWithDestructor & -# 2259| getEntryPoint(): [BlockStmt] { ... } -# 2260| getStmt(0): [ExprStmt] ExprStmt -# 2260| getExpr(): [DestructorCall] call to ~ClassWithDestructor -# 2260| Type = [VoidType] void -# 2260| ValueCategory = prvalue -# 2260| getQualifier(): [FunctionCall] call to get -# 2260| Type = [LValueReferenceType] ClassWithDestructor & -# 2260| ValueCategory = prvalue -# 2260| getArgument(0): [VariableAccess] t -# 2260| Type = [LValueReferenceType] ClassWithDestructor & -# 2260| ValueCategory = prvalue(load) -# 2260| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 2260| Type = [LValueReferenceType] ClassWithDestructor & -# 2260| ValueCategory = prvalue -# 2260| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 2260| Type = [Class] ClassWithDestructor -# 2260| ValueCategory = lvalue -# 2260| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2260| Type = [Class] ClassWithDestructor -# 2260| ValueCategory = lvalue -# 2261| getStmt(1): [ReturnStmt] return ... -# 2259| [TemplateFunction,TopLevelFunction] void vacuous_destructor_call::call_destructor(T&) -# 2259| : -# 2259| getParameter(0): [Parameter] t -# 2259| Type = [LValueReferenceType] T & -# 2259| getEntryPoint(): [BlockStmt] { ... } -# 2260| getStmt(0): [ExprStmt] ExprStmt -# 2260| getExpr(): [ExprCall] call to expression -# 2260| Type = [UnknownType] unknown -# 2260| ValueCategory = prvalue -# 2260| getExpr(): [Literal] Unknown literal -# 2260| Type = [UnknownType] unknown -# 2260| ValueCategory = prvalue -# 2260| getChild(-1): [ExprCall] call to expression -# 2260| Type = [UnknownType] unknown -# 2260| ValueCategory = prvalue -# 2260| getExpr(): [Literal] Unknown literal -# 2260| Type = [UnknownType] unknown -# 2260| ValueCategory = prvalue -# 2260| getArgument(0): [VariableAccess] t -# 2260| Type = [LValueReferenceType] T & -# 2260| ValueCategory = prvalue(load) -# 2260| getArgument(0).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2260| Type = [TypeTemplateParameter] T -# 2260| ValueCategory = lvalue -# 2261| getStmt(1): [ReturnStmt] return ... -# 2259| [FunctionTemplateInstantiation,TopLevelFunction] void vacuous_destructor_call::call_destructor(int&) -# 2259| : -# 2259| getParameter(0): [Parameter] t -# 2259| Type = [LValueReferenceType] int & -# 2259| getEntryPoint(): [BlockStmt] { ... } -# 2260| getStmt(0): [ExprStmt] ExprStmt -# 2260| getExpr(): [VacuousDestructorCall] (vacuous destructor call) -# 2260| Type = [VoidType] void -# 2260| ValueCategory = prvalue -# 2260| getChild(0): [FunctionCall] call to get -# 2260| Type = [LValueReferenceType] int & -# 2260| ValueCategory = prvalue -# 2260| getArgument(0): [VariableAccess] t -# 2260| Type = [LValueReferenceType] int & -# 2260| ValueCategory = prvalue(load) -# 2260| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 2260| Type = [LValueReferenceType] int & -# 2260| ValueCategory = prvalue -# 2260| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 2260| Type = [IntType] int -# 2260| ValueCategory = lvalue -# 2260| getChild(0).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2260| Type = [IntType] int -# 2260| ValueCategory = lvalue -# 2261| getStmt(1): [ReturnStmt] return ... -# 2263| [TopLevelFunction] void vacuous_destructor_call::non_vacuous_destructor_call() -# 2263| : -# 2263| getEntryPoint(): [BlockStmt] { ... } -# 2264| getStmt(0): [DeclStmt] declaration -# 2264| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c -# 2264| Type = [Class] ClassWithDestructor -# 2264| getVariable().getInitializer(): [Initializer] initializer for c -# 2264| getExpr(): [ConstructorCall] call to ClassWithDestructor -# 2264| Type = [VoidType] void -# 2264| ValueCategory = prvalue -# 2265| getStmt(1): [ExprStmt] ExprStmt -# 2265| getExpr(): [FunctionCall] call to call_destructor -# 2265| Type = [VoidType] void -# 2265| ValueCategory = prvalue -# 2265| getArgument(0): [VariableAccess] c -# 2265| Type = [Class] ClassWithDestructor -# 2265| ValueCategory = lvalue -# 2265| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 2265| Type = [LValueReferenceType] ClassWithDestructor & -# 2265| ValueCategory = prvalue -# 2266| getStmt(2): [ReturnStmt] return ... -# 2266| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2266| Type = [VoidType] void -# 2266| ValueCategory = prvalue -# 2266| getQualifier(): [VariableAccess] c -# 2266| Type = [Class] ClassWithDestructor -# 2266| ValueCategory = lvalue -# 2268| [TopLevelFunction] void vacuous_destructor_call::vacuous_destructor_call() -# 2268| : -# 2268| getEntryPoint(): [BlockStmt] { ... } -# 2269| getStmt(0): [DeclStmt] declaration -# 2269| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i -# 2269| Type = [IntType] int -# 2270| getStmt(1): [ExprStmt] ExprStmt -# 2270| getExpr(): [FunctionCall] call to call_destructor -# 2270| Type = [VoidType] void -# 2270| ValueCategory = prvalue -# 2270| getArgument(0): [VariableAccess] i -# 2270| Type = [IntType] int -# 2270| ValueCategory = lvalue -# 2270| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 2270| Type = [LValueReferenceType] int & -# 2270| ValueCategory = prvalue -# 2271| getStmt(2): [ReturnStmt] return ... -# 2274| [TopLevelFunction] void TryCatchDestructors(bool) -# 2274| : -# 2274| getParameter(0): [Parameter] b -# 2274| Type = [BoolType] bool -# 2274| getEntryPoint(): [BlockStmt] { ... } -# 2275| getStmt(0): [TryStmt] try { ... } -# 2275| getStmt(): [BlockStmt] { ... } -# 2276| getStmt(0): [DeclStmt] declaration -# 2276| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s -# 2276| Type = [Struct] String -# 2276| getVariable().getInitializer(): [Initializer] initializer for s -# 2276| getExpr(): [ConstructorCall] call to String -# 2276| Type = [VoidType] void -# 2276| ValueCategory = prvalue -# 2277| getStmt(1): [IfStmt] if (...) ... -# 2277| getCondition(): [VariableAccess] b -# 2277| Type = [BoolType] bool -# 2277| ValueCategory = prvalue(load) -# 2277| getThen(): [BlockStmt] { ... } -# 2278| getStmt(0): [ExprStmt] ExprStmt -# 2278| getExpr(): [ThrowExpr] throw ... -# 2278| Type = [PointerType] const char * +# 2252| getStmt(3): [ReturnStmt] return ... +# 2252| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2252| Type = [VoidType] void +# 2252| ValueCategory = prvalue +# 2252| getQualifier(): [VariableAccess] b +# 2252| Type = [Class] ClassWithDestructor +# 2252| ValueCategory = lvalue +# 2252| getImplicitDestructorCall(1): [DestructorCall] call to ~ClassWithDestructor +# 2252| Type = [VoidType] void +# 2252| ValueCategory = prvalue +# 2252| getQualifier(): [VariableAccess] a +# 2252| Type = [Class] ClassWithDestructor +# 2252| ValueCategory = lvalue +# 2254| [GlobalVariable] ClassWithDestructor global_class_with_destructor +# 2254| getInitializer(): [Initializer] initializer for global_class_with_destructor +# 2254| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2254| Type = [VoidType] void +# 2254| ValueCategory = prvalue +# 2258| [FunctionTemplateInstantiation,TopLevelFunction] ClassWithDestructor& vacuous_destructor_call::get(ClassWithDestructor&) +# 2258| : +# 2258| getParameter(0): [Parameter] t +# 2258| Type = [LValueReferenceType] ClassWithDestructor & +# 2258| getEntryPoint(): [BlockStmt] { ... } +# 2258| getStmt(0): [ReturnStmt] return ... +# 2258| getExpr(): [VariableAccess] t +# 2258| Type = [LValueReferenceType] ClassWithDestructor & +# 2258| ValueCategory = prvalue(load) +# 2258| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 2258| Type = [LValueReferenceType] ClassWithDestructor & +# 2258| ValueCategory = prvalue +# 2258| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 2258| Type = [Class] ClassWithDestructor +# 2258| ValueCategory = lvalue +# 2258| [TemplateFunction,TopLevelFunction] T& vacuous_destructor_call::get(T&) +# 2258| : +# 2258| getParameter(0): [Parameter] t +# 2258| Type = [LValueReferenceType] T & +# 2258| getEntryPoint(): [BlockStmt] { ... } +# 2258| getStmt(0): [ReturnStmt] return ... +# 2258| getExpr(): [VariableAccess] t +# 2258| Type = [LValueReferenceType] T & +# 2258| ValueCategory = prvalue(load) +# 2258| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2258| Type = [TypeTemplateParameter] T +# 2258| ValueCategory = lvalue +# 2258| [FunctionTemplateInstantiation,TopLevelFunction] int& vacuous_destructor_call::get(int&) +# 2258| : +# 2258| getParameter(0): [Parameter] t +# 2258| Type = [LValueReferenceType] int & +# 2258| getEntryPoint(): [BlockStmt] { ... } +# 2258| getStmt(0): [ReturnStmt] return ... +# 2258| getExpr(): [VariableAccess] t +# 2258| Type = [LValueReferenceType] int & +# 2258| ValueCategory = prvalue(load) +# 2258| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 2258| Type = [LValueReferenceType] int & +# 2258| ValueCategory = prvalue +# 2258| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 2258| Type = [IntType] int +# 2258| ValueCategory = lvalue +# 2261| [FunctionTemplateInstantiation,TopLevelFunction] void vacuous_destructor_call::call_destructor(ClassWithDestructor&) +# 2261| : +# 2261| getParameter(0): [Parameter] t +# 2261| Type = [LValueReferenceType] ClassWithDestructor & +# 2261| getEntryPoint(): [BlockStmt] { ... } +# 2262| getStmt(0): [ExprStmt] ExprStmt +# 2262| getExpr(): [DestructorCall] call to ~ClassWithDestructor +# 2262| Type = [VoidType] void +# 2262| ValueCategory = prvalue +# 2262| getQualifier(): [FunctionCall] call to get +# 2262| Type = [LValueReferenceType] ClassWithDestructor & +# 2262| ValueCategory = prvalue +# 2262| getArgument(0): [VariableAccess] t +# 2262| Type = [LValueReferenceType] ClassWithDestructor & +# 2262| ValueCategory = prvalue(load) +# 2262| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 2262| Type = [LValueReferenceType] ClassWithDestructor & +# 2262| ValueCategory = prvalue +# 2262| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 2262| Type = [Class] ClassWithDestructor +# 2262| ValueCategory = lvalue +# 2262| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2262| Type = [Class] ClassWithDestructor +# 2262| ValueCategory = lvalue +# 2263| getStmt(1): [ReturnStmt] return ... +# 2261| [TemplateFunction,TopLevelFunction] void vacuous_destructor_call::call_destructor(T&) +# 2261| : +# 2261| getParameter(0): [Parameter] t +# 2261| Type = [LValueReferenceType] T & +# 2261| getEntryPoint(): [BlockStmt] { ... } +# 2262| getStmt(0): [ExprStmt] ExprStmt +# 2262| getExpr(): [ExprCall] call to expression +# 2262| Type = [UnknownType] unknown +# 2262| ValueCategory = prvalue +# 2262| getExpr(): [Literal] Unknown literal +# 2262| Type = [UnknownType] unknown +# 2262| ValueCategory = prvalue +# 2262| getChild(-1): [ExprCall] call to expression +# 2262| Type = [UnknownType] unknown +# 2262| ValueCategory = prvalue +# 2262| getExpr(): [Literal] Unknown literal +# 2262| Type = [UnknownType] unknown +# 2262| ValueCategory = prvalue +# 2262| getArgument(0): [VariableAccess] t +# 2262| Type = [LValueReferenceType] T & +# 2262| ValueCategory = prvalue(load) +# 2262| getArgument(0).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2262| Type = [TypeTemplateParameter] T +# 2262| ValueCategory = lvalue +# 2263| getStmt(1): [ReturnStmt] return ... +# 2261| [FunctionTemplateInstantiation,TopLevelFunction] void vacuous_destructor_call::call_destructor(int&) +# 2261| : +# 2261| getParameter(0): [Parameter] t +# 2261| Type = [LValueReferenceType] int & +# 2261| getEntryPoint(): [BlockStmt] { ... } +# 2262| getStmt(0): [ExprStmt] ExprStmt +# 2262| getExpr(): [VacuousDestructorCall] (vacuous destructor call) +# 2262| Type = [VoidType] void +# 2262| ValueCategory = prvalue +# 2262| getChild(0): [FunctionCall] call to get +# 2262| Type = [LValueReferenceType] int & +# 2262| ValueCategory = prvalue +# 2262| getArgument(0): [VariableAccess] t +# 2262| Type = [LValueReferenceType] int & +# 2262| ValueCategory = prvalue(load) +# 2262| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 2262| Type = [LValueReferenceType] int & +# 2262| ValueCategory = prvalue +# 2262| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 2262| Type = [IntType] int +# 2262| ValueCategory = lvalue +# 2262| getChild(0).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2262| Type = [IntType] int +# 2262| ValueCategory = lvalue +# 2263| getStmt(1): [ReturnStmt] return ... +# 2265| [TopLevelFunction] void vacuous_destructor_call::non_vacuous_destructor_call() +# 2265| : +# 2265| getEntryPoint(): [BlockStmt] { ... } +# 2266| getStmt(0): [DeclStmt] declaration +# 2266| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c +# 2266| Type = [Class] ClassWithDestructor +# 2266| getVariable().getInitializer(): [Initializer] initializer for c +# 2266| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2266| Type = [VoidType] void +# 2266| ValueCategory = prvalue +# 2267| getStmt(1): [ExprStmt] ExprStmt +# 2267| getExpr(): [FunctionCall] call to call_destructor +# 2267| Type = [VoidType] void +# 2267| ValueCategory = prvalue +# 2267| getArgument(0): [VariableAccess] c +# 2267| Type = [Class] ClassWithDestructor +# 2267| ValueCategory = lvalue +# 2267| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 2267| Type = [LValueReferenceType] ClassWithDestructor & +# 2267| ValueCategory = prvalue +# 2268| getStmt(2): [ReturnStmt] return ... +# 2268| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2268| Type = [VoidType] void +# 2268| ValueCategory = prvalue +# 2268| getQualifier(): [VariableAccess] c +# 2268| Type = [Class] ClassWithDestructor +# 2268| ValueCategory = lvalue +# 2270| [TopLevelFunction] void vacuous_destructor_call::vacuous_destructor_call() +# 2270| : +# 2270| getEntryPoint(): [BlockStmt] { ... } +# 2271| getStmt(0): [DeclStmt] declaration +# 2271| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i +# 2271| Type = [IntType] int +# 2272| getStmt(1): [ExprStmt] ExprStmt +# 2272| getExpr(): [FunctionCall] call to call_destructor +# 2272| Type = [VoidType] void +# 2272| ValueCategory = prvalue +# 2272| getArgument(0): [VariableAccess] i +# 2272| Type = [IntType] int +# 2272| ValueCategory = lvalue +# 2272| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 2272| Type = [LValueReferenceType] int & +# 2272| ValueCategory = prvalue +# 2273| getStmt(2): [ReturnStmt] return ... +# 2276| [TopLevelFunction] void TryCatchDestructors(bool) +# 2276| : +# 2276| getParameter(0): [Parameter] b +# 2276| Type = [BoolType] bool +# 2276| getEntryPoint(): [BlockStmt] { ... } +# 2277| getStmt(0): [TryStmt] try { ... } +# 2277| getStmt(): [BlockStmt] { ... } +# 2278| getStmt(0): [DeclStmt] declaration +# 2278| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s +# 2278| Type = [Struct] String +# 2278| getVariable().getInitializer(): [Initializer] initializer for s +# 2278| getExpr(): [ConstructorCall] call to String +# 2278| Type = [VoidType] void # 2278| ValueCategory = prvalue -# 2278| getExpr(): string literal -# 2278| Type = [ArrayType] const char[15] -# 2278| Value = [StringLiteral] "string literal" -# 2278| ValueCategory = lvalue -# 2281| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2281| Type = [VoidType] void -# 2281| ValueCategory = prvalue -# 2281| getQualifier(): [VariableAccess] s -# 2281| Type = [Struct] String -# 2281| ValueCategory = lvalue -# 2278| getExpr().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 2278| Type = [PointerType] const char * -# 2278| ValueCategory = prvalue -# 2280| getStmt(2): [DeclStmt] declaration -# 2280| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s2 -# 2280| Type = [Struct] String -# 2280| getVariable().getInitializer(): [Initializer] initializer for s2 -# 2280| getExpr(): [ConstructorCall] call to String -# 2280| Type = [VoidType] void +# 2279| getStmt(1): [IfStmt] if (...) ... +# 2279| getCondition(): [VariableAccess] b +# 2279| Type = [BoolType] bool +# 2279| ValueCategory = prvalue(load) +# 2279| getThen(): [BlockStmt] { ... } +# 2280| getStmt(0): [ExprStmt] ExprStmt +# 2280| getExpr(): [ThrowExpr] throw ... +# 2280| Type = [PointerType] const char * # 2280| ValueCategory = prvalue -# 2281| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2281| Type = [VoidType] void -# 2281| ValueCategory = prvalue -# 2281| getQualifier(): [VariableAccess] s2 -# 2281| Type = [Struct] String -# 2281| ValueCategory = lvalue -# 2281| getImplicitDestructorCall(1): [DestructorCall] call to ~String -# 2281| Type = [VoidType] void -# 2281| ValueCategory = prvalue -# 2281| getQualifier(): [VariableAccess] s -# 2281| Type = [Struct] String -# 2281| ValueCategory = lvalue -# 2282| getChild(1): [Handler] -# 2282| getParameter(): [Parameter] s -# 2282| Type = [PointerType] const char * -# 2282| getBlock(): [CatchBlock] { ... } -# 2283| getStmt(0): [ExprStmt] ExprStmt -# 2283| getExpr(): [ThrowExpr] throw ... -# 2283| Type = [Struct] String -# 2283| ValueCategory = prvalue -# 2283| getExpr(): [ConstructorCall] call to String -# 2283| Type = [VoidType] void -# 2283| ValueCategory = prvalue -# 2283| getArgument(0): [VariableAccess] s -# 2283| Type = [PointerType] const char * -# 2283| ValueCategory = prvalue(load) -# 2285| getChild(2): [Handler] -# 2285| getParameter(): [Parameter] e -# 2285| Type = [LValueReferenceType] const String & -# 2285| getBlock(): [CatchBlock] { ... } -# 2287| getChild(3): [Handler] -# 2287| getBlock(): [CatchAnyBlock] { ... } -# 2288| getStmt(0): [ExprStmt] ExprStmt -# 2288| getExpr(): [ReThrowExpr] re-throw exception -# 2288| Type = [VoidType] void -# 2288| ValueCategory = prvalue -# 2290| getStmt(1): [ReturnStmt] return ... -# 2292| [TopLevelFunction] void IfDestructors(bool) -# 2292| : -# 2292| getParameter(0): [Parameter] b -# 2292| Type = [BoolType] bool -# 2292| getEntryPoint(): [BlockStmt] { ... } -# 2293| getStmt(0): [DeclStmt] declaration -# 2293| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s1 -# 2293| Type = [Struct] String -# 2293| getVariable().getInitializer(): [Initializer] initializer for s1 -# 2293| getExpr(): [ConstructorCall] call to String -# 2293| Type = [VoidType] void -# 2293| ValueCategory = prvalue -# 2294| getStmt(1): [IfStmt] if (...) ... -# 2294| getCondition(): [VariableAccess] b -# 2294| Type = [BoolType] bool -# 2294| ValueCategory = prvalue(load) -# 2294| getThen(): [BlockStmt] { ... } -# 2295| getStmt(0): [DeclStmt] declaration -# 2295| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s2 -# 2295| Type = [Struct] String -# 2295| getVariable().getInitializer(): [Initializer] initializer for s2 -# 2295| getExpr(): [ConstructorCall] call to String -# 2295| Type = [VoidType] void -# 2295| ValueCategory = prvalue -# 2296| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2296| Type = [VoidType] void -# 2296| ValueCategory = prvalue -# 2296| getQualifier(): [VariableAccess] s2 -# 2296| Type = [Struct] String -# 2296| ValueCategory = lvalue -# 2296| getElse(): [BlockStmt] { ... } +# 2280| getExpr(): string literal +# 2280| Type = [ArrayType] const char[15] +# 2280| Value = [StringLiteral] "string literal" +# 2280| ValueCategory = lvalue +# 2283| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2283| Type = [VoidType] void +# 2283| ValueCategory = prvalue +# 2283| getQualifier(): [VariableAccess] s +# 2283| Type = [Struct] String +# 2283| ValueCategory = lvalue +# 2280| getExpr().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 2280| Type = [PointerType] const char * +# 2280| ValueCategory = prvalue +# 2282| getStmt(2): [DeclStmt] declaration +# 2282| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s2 +# 2282| Type = [Struct] String +# 2282| getVariable().getInitializer(): [Initializer] initializer for s2 +# 2282| getExpr(): [ConstructorCall] call to String +# 2282| Type = [VoidType] void +# 2282| ValueCategory = prvalue +# 2283| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2283| Type = [VoidType] void +# 2283| ValueCategory = prvalue +# 2283| getQualifier(): [VariableAccess] s2 +# 2283| Type = [Struct] String +# 2283| ValueCategory = lvalue +# 2283| getImplicitDestructorCall(1): [DestructorCall] call to ~String +# 2283| Type = [VoidType] void +# 2283| ValueCategory = prvalue +# 2283| getQualifier(): [VariableAccess] s +# 2283| Type = [Struct] String +# 2283| ValueCategory = lvalue +# 2284| getChild(1): [Handler] +# 2284| getParameter(): [Parameter] s +# 2284| Type = [PointerType] const char * +# 2284| getBlock(): [CatchBlock] { ... } +# 2285| getStmt(0): [ExprStmt] ExprStmt +# 2285| getExpr(): [ThrowExpr] throw ... +# 2285| Type = [Struct] String +# 2285| ValueCategory = prvalue +# 2285| getExpr(): [ConstructorCall] call to String +# 2285| Type = [VoidType] void +# 2285| ValueCategory = prvalue +# 2285| getArgument(0): [VariableAccess] s +# 2285| Type = [PointerType] const char * +# 2285| ValueCategory = prvalue(load) +# 2287| getChild(2): [Handler] +# 2287| getParameter(): [Parameter] e +# 2287| Type = [LValueReferenceType] const String & +# 2287| getBlock(): [CatchBlock] { ... } +# 2289| getChild(3): [Handler] +# 2289| getBlock(): [CatchAnyBlock] { ... } +# 2290| getStmt(0): [ExprStmt] ExprStmt +# 2290| getExpr(): [ReThrowExpr] re-throw exception +# 2290| Type = [VoidType] void +# 2290| ValueCategory = prvalue +# 2292| getStmt(1): [ReturnStmt] return ... +# 2294| [TopLevelFunction] void IfDestructors(bool) +# 2294| : +# 2294| getParameter(0): [Parameter] b +# 2294| Type = [BoolType] bool +# 2294| getEntryPoint(): [BlockStmt] { ... } +# 2295| getStmt(0): [DeclStmt] declaration +# 2295| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s1 +# 2295| Type = [Struct] String +# 2295| getVariable().getInitializer(): [Initializer] initializer for s1 +# 2295| getExpr(): [ConstructorCall] call to String +# 2295| Type = [VoidType] void +# 2295| ValueCategory = prvalue +# 2296| getStmt(1): [IfStmt] if (...) ... +# 2296| getCondition(): [VariableAccess] b +# 2296| Type = [BoolType] bool +# 2296| ValueCategory = prvalue(load) +# 2296| getThen(): [BlockStmt] { ... } # 2297| getStmt(0): [DeclStmt] declaration -# 2297| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s3 +# 2297| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s2 # 2297| Type = [Struct] String -# 2297| getVariable().getInitializer(): [Initializer] initializer for s3 +# 2297| getVariable().getInitializer(): [Initializer] initializer for s2 # 2297| getExpr(): [ConstructorCall] call to String # 2297| Type = [VoidType] void # 2297| ValueCategory = prvalue # 2298| getImplicitDestructorCall(0): [DestructorCall] call to ~String # 2298| Type = [VoidType] void # 2298| ValueCategory = prvalue -# 2298| getQualifier(): [VariableAccess] s3 +# 2298| getQualifier(): [VariableAccess] s2 # 2298| Type = [Struct] String # 2298| ValueCategory = lvalue -# 2299| getStmt(2): [DeclStmt] declaration -# 2299| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s4 -# 2299| Type = [Struct] String -# 2299| getVariable().getInitializer(): [Initializer] initializer for s4 -# 2299| getExpr(): [ConstructorCall] call to String -# 2299| Type = [VoidType] void -# 2299| ValueCategory = prvalue -# 2300| getStmt(3): [ReturnStmt] return ... -# 2300| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2300| Type = [VoidType] void -# 2300| ValueCategory = prvalue -# 2300| getQualifier(): [VariableAccess] s4 -# 2300| Type = [Struct] String -# 2300| ValueCategory = lvalue -# 2300| getImplicitDestructorCall(1): [DestructorCall] call to ~String -# 2300| Type = [VoidType] void -# 2300| ValueCategory = prvalue -# 2300| getQualifier(): [VariableAccess] s1 -# 2300| Type = [Struct] String -# 2300| ValueCategory = lvalue -# 2302| [TopLevelFunction] void ForDestructors() -# 2302| : -# 2302| getEntryPoint(): [BlockStmt] { ... } -# 2303| getStmt(0): [DeclStmt] declaration -# 2303| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c -# 2303| Type = [PlainCharType] char -# 2303| getVariable().getInitializer(): [Initializer] initializer for c -# 2303| getExpr(): [CharLiteral] 97 -# 2303| Type = [PlainCharType] char -# 2303| Value = [CharLiteral] 97 -# 2303| ValueCategory = prvalue -# 2304| getStmt(1): [ForStmt] for(...;...;...) ... -# 2304| getInitialization(): [DeclStmt] declaration -# 2304| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s -# 2304| Type = [Struct] String -# 2304| getVariable().getInitializer(): [Initializer] initializer for s -# 2304| getExpr(): [ConstructorCall] call to String -# 2304| Type = [VoidType] void -# 2304| ValueCategory = prvalue -# 2304| getArgument(0): hello -# 2304| Type = [ArrayType] const char[6] -# 2304| Value = [StringLiteral] "hello" -# 2304| ValueCategory = lvalue -# 2304| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 2304| Type = [PointerType] const char * -# 2304| ValueCategory = prvalue -# 2304| getCondition(): [NEExpr] ... != ... -# 2304| Type = [BoolType] bool -# 2304| ValueCategory = prvalue -# 2304| getLeftOperand(): [VariableAccess] c -# 2304| Type = [PlainCharType] char -# 2304| ValueCategory = prvalue(load) -# 2304| getRightOperand(): [Literal] 0 -# 2304| Type = [IntType] int -# 2304| Value = [Literal] 0 -# 2304| ValueCategory = prvalue -# 2304| getLeftOperand().getFullyConverted(): [CStyleCast] (int)... -# 2304| Conversion = [IntegralConversion] integral conversion -# 2304| Type = [IntType] int -# 2304| ValueCategory = prvalue -# 2304| getUpdate(): [AssignExpr] ... = ... -# 2304| Type = [PlainCharType] char -# 2304| ValueCategory = lvalue -# 2304| getLValue(): [VariableAccess] c -# 2304| Type = [PlainCharType] char -# 2304| ValueCategory = lvalue -# 2304| getRValue(): [FunctionCall] call to pop_back -# 2304| Type = [PlainCharType] char -# 2304| ValueCategory = prvalue -# 2304| getQualifier(): [VariableAccess] s -# 2304| Type = [Struct] String -# 2304| ValueCategory = lvalue -# 2304| getStmt(): [BlockStmt] { ... } -# 2305| getStmt(0): [DeclStmt] declaration -# 2305| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s2 -# 2305| Type = [Struct] String -# 2305| getVariable().getInitializer(): [Initializer] initializer for s2 -# 2305| getExpr(): [ConstructorCall] call to String -# 2305| Type = [VoidType] void -# 2305| ValueCategory = prvalue -# 2306| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2306| Type = [VoidType] void +# 2298| getElse(): [BlockStmt] { ... } +# 2299| getStmt(0): [DeclStmt] declaration +# 2299| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s3 +# 2299| Type = [Struct] String +# 2299| getVariable().getInitializer(): [Initializer] initializer for s3 +# 2299| getExpr(): [ConstructorCall] call to String +# 2299| Type = [VoidType] void +# 2299| ValueCategory = prvalue +# 2300| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2300| Type = [VoidType] void +# 2300| ValueCategory = prvalue +# 2300| getQualifier(): [VariableAccess] s3 +# 2300| Type = [Struct] String +# 2300| ValueCategory = lvalue +# 2301| getStmt(2): [DeclStmt] declaration +# 2301| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s4 +# 2301| Type = [Struct] String +# 2301| getVariable().getInitializer(): [Initializer] initializer for s4 +# 2301| getExpr(): [ConstructorCall] call to String +# 2301| Type = [VoidType] void +# 2301| ValueCategory = prvalue +# 2302| getStmt(3): [ReturnStmt] return ... +# 2302| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2302| Type = [VoidType] void +# 2302| ValueCategory = prvalue +# 2302| getQualifier(): [VariableAccess] s4 +# 2302| Type = [Struct] String +# 2302| ValueCategory = lvalue +# 2302| getImplicitDestructorCall(1): [DestructorCall] call to ~String +# 2302| Type = [VoidType] void +# 2302| ValueCategory = prvalue +# 2302| getQualifier(): [VariableAccess] s1 +# 2302| Type = [Struct] String +# 2302| ValueCategory = lvalue +# 2304| [TopLevelFunction] void ForDestructors() +# 2304| : +# 2304| getEntryPoint(): [BlockStmt] { ... } +# 2305| getStmt(0): [DeclStmt] declaration +# 2305| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c +# 2305| Type = [PlainCharType] char +# 2305| getVariable().getInitializer(): [Initializer] initializer for c +# 2305| getExpr(): [CharLiteral] 97 +# 2305| Type = [PlainCharType] char +# 2305| Value = [CharLiteral] 97 +# 2305| ValueCategory = prvalue +# 2306| getStmt(1): [ForStmt] for(...;...;...) ... +# 2306| getInitialization(): [DeclStmt] declaration +# 2306| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s +# 2306| Type = [Struct] String +# 2306| getVariable().getInitializer(): [Initializer] initializer for s +# 2306| getExpr(): [ConstructorCall] call to String +# 2306| Type = [VoidType] void +# 2306| ValueCategory = prvalue +# 2306| getArgument(0): hello +# 2306| Type = [ArrayType] const char[6] +# 2306| Value = [StringLiteral] "hello" +# 2306| ValueCategory = lvalue +# 2306| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 2306| Type = [PointerType] const char * +# 2306| ValueCategory = prvalue +# 2306| getCondition(): [NEExpr] ... != ... +# 2306| Type = [BoolType] bool +# 2306| ValueCategory = prvalue +# 2306| getLeftOperand(): [VariableAccess] c +# 2306| Type = [PlainCharType] char +# 2306| ValueCategory = prvalue(load) +# 2306| getRightOperand(): [Literal] 0 +# 2306| Type = [IntType] int +# 2306| Value = [Literal] 0 # 2306| ValueCategory = prvalue -# 2306| getQualifier(): [VariableAccess] s2 +# 2306| getLeftOperand().getFullyConverted(): [CStyleCast] (int)... +# 2306| Conversion = [IntegralConversion] integral conversion +# 2306| Type = [IntType] int +# 2306| ValueCategory = prvalue +# 2306| getUpdate(): [AssignExpr] ... = ... +# 2306| Type = [PlainCharType] char +# 2306| ValueCategory = lvalue +# 2306| getLValue(): [VariableAccess] c +# 2306| Type = [PlainCharType] char +# 2306| ValueCategory = lvalue +# 2306| getRValue(): [FunctionCall] call to pop_back +# 2306| Type = [PlainCharType] char +# 2306| ValueCategory = prvalue +# 2306| getQualifier(): [VariableAccess] s # 2306| Type = [Struct] String # 2306| ValueCategory = lvalue -# 2304| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2304| Type = [VoidType] void -# 2304| ValueCategory = prvalue -# 2304| getQualifier(): [VariableAccess] s -# 2304| Type = [Struct] String -# 2304| ValueCategory = lvalue -# 2308| getStmt(2): [RangeBasedForStmt] for(...:...) ... -# 2308| getChild(1): [DeclStmt] declaration -# 2308| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__range) -# 2308| Type = [RValueReferenceType] vector && -#-----| getVariable().getInitializer(): [Initializer] initializer for (__range) -# 2308| getExpr(): [ConstructorCall] call to vector -# 2308| Type = [VoidType] void -# 2308| ValueCategory = prvalue -# 2308| getArgument(0): [ConstructorCall] call to String -# 2308| Type = [VoidType] void -# 2308| ValueCategory = prvalue -# 2308| getArgument(0): hello -# 2308| Type = [ArrayType] const char[6] -# 2308| Value = [StringLiteral] "hello" -# 2308| ValueCategory = lvalue -# 2308| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 2308| Type = [PointerType] const char * -# 2308| ValueCategory = prvalue -# 2308| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2308| Type = [Struct] String -# 2308| ValueCategory = lvalue -# 2308| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 2308| Type = [LValueReferenceType] vector & -# 2308| ValueCategory = prvalue -# 2308| getExpr(): [TemporaryObjectExpr] temporary object -# 2308| Type = [ClassTemplateInstantiation,Struct] vector -# 2308| ValueCategory = xvalue -# 2308| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2308| Type = [VoidType] void -# 2308| ValueCategory = prvalue -# 2308| getQualifier(): [ReuseExpr] reuse of temporary object -# 2308| Type = [Struct] String -# 2308| ValueCategory = xvalue -# 2308| getBeginEndDeclaration(): [DeclStmt] declaration -# 2308| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__begin) -# 2308| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -#-----| getVariable().getInitializer(): [Initializer] initializer for (__begin) -# 2308| getExpr(): [FunctionCall] call to begin -# 2308| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2308| ValueCategory = prvalue -# 2308| getQualifier(): [VariableAccess] (__range) -# 2308| Type = [RValueReferenceType] vector && -# 2308| ValueCategory = prvalue(load) -#-----| getQualifier().getFullyConverted(): [CStyleCast] (const vector)... -#-----| Conversion = [GlvalueConversion] glvalue conversion -#-----| Type = [SpecifiedType] const vector -#-----| ValueCategory = lvalue -#-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -#-----| Type = [ClassTemplateInstantiation,Struct] vector -#-----| ValueCategory = lvalue -# 2308| getDeclarationEntry(1): [VariableDeclarationEntry] declaration of (__end) -# 2308| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -#-----| getVariable().getInitializer(): [Initializer] initializer for (__end) -# 2308| getExpr(): [FunctionCall] call to end -# 2308| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2308| ValueCategory = prvalue -# 2308| getQualifier(): [VariableAccess] (__range) -# 2308| Type = [RValueReferenceType] vector && -# 2308| ValueCategory = prvalue(load) -#-----| getQualifier().getFullyConverted(): [CStyleCast] (const vector)... -#-----| Conversion = [GlvalueConversion] glvalue conversion -#-----| Type = [SpecifiedType] const vector -#-----| ValueCategory = lvalue -#-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -#-----| Type = [ClassTemplateInstantiation,Struct] vector -#-----| ValueCategory = lvalue -# 2308| getCondition(): [FunctionCall] call to operator!= -# 2308| Type = [BoolType] bool -# 2308| ValueCategory = prvalue -# 2308| getQualifier(): [VariableAccess] (__begin) -# 2308| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2308| ValueCategory = lvalue -# 2308| getArgument(0): [ConstructorCall] call to iterator +# 2306| getStmt(): [BlockStmt] { ... } +# 2307| getStmt(0): [DeclStmt] declaration +# 2307| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s2 +# 2307| Type = [Struct] String +# 2307| getVariable().getInitializer(): [Initializer] initializer for s2 +# 2307| getExpr(): [ConstructorCall] call to String +# 2307| Type = [VoidType] void +# 2307| ValueCategory = prvalue +# 2308| getImplicitDestructorCall(0): [DestructorCall] call to ~String # 2308| Type = [VoidType] void # 2308| ValueCategory = prvalue -# 2308| getArgument(0): [VariableAccess] (__end) -# 2308| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2308| getQualifier(): [VariableAccess] s2 +# 2308| Type = [Struct] String # 2308| ValueCategory = lvalue +# 2306| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2306| Type = [VoidType] void +# 2306| ValueCategory = prvalue +# 2306| getQualifier(): [VariableAccess] s +# 2306| Type = [Struct] String +# 2306| ValueCategory = lvalue +# 2310| getStmt(2): [RangeBasedForStmt] for(...:...) ... +# 2310| getChild(1): [DeclStmt] declaration +# 2310| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__range) +# 2310| Type = [RValueReferenceType] vector && +#-----| getVariable().getInitializer(): [Initializer] initializer for (__range) +# 2310| getExpr(): [ConstructorCall] call to vector +# 2310| Type = [VoidType] void +# 2310| ValueCategory = prvalue +# 2310| getArgument(0): [ConstructorCall] call to String +# 2310| Type = [VoidType] void +# 2310| ValueCategory = prvalue +# 2310| getArgument(0): hello +# 2310| Type = [ArrayType] const char[6] +# 2310| Value = [StringLiteral] "hello" +# 2310| ValueCategory = lvalue +# 2310| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 2310| Type = [PointerType] const char * +# 2310| ValueCategory = prvalue +# 2310| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2310| Type = [Struct] String +# 2310| ValueCategory = lvalue +# 2310| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 2310| Type = [LValueReferenceType] vector & +# 2310| ValueCategory = prvalue +# 2310| getExpr(): [TemporaryObjectExpr] temporary object +# 2310| Type = [ClassTemplateInstantiation,Struct] vector +# 2310| ValueCategory = xvalue +# 2310| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2310| Type = [VoidType] void +# 2310| ValueCategory = prvalue +# 2310| getQualifier(): [ReuseExpr] reuse of temporary object +# 2310| Type = [Struct] String +# 2310| ValueCategory = xvalue +# 2310| getBeginEndDeclaration(): [DeclStmt] declaration +# 2310| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__begin) +# 2310| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +#-----| getVariable().getInitializer(): [Initializer] initializer for (__begin) +# 2310| getExpr(): [FunctionCall] call to begin +# 2310| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2310| ValueCategory = prvalue +# 2310| getQualifier(): [VariableAccess] (__range) +# 2310| Type = [RValueReferenceType] vector && +# 2310| ValueCategory = prvalue(load) +#-----| getQualifier().getFullyConverted(): [CStyleCast] (const vector)... +#-----| Conversion = [GlvalueConversion] glvalue conversion +#-----| Type = [SpecifiedType] const vector +#-----| ValueCategory = lvalue +#-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +#-----| Type = [ClassTemplateInstantiation,Struct] vector +#-----| ValueCategory = lvalue +# 2310| getDeclarationEntry(1): [VariableDeclarationEntry] declaration of (__end) +# 2310| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +#-----| getVariable().getInitializer(): [Initializer] initializer for (__end) +# 2310| getExpr(): [FunctionCall] call to end +# 2310| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2310| ValueCategory = prvalue +# 2310| getQualifier(): [VariableAccess] (__range) +# 2310| Type = [RValueReferenceType] vector && +# 2310| ValueCategory = prvalue(load) +#-----| getQualifier().getFullyConverted(): [CStyleCast] (const vector)... +#-----| Conversion = [GlvalueConversion] glvalue conversion +#-----| Type = [SpecifiedType] const vector +#-----| ValueCategory = lvalue +#-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +#-----| Type = [ClassTemplateInstantiation,Struct] vector +#-----| ValueCategory = lvalue +# 2310| getCondition(): [FunctionCall] call to operator!= +# 2310| Type = [BoolType] bool +# 2310| ValueCategory = prvalue +# 2310| getQualifier(): [VariableAccess] (__begin) +# 2310| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2310| ValueCategory = lvalue +# 2310| getArgument(0): [ConstructorCall] call to iterator +# 2310| Type = [VoidType] void +# 2310| ValueCategory = prvalue +# 2310| getArgument(0): [VariableAccess] (__end) +# 2310| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2310| ValueCategory = lvalue #-----| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) #-----| Type = [LValueReferenceType] const iterator & #-----| ValueCategory = prvalue @@ -21193,1497 +21193,1497 @@ ir.cpp: #-----| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object #-----| Type = [ClassTemplateInstantiation,Struct] iterator #-----| ValueCategory = lvalue -# 2308| getUpdate(): [FunctionCall] call to operator++ -# 2308| Type = [LValueReferenceType] iterator & -# 2308| ValueCategory = prvalue -# 2308| getQualifier(): [VariableAccess] (__begin) -# 2308| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2308| ValueCategory = lvalue -# 2308| getChild(5): [DeclStmt] declaration -# 2308| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s -# 2308| Type = [Struct] String -# 2308| getVariable().getInitializer(): [Initializer] initializer for s -# 2308| getExpr(): [ConstructorCall] call to String -# 2308| Type = [VoidType] void -# 2308| ValueCategory = prvalue -# 2308| getArgument(0): [OverloadedPointerDereferenceExpr] call to operator* -# 2308| Type = [LValueReferenceType] String & -# 2308| ValueCategory = prvalue -# 2308| getQualifier(): [VariableAccess] (__begin) -# 2308| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2308| ValueCategory = lvalue +# 2310| getUpdate(): [FunctionCall] call to operator++ +# 2310| Type = [LValueReferenceType] iterator & +# 2310| ValueCategory = prvalue +# 2310| getQualifier(): [VariableAccess] (__begin) +# 2310| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2310| ValueCategory = lvalue +# 2310| getChild(5): [DeclStmt] declaration +# 2310| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s +# 2310| Type = [Struct] String +# 2310| getVariable().getInitializer(): [Initializer] initializer for s +# 2310| getExpr(): [ConstructorCall] call to String +# 2310| Type = [VoidType] void +# 2310| ValueCategory = prvalue +# 2310| getArgument(0): [OverloadedPointerDereferenceExpr] call to operator* +# 2310| Type = [LValueReferenceType] String & +# 2310| ValueCategory = prvalue +# 2310| getQualifier(): [VariableAccess] (__begin) +# 2310| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2310| ValueCategory = lvalue #-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator)... #-----| Conversion = [GlvalueConversion] glvalue conversion #-----| Type = [SpecifiedType] const iterator #-----| ValueCategory = lvalue -# 2308| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 2308| Type = [LValueReferenceType] const String & -# 2308| ValueCategory = prvalue -# 2308| getExpr(): [CStyleCast] (const String)... -# 2308| Conversion = [GlvalueConversion] glvalue conversion -# 2308| Type = [SpecifiedType] const String -# 2308| ValueCategory = lvalue -# 2308| getExpr(): [ReferenceDereferenceExpr] (reference dereference) -# 2308| Type = [Struct] String -# 2308| ValueCategory = lvalue -# 2308| getStmt(): [BlockStmt] { ... } -# 2309| getStmt(0): [DeclStmt] declaration -# 2309| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s2 -# 2309| Type = [Struct] String -# 2309| getVariable().getInitializer(): [Initializer] initializer for s2 -# 2309| getExpr(): [ConstructorCall] call to String -# 2309| Type = [VoidType] void -# 2309| ValueCategory = prvalue +# 2310| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 2310| Type = [LValueReferenceType] const String & +# 2310| ValueCategory = prvalue +# 2310| getExpr(): [CStyleCast] (const String)... +# 2310| Conversion = [GlvalueConversion] glvalue conversion +# 2310| Type = [SpecifiedType] const String +# 2310| ValueCategory = lvalue +# 2310| getExpr(): [ReferenceDereferenceExpr] (reference dereference) +# 2310| Type = [Struct] String +# 2310| ValueCategory = lvalue +# 2310| getStmt(): [BlockStmt] { ... } +# 2311| getStmt(0): [DeclStmt] declaration +# 2311| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s2 +# 2311| Type = [Struct] String +# 2311| getVariable().getInitializer(): [Initializer] initializer for s2 +# 2311| getExpr(): [ConstructorCall] call to String +# 2311| Type = [VoidType] void +# 2311| ValueCategory = prvalue +# 2312| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2312| Type = [VoidType] void +# 2312| ValueCategory = prvalue +# 2312| getQualifier(): [VariableAccess] s2 +# 2312| Type = [Struct] String +# 2312| ValueCategory = lvalue +# 2310| getImplicitDestructorCall(0): [DestructorCall] call to ~vector +# 2310| Type = [VoidType] void +# 2310| ValueCategory = prvalue +# 2310| getQualifier(): [ReuseExpr] reuse of temporary object +# 2310| Type = [ClassTemplateInstantiation,Struct] vector +# 2310| ValueCategory = xvalue +# 2310| getUpdate().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2310| Type = [ClassTemplateInstantiation,Struct] iterator +# 2310| ValueCategory = lvalue # 2310| getImplicitDestructorCall(0): [DestructorCall] call to ~String # 2310| Type = [VoidType] void # 2310| ValueCategory = prvalue -# 2310| getQualifier(): [VariableAccess] s2 +# 2310| getQualifier(): [VariableAccess] s # 2310| Type = [Struct] String # 2310| ValueCategory = lvalue -# 2308| getImplicitDestructorCall(0): [DestructorCall] call to ~vector -# 2308| Type = [VoidType] void -# 2308| ValueCategory = prvalue -# 2308| getQualifier(): [ReuseExpr] reuse of temporary object -# 2308| Type = [ClassTemplateInstantiation,Struct] vector -# 2308| ValueCategory = xvalue -# 2308| getUpdate().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2308| Type = [ClassTemplateInstantiation,Struct] iterator -# 2308| ValueCategory = lvalue -# 2308| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2308| Type = [VoidType] void -# 2308| ValueCategory = prvalue -# 2308| getQualifier(): [VariableAccess] s -# 2308| Type = [Struct] String -# 2308| ValueCategory = lvalue -# 2312| getStmt(3): [ForStmt] for(...;...;...) ... -# 2312| getInitialization(): [DeclStmt] declaration -# 2312| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s -# 2312| Type = [Struct] String -# 2312| getVariable().getInitializer(): [Initializer] initializer for s -# 2312| getExpr(): [ConstructorCall] call to String -# 2312| Type = [VoidType] void -# 2312| ValueCategory = prvalue -# 2312| getArgument(0): hello -# 2312| Type = [ArrayType] const char[6] -# 2312| Value = [StringLiteral] "hello" -# 2312| ValueCategory = lvalue -# 2312| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 2312| Type = [PointerType] const char * -# 2312| ValueCategory = prvalue -# 2312| getDeclarationEntry(1): [VariableDeclarationEntry] definition of s2 -# 2312| Type = [Struct] String -# 2312| getVariable().getInitializer(): [Initializer] initializer for s2 -# 2312| getExpr(): [ConstructorCall] call to String -# 2312| Type = [VoidType] void -# 2312| ValueCategory = prvalue -# 2312| getArgument(0): world -# 2312| Type = [ArrayType] const char[6] -# 2312| Value = [StringLiteral] "world" -# 2312| ValueCategory = lvalue -# 2312| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 2312| Type = [PointerType] const char * -# 2312| ValueCategory = prvalue -# 2312| getCondition(): [NEExpr] ... != ... -# 2312| Type = [BoolType] bool -# 2312| ValueCategory = prvalue -# 2312| getLeftOperand(): [VariableAccess] c -# 2312| Type = [PlainCharType] char -# 2312| ValueCategory = prvalue(load) -# 2312| getRightOperand(): [Literal] 0 -# 2312| Type = [IntType] int -# 2312| Value = [Literal] 0 -# 2312| ValueCategory = prvalue -# 2312| getLeftOperand().getFullyConverted(): [CStyleCast] (int)... -# 2312| Conversion = [IntegralConversion] integral conversion -# 2312| Type = [IntType] int -# 2312| ValueCategory = prvalue -# 2312| getUpdate(): [AssignExpr] ... = ... -# 2312| Type = [PlainCharType] char -# 2312| ValueCategory = lvalue -# 2312| getLValue(): [VariableAccess] c -# 2312| Type = [PlainCharType] char -# 2312| ValueCategory = lvalue -# 2312| getRValue(): [FunctionCall] call to pop_back -# 2312| Type = [PlainCharType] char -# 2312| ValueCategory = prvalue -# 2312| getQualifier(): [VariableAccess] s -# 2312| Type = [Struct] String -# 2312| ValueCategory = lvalue -# 2312| getStmt(): [BlockStmt] { ... } -# 2313| getStmt(0): [ExprStmt] ExprStmt -# 2313| getExpr(): [AssignExpr] ... = ... -# 2313| Type = [PlainCharType] char -# 2313| ValueCategory = lvalue -# 2313| getLValue(): [VariableAccess] c -# 2313| Type = [PlainCharType] char -# 2313| ValueCategory = lvalue -# 2313| getRValue(): [Literal] 0 -# 2313| Type = [IntType] int -# 2313| Value = [Literal] 0 -# 2313| ValueCategory = prvalue -# 2313| getRValue().getFullyConverted(): [CStyleCast] (char)... -# 2313| Conversion = [IntegralConversion] integral conversion -# 2313| Type = [PlainCharType] char -# 2313| Value = [CStyleCast] 0 -# 2313| ValueCategory = prvalue -# 2312| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2312| Type = [VoidType] void -# 2312| ValueCategory = prvalue -# 2312| getQualifier(): [VariableAccess] s2 -# 2312| Type = [Struct] String -# 2312| ValueCategory = lvalue -# 2312| getImplicitDestructorCall(1): [DestructorCall] call to ~String -# 2312| Type = [VoidType] void -# 2312| ValueCategory = prvalue -# 2312| getQualifier(): [VariableAccess] s -# 2312| Type = [Struct] String -# 2312| ValueCategory = lvalue -# 2315| getStmt(4): [ReturnStmt] return ... -# 2317| [TopLevelFunction] void IfDestructors2(bool) -# 2317| : -# 2317| getParameter(0): [Parameter] b -# 2317| Type = [BoolType] bool -# 2317| getEntryPoint(): [BlockStmt] { ... } -# 2318| getStmt(0): [IfStmt] if (...) ... -# 2318| getInitialization(): [DeclStmt] declaration -# 2318| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s -# 2318| Type = [Struct] String -# 2318| getVariable().getInitializer(): [Initializer] initializer for s -# 2318| getExpr(): [ConstructorCall] call to String -# 2318| Type = [VoidType] void -# 2318| ValueCategory = prvalue -# 2318| getArgument(0): hello -# 2318| Type = [ArrayType] const char[6] -# 2318| Value = [StringLiteral] "hello" -# 2318| ValueCategory = lvalue -# 2318| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 2318| Type = [PointerType] const char * -# 2318| ValueCategory = prvalue -# 2318| getCondition(): [VariableAccess] b -# 2318| Type = [BoolType] bool -# 2318| ValueCategory = prvalue(load) -# 2318| getThen(): [BlockStmt] { ... } -# 2319| getStmt(0): [DeclStmt] declaration -# 2319| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 2319| Type = [IntType] int -# 2319| getVariable().getInitializer(): [Initializer] initializer for x -# 2319| getExpr(): [Literal] 0 -# 2319| Type = [IntType] int -# 2319| Value = [Literal] 0 -# 2319| ValueCategory = prvalue -# 2320| getElse(): [BlockStmt] { ... } +# 2314| getStmt(3): [ForStmt] for(...;...;...) ... +# 2314| getInitialization(): [DeclStmt] declaration +# 2314| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s +# 2314| Type = [Struct] String +# 2314| getVariable().getInitializer(): [Initializer] initializer for s +# 2314| getExpr(): [ConstructorCall] call to String +# 2314| Type = [VoidType] void +# 2314| ValueCategory = prvalue +# 2314| getArgument(0): hello +# 2314| Type = [ArrayType] const char[6] +# 2314| Value = [StringLiteral] "hello" +# 2314| ValueCategory = lvalue +# 2314| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 2314| Type = [PointerType] const char * +# 2314| ValueCategory = prvalue +# 2314| getDeclarationEntry(1): [VariableDeclarationEntry] definition of s2 +# 2314| Type = [Struct] String +# 2314| getVariable().getInitializer(): [Initializer] initializer for s2 +# 2314| getExpr(): [ConstructorCall] call to String +# 2314| Type = [VoidType] void +# 2314| ValueCategory = prvalue +# 2314| getArgument(0): world +# 2314| Type = [ArrayType] const char[6] +# 2314| Value = [StringLiteral] "world" +# 2314| ValueCategory = lvalue +# 2314| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 2314| Type = [PointerType] const char * +# 2314| ValueCategory = prvalue +# 2314| getCondition(): [NEExpr] ... != ... +# 2314| Type = [BoolType] bool +# 2314| ValueCategory = prvalue +# 2314| getLeftOperand(): [VariableAccess] c +# 2314| Type = [PlainCharType] char +# 2314| ValueCategory = prvalue(load) +# 2314| getRightOperand(): [Literal] 0 +# 2314| Type = [IntType] int +# 2314| Value = [Literal] 0 +# 2314| ValueCategory = prvalue +# 2314| getLeftOperand().getFullyConverted(): [CStyleCast] (int)... +# 2314| Conversion = [IntegralConversion] integral conversion +# 2314| Type = [IntType] int +# 2314| ValueCategory = prvalue +# 2314| getUpdate(): [AssignExpr] ... = ... +# 2314| Type = [PlainCharType] char +# 2314| ValueCategory = lvalue +# 2314| getLValue(): [VariableAccess] c +# 2314| Type = [PlainCharType] char +# 2314| ValueCategory = lvalue +# 2314| getRValue(): [FunctionCall] call to pop_back +# 2314| Type = [PlainCharType] char +# 2314| ValueCategory = prvalue +# 2314| getQualifier(): [VariableAccess] s +# 2314| Type = [Struct] String +# 2314| ValueCategory = lvalue +# 2314| getStmt(): [BlockStmt] { ... } +# 2315| getStmt(0): [ExprStmt] ExprStmt +# 2315| getExpr(): [AssignExpr] ... = ... +# 2315| Type = [PlainCharType] char +# 2315| ValueCategory = lvalue +# 2315| getLValue(): [VariableAccess] c +# 2315| Type = [PlainCharType] char +# 2315| ValueCategory = lvalue +# 2315| getRValue(): [Literal] 0 +# 2315| Type = [IntType] int +# 2315| Value = [Literal] 0 +# 2315| ValueCategory = prvalue +# 2315| getRValue().getFullyConverted(): [CStyleCast] (char)... +# 2315| Conversion = [IntegralConversion] integral conversion +# 2315| Type = [PlainCharType] char +# 2315| Value = [CStyleCast] 0 +# 2315| ValueCategory = prvalue +# 2314| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2314| Type = [VoidType] void +# 2314| ValueCategory = prvalue +# 2314| getQualifier(): [VariableAccess] s2 +# 2314| Type = [Struct] String +# 2314| ValueCategory = lvalue +# 2314| getImplicitDestructorCall(1): [DestructorCall] call to ~String +# 2314| Type = [VoidType] void +# 2314| ValueCategory = prvalue +# 2314| getQualifier(): [VariableAccess] s +# 2314| Type = [Struct] String +# 2314| ValueCategory = lvalue +# 2317| getStmt(4): [ReturnStmt] return ... +# 2319| [TopLevelFunction] void IfDestructors2(bool) +# 2319| : +# 2319| getParameter(0): [Parameter] b +# 2319| Type = [BoolType] bool +# 2319| getEntryPoint(): [BlockStmt] { ... } +# 2320| getStmt(0): [IfStmt] if (...) ... +# 2320| getInitialization(): [DeclStmt] declaration +# 2320| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s +# 2320| Type = [Struct] String +# 2320| getVariable().getInitializer(): [Initializer] initializer for s +# 2320| getExpr(): [ConstructorCall] call to String +# 2320| Type = [VoidType] void +# 2320| ValueCategory = prvalue +# 2320| getArgument(0): hello +# 2320| Type = [ArrayType] const char[6] +# 2320| Value = [StringLiteral] "hello" +# 2320| ValueCategory = lvalue +# 2320| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 2320| Type = [PointerType] const char * +# 2320| ValueCategory = prvalue +# 2320| getCondition(): [VariableAccess] b +# 2320| Type = [BoolType] bool +# 2320| ValueCategory = prvalue(load) +# 2320| getThen(): [BlockStmt] { ... } # 2321| getStmt(0): [DeclStmt] declaration -# 2321| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 2321| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x # 2321| Type = [IntType] int -# 2321| getVariable().getInitializer(): [Initializer] initializer for y +# 2321| getVariable().getInitializer(): [Initializer] initializer for x # 2321| getExpr(): [Literal] 0 # 2321| Type = [IntType] int # 2321| Value = [Literal] 0 # 2321| ValueCategory = prvalue -# 2322| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2322| Type = [VoidType] void -# 2322| ValueCategory = prvalue -# 2322| getQualifier(): [VariableAccess] s -# 2322| Type = [Struct] String -# 2322| ValueCategory = lvalue -# 2323| getStmt(1): [ReturnStmt] return ... -# 2325| [CopyAssignmentOperator] Bool& Bool::operator=(Bool const&) -# 2325| : -#-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const Bool & -# 2325| [CopyConstructor] void Bool::Bool(Bool const&) -# 2325| : -#-----| getParameter(0): [Parameter] (unnamed parameter 0) -#-----| Type = [LValueReferenceType] const Bool & -# 2327| [Constructor] void Bool::Bool(bool) +# 2322| getElse(): [BlockStmt] { ... } +# 2323| getStmt(0): [DeclStmt] declaration +# 2323| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 2323| Type = [IntType] int +# 2323| getVariable().getInitializer(): [Initializer] initializer for y +# 2323| getExpr(): [Literal] 0 +# 2323| Type = [IntType] int +# 2323| Value = [Literal] 0 +# 2323| ValueCategory = prvalue +# 2324| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2324| Type = [VoidType] void +# 2324| ValueCategory = prvalue +# 2324| getQualifier(): [VariableAccess] s +# 2324| Type = [Struct] String +# 2324| ValueCategory = lvalue +# 2325| getStmt(1): [ReturnStmt] return ... +# 2327| [CopyAssignmentOperator] Bool& Bool::operator=(Bool const&) # 2327| : -# 2327| getParameter(0): [Parameter] b_ -# 2327| Type = [BoolType] bool -# 2328| [ConversionOperator] bool Bool::operator bool() -# 2328| : -# 2329| [Destructor] void Bool::~Bool() +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [LValueReferenceType] const Bool & +# 2327| [CopyConstructor] void Bool::Bool(Bool const&) +# 2327| : +#-----| getParameter(0): [Parameter] (unnamed parameter 0) +#-----| Type = [LValueReferenceType] const Bool & +# 2329| [Constructor] void Bool::Bool(bool) # 2329| : -# 2332| [TopLevelFunction] void IfDestructors3(bool) -# 2332| : -# 2332| getParameter(0): [Parameter] b -# 2332| Type = [BoolType] bool -# 2332| getEntryPoint(): [BlockStmt] { ... } -# 2333| getStmt(0): [IfStmt] if (...) ... -# 2333| getCondition(): [ConditionDeclExpr] (condition decl) -# 2333| Type = [BoolType] bool -# 2333| ValueCategory = prvalue -# 2333| getChild(0): [FunctionCall] call to operator bool -# 2333| Type = [BoolType] bool -# 2333| ValueCategory = prvalue -# 2333| getQualifier(): [VariableAccess] B -# 2333| Type = [Class] Bool -# 2333| ValueCategory = prvalue(load) -# 2333| getInitializingExpr(): [ConstructorCall] call to Bool -# 2333| Type = [VoidType] void -# 2333| ValueCategory = prvalue -# 2333| getArgument(0): [VariableAccess] b -# 2333| Type = [BoolType] bool -# 2333| ValueCategory = prvalue(load) -# 2333| getThen(): [BlockStmt] { ... } -# 2334| getStmt(0): [DeclStmt] declaration -# 2334| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s1 -# 2334| Type = [Struct] String -# 2334| getVariable().getInitializer(): [Initializer] initializer for s1 -# 2334| getExpr(): [ConstructorCall] call to String -# 2334| Type = [VoidType] void -# 2334| ValueCategory = prvalue -# 2335| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2329| getParameter(0): [Parameter] b_ +# 2329| Type = [BoolType] bool +# 2330| [ConversionOperator] bool Bool::operator bool() +# 2330| : +# 2331| [Destructor] void Bool::~Bool() +# 2331| : +# 2334| [TopLevelFunction] void IfDestructors3(bool) +# 2334| : +# 2334| getParameter(0): [Parameter] b +# 2334| Type = [BoolType] bool +# 2334| getEntryPoint(): [BlockStmt] { ... } +# 2335| getStmt(0): [IfStmt] if (...) ... +# 2335| getCondition(): [ConditionDeclExpr] (condition decl) +# 2335| Type = [BoolType] bool +# 2335| ValueCategory = prvalue +# 2335| getChild(0): [FunctionCall] call to operator bool +# 2335| Type = [BoolType] bool +# 2335| ValueCategory = prvalue +# 2335| getQualifier(): [VariableAccess] B +# 2335| Type = [Class] Bool +# 2335| ValueCategory = prvalue(load) +# 2335| getInitializingExpr(): [ConstructorCall] call to Bool # 2335| Type = [VoidType] void # 2335| ValueCategory = prvalue -# 2335| getQualifier(): [VariableAccess] s1 -# 2335| Type = [Struct] String -# 2335| ValueCategory = lvalue -# 2335| getElse(): [BlockStmt] { ... } +# 2335| getArgument(0): [VariableAccess] b +# 2335| Type = [BoolType] bool +# 2335| ValueCategory = prvalue(load) +# 2335| getThen(): [BlockStmt] { ... } # 2336| getStmt(0): [DeclStmt] declaration -# 2336| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s2 +# 2336| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s1 # 2336| Type = [Struct] String -# 2336| getVariable().getInitializer(): [Initializer] initializer for s2 +# 2336| getVariable().getInitializer(): [Initializer] initializer for s1 # 2336| getExpr(): [ConstructorCall] call to String # 2336| Type = [VoidType] void # 2336| ValueCategory = prvalue # 2337| getImplicitDestructorCall(0): [DestructorCall] call to ~String # 2337| Type = [VoidType] void # 2337| ValueCategory = prvalue -# 2337| getQualifier(): [VariableAccess] s2 +# 2337| getQualifier(): [VariableAccess] s1 # 2337| Type = [Struct] String # 2337| ValueCategory = lvalue -# 2337| getImplicitDestructorCall(0): [DestructorCall] call to ~Bool -# 2337| Type = [VoidType] void -# 2337| ValueCategory = prvalue -# 2337| getQualifier(): [VariableAccess] B -# 2337| Type = [Class] Bool -# 2337| ValueCategory = lvalue -# 2338| getStmt(1): [ReturnStmt] return ... -# 2340| [TopLevelFunction] void WhileLoopDestructors(bool) -# 2340| : -# 2340| getParameter(0): [Parameter] b -# 2340| Type = [BoolType] bool -# 2340| getEntryPoint(): [BlockStmt] { ... } -# 2341| getStmt(0): [BlockStmt] { ... } -# 2342| getStmt(0): [DeclStmt] declaration -# 2342| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s -# 2342| Type = [Struct] String -# 2342| getVariable().getInitializer(): [Initializer] initializer for s -# 2342| getExpr(): [ConstructorCall] call to String -# 2342| Type = [VoidType] void -# 2342| ValueCategory = prvalue -# 2343| getStmt(1): [WhileStmt] while (...) ... -# 2343| getCondition(): [VariableAccess] b -# 2343| Type = [BoolType] bool -# 2343| ValueCategory = prvalue(load) -# 2343| getStmt(): [BlockStmt] { ... } -# 2344| getStmt(0): [ExprStmt] ExprStmt -# 2344| getExpr(): [AssignExpr] ... = ... -# 2344| Type = [BoolType] bool -# 2344| ValueCategory = lvalue -# 2344| getLValue(): [VariableAccess] b -# 2344| Type = [BoolType] bool -# 2344| ValueCategory = lvalue -# 2344| getRValue(): [Literal] 0 -# 2344| Type = [BoolType] bool -# 2344| Value = [Literal] 0 -# 2344| ValueCategory = prvalue -# 2346| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2346| Type = [VoidType] void -# 2346| ValueCategory = prvalue -# 2346| getQualifier(): [VariableAccess] s -# 2346| Type = [Struct] String -# 2346| ValueCategory = lvalue -# 2348| getStmt(1): [BlockStmt] { ... } -# 2349| getStmt(0): [WhileStmt] while (...) ... -# 2349| getCondition(): [ConditionDeclExpr] (condition decl) -# 2349| Type = [BoolType] bool -# 2349| ValueCategory = prvalue -# 2349| getChild(0): [FunctionCall] call to operator bool -# 2349| Type = [BoolType] bool -# 2349| ValueCategory = prvalue -# 2349| getQualifier(): [VariableAccess] B -# 2349| Type = [Class] Bool -# 2349| ValueCategory = prvalue(load) -# 2349| getInitializingExpr(): [ConstructorCall] call to Bool -# 2349| Type = [VoidType] void -# 2349| ValueCategory = prvalue -# 2349| getArgument(0): [VariableAccess] b -# 2349| Type = [BoolType] bool -# 2349| ValueCategory = prvalue(load) -# 2349| getStmt(): [BlockStmt] { ... } -# 2350| getStmt(0): [ExprStmt] ExprStmt -# 2350| getExpr(): [AssignExpr] ... = ... -# 2350| Type = [BoolType] bool -# 2350| ValueCategory = lvalue -# 2350| getLValue(): [VariableAccess] b -# 2350| Type = [BoolType] bool -# 2350| ValueCategory = lvalue -# 2350| getRValue(): [Literal] 0 -# 2350| Type = [BoolType] bool -# 2350| Value = [Literal] 0 -# 2350| ValueCategory = prvalue -# 2351| getImplicitDestructorCall(0): [DestructorCall] call to ~Bool -# 2351| Type = [VoidType] void +# 2337| getElse(): [BlockStmt] { ... } +# 2338| getStmt(0): [DeclStmt] declaration +# 2338| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s2 +# 2338| Type = [Struct] String +# 2338| getVariable().getInitializer(): [Initializer] initializer for s2 +# 2338| getExpr(): [ConstructorCall] call to String +# 2338| Type = [VoidType] void +# 2338| ValueCategory = prvalue +# 2339| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2339| Type = [VoidType] void +# 2339| ValueCategory = prvalue +# 2339| getQualifier(): [VariableAccess] s2 +# 2339| Type = [Struct] String +# 2339| ValueCategory = lvalue +# 2339| getImplicitDestructorCall(0): [DestructorCall] call to ~Bool +# 2339| Type = [VoidType] void +# 2339| ValueCategory = prvalue +# 2339| getQualifier(): [VariableAccess] B +# 2339| Type = [Class] Bool +# 2339| ValueCategory = lvalue +# 2340| getStmt(1): [ReturnStmt] return ... +# 2342| [TopLevelFunction] void WhileLoopDestructors(bool) +# 2342| : +# 2342| getParameter(0): [Parameter] b +# 2342| Type = [BoolType] bool +# 2342| getEntryPoint(): [BlockStmt] { ... } +# 2343| getStmt(0): [BlockStmt] { ... } +# 2344| getStmt(0): [DeclStmt] declaration +# 2344| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s +# 2344| Type = [Struct] String +# 2344| getVariable().getInitializer(): [Initializer] initializer for s +# 2344| getExpr(): [ConstructorCall] call to String +# 2344| Type = [VoidType] void +# 2344| ValueCategory = prvalue +# 2345| getStmt(1): [WhileStmt] while (...) ... +# 2345| getCondition(): [VariableAccess] b +# 2345| Type = [BoolType] bool +# 2345| ValueCategory = prvalue(load) +# 2345| getStmt(): [BlockStmt] { ... } +# 2346| getStmt(0): [ExprStmt] ExprStmt +# 2346| getExpr(): [AssignExpr] ... = ... +# 2346| Type = [BoolType] bool +# 2346| ValueCategory = lvalue +# 2346| getLValue(): [VariableAccess] b +# 2346| Type = [BoolType] bool +# 2346| ValueCategory = lvalue +# 2346| getRValue(): [Literal] 0 +# 2346| Type = [BoolType] bool +# 2346| Value = [Literal] 0 +# 2346| ValueCategory = prvalue +# 2348| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2348| Type = [VoidType] void +# 2348| ValueCategory = prvalue +# 2348| getQualifier(): [VariableAccess] s +# 2348| Type = [Struct] String +# 2348| ValueCategory = lvalue +# 2350| getStmt(1): [BlockStmt] { ... } +# 2351| getStmt(0): [WhileStmt] while (...) ... +# 2351| getCondition(): [ConditionDeclExpr] (condition decl) +# 2351| Type = [BoolType] bool +# 2351| ValueCategory = prvalue +# 2351| getChild(0): [FunctionCall] call to operator bool +# 2351| Type = [BoolType] bool # 2351| ValueCategory = prvalue # 2351| getQualifier(): [VariableAccess] B # 2351| Type = [Class] Bool -# 2351| ValueCategory = lvalue -# 2351| getImplicitDestructorCall(0): [DestructorCall] call to ~Bool -# 2351| Type = [VoidType] void -# 2351| ValueCategory = prvalue -# 2351| getQualifier(): [VariableAccess] B -# 2351| Type = [Class] Bool -# 2351| ValueCategory = lvalue -# 2353| getStmt(2): [ReturnStmt] return ... -# 2355| [TopLevelFunction] void VoidFunc() -# 2355| : -# 2355| getEntryPoint(): [BlockStmt] { ... } -# 2355| getStmt(0): [ReturnStmt] return ... -# 2357| [TopLevelFunction] void IfReturnDestructors(bool) +# 2351| ValueCategory = prvalue(load) +# 2351| getInitializingExpr(): [ConstructorCall] call to Bool +# 2351| Type = [VoidType] void +# 2351| ValueCategory = prvalue +# 2351| getArgument(0): [VariableAccess] b +# 2351| Type = [BoolType] bool +# 2351| ValueCategory = prvalue(load) +# 2351| getStmt(): [BlockStmt] { ... } +# 2352| getStmt(0): [ExprStmt] ExprStmt +# 2352| getExpr(): [AssignExpr] ... = ... +# 2352| Type = [BoolType] bool +# 2352| ValueCategory = lvalue +# 2352| getLValue(): [VariableAccess] b +# 2352| Type = [BoolType] bool +# 2352| ValueCategory = lvalue +# 2352| getRValue(): [Literal] 0 +# 2352| Type = [BoolType] bool +# 2352| Value = [Literal] 0 +# 2352| ValueCategory = prvalue +# 2353| getImplicitDestructorCall(0): [DestructorCall] call to ~Bool +# 2353| Type = [VoidType] void +# 2353| ValueCategory = prvalue +# 2353| getQualifier(): [VariableAccess] B +# 2353| Type = [Class] Bool +# 2353| ValueCategory = lvalue +# 2353| getImplicitDestructorCall(0): [DestructorCall] call to ~Bool +# 2353| Type = [VoidType] void +# 2353| ValueCategory = prvalue +# 2353| getQualifier(): [VariableAccess] B +# 2353| Type = [Class] Bool +# 2353| ValueCategory = lvalue +# 2355| getStmt(2): [ReturnStmt] return ... +# 2357| [TopLevelFunction] void VoidFunc() # 2357| : -# 2357| getParameter(0): [Parameter] b -# 2357| Type = [BoolType] bool # 2357| getEntryPoint(): [BlockStmt] { ... } -# 2358| getStmt(0): [DeclStmt] declaration -# 2358| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s -# 2358| Type = [Struct] String -# 2358| getVariable().getInitializer(): [Initializer] initializer for s -# 2358| getExpr(): [ConstructorCall] call to String -# 2358| Type = [VoidType] void -# 2358| ValueCategory = prvalue -# 2359| getStmt(1): [IfStmt] if (...) ... -# 2359| getCondition(): [VariableAccess] b -# 2359| Type = [BoolType] bool -# 2359| ValueCategory = prvalue(load) -# 2359| getThen(): [BlockStmt] { ... } -# 2360| getStmt(0): [ReturnStmt] return ... -# 2366| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2366| Type = [VoidType] void -# 2366| ValueCategory = prvalue -# 2366| getQualifier(): [VariableAccess] s -# 2366| Type = [Struct] String -# 2366| ValueCategory = lvalue -# 2362| getStmt(2): [IfStmt] if (...) ... -# 2362| getCondition(): [VariableAccess] b -# 2362| Type = [BoolType] bool -# 2362| ValueCategory = prvalue(load) -# 2362| getThen(): [BlockStmt] { ... } -# 2363| getStmt(0): [ReturnStmt] return ... -# 2363| getExpr(): [FunctionCall] call to VoidFunc -# 2363| Type = [VoidType] void -# 2363| ValueCategory = prvalue -# 2366| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2366| Type = [VoidType] void -# 2366| ValueCategory = prvalue -# 2366| getQualifier(): [VariableAccess] s -# 2366| Type = [Struct] String -# 2366| ValueCategory = lvalue -# 2365| getStmt(3): [ExprStmt] ExprStmt -# 2365| getExpr(): [VariableAccess] s -# 2365| Type = [Struct] String -# 2365| ValueCategory = lvalue -# 2366| getStmt(4): [ReturnStmt] return ... -# 2366| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2366| Type = [VoidType] void -# 2366| ValueCategory = prvalue -# 2366| getQualifier(): [VariableAccess] s -# 2366| Type = [Struct] String -# 2366| ValueCategory = lvalue -# 2368| [TopLevelFunction] int IfReturnDestructors3(bool) -# 2368| : -# 2368| getParameter(0): [Parameter] b -# 2368| Type = [BoolType] bool -# 2368| getEntryPoint(): [BlockStmt] { ... } -# 2369| getStmt(0): [DeclStmt] declaration -# 2369| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s -# 2369| Type = [Struct] String -# 2369| getVariable().getInitializer(): [Initializer] initializer for s -# 2369| getExpr(): [ConstructorCall] call to String -# 2369| Type = [VoidType] void -# 2369| ValueCategory = prvalue -# 2370| getStmt(1): [IfStmt] if (...) ... -# 2370| getCondition(): [VariableAccess] b -# 2370| Type = [BoolType] bool -# 2370| ValueCategory = prvalue(load) -# 2370| getThen(): [BlockStmt] { ... } -# 2371| getStmt(0): [ReturnStmt] return ... -# 2371| getExpr(): [Literal] 1 -# 2371| Type = [IntType] int -# 2371| Value = [Literal] 1 +# 2357| getStmt(0): [ReturnStmt] return ... +# 2359| [TopLevelFunction] void IfReturnDestructors(bool) +# 2359| : +# 2359| getParameter(0): [Parameter] b +# 2359| Type = [BoolType] bool +# 2359| getEntryPoint(): [BlockStmt] { ... } +# 2360| getStmt(0): [DeclStmt] declaration +# 2360| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s +# 2360| Type = [Struct] String +# 2360| getVariable().getInitializer(): [Initializer] initializer for s +# 2360| getExpr(): [ConstructorCall] call to String +# 2360| Type = [VoidType] void +# 2360| ValueCategory = prvalue +# 2361| getStmt(1): [IfStmt] if (...) ... +# 2361| getCondition(): [VariableAccess] b +# 2361| Type = [BoolType] bool +# 2361| ValueCategory = prvalue(load) +# 2361| getThen(): [BlockStmt] { ... } +# 2362| getStmt(0): [ReturnStmt] return ... +# 2368| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2368| Type = [VoidType] void +# 2368| ValueCategory = prvalue +# 2368| getQualifier(): [VariableAccess] s +# 2368| Type = [Struct] String +# 2368| ValueCategory = lvalue +# 2364| getStmt(2): [IfStmt] if (...) ... +# 2364| getCondition(): [VariableAccess] b +# 2364| Type = [BoolType] bool +# 2364| ValueCategory = prvalue(load) +# 2364| getThen(): [BlockStmt] { ... } +# 2365| getStmt(0): [ReturnStmt] return ... +# 2365| getExpr(): [FunctionCall] call to VoidFunc +# 2365| Type = [VoidType] void +# 2365| ValueCategory = prvalue +# 2368| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2368| Type = [VoidType] void +# 2368| ValueCategory = prvalue +# 2368| getQualifier(): [VariableAccess] s +# 2368| Type = [Struct] String +# 2368| ValueCategory = lvalue +# 2367| getStmt(3): [ExprStmt] ExprStmt +# 2367| getExpr(): [VariableAccess] s +# 2367| Type = [Struct] String +# 2367| ValueCategory = lvalue +# 2368| getStmt(4): [ReturnStmt] return ... +# 2368| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2368| Type = [VoidType] void +# 2368| ValueCategory = prvalue +# 2368| getQualifier(): [VariableAccess] s +# 2368| Type = [Struct] String +# 2368| ValueCategory = lvalue +# 2370| [TopLevelFunction] int IfReturnDestructors3(bool) +# 2370| : +# 2370| getParameter(0): [Parameter] b +# 2370| Type = [BoolType] bool +# 2370| getEntryPoint(): [BlockStmt] { ... } +# 2371| getStmt(0): [DeclStmt] declaration +# 2371| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s +# 2371| Type = [Struct] String +# 2371| getVariable().getInitializer(): [Initializer] initializer for s +# 2371| getExpr(): [ConstructorCall] call to String +# 2371| Type = [VoidType] void # 2371| ValueCategory = prvalue -# 2374| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2374| Type = [VoidType] void -# 2374| ValueCategory = prvalue -# 2374| getQualifier(): [VariableAccess] s -# 2374| Type = [Struct] String -# 2374| ValueCategory = lvalue -# 2373| getStmt(2): [ReturnStmt] return ... -# 2373| getExpr(): [Literal] 0 -# 2373| Type = [IntType] int -# 2373| Value = [Literal] 0 -# 2373| ValueCategory = prvalue -# 2374| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2374| Type = [VoidType] void -# 2374| ValueCategory = prvalue -# 2374| getQualifier(): [VariableAccess] s -# 2374| Type = [Struct] String -# 2374| ValueCategory = lvalue -# 2376| [TopLevelFunction] void VoidReturnDestructors() -# 2376| : -# 2376| getEntryPoint(): [BlockStmt] { ... } -# 2377| getStmt(0): [DeclStmt] declaration -# 2377| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s -# 2377| Type = [Struct] String -# 2377| getVariable().getInitializer(): [Initializer] initializer for s -# 2377| getExpr(): [ConstructorCall] call to String -# 2377| Type = [VoidType] void -# 2377| ValueCategory = prvalue -# 2378| getStmt(1): [ReturnStmt] return ... -# 2378| getExpr(): [FunctionCall] call to VoidFunc -# 2378| Type = [VoidType] void -# 2378| ValueCategory = prvalue -# 2379| getImplicitDestructorCall(0): [DestructorCall] call to ~String -# 2379| Type = [VoidType] void -# 2379| ValueCategory = prvalue -# 2379| getQualifier(): [VariableAccess] s -# 2379| Type = [Struct] String -# 2379| ValueCategory = lvalue -# 2382| [CopyAssignmentOperator] return_routine_type::HasVoidToIntFunc& return_routine_type::HasVoidToIntFunc::operator=(return_routine_type::HasVoidToIntFunc const&) -# 2382| : +# 2372| getStmt(1): [IfStmt] if (...) ... +# 2372| getCondition(): [VariableAccess] b +# 2372| Type = [BoolType] bool +# 2372| ValueCategory = prvalue(load) +# 2372| getThen(): [BlockStmt] { ... } +# 2373| getStmt(0): [ReturnStmt] return ... +# 2373| getExpr(): [Literal] 1 +# 2373| Type = [IntType] int +# 2373| Value = [Literal] 1 +# 2373| ValueCategory = prvalue +# 2376| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2376| Type = [VoidType] void +# 2376| ValueCategory = prvalue +# 2376| getQualifier(): [VariableAccess] s +# 2376| Type = [Struct] String +# 2376| ValueCategory = lvalue +# 2375| getStmt(2): [ReturnStmt] return ... +# 2375| getExpr(): [Literal] 0 +# 2375| Type = [IntType] int +# 2375| Value = [Literal] 0 +# 2375| ValueCategory = prvalue +# 2376| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2376| Type = [VoidType] void +# 2376| ValueCategory = prvalue +# 2376| getQualifier(): [VariableAccess] s +# 2376| Type = [Struct] String +# 2376| ValueCategory = lvalue +# 2378| [TopLevelFunction] void VoidReturnDestructors() +# 2378| : +# 2378| getEntryPoint(): [BlockStmt] { ... } +# 2379| getStmt(0): [DeclStmt] declaration +# 2379| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s +# 2379| Type = [Struct] String +# 2379| getVariable().getInitializer(): [Initializer] initializer for s +# 2379| getExpr(): [ConstructorCall] call to String +# 2379| Type = [VoidType] void +# 2379| ValueCategory = prvalue +# 2380| getStmt(1): [ReturnStmt] return ... +# 2380| getExpr(): [FunctionCall] call to VoidFunc +# 2380| Type = [VoidType] void +# 2380| ValueCategory = prvalue +# 2381| getImplicitDestructorCall(0): [DestructorCall] call to ~String +# 2381| Type = [VoidType] void +# 2381| ValueCategory = prvalue +# 2381| getQualifier(): [VariableAccess] s +# 2381| Type = [Struct] String +# 2381| ValueCategory = lvalue +# 2384| [CopyAssignmentOperator] return_routine_type::HasVoidToIntFunc& return_routine_type::HasVoidToIntFunc::operator=(return_routine_type::HasVoidToIntFunc const&) +# 2384| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const HasVoidToIntFunc & -# 2382| [MoveAssignmentOperator] return_routine_type::HasVoidToIntFunc& return_routine_type::HasVoidToIntFunc::operator=(return_routine_type::HasVoidToIntFunc&&) -# 2382| : +# 2384| [MoveAssignmentOperator] return_routine_type::HasVoidToIntFunc& return_routine_type::HasVoidToIntFunc::operator=(return_routine_type::HasVoidToIntFunc&&) +# 2384| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] HasVoidToIntFunc && -# 2384| [MemberFunction] void return_routine_type::HasVoidToIntFunc::VoidToInt(int) -# 2384| : -# 2384| getParameter(0): [Parameter] (unnamed parameter 0) -# 2384| Type = [IntType] int -# 2389| [TopLevelFunction] return_routine_type::VoidToIntMemberFunc return_routine_type::GetVoidToIntFunc() -# 2389| : -# 2390| getEntryPoint(): [BlockStmt] { ... } -# 2391| getStmt(0): [ReturnStmt] return ... -# 2391| getExpr(): [FunctionAccess] VoidToInt -# 2391| Type = [RoutineType] ..()(..) -# 2391| ValueCategory = prvalue -# 2396| [TopLevelFunction] int small_operation_should_not_be_constant_folded() -# 2396| : -# 2396| getEntryPoint(): [BlockStmt] { ... } -# 2397| getStmt(0): [ReturnStmt] return ... -# 2397| getExpr(): [BitwiseXorExpr] ... ^ ... -# 2397| Type = [IntType] int -# 2397| Value = [BitwiseXorExpr] 3 -# 2397| ValueCategory = prvalue -# 2397| getLeftOperand(): [Literal] 1 -# 2397| Type = [IntType] int -# 2397| Value = [Literal] 1 -# 2397| ValueCategory = prvalue -# 2397| getRightOperand(): [Literal] 2 -# 2397| Type = [IntType] int -# 2397| Value = [Literal] 2 -# 2397| ValueCategory = prvalue -# 2407| [TopLevelFunction] int large_operation_should_be_constant_folded() -# 2407| : -# 2407| getEntryPoint(): [BlockStmt] { ... } -# 2408| getStmt(0): [ReturnStmt] return ... -# 2408| getExpr(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [BitwiseXorExpr] ... ^ ... -# 2408| Type = [IntType] int -# 2408| Value = [BitwiseXorExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand(): [Literal] 1 -# 2408| Type = [IntType] int -# 2408| Value = [Literal] 1 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2408| getExpr().getFullyConverted(): [ParenthesisExpr] (...) -# 2408| Type = [IntType] int -# 2408| Value = [ParenthesisExpr] 0 -# 2408| ValueCategory = prvalue -# 2411| [TopLevelFunction] void initialization_with_temp_destructor() -# 2411| : -# 2411| getEntryPoint(): [BlockStmt] { ... } -# 2412| getStmt(0): [IfStmt] if (...) ... -# 2412| getCondition(): [ConditionDeclExpr] (condition decl) -# 2412| Type = [BoolType] bool -# 2412| ValueCategory = prvalue -# 2412| getVariableAccess(): [VariableAccess] x -# 2412| Type = [PlainCharType] char -# 2412| ValueCategory = prvalue(load) -# 2412| getInitializingExpr(): [FunctionCall] call to get_x -# 2412| Type = [PlainCharType] char -# 2412| ValueCategory = prvalue -# 2412| getQualifier(): [ConstructorCall] call to ClassWithDestructor -# 2412| Type = [VoidType] void -# 2412| ValueCategory = prvalue -# 2412| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2412| Type = [VoidType] void -# 2412| ValueCategory = prvalue -# 2412| getQualifier(): [ReuseExpr] reuse of temporary object -# 2412| Type = [Class] ClassWithDestructor -# 2412| ValueCategory = xvalue -# 2412| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2412| Type = [Class] ClassWithDestructor -# 2412| ValueCategory = prvalue(load) -# 2412| getVariableAccess().getFullyConverted(): [CStyleCast] (bool)... -# 2412| Conversion = [BoolConversion] conversion to bool -# 2412| Type = [BoolType] bool -# 2412| ValueCategory = prvalue -# 2413| getThen(): [ExprStmt] ExprStmt -# 2413| getExpr(): [PostfixIncrExpr] ... ++ -# 2413| Type = [PlainCharType] char -# 2413| ValueCategory = prvalue -# 2413| getOperand(): [VariableAccess] x -# 2413| Type = [PlainCharType] char -# 2413| ValueCategory = lvalue -# 2415| getStmt(1): [IfStmt] if (...) ... -# 2415| getInitialization(): [DeclStmt] declaration -# 2415| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2386| [MemberFunction] void return_routine_type::HasVoidToIntFunc::VoidToInt(int) +# 2386| : +# 2386| getParameter(0): [Parameter] (unnamed parameter 0) +# 2386| Type = [IntType] int +# 2391| [TopLevelFunction] return_routine_type::VoidToIntMemberFunc return_routine_type::GetVoidToIntFunc() +# 2391| : +# 2392| getEntryPoint(): [BlockStmt] { ... } +# 2393| getStmt(0): [ReturnStmt] return ... +# 2393| getExpr(): [FunctionAccess] VoidToInt +# 2393| Type = [RoutineType] ..()(..) +# 2393| ValueCategory = prvalue +# 2398| [TopLevelFunction] int small_operation_should_not_be_constant_folded() +# 2398| : +# 2398| getEntryPoint(): [BlockStmt] { ... } +# 2399| getStmt(0): [ReturnStmt] return ... +# 2399| getExpr(): [BitwiseXorExpr] ... ^ ... +# 2399| Type = [IntType] int +# 2399| Value = [BitwiseXorExpr] 3 +# 2399| ValueCategory = prvalue +# 2399| getLeftOperand(): [Literal] 1 +# 2399| Type = [IntType] int +# 2399| Value = [Literal] 1 +# 2399| ValueCategory = prvalue +# 2399| getRightOperand(): [Literal] 2 +# 2399| Type = [IntType] int +# 2399| Value = [Literal] 2 +# 2399| ValueCategory = prvalue +# 2409| [TopLevelFunction] int large_operation_should_be_constant_folded() +# 2409| : +# 2409| getEntryPoint(): [BlockStmt] { ... } +# 2410| getStmt(0): [ReturnStmt] return ... +# 2410| getExpr(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [BitwiseXorExpr] ... ^ ... +# 2410| Type = [IntType] int +# 2410| Value = [BitwiseXorExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand(): [Literal] 1 +# 2410| Type = [IntType] int +# 2410| Value = [Literal] 1 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getLeftOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2410| getExpr().getFullyConverted(): [ParenthesisExpr] (...) +# 2410| Type = [IntType] int +# 2410| Value = [ParenthesisExpr] 0 +# 2410| ValueCategory = prvalue +# 2413| [TopLevelFunction] void initialization_with_temp_destructor() +# 2413| : +# 2413| getEntryPoint(): [BlockStmt] { ... } +# 2414| getStmt(0): [IfStmt] if (...) ... +# 2414| getCondition(): [ConditionDeclExpr] (condition decl) +# 2414| Type = [BoolType] bool +# 2414| ValueCategory = prvalue +# 2414| getVariableAccess(): [VariableAccess] x +# 2414| Type = [PlainCharType] char +# 2414| ValueCategory = prvalue(load) +# 2414| getInitializingExpr(): [FunctionCall] call to get_x +# 2414| Type = [PlainCharType] char +# 2414| ValueCategory = prvalue +# 2414| getQualifier(): [ConstructorCall] call to ClassWithDestructor +# 2414| Type = [VoidType] void +# 2414| ValueCategory = prvalue +# 2414| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2414| Type = [VoidType] void +# 2414| ValueCategory = prvalue +# 2414| getQualifier(): [ReuseExpr] reuse of temporary object +# 2414| Type = [Class] ClassWithDestructor +# 2414| ValueCategory = xvalue +# 2414| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2414| Type = [Class] ClassWithDestructor +# 2414| ValueCategory = prvalue(load) +# 2414| getVariableAccess().getFullyConverted(): [CStyleCast] (bool)... +# 2414| Conversion = [BoolConversion] conversion to bool +# 2414| Type = [BoolType] bool +# 2414| ValueCategory = prvalue +# 2415| getThen(): [ExprStmt] ExprStmt +# 2415| getExpr(): [PostfixIncrExpr] ... ++ # 2415| Type = [PlainCharType] char -# 2415| getVariable().getInitializer(): [Initializer] initializer for x -# 2415| getExpr(): [FunctionCall] call to get_x -# 2415| Type = [PlainCharType] char -# 2415| ValueCategory = prvalue -# 2415| getQualifier(): [ConstructorCall] call to ClassWithDestructor -# 2415| Type = [VoidType] void -# 2415| ValueCategory = prvalue -# 2415| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2415| Type = [VoidType] void -# 2415| ValueCategory = prvalue -# 2415| getQualifier(): [ReuseExpr] reuse of temporary object -# 2415| Type = [Class] ClassWithDestructor -# 2415| ValueCategory = xvalue -# 2415| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2415| Type = [Class] ClassWithDestructor -# 2415| ValueCategory = prvalue(load) -# 2415| getCondition(): [VariableAccess] x -# 2415| Type = [PlainCharType] char -# 2415| ValueCategory = prvalue(load) -# 2416| getThen(): [ExprStmt] ExprStmt -# 2416| getExpr(): [PostfixIncrExpr] ... ++ -# 2416| Type = [PlainCharType] char -# 2416| ValueCategory = prvalue -# 2416| getOperand(): [VariableAccess] x -# 2416| Type = [PlainCharType] char -# 2416| ValueCategory = lvalue -# 2415| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2415| Conversion = [BoolConversion] conversion to bool -# 2415| Type = [BoolType] bool -# 2415| ValueCategory = prvalue -# 2418| getStmt(2): [ConstexprIfStmt] if constexpr (...) ... -# 2418| getInitialization(): [DeclStmt] declaration -# 2418| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2415| ValueCategory = prvalue +# 2415| getOperand(): [VariableAccess] x +# 2415| Type = [PlainCharType] char +# 2415| ValueCategory = lvalue +# 2417| getStmt(1): [IfStmt] if (...) ... +# 2417| getInitialization(): [DeclStmt] declaration +# 2417| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2417| Type = [PlainCharType] char +# 2417| getVariable().getInitializer(): [Initializer] initializer for x +# 2417| getExpr(): [FunctionCall] call to get_x +# 2417| Type = [PlainCharType] char +# 2417| ValueCategory = prvalue +# 2417| getQualifier(): [ConstructorCall] call to ClassWithDestructor +# 2417| Type = [VoidType] void +# 2417| ValueCategory = prvalue +# 2417| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2417| Type = [VoidType] void +# 2417| ValueCategory = prvalue +# 2417| getQualifier(): [ReuseExpr] reuse of temporary object +# 2417| Type = [Class] ClassWithDestructor +# 2417| ValueCategory = xvalue +# 2417| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2417| Type = [Class] ClassWithDestructor +# 2417| ValueCategory = prvalue(load) +# 2417| getCondition(): [VariableAccess] x +# 2417| Type = [PlainCharType] char +# 2417| ValueCategory = prvalue(load) +# 2418| getThen(): [ExprStmt] ExprStmt +# 2418| getExpr(): [PostfixIncrExpr] ... ++ # 2418| Type = [PlainCharType] char -# 2418| getVariable().getInitializer(): [Initializer] initializer for x -# 2418| getExpr(): [FunctionCall] call to get_x -# 2418| Type = [PlainCharType] char -# 2418| ValueCategory = prvalue -# 2418| getQualifier(): [ConstructorCall] call to ClassWithDestructor -# 2418| Type = [VoidType] void -# 2418| ValueCategory = prvalue -# 2418| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2418| Type = [VoidType] void -# 2418| ValueCategory = prvalue -# 2418| getQualifier(): [ReuseExpr] reuse of temporary object -# 2418| Type = [Class] ClassWithDestructor -# 2418| ValueCategory = xvalue -# 2418| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2418| Type = [Class] ClassWithDestructor -# 2418| ValueCategory = prvalue(load) -# 2418| getCondition(): [VariableAccess] initialization_with_destructor_bool -# 2418| Type = [BoolType] bool -# 2418| Value = [VariableAccess] 1 -# 2418| ValueCategory = prvalue(load) -# 2419| getThen(): [ExprStmt] ExprStmt -# 2419| getExpr(): [PostfixIncrExpr] ... ++ -# 2419| Type = [PlainCharType] char -# 2419| ValueCategory = prvalue -# 2419| getOperand(): [VariableAccess] x -# 2419| Type = [PlainCharType] char -# 2419| ValueCategory = lvalue -# 2421| getStmt(3): [SwitchStmt] switch (...) ... -# 2421| getExpr(): [ConditionDeclExpr] (condition decl) -# 2421| Type = [IntType] int -# 2421| ValueCategory = prvalue -# 2421| getVariableAccess(): [VariableAccess] x -# 2421| Type = [PlainCharType] char -# 2421| ValueCategory = prvalue(load) -# 2421| getInitializingExpr(): [FunctionCall] call to get_x +# 2418| ValueCategory = prvalue +# 2418| getOperand(): [VariableAccess] x +# 2418| Type = [PlainCharType] char +# 2418| ValueCategory = lvalue +# 2417| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 2417| Conversion = [BoolConversion] conversion to bool +# 2417| Type = [BoolType] bool +# 2417| ValueCategory = prvalue +# 2420| getStmt(2): [ConstexprIfStmt] if constexpr (...) ... +# 2420| getInitialization(): [DeclStmt] declaration +# 2420| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2420| Type = [PlainCharType] char +# 2420| getVariable().getInitializer(): [Initializer] initializer for x +# 2420| getExpr(): [FunctionCall] call to get_x +# 2420| Type = [PlainCharType] char +# 2420| ValueCategory = prvalue +# 2420| getQualifier(): [ConstructorCall] call to ClassWithDestructor +# 2420| Type = [VoidType] void +# 2420| ValueCategory = prvalue +# 2420| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2420| Type = [VoidType] void +# 2420| ValueCategory = prvalue +# 2420| getQualifier(): [ReuseExpr] reuse of temporary object +# 2420| Type = [Class] ClassWithDestructor +# 2420| ValueCategory = xvalue +# 2420| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2420| Type = [Class] ClassWithDestructor +# 2420| ValueCategory = prvalue(load) +# 2420| getCondition(): [VariableAccess] initialization_with_destructor_bool +# 2420| Type = [BoolType] bool +# 2420| Value = [VariableAccess] 1 +# 2420| ValueCategory = prvalue(load) +# 2421| getThen(): [ExprStmt] ExprStmt +# 2421| getExpr(): [PostfixIncrExpr] ... ++ # 2421| Type = [PlainCharType] char # 2421| ValueCategory = prvalue -# 2421| getQualifier(): [ConstructorCall] call to ClassWithDestructor -# 2421| Type = [VoidType] void -# 2421| ValueCategory = prvalue -# 2421| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2421| Type = [VoidType] void -# 2421| ValueCategory = prvalue -# 2421| getQualifier(): [ReuseExpr] reuse of temporary object -# 2421| Type = [Class] ClassWithDestructor -# 2421| ValueCategory = xvalue -# 2421| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2421| Type = [Class] ClassWithDestructor -# 2421| ValueCategory = prvalue(load) -# 2421| getVariableAccess().getFullyConverted(): [CStyleCast] (int)... -# 2421| Conversion = [IntegralConversion] integral conversion -# 2421| Type = [IntType] int -# 2421| ValueCategory = prvalue -# 2421| getStmt(): [BlockStmt] { ... } -# 2422| getStmt(0): [SwitchCase] case ...: -# 2422| getExpr(): [CharLiteral] 97 -# 2422| Type = [PlainCharType] char -# 2422| Value = [CharLiteral] 97 -# 2422| ValueCategory = prvalue -# 2422| getExpr().getFullyConverted(): [CStyleCast] (int)... -# 2422| Conversion = [IntegralConversion] integral conversion -# 2422| Type = [IntType] int -# 2422| Value = [CStyleCast] 97 -# 2422| ValueCategory = prvalue -# 2423| getStmt(1): [ExprStmt] ExprStmt -# 2423| getExpr(): [PostfixIncrExpr] ... ++ -# 2423| Type = [PlainCharType] char +# 2421| getOperand(): [VariableAccess] x +# 2421| Type = [PlainCharType] char +# 2421| ValueCategory = lvalue +# 2423| getStmt(3): [SwitchStmt] switch (...) ... +# 2423| getExpr(): [ConditionDeclExpr] (condition decl) +# 2423| Type = [IntType] int +# 2423| ValueCategory = prvalue +# 2423| getVariableAccess(): [VariableAccess] x +# 2423| Type = [PlainCharType] char +# 2423| ValueCategory = prvalue(load) +# 2423| getInitializingExpr(): [FunctionCall] call to get_x +# 2423| Type = [PlainCharType] char +# 2423| ValueCategory = prvalue +# 2423| getQualifier(): [ConstructorCall] call to ClassWithDestructor +# 2423| Type = [VoidType] void # 2423| ValueCategory = prvalue -# 2423| getOperand(): [VariableAccess] x -# 2423| Type = [PlainCharType] char -# 2423| ValueCategory = lvalue -# 2426| getStmt(4): [SwitchStmt] switch (...) ... -# 2426| getInitialization(): [DeclStmt] declaration -# 2426| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 2426| Type = [PlainCharType] char -# 2426| getVariable().getInitializer(): [Initializer] initializer for x -# 2426| getExpr(): [FunctionCall] call to get_x -# 2426| Type = [PlainCharType] char -# 2426| ValueCategory = prvalue -# 2426| getQualifier(): [ConstructorCall] call to ClassWithDestructor -# 2426| Type = [VoidType] void -# 2426| ValueCategory = prvalue -# 2426| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2426| Type = [VoidType] void -# 2426| ValueCategory = prvalue -# 2426| getQualifier(): [ReuseExpr] reuse of temporary object -# 2426| Type = [Class] ClassWithDestructor -# 2426| ValueCategory = xvalue -# 2426| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2426| Type = [Class] ClassWithDestructor -# 2426| ValueCategory = prvalue(load) -# 2426| getExpr(): [VariableAccess] x -# 2426| Type = [PlainCharType] char -# 2426| ValueCategory = prvalue(load) -# 2426| getStmt(): [BlockStmt] { ... } -# 2427| getStmt(0): [SwitchCase] case ...: -# 2427| getExpr(): [CharLiteral] 97 -# 2427| Type = [PlainCharType] char -# 2427| Value = [CharLiteral] 97 -# 2427| ValueCategory = prvalue -# 2427| getExpr().getFullyConverted(): [CStyleCast] (int)... -# 2427| Conversion = [IntegralConversion] integral conversion -# 2427| Type = [IntType] int -# 2427| Value = [CStyleCast] 97 -# 2427| ValueCategory = prvalue -# 2428| getStmt(1): [ExprStmt] ExprStmt -# 2428| getExpr(): [PostfixIncrExpr] ... ++ -# 2428| Type = [PlainCharType] char -# 2428| ValueCategory = prvalue -# 2428| getOperand(): [VariableAccess] x +# 2423| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2423| Type = [VoidType] void +# 2423| ValueCategory = prvalue +# 2423| getQualifier(): [ReuseExpr] reuse of temporary object +# 2423| Type = [Class] ClassWithDestructor +# 2423| ValueCategory = xvalue +# 2423| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2423| Type = [Class] ClassWithDestructor +# 2423| ValueCategory = prvalue(load) +# 2423| getVariableAccess().getFullyConverted(): [CStyleCast] (int)... +# 2423| Conversion = [IntegralConversion] integral conversion +# 2423| Type = [IntType] int +# 2423| ValueCategory = prvalue +# 2423| getStmt(): [BlockStmt] { ... } +# 2424| getStmt(0): [SwitchCase] case ...: +# 2424| getExpr(): [CharLiteral] 97 +# 2424| Type = [PlainCharType] char +# 2424| Value = [CharLiteral] 97 +# 2424| ValueCategory = prvalue +# 2424| getExpr().getFullyConverted(): [CStyleCast] (int)... +# 2424| Conversion = [IntegralConversion] integral conversion +# 2424| Type = [IntType] int +# 2424| Value = [CStyleCast] 97 +# 2424| ValueCategory = prvalue +# 2425| getStmt(1): [ExprStmt] ExprStmt +# 2425| getExpr(): [PostfixIncrExpr] ... ++ +# 2425| Type = [PlainCharType] char +# 2425| ValueCategory = prvalue +# 2425| getOperand(): [VariableAccess] x +# 2425| Type = [PlainCharType] char +# 2425| ValueCategory = lvalue +# 2428| getStmt(4): [SwitchStmt] switch (...) ... +# 2428| getInitialization(): [DeclStmt] declaration +# 2428| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2428| Type = [PlainCharType] char +# 2428| getVariable().getInitializer(): [Initializer] initializer for x +# 2428| getExpr(): [FunctionCall] call to get_x # 2428| Type = [PlainCharType] char -# 2428| ValueCategory = lvalue -# 2426| getExpr().getFullyConverted(): [CStyleCast] (int)... -# 2426| Conversion = [IntegralConversion] integral conversion -# 2426| Type = [IntType] int -# 2426| ValueCategory = prvalue -# 2431| getStmt(5): [RangeBasedForStmt] for(...:...) ... -# 2431| getInitialization(): [DeclStmt] declaration -# 2431| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 2431| Type = [PlainCharType] char -# 2431| getVariable().getInitializer(): [Initializer] initializer for x -# 2431| getExpr(): [FunctionCall] call to get_x -# 2431| Type = [PlainCharType] char -# 2431| ValueCategory = prvalue -# 2431| getQualifier(): [ConstructorCall] call to ClassWithDestructor -# 2431| Type = [VoidType] void -# 2431| ValueCategory = prvalue -# 2431| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2431| Type = [VoidType] void -# 2431| ValueCategory = prvalue -# 2431| getQualifier(): [ReuseExpr] reuse of temporary object -# 2431| Type = [Class] ClassWithDestructor -# 2431| ValueCategory = xvalue -# 2431| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2431| Type = [Class] ClassWithDestructor -# 2431| ValueCategory = prvalue(load) -# 2431| getChild(1): [DeclStmt] declaration -# 2431| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__range) -# 2431| Type = [RValueReferenceType] vector && +# 2428| ValueCategory = prvalue +# 2428| getQualifier(): [ConstructorCall] call to ClassWithDestructor +# 2428| Type = [VoidType] void +# 2428| ValueCategory = prvalue +# 2428| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2428| Type = [VoidType] void +# 2428| ValueCategory = prvalue +# 2428| getQualifier(): [ReuseExpr] reuse of temporary object +# 2428| Type = [Class] ClassWithDestructor +# 2428| ValueCategory = xvalue +# 2428| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2428| Type = [Class] ClassWithDestructor +# 2428| ValueCategory = prvalue(load) +# 2428| getExpr(): [VariableAccess] x +# 2428| Type = [PlainCharType] char +# 2428| ValueCategory = prvalue(load) +# 2428| getStmt(): [BlockStmt] { ... } +# 2429| getStmt(0): [SwitchCase] case ...: +# 2429| getExpr(): [CharLiteral] 97 +# 2429| Type = [PlainCharType] char +# 2429| Value = [CharLiteral] 97 +# 2429| ValueCategory = prvalue +# 2429| getExpr().getFullyConverted(): [CStyleCast] (int)... +# 2429| Conversion = [IntegralConversion] integral conversion +# 2429| Type = [IntType] int +# 2429| Value = [CStyleCast] 97 +# 2429| ValueCategory = prvalue +# 2430| getStmt(1): [ExprStmt] ExprStmt +# 2430| getExpr(): [PostfixIncrExpr] ... ++ +# 2430| Type = [PlainCharType] char +# 2430| ValueCategory = prvalue +# 2430| getOperand(): [VariableAccess] x +# 2430| Type = [PlainCharType] char +# 2430| ValueCategory = lvalue +# 2428| getExpr().getFullyConverted(): [CStyleCast] (int)... +# 2428| Conversion = [IntegralConversion] integral conversion +# 2428| Type = [IntType] int +# 2428| ValueCategory = prvalue +# 2433| getStmt(5): [RangeBasedForStmt] for(...:...) ... +# 2433| getInitialization(): [DeclStmt] declaration +# 2433| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2433| Type = [PlainCharType] char +# 2433| getVariable().getInitializer(): [Initializer] initializer for x +# 2433| getExpr(): [FunctionCall] call to get_x +# 2433| Type = [PlainCharType] char +# 2433| ValueCategory = prvalue +# 2433| getQualifier(): [ConstructorCall] call to ClassWithDestructor +# 2433| Type = [VoidType] void +# 2433| ValueCategory = prvalue +# 2433| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2433| Type = [VoidType] void +# 2433| ValueCategory = prvalue +# 2433| getQualifier(): [ReuseExpr] reuse of temporary object +# 2433| Type = [Class] ClassWithDestructor +# 2433| ValueCategory = xvalue +# 2433| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2433| Type = [Class] ClassWithDestructor +# 2433| ValueCategory = prvalue(load) +# 2433| getChild(1): [DeclStmt] declaration +# 2433| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__range) +# 2433| Type = [RValueReferenceType] vector && #-----| getVariable().getInitializer(): [Initializer] initializer for (__range) -# 2431| getExpr(): [ConstructorCall] call to vector -# 2431| Type = [VoidType] void -# 2431| ValueCategory = prvalue -# 2431| getArgument(0): [VariableAccess] x -# 2431| Type = [PlainCharType] char -# 2431| ValueCategory = prvalue(load) -# 2431| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 2431| Type = [LValueReferenceType] vector & -# 2431| ValueCategory = prvalue -# 2431| getExpr(): [TemporaryObjectExpr] temporary object -# 2431| Type = [ClassTemplateInstantiation,Struct] vector -# 2431| ValueCategory = xvalue -# 2431| getBeginEndDeclaration(): [DeclStmt] declaration -# 2431| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__begin) -# 2431| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2433| getExpr(): [ConstructorCall] call to vector +# 2433| Type = [VoidType] void +# 2433| ValueCategory = prvalue +# 2433| getArgument(0): [VariableAccess] x +# 2433| Type = [PlainCharType] char +# 2433| ValueCategory = prvalue(load) +# 2433| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 2433| Type = [LValueReferenceType] vector & +# 2433| ValueCategory = prvalue +# 2433| getExpr(): [TemporaryObjectExpr] temporary object +# 2433| Type = [ClassTemplateInstantiation,Struct] vector +# 2433| ValueCategory = xvalue +# 2433| getBeginEndDeclaration(): [DeclStmt] declaration +# 2433| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__begin) +# 2433| Type = [NestedTypedefType,UsingAliasTypedefType] iterator #-----| getVariable().getInitializer(): [Initializer] initializer for (__begin) -# 2431| getExpr(): [FunctionCall] call to begin -# 2431| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2431| ValueCategory = prvalue -# 2431| getQualifier(): [VariableAccess] (__range) -# 2431| Type = [RValueReferenceType] vector && -# 2431| ValueCategory = prvalue(load) +# 2433| getExpr(): [FunctionCall] call to begin +# 2433| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2433| ValueCategory = prvalue +# 2433| getQualifier(): [VariableAccess] (__range) +# 2433| Type = [RValueReferenceType] vector && +# 2433| ValueCategory = prvalue(load) #-----| getQualifier().getFullyConverted(): [CStyleCast] (const vector)... #-----| Conversion = [GlvalueConversion] glvalue conversion #-----| Type = [SpecifiedType] const vector @@ -22691,15 +22691,15 @@ ir.cpp: #-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [ClassTemplateInstantiation,Struct] vector #-----| ValueCategory = lvalue -# 2431| getDeclarationEntry(1): [VariableDeclarationEntry] declaration of (__end) -# 2431| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2433| getDeclarationEntry(1): [VariableDeclarationEntry] declaration of (__end) +# 2433| Type = [NestedTypedefType,UsingAliasTypedefType] iterator #-----| getVariable().getInitializer(): [Initializer] initializer for (__end) -# 2431| getExpr(): [FunctionCall] call to end -# 2431| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2431| ValueCategory = prvalue -# 2431| getQualifier(): [VariableAccess] (__range) -# 2431| Type = [RValueReferenceType] vector && -# 2431| ValueCategory = prvalue(load) +# 2433| getExpr(): [FunctionCall] call to end +# 2433| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2433| ValueCategory = prvalue +# 2433| getQualifier(): [VariableAccess] (__range) +# 2433| Type = [RValueReferenceType] vector && +# 2433| ValueCategory = prvalue(load) #-----| getQualifier().getFullyConverted(): [CStyleCast] (const vector)... #-----| Conversion = [GlvalueConversion] glvalue conversion #-----| Type = [SpecifiedType] const vector @@ -22707,18 +22707,18 @@ ir.cpp: #-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference) #-----| Type = [ClassTemplateInstantiation,Struct] vector #-----| ValueCategory = lvalue -# 2431| getCondition(): [FunctionCall] call to operator!= -# 2431| Type = [BoolType] bool -# 2431| ValueCategory = prvalue -# 2431| getQualifier(): [VariableAccess] (__begin) -# 2431| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2431| ValueCategory = lvalue -# 2431| getArgument(0): [ConstructorCall] call to iterator -# 2431| Type = [VoidType] void -# 2431| ValueCategory = prvalue -# 2431| getArgument(0): [VariableAccess] (__end) -# 2431| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2431| ValueCategory = lvalue +# 2433| getCondition(): [FunctionCall] call to operator!= +# 2433| Type = [BoolType] bool +# 2433| ValueCategory = prvalue +# 2433| getQualifier(): [VariableAccess] (__begin) +# 2433| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2433| ValueCategory = lvalue +# 2433| getArgument(0): [ConstructorCall] call to iterator +# 2433| Type = [VoidType] void +# 2433| ValueCategory = prvalue +# 2433| getArgument(0): [VariableAccess] (__end) +# 2433| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2433| ValueCategory = lvalue #-----| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) #-----| Type = [LValueReferenceType] const iterator & #-----| ValueCategory = prvalue @@ -22733,629 +22733,615 @@ ir.cpp: #-----| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object #-----| Type = [ClassTemplateInstantiation,Struct] iterator #-----| ValueCategory = lvalue -# 2431| getUpdate(): [FunctionCall] call to operator++ -# 2431| Type = [LValueReferenceType] iterator & -# 2431| ValueCategory = prvalue -# 2431| getQualifier(): [VariableAccess] (__begin) -# 2431| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2431| ValueCategory = lvalue -# 2431| getChild(5): [DeclStmt] declaration -# 2431| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 2431| Type = [PlainCharType] char -# 2431| getVariable().getInitializer(): [Initializer] initializer for y -# 2431| getExpr(): [OverloadedPointerDereferenceExpr] call to operator* -# 2431| Type = [LValueReferenceType] char & -# 2431| ValueCategory = prvalue -# 2431| getQualifier(): [VariableAccess] (__begin) -# 2431| Type = [NestedTypedefType,UsingAliasTypedefType] iterator -# 2431| ValueCategory = lvalue +# 2433| getUpdate(): [FunctionCall] call to operator++ +# 2433| Type = [LValueReferenceType] iterator & +# 2433| ValueCategory = prvalue +# 2433| getQualifier(): [VariableAccess] (__begin) +# 2433| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2433| ValueCategory = lvalue +# 2433| getChild(5): [DeclStmt] declaration +# 2433| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 2433| Type = [PlainCharType] char +# 2433| getVariable().getInitializer(): [Initializer] initializer for y +# 2433| getExpr(): [OverloadedPointerDereferenceExpr] call to operator* +# 2433| Type = [LValueReferenceType] char & +# 2433| ValueCategory = prvalue +# 2433| getQualifier(): [VariableAccess] (__begin) +# 2433| Type = [NestedTypedefType,UsingAliasTypedefType] iterator +# 2433| ValueCategory = lvalue #-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator)... #-----| Conversion = [GlvalueConversion] glvalue conversion #-----| Type = [SpecifiedType] const iterator #-----| ValueCategory = lvalue -# 2431| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2431| Type = [PlainCharType] char -# 2431| ValueCategory = prvalue(load) -# 2432| getStmt(): [ExprStmt] ExprStmt -# 2432| getExpr(): [AssignAddExpr] ... += ... -# 2432| Type = [PlainCharType] char -# 2432| ValueCategory = lvalue -# 2432| getLValue(): [VariableAccess] y -# 2432| Type = [PlainCharType] char -# 2432| ValueCategory = lvalue -# 2432| getRValue(): [VariableAccess] x -# 2432| Type = [PlainCharType] char -# 2432| ValueCategory = prvalue(load) -# 2432| getRValue().getFullyConverted(): [CStyleCast] (int)... -# 2432| Conversion = [IntegralConversion] integral conversion -# 2432| Type = [IntType] int -# 2432| ValueCategory = prvalue -# 2431| getImplicitDestructorCall(0): [DestructorCall] call to ~vector -# 2431| Type = [VoidType] void -# 2431| ValueCategory = prvalue -# 2431| getQualifier(): [ReuseExpr] reuse of temporary object -# 2431| Type = [ClassTemplateInstantiation,Struct] vector -# 2431| ValueCategory = xvalue -# 2431| getUpdate().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2431| Type = [ClassTemplateInstantiation,Struct] iterator -# 2431| ValueCategory = lvalue -# 2433| getStmt(6): [ReturnStmt] return ... -# 2435| [TopLevelFunction] void param_with_destructor_by_value(ClassWithDestructor) -# 2435| : -# 2435| getParameter(0): [Parameter] c -# 2435| Type = [Class] ClassWithDestructor -# 2435| getEntryPoint(): [BlockStmt] { ... } -# 2437| getStmt(0): [ReturnStmt] return ... -# 2439| [TopLevelFunction] void param_with_destructor_by_pointer(ClassWithDestructor*) -# 2439| : -# 2439| getParameter(0): [Parameter] c -# 2439| Type = [PointerType] ClassWithDestructor * -# 2439| getEntryPoint(): [BlockStmt] { ... } -# 2441| getStmt(0): [ReturnStmt] return ... -# 2443| [TopLevelFunction] void param_with_destructor_by_ref(ClassWithDestructor&) -# 2443| : -# 2443| getParameter(0): [Parameter] c -# 2443| Type = [LValueReferenceType] ClassWithDestructor & -# 2443| getEntryPoint(): [BlockStmt] { ... } -# 2445| getStmt(0): [ReturnStmt] return ... -# 2447| [TopLevelFunction] void param_with_destructor_by_rref(ClassWithDestructor&&) -# 2447| : -# 2447| getParameter(0): [Parameter] c -# 2447| Type = [RValueReferenceType] ClassWithDestructor && -# 2447| getEntryPoint(): [BlockStmt] { ... } -# 2449| getStmt(0): [ReturnStmt] return ... -# 2451| [TopLevelFunction] void rethrow_with_destruction(int) -# 2451| : -# 2451| getParameter(0): [Parameter] x -# 2451| Type = [IntType] int -# 2451| getEntryPoint(): [BlockStmt] { ... } -# 2452| getStmt(0): [DeclStmt] declaration -# 2452| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c -# 2452| Type = [Class] ClassWithDestructor -# 2452| getVariable().getInitializer(): [Initializer] initializer for c -# 2452| getExpr(): [ConstructorCall] call to ClassWithDestructor -# 2452| Type = [VoidType] void -# 2452| ValueCategory = prvalue -# 2453| getStmt(1): [ExprStmt] ExprStmt -# 2453| getExpr(): [ReThrowExpr] re-throw exception -# 2453| Type = [VoidType] void -# 2453| ValueCategory = prvalue -# 2454| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2454| Type = [VoidType] void -# 2454| ValueCategory = prvalue -# 2454| getQualifier(): [VariableAccess] c -# 2454| Type = [Class] ClassWithDestructor -# 2454| ValueCategory = lvalue -# 2456| [CopyAssignmentOperator] ByValueConstructor& ByValueConstructor::operator=(ByValueConstructor const&) -# 2456| : +# 2433| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2433| Type = [PlainCharType] char +# 2433| ValueCategory = prvalue(load) +# 2434| getStmt(): [ExprStmt] ExprStmt +# 2434| getExpr(): [AssignAddExpr] ... += ... +# 2434| Type = [PlainCharType] char +# 2434| ValueCategory = lvalue +# 2434| getLValue(): [VariableAccess] y +# 2434| Type = [PlainCharType] char +# 2434| ValueCategory = lvalue +# 2434| getRValue(): [VariableAccess] x +# 2434| Type = [PlainCharType] char +# 2434| ValueCategory = prvalue(load) +# 2434| getRValue().getFullyConverted(): [CStyleCast] (int)... +# 2434| Conversion = [IntegralConversion] integral conversion +# 2434| Type = [IntType] int +# 2434| ValueCategory = prvalue +# 2433| getImplicitDestructorCall(0): [DestructorCall] call to ~vector +# 2433| Type = [VoidType] void +# 2433| ValueCategory = prvalue +# 2433| getQualifier(): [ReuseExpr] reuse of temporary object +# 2433| Type = [ClassTemplateInstantiation,Struct] vector +# 2433| ValueCategory = xvalue +# 2433| getUpdate().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2433| Type = [ClassTemplateInstantiation,Struct] iterator +# 2433| ValueCategory = lvalue +# 2435| getStmt(6): [ReturnStmt] return ... +# 2437| [TopLevelFunction] void param_with_destructor_by_value(ClassWithDestructor) +# 2437| : +# 2437| getParameter(0): [Parameter] c +# 2437| Type = [Class] ClassWithDestructor +# 2437| getEntryPoint(): [BlockStmt] { ... } +# 2439| getStmt(0): [ReturnStmt] return ... +# 2441| [TopLevelFunction] void param_with_destructor_by_pointer(ClassWithDestructor*) +# 2441| : +# 2441| getParameter(0): [Parameter] c +# 2441| Type = [PointerType] ClassWithDestructor * +# 2441| getEntryPoint(): [BlockStmt] { ... } +# 2443| getStmt(0): [ReturnStmt] return ... +# 2445| [TopLevelFunction] void param_with_destructor_by_ref(ClassWithDestructor&) +# 2445| : +# 2445| getParameter(0): [Parameter] c +# 2445| Type = [LValueReferenceType] ClassWithDestructor & +# 2445| getEntryPoint(): [BlockStmt] { ... } +# 2447| getStmt(0): [ReturnStmt] return ... +# 2449| [TopLevelFunction] void param_with_destructor_by_rref(ClassWithDestructor&&) +# 2449| : +# 2449| getParameter(0): [Parameter] c +# 2449| Type = [RValueReferenceType] ClassWithDestructor && +# 2449| getEntryPoint(): [BlockStmt] { ... } +# 2451| getStmt(0): [ReturnStmt] return ... +# 2453| [TopLevelFunction] void rethrow_with_destruction(int) +# 2453| : +# 2453| getParameter(0): [Parameter] x +# 2453| Type = [IntType] int +# 2453| getEntryPoint(): [BlockStmt] { ... } +# 2454| getStmt(0): [DeclStmt] declaration +# 2454| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c +# 2454| Type = [Class] ClassWithDestructor +# 2454| getVariable().getInitializer(): [Initializer] initializer for c +# 2454| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2454| Type = [VoidType] void +# 2454| ValueCategory = prvalue +# 2455| getStmt(1): [ExprStmt] ExprStmt +# 2455| getExpr(): [ReThrowExpr] re-throw exception +# 2455| Type = [VoidType] void +# 2455| ValueCategory = prvalue +# 2456| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2456| Type = [VoidType] void +# 2456| ValueCategory = prvalue +# 2456| getQualifier(): [VariableAccess] c +# 2456| Type = [Class] ClassWithDestructor +# 2456| ValueCategory = lvalue +# 2458| [CopyAssignmentOperator] ByValueConstructor& ByValueConstructor::operator=(ByValueConstructor const&) +# 2458| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const ByValueConstructor & -# 2456| [MoveAssignmentOperator] ByValueConstructor& ByValueConstructor::operator=(ByValueConstructor&&) -# 2456| : +# 2458| [MoveAssignmentOperator] ByValueConstructor& ByValueConstructor::operator=(ByValueConstructor&&) +# 2458| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] ByValueConstructor && -# 2456| [CopyConstructor] void ByValueConstructor::ByValueConstructor(ByValueConstructor const&) -# 2456| : +# 2458| [CopyConstructor] void ByValueConstructor::ByValueConstructor(ByValueConstructor const&) +# 2458| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const ByValueConstructor & -# 2456| [MoveConstructor] void ByValueConstructor::ByValueConstructor(ByValueConstructor&&) -# 2456| : +# 2458| [MoveConstructor] void ByValueConstructor::ByValueConstructor(ByValueConstructor&&) +# 2458| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] ByValueConstructor && -# 2457| [Constructor] void ByValueConstructor::ByValueConstructor(ClassWithDestructor) -# 2457| : -# 2457| getParameter(0): [Parameter] (unnamed parameter 0) -# 2457| Type = [Class] ClassWithDestructor -# 2460| [TopLevelFunction] void new_with_destructor(ClassWithDestructor) -# 2460| : -# 2460| getParameter(0): [Parameter] a -# 2460| Type = [Class] ClassWithDestructor -# 2461| getEntryPoint(): [BlockStmt] { ... } -# 2462| getStmt(0): [DeclStmt] declaration -# 2462| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b -# 2462| Type = [PointerType] ByValueConstructor * -# 2462| getVariable().getInitializer(): [Initializer] initializer for b -# 2462| getExpr(): [NewExpr] new -# 2462| Type = [PointerType] ByValueConstructor * -# 2462| ValueCategory = prvalue -# 2462| getInitializer(): [ConstructorCall] call to ByValueConstructor -# 2462| Type = [VoidType] void -# 2462| ValueCategory = prvalue -# 2462| getArgument(0): [VariableAccess] a -# 2462| Type = [Class] ClassWithDestructor -# 2462| ValueCategory = prvalue(load) -# 2462| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object -# 2462| Type = [Class] ClassWithDestructor -# 2462| ValueCategory = lvalue -# 2462| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2462| Type = [VoidType] void -# 2462| ValueCategory = prvalue -# 2462| getQualifier(): [ReuseExpr] reuse of temporary object -# 2462| Type = [Class] ClassWithDestructor -# 2462| ValueCategory = xvalue -# 2463| getStmt(1): [ReturnStmt] return ... -# 2466| [CopyAssignmentOperator] rvalue_conversion_with_destructor::A& rvalue_conversion_with_destructor::A::operator=(rvalue_conversion_with_destructor::A const&) -# 2466| : +# 2459| [Constructor] void ByValueConstructor::ByValueConstructor(ClassWithDestructor) +# 2459| : +# 2459| getParameter(0): [Parameter] (unnamed parameter 0) +# 2459| Type = [Class] ClassWithDestructor +# 2462| [TopLevelFunction] void new_with_destructor(ClassWithDestructor) +# 2462| : +# 2462| getParameter(0): [Parameter] a +# 2462| Type = [Class] ClassWithDestructor +# 2463| getEntryPoint(): [BlockStmt] { ... } +# 2464| getStmt(0): [DeclStmt] declaration +# 2464| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b +# 2464| Type = [PointerType] ByValueConstructor * +# 2464| getVariable().getInitializer(): [Initializer] initializer for b +# 2464| getExpr(): [NewExpr] new +# 2464| Type = [PointerType] ByValueConstructor * +# 2464| ValueCategory = prvalue +# 2464| getInitializer(): [ConstructorCall] call to ByValueConstructor +# 2464| Type = [VoidType] void +# 2464| ValueCategory = prvalue +# 2464| getArgument(0): [VariableAccess] a +# 2464| Type = [Class] ClassWithDestructor +# 2464| ValueCategory = prvalue(load) +# 2464| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object +# 2464| Type = [Class] ClassWithDestructor +# 2464| ValueCategory = lvalue +# 2464| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2464| Type = [VoidType] void +# 2464| ValueCategory = prvalue +# 2464| getQualifier(): [ReuseExpr] reuse of temporary object +# 2464| Type = [Class] ClassWithDestructor +# 2464| ValueCategory = xvalue +# 2465| getStmt(1): [ReturnStmt] return ... +# 2468| [CopyAssignmentOperator] rvalue_conversion_with_destructor::A& rvalue_conversion_with_destructor::A::operator=(rvalue_conversion_with_destructor::A const&) +# 2468| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const A & -# 2466| [MoveAssignmentOperator] rvalue_conversion_with_destructor::A& rvalue_conversion_with_destructor::A::operator=(rvalue_conversion_with_destructor::A&&) -# 2466| : +# 2468| [MoveAssignmentOperator] rvalue_conversion_with_destructor::A& rvalue_conversion_with_destructor::A::operator=(rvalue_conversion_with_destructor::A&&) +# 2468| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] A && -# 2470| [CopyAssignmentOperator] rvalue_conversion_with_destructor::B& rvalue_conversion_with_destructor::B::operator=(rvalue_conversion_with_destructor::B const&) -# 2470| : +# 2472| [CopyAssignmentOperator] rvalue_conversion_with_destructor::B& rvalue_conversion_with_destructor::B::operator=(rvalue_conversion_with_destructor::B const&) +# 2472| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const B & -# 2470| [Constructor] void rvalue_conversion_with_destructor::B::B() -# 2470| : -# 2472| [Destructor] void rvalue_conversion_with_destructor::B::~B() +# 2472| [Constructor] void rvalue_conversion_with_destructor::B::B() # 2472| : -# 2474| [ConstMemberFunction] rvalue_conversion_with_destructor::A* rvalue_conversion_with_destructor::B::operator->() const +# 2474| [Destructor] void rvalue_conversion_with_destructor::B::~B() # 2474| : -# 2477| [TopLevelFunction] rvalue_conversion_with_destructor::B rvalue_conversion_with_destructor::get() -# 2477| : -# 2479| [TopLevelFunction] void rvalue_conversion_with_destructor::test() +# 2476| [ConstMemberFunction] rvalue_conversion_with_destructor::A* rvalue_conversion_with_destructor::B::operator->() const +# 2476| : +# 2479| [TopLevelFunction] rvalue_conversion_with_destructor::B rvalue_conversion_with_destructor::get() # 2479| : -# 2480| getEntryPoint(): [BlockStmt] { ... } -# 2481| getStmt(0): [DeclStmt] declaration -# 2481| getDeclarationEntry(0): [VariableDeclarationEntry] definition of a -# 2481| Type = [IntType] unsigned int -# 2481| getVariable().getInitializer(): [Initializer] initializer for a -# 2481| getExpr(): [PointerFieldAccess] a -# 2481| Type = [IntType] unsigned int -# 2481| ValueCategory = prvalue(load) -# 2481| getQualifier(): [FunctionCall] call to operator-> -# 2481| Type = [PointerType] A * -# 2481| ValueCategory = prvalue -# 2481| getQualifier(): [FunctionCall] call to get -# 2481| Type = [Struct] B -# 2481| ValueCategory = prvalue -# 2481| getQualifier().getFullyConverted(): [CStyleCast] (const B)... -# 2481| Conversion = [PrvalueAdjustmentConversion] prvalue adjustment conversion -# 2481| Type = [SpecifiedType] const B -# 2481| ValueCategory = prvalue -# 2481| getExpr(): [TemporaryObjectExpr] temporary object -# 2481| Type = [Struct] B -# 2481| ValueCategory = prvalue(load) -# 2481| getImplicitDestructorCall(0): [DestructorCall] call to ~B -# 2481| Type = [VoidType] void -# 2481| ValueCategory = prvalue -# 2481| getQualifier(): [ReuseExpr] reuse of temporary object -# 2481| Type = [Struct] B -# 2481| ValueCategory = xvalue -# 2482| getStmt(1): [ReturnStmt] return ... -# 2485| [TopLevelFunction] void destructor_without_block(bool) -# 2485| : -# 2485| getParameter(0): [Parameter] b -# 2485| Type = [BoolType] bool -# 2486| getEntryPoint(): [BlockStmt] { ... } -# 2487| getStmt(0): [IfStmt] if (...) ... -# 2487| getCondition(): [VariableAccess] b -# 2487| Type = [BoolType] bool -# 2487| ValueCategory = prvalue(load) -# 2488| getThen(): [DeclStmt] declaration -# 2488| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c -# 2488| Type = [Class] ClassWithDestructor -# 2488| getVariable().getInitializer(): [Initializer] initializer for c -# 2488| getExpr(): [ConstructorCall] call to ClassWithDestructor -# 2488| Type = [VoidType] void -# 2488| ValueCategory = prvalue +# 2481| [TopLevelFunction] void rvalue_conversion_with_destructor::test() +# 2481| : +# 2482| getEntryPoint(): [BlockStmt] { ... } +# 2483| getStmt(0): [DeclStmt] declaration +# 2483| getDeclarationEntry(0): [VariableDeclarationEntry] definition of a +# 2483| Type = [IntType] unsigned int +# 2483| getVariable().getInitializer(): [Initializer] initializer for a +# 2483| getExpr(): [PointerFieldAccess] a +# 2483| Type = [IntType] unsigned int +# 2483| ValueCategory = prvalue(load) +# 2483| getQualifier(): [FunctionCall] call to operator-> +# 2483| Type = [PointerType] A * +# 2483| ValueCategory = prvalue +# 2483| getQualifier(): [FunctionCall] call to get +# 2483| Type = [Struct] B +# 2483| ValueCategory = prvalue +# 2483| getQualifier().getFullyConverted(): [CStyleCast] (const B)... +# 2483| Conversion = [PrvalueAdjustmentConversion] prvalue adjustment conversion +# 2483| Type = [SpecifiedType] const B +# 2483| ValueCategory = prvalue +# 2483| getExpr(): [TemporaryObjectExpr] temporary object +# 2483| Type = [Struct] B +# 2483| ValueCategory = prvalue(load) +# 2483| getImplicitDestructorCall(0): [DestructorCall] call to ~B +# 2483| Type = [VoidType] void +# 2483| ValueCategory = prvalue +# 2483| getQualifier(): [ReuseExpr] reuse of temporary object +# 2483| Type = [Struct] B +# 2483| ValueCategory = xvalue +# 2484| getStmt(1): [ReturnStmt] return ... +# 2487| [TopLevelFunction] void destructor_without_block(bool) +# 2487| : +# 2487| getParameter(0): [Parameter] b +# 2487| Type = [BoolType] bool +# 2488| getEntryPoint(): [BlockStmt] { ... } +# 2489| getStmt(0): [IfStmt] if (...) ... +# 2489| getCondition(): [VariableAccess] b +# 2489| Type = [BoolType] bool +# 2489| ValueCategory = prvalue(load) +# 2490| getThen(): [DeclStmt] declaration +# 2490| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c +# 2490| Type = [Class] ClassWithDestructor +# 2490| getVariable().getInitializer(): [Initializer] initializer for c +# 2490| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2490| Type = [VoidType] void +# 2490| ValueCategory = prvalue #-----| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor #-----| Type = [VoidType] void #-----| ValueCategory = prvalue #-----| getQualifier(): [VariableAccess] c #-----| Type = [Class] ClassWithDestructor #-----| ValueCategory = lvalue -# 2490| getStmt(1): [IfStmt] if (...) ... -# 2490| getCondition(): [VariableAccess] b -# 2490| Type = [BoolType] bool -# 2490| ValueCategory = prvalue(load) -# 2491| getThen(): [DeclStmt] declaration -# 2491| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d -# 2491| Type = [Class] ClassWithDestructor -# 2491| getVariable().getInitializer(): [Initializer] initializer for d -# 2491| getExpr(): [ConstructorCall] call to ClassWithDestructor -# 2491| Type = [VoidType] void -# 2491| ValueCategory = prvalue -#-----| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -#-----| Type = [VoidType] void -#-----| ValueCategory = prvalue -#-----| getQualifier(): [VariableAccess] d -#-----| Type = [Class] ClassWithDestructor -#-----| ValueCategory = lvalue -# 2493| getElse(): [DeclStmt] declaration -# 2493| getDeclarationEntry(0): [VariableDeclarationEntry] definition of e +# 2492| getStmt(1): [IfStmt] if (...) ... +# 2492| getCondition(): [VariableAccess] b +# 2492| Type = [BoolType] bool +# 2492| ValueCategory = prvalue(load) +# 2493| getThen(): [DeclStmt] declaration +# 2493| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d # 2493| Type = [Class] ClassWithDestructor -# 2493| getVariable().getInitializer(): [Initializer] initializer for e +# 2493| getVariable().getInitializer(): [Initializer] initializer for d # 2493| getExpr(): [ConstructorCall] call to ClassWithDestructor # 2493| Type = [VoidType] void # 2493| ValueCategory = prvalue #-----| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor #-----| Type = [VoidType] void #-----| ValueCategory = prvalue +#-----| getQualifier(): [VariableAccess] d +#-----| Type = [Class] ClassWithDestructor +#-----| ValueCategory = lvalue +# 2495| getElse(): [DeclStmt] declaration +# 2495| getDeclarationEntry(0): [VariableDeclarationEntry] definition of e +# 2495| Type = [Class] ClassWithDestructor +# 2495| getVariable().getInitializer(): [Initializer] initializer for e +# 2495| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2495| Type = [VoidType] void +# 2495| ValueCategory = prvalue +#-----| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +#-----| Type = [VoidType] void +#-----| ValueCategory = prvalue #-----| getQualifier(): [VariableAccess] e #-----| Type = [Class] ClassWithDestructor #-----| ValueCategory = lvalue -# 2495| getStmt(2): [WhileStmt] while (...) ... -# 2495| getCondition(): [VariableAccess] b -# 2495| Type = [BoolType] bool -# 2495| ValueCategory = prvalue(load) -# 2496| getStmt(): [DeclStmt] declaration -# 2496| getDeclarationEntry(0): [VariableDeclarationEntry] definition of f -# 2496| Type = [Class] ClassWithDestructor -# 2496| getVariable().getInitializer(): [Initializer] initializer for f -# 2496| getExpr(): [ConstructorCall] call to ClassWithDestructor -# 2496| Type = [VoidType] void -# 2496| ValueCategory = prvalue +# 2497| getStmt(2): [WhileStmt] while (...) ... +# 2497| getCondition(): [VariableAccess] b +# 2497| Type = [BoolType] bool +# 2497| ValueCategory = prvalue(load) +# 2498| getStmt(): [DeclStmt] declaration +# 2498| getDeclarationEntry(0): [VariableDeclarationEntry] definition of f +# 2498| Type = [Class] ClassWithDestructor +# 2498| getVariable().getInitializer(): [Initializer] initializer for f +# 2498| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2498| Type = [VoidType] void +# 2498| ValueCategory = prvalue #-----| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor #-----| Type = [VoidType] void #-----| ValueCategory = prvalue #-----| getQualifier(): [VariableAccess] f #-----| Type = [Class] ClassWithDestructor #-----| ValueCategory = lvalue -# 2498| getStmt(3): [ForStmt] for(...;...;...) ... -# 2498| getInitialization(): [DeclStmt] declaration -# 2498| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i -# 2498| Type = [IntType] int -# 2498| getVariable().getInitializer(): [Initializer] initializer for i -# 2498| getExpr(): [Literal] 0 -# 2498| Type = [IntType] int -# 2498| Value = [Literal] 0 -# 2498| ValueCategory = prvalue -# 2498| getCondition(): [LTExpr] ... < ... -# 2498| Type = [BoolType] bool -# 2498| ValueCategory = prvalue -# 2498| getLesserOperand(): [VariableAccess] i -# 2498| Type = [IntType] int -# 2498| ValueCategory = prvalue(load) -# 2498| getGreaterOperand(): [Literal] 42 -# 2498| Type = [IntType] int -# 2498| Value = [Literal] 42 -# 2498| ValueCategory = prvalue -# 2498| getUpdate(): [PrefixIncrExpr] ++ ... -# 2498| Type = [IntType] int -# 2498| ValueCategory = lvalue -# 2498| getOperand(): [VariableAccess] i -# 2498| Type = [IntType] int -# 2498| ValueCategory = lvalue -# 2499| getStmt(): [DeclStmt] declaration -# 2499| getDeclarationEntry(0): [VariableDeclarationEntry] definition of g -# 2499| Type = [Class] ClassWithDestructor -# 2499| getVariable().getInitializer(): [Initializer] initializer for g -# 2499| getExpr(): [ConstructorCall] call to ClassWithDestructor -# 2499| Type = [VoidType] void -# 2499| ValueCategory = prvalue +# 2500| getStmt(3): [ForStmt] for(...;...;...) ... +# 2500| getInitialization(): [DeclStmt] declaration +# 2500| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i +# 2500| Type = [IntType] int +# 2500| getVariable().getInitializer(): [Initializer] initializer for i +# 2500| getExpr(): [Literal] 0 +# 2500| Type = [IntType] int +# 2500| Value = [Literal] 0 +# 2500| ValueCategory = prvalue +# 2500| getCondition(): [LTExpr] ... < ... +# 2500| Type = [BoolType] bool +# 2500| ValueCategory = prvalue +# 2500| getLesserOperand(): [VariableAccess] i +# 2500| Type = [IntType] int +# 2500| ValueCategory = prvalue(load) +# 2500| getGreaterOperand(): [Literal] 42 +# 2500| Type = [IntType] int +# 2500| Value = [Literal] 42 +# 2500| ValueCategory = prvalue +# 2500| getUpdate(): [PrefixIncrExpr] ++ ... +# 2500| Type = [IntType] int +# 2500| ValueCategory = lvalue +# 2500| getOperand(): [VariableAccess] i +# 2500| Type = [IntType] int +# 2500| ValueCategory = lvalue +# 2501| getStmt(): [DeclStmt] declaration +# 2501| getDeclarationEntry(0): [VariableDeclarationEntry] definition of g +# 2501| Type = [Class] ClassWithDestructor +# 2501| getVariable().getInitializer(): [Initializer] initializer for g +# 2501| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2501| Type = [VoidType] void +# 2501| ValueCategory = prvalue #-----| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor #-----| Type = [VoidType] void #-----| ValueCategory = prvalue #-----| getQualifier(): [VariableAccess] g #-----| Type = [Class] ClassWithDestructor #-----| ValueCategory = lvalue -# 2500| getStmt(4): [ReturnStmt] return ... -# 2502| [TopLevelFunction] void destruction_in_switch_1(int) -# 2502| : -# 2502| getParameter(0): [Parameter] c -# 2502| Type = [IntType] int -# 2502| getEntryPoint(): [BlockStmt] { ... } -# 2503| getStmt(0): [SwitchStmt] switch (...) ... -# 2503| getExpr(): [VariableAccess] c -# 2503| Type = [IntType] int -# 2503| ValueCategory = prvalue(load) -# 2503| getStmt(): [BlockStmt] { ... } -# 2504| getStmt(0): [SwitchCase] case ...: -# 2504| getExpr(): [Literal] 0 -# 2504| Type = [IntType] int -# 2504| Value = [Literal] 0 -# 2504| ValueCategory = prvalue -# 2504| getStmt(1): [BlockStmt] { ... } -# 2505| getStmt(0): [DeclStmt] declaration -# 2505| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 2505| Type = [Class] ClassWithDestructor -# 2505| getVariable().getInitializer(): [Initializer] initializer for x -# 2505| getExpr(): [ConstructorCall] call to ClassWithDestructor -# 2505| Type = [VoidType] void -# 2505| ValueCategory = prvalue -# 2506| getStmt(1): [BreakStmt] break; -# 2507| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2507| Type = [VoidType] void -# 2507| ValueCategory = prvalue -# 2507| getQualifier(): [VariableAccess] x -# 2507| Type = [Class] ClassWithDestructor -# 2507| ValueCategory = lvalue -# 2507| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2507| Type = [VoidType] void -# 2507| ValueCategory = prvalue -# 2507| getQualifier(): [VariableAccess] x +# 2502| getStmt(4): [ReturnStmt] return ... +# 2504| [TopLevelFunction] void destruction_in_switch_1(int) +# 2504| : +# 2504| getParameter(0): [Parameter] c +# 2504| Type = [IntType] int +# 2504| getEntryPoint(): [BlockStmt] { ... } +# 2505| getStmt(0): [SwitchStmt] switch (...) ... +# 2505| getExpr(): [VariableAccess] c +# 2505| Type = [IntType] int +# 2505| ValueCategory = prvalue(load) +# 2505| getStmt(): [BlockStmt] { ... } +# 2506| getStmt(0): [SwitchCase] case ...: +# 2506| getExpr(): [Literal] 0 +# 2506| Type = [IntType] int +# 2506| Value = [Literal] 0 +# 2506| ValueCategory = prvalue +# 2506| getStmt(1): [BlockStmt] { ... } +# 2507| getStmt(0): [DeclStmt] declaration +# 2507| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x # 2507| Type = [Class] ClassWithDestructor -# 2507| ValueCategory = lvalue -# 2508| getStmt(1): [LabelStmt] label ...: -# 2509| getStmt(2): [ReturnStmt] return ... -# 2511| [TopLevelFunction] void destruction_in_switch_2(int) -# 2511| : -# 2511| getParameter(0): [Parameter] c -# 2511| Type = [IntType] int -# 2511| getEntryPoint(): [BlockStmt] { ... } -# 2512| getStmt(0): [SwitchStmt] switch (...) ... -# 2512| getInitialization(): [DeclStmt] declaration -# 2512| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 2512| Type = [Class] ClassWithDestructor -# 2512| getVariable().getInitializer(): [Initializer] initializer for y -# 2512| getExpr(): [ConstructorCall] call to ClassWithDestructor -# 2512| Type = [VoidType] void -# 2512| ValueCategory = prvalue -# 2512| getExpr(): [VariableAccess] c -# 2512| Type = [IntType] int -# 2512| ValueCategory = prvalue(load) -# 2512| getStmt(): [BlockStmt] { ... } -# 2513| getStmt(0): [SwitchCase] case ...: -# 2513| getExpr(): [Literal] 0 -# 2513| Type = [IntType] int -# 2513| Value = [Literal] 0 -# 2513| ValueCategory = prvalue -# 2513| getStmt(1): [BlockStmt] { ... } -# 2514| getStmt(0): [BreakStmt] break; -# 2519| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2519| Type = [VoidType] void -# 2519| ValueCategory = prvalue -# 2519| getQualifier(): [VariableAccess] y -# 2519| Type = [Class] ClassWithDestructor -# 2519| ValueCategory = lvalue -# 2516| getStmt(2): [SwitchCase] default: -# 2516| getStmt(3): [BlockStmt] { ... } -# 2517| getStmt(0): [BreakStmt] break; -# 2519| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2519| Type = [VoidType] void -# 2519| ValueCategory = prvalue -# 2519| getQualifier(): [VariableAccess] y -# 2519| Type = [Class] ClassWithDestructor -# 2519| ValueCategory = lvalue -# 2519| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2519| Type = [VoidType] void -# 2519| ValueCategory = prvalue -# 2519| getQualifier(): [VariableAccess] y -# 2519| Type = [Class] ClassWithDestructor -# 2519| ValueCategory = lvalue -# 2519| getStmt(1): [LabelStmt] label ...: -# 2520| getStmt(2): [ReturnStmt] return ... -# 2522| [TopLevelFunction] void destruction_in_switch_3(int) -# 2522| : -# 2522| getParameter(0): [Parameter] c -# 2522| Type = [IntType] int -# 2522| getEntryPoint(): [BlockStmt] { ... } -# 2523| getStmt(0): [SwitchStmt] switch (...) ... -# 2523| getInitialization(): [DeclStmt] declaration -# 2523| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 2523| Type = [Class] ClassWithDestructor -# 2523| getVariable().getInitializer(): [Initializer] initializer for y -# 2523| getExpr(): [ConstructorCall] call to ClassWithDestructor -# 2523| Type = [VoidType] void -# 2523| ValueCategory = prvalue -# 2523| getExpr(): [VariableAccess] c -# 2523| Type = [IntType] int -# 2523| ValueCategory = prvalue(load) -# 2523| getStmt(): [BlockStmt] { ... } -# 2524| getStmt(0): [SwitchCase] case ...: -# 2524| getExpr(): [Literal] 0 -# 2524| Type = [IntType] int -# 2524| Value = [Literal] 0 -# 2524| ValueCategory = prvalue -# 2524| getStmt(1): [BlockStmt] { ... } -# 2525| getStmt(0): [DeclStmt] declaration -# 2525| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 2525| Type = [Class] ClassWithDestructor -# 2525| getVariable().getInitializer(): [Initializer] initializer for x -# 2525| getExpr(): [ConstructorCall] call to ClassWithDestructor -# 2525| Type = [VoidType] void -# 2525| ValueCategory = prvalue -# 2526| getStmt(1): [BreakStmt] break; -# 2527| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2527| Type = [VoidType] void -# 2527| ValueCategory = prvalue -# 2527| getQualifier(): [VariableAccess] x -# 2527| Type = [Class] ClassWithDestructor -# 2527| ValueCategory = lvalue -# 2531| getImplicitDestructorCall(1): [DestructorCall] call to ~ClassWithDestructor -# 2531| Type = [VoidType] void -# 2531| ValueCategory = prvalue -# 2531| getQualifier(): [VariableAccess] y -# 2531| Type = [Class] ClassWithDestructor -# 2531| ValueCategory = lvalue -# 2527| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2527| Type = [VoidType] void -# 2527| ValueCategory = prvalue -# 2527| getQualifier(): [VariableAccess] x +# 2507| getVariable().getInitializer(): [Initializer] initializer for x +# 2507| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2507| Type = [VoidType] void +# 2507| ValueCategory = prvalue +# 2508| getStmt(1): [BreakStmt] break; +# 2509| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2509| Type = [VoidType] void +# 2509| ValueCategory = prvalue +# 2509| getQualifier(): [VariableAccess] x +# 2509| Type = [Class] ClassWithDestructor +# 2509| ValueCategory = lvalue +# 2509| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2509| Type = [VoidType] void +# 2509| ValueCategory = prvalue +# 2509| getQualifier(): [VariableAccess] x +# 2509| Type = [Class] ClassWithDestructor +# 2509| ValueCategory = lvalue +# 2510| getStmt(1): [LabelStmt] label ...: +# 2511| getStmt(2): [ReturnStmt] return ... +# 2513| [TopLevelFunction] void destruction_in_switch_2(int) +# 2513| : +# 2513| getParameter(0): [Parameter] c +# 2513| Type = [IntType] int +# 2513| getEntryPoint(): [BlockStmt] { ... } +# 2514| getStmt(0): [SwitchStmt] switch (...) ... +# 2514| getInitialization(): [DeclStmt] declaration +# 2514| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 2514| Type = [Class] ClassWithDestructor +# 2514| getVariable().getInitializer(): [Initializer] initializer for y +# 2514| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2514| Type = [VoidType] void +# 2514| ValueCategory = prvalue +# 2514| getExpr(): [VariableAccess] c +# 2514| Type = [IntType] int +# 2514| ValueCategory = prvalue(load) +# 2514| getStmt(): [BlockStmt] { ... } +# 2515| getStmt(0): [SwitchCase] case ...: +# 2515| getExpr(): [Literal] 0 +# 2515| Type = [IntType] int +# 2515| Value = [Literal] 0 +# 2515| ValueCategory = prvalue +# 2515| getStmt(1): [BlockStmt] { ... } +# 2516| getStmt(0): [BreakStmt] break; +# 2521| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2521| Type = [VoidType] void +# 2521| ValueCategory = prvalue +# 2521| getQualifier(): [VariableAccess] y +# 2521| Type = [Class] ClassWithDestructor +# 2521| ValueCategory = lvalue +# 2518| getStmt(2): [SwitchCase] default: +# 2518| getStmt(3): [BlockStmt] { ... } +# 2519| getStmt(0): [BreakStmt] break; +# 2521| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2521| Type = [VoidType] void +# 2521| ValueCategory = prvalue +# 2521| getQualifier(): [VariableAccess] y +# 2521| Type = [Class] ClassWithDestructor +# 2521| ValueCategory = lvalue +# 2521| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2521| Type = [VoidType] void +# 2521| ValueCategory = prvalue +# 2521| getQualifier(): [VariableAccess] y +# 2521| Type = [Class] ClassWithDestructor +# 2521| ValueCategory = lvalue +# 2521| getStmt(1): [LabelStmt] label ...: +# 2522| getStmt(2): [ReturnStmt] return ... +# 2524| [TopLevelFunction] void destruction_in_switch_3(int) +# 2524| : +# 2524| getParameter(0): [Parameter] c +# 2524| Type = [IntType] int +# 2524| getEntryPoint(): [BlockStmt] { ... } +# 2525| getStmt(0): [SwitchStmt] switch (...) ... +# 2525| getInitialization(): [DeclStmt] declaration +# 2525| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 2525| Type = [Class] ClassWithDestructor +# 2525| getVariable().getInitializer(): [Initializer] initializer for y +# 2525| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2525| Type = [VoidType] void +# 2525| ValueCategory = prvalue +# 2525| getExpr(): [VariableAccess] c +# 2525| Type = [IntType] int +# 2525| ValueCategory = prvalue(load) +# 2525| getStmt(): [BlockStmt] { ... } +# 2526| getStmt(0): [SwitchCase] case ...: +# 2526| getExpr(): [Literal] 0 +# 2526| Type = [IntType] int +# 2526| Value = [Literal] 0 +# 2526| ValueCategory = prvalue +# 2526| getStmt(1): [BlockStmt] { ... } +# 2527| getStmt(0): [DeclStmt] declaration +# 2527| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x # 2527| Type = [Class] ClassWithDestructor -# 2527| ValueCategory = lvalue -# 2528| getStmt(2): [SwitchCase] default: -# 2528| getStmt(3): [BlockStmt] { ... } -# 2529| getStmt(0): [BreakStmt] break; -# 2531| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2531| Type = [VoidType] void -# 2531| ValueCategory = prvalue -# 2531| getQualifier(): [VariableAccess] y -# 2531| Type = [Class] ClassWithDestructor -# 2531| ValueCategory = lvalue -# 2531| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2531| Type = [VoidType] void -# 2531| ValueCategory = prvalue -# 2531| getQualifier(): [VariableAccess] y -# 2531| Type = [Class] ClassWithDestructor -# 2531| ValueCategory = lvalue -# 2531| getStmt(1): [LabelStmt] label ...: -# 2532| getStmt(2): [ReturnStmt] return ... -# 2534| [TopLevelFunction] void destructor_possibly_not_handled() -# 2534| : -# 2534| getEntryPoint(): [BlockStmt] { ... } -# 2535| getStmt(0): [DeclStmt] declaration -# 2535| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 2535| Type = [Class] ClassWithDestructor -# 2535| getVariable().getInitializer(): [Initializer] initializer for x -# 2535| getExpr(): [ConstructorCall] call to ClassWithDestructor -# 2535| Type = [VoidType] void -# 2535| ValueCategory = prvalue -# 2536| getStmt(1): [TryStmt] try { ... } -# 2536| getStmt(): [BlockStmt] { ... } -# 2537| getStmt(0): [ExprStmt] ExprStmt -# 2537| getExpr(): [ThrowExpr] throw ... -# 2537| Type = [IntType] int +# 2527| getVariable().getInitializer(): [Initializer] initializer for x +# 2527| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2527| Type = [VoidType] void +# 2527| ValueCategory = prvalue +# 2528| getStmt(1): [BreakStmt] break; +# 2529| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2529| Type = [VoidType] void +# 2529| ValueCategory = prvalue +# 2529| getQualifier(): [VariableAccess] x +# 2529| Type = [Class] ClassWithDestructor +# 2529| ValueCategory = lvalue +# 2533| getImplicitDestructorCall(1): [DestructorCall] call to ~ClassWithDestructor +# 2533| Type = [VoidType] void +# 2533| ValueCategory = prvalue +# 2533| getQualifier(): [VariableAccess] y +# 2533| Type = [Class] ClassWithDestructor +# 2533| ValueCategory = lvalue +# 2529| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2529| Type = [VoidType] void +# 2529| ValueCategory = prvalue +# 2529| getQualifier(): [VariableAccess] x +# 2529| Type = [Class] ClassWithDestructor +# 2529| ValueCategory = lvalue +# 2530| getStmt(2): [SwitchCase] default: +# 2530| getStmt(3): [BlockStmt] { ... } +# 2531| getStmt(0): [BreakStmt] break; +# 2533| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2533| Type = [VoidType] void +# 2533| ValueCategory = prvalue +# 2533| getQualifier(): [VariableAccess] y +# 2533| Type = [Class] ClassWithDestructor +# 2533| ValueCategory = lvalue +# 2533| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2533| Type = [VoidType] void +# 2533| ValueCategory = prvalue +# 2533| getQualifier(): [VariableAccess] y +# 2533| Type = [Class] ClassWithDestructor +# 2533| ValueCategory = lvalue +# 2533| getStmt(1): [LabelStmt] label ...: +# 2534| getStmt(2): [ReturnStmt] return ... +# 2536| [TopLevelFunction] void destructor_possibly_not_handled() +# 2536| : +# 2536| getEntryPoint(): [BlockStmt] { ... } +# 2537| getStmt(0): [DeclStmt] declaration +# 2537| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2537| Type = [Class] ClassWithDestructor +# 2537| getVariable().getInitializer(): [Initializer] initializer for x +# 2537| getExpr(): [ConstructorCall] call to ClassWithDestructor +# 2537| Type = [VoidType] void # 2537| ValueCategory = prvalue -# 2537| getExpr(): [Literal] 42 -# 2537| Type = [IntType] int -# 2537| Value = [Literal] 42 -# 2537| ValueCategory = prvalue -# 2539| getChild(1): [Handler] -# 2539| getParameter(): [Parameter] (unnamed parameter 0) -# 2539| Type = [PlainCharType] char -# 2539| getBlock(): [CatchBlock] { ... } -# 2541| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2541| Type = [VoidType] void -# 2541| ValueCategory = prvalue -# 2541| getQualifier(): [VariableAccess] x -# 2541| Type = [Class] ClassWithDestructor -# 2541| ValueCategory = lvalue -# 2541| getStmt(2): [ReturnStmt] return ... -# 2541| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2541| Type = [VoidType] void -# 2541| ValueCategory = prvalue -# 2541| getQualifier(): [VariableAccess] x -# 2541| Type = [Class] ClassWithDestructor -# 2541| ValueCategory = lvalue -# 2543| [TopLevelFunction] ClassWithDestructor getClassWithDestructor() -# 2543| : -# 2545| [TopLevelFunction] void this_inconsistency(bool) +# 2538| getStmt(1): [TryStmt] try { ... } +# 2538| getStmt(): [BlockStmt] { ... } +# 2539| getStmt(0): [ExprStmt] ExprStmt +# 2539| getExpr(): [ThrowExpr] throw ... +# 2539| Type = [IntType] int +# 2539| ValueCategory = prvalue +# 2539| getExpr(): [Literal] 42 +# 2539| Type = [IntType] int +# 2539| Value = [Literal] 42 +# 2539| ValueCategory = prvalue +# 2541| getChild(1): [Handler] +# 2541| getParameter(): [Parameter] (unnamed parameter 0) +# 2541| Type = [PlainCharType] char +# 2541| getBlock(): [CatchBlock] { ... } +# 2543| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2543| Type = [VoidType] void +# 2543| ValueCategory = prvalue +# 2543| getQualifier(): [VariableAccess] x +# 2543| Type = [Class] ClassWithDestructor +# 2543| ValueCategory = lvalue +# 2543| getStmt(2): [ReturnStmt] return ... +# 2543| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2543| Type = [VoidType] void +# 2543| ValueCategory = prvalue +# 2543| getQualifier(): [VariableAccess] x +# 2543| Type = [Class] ClassWithDestructor +# 2543| ValueCategory = lvalue +# 2545| [TopLevelFunction] ClassWithDestructor getClassWithDestructor() # 2545| : -# 2545| getParameter(0): [Parameter] b -# 2545| Type = [BoolType] bool -# 2545| getEntryPoint(): [BlockStmt] { ... } -# 2546| getStmt(0): [IfStmt] if (...) ... -# 2546| getCondition(): [ConditionDeclExpr] (condition decl) -# 2546| Type = [BoolType] bool -# 2546| ValueCategory = prvalue -# 2546| getChild(0): [FunctionCall] call to operator bool -# 2546| Type = [BoolType] bool -# 2546| ValueCategory = prvalue -# 2546| getQualifier(): [VariableAccess] a -# 2546| Type = [LValueReferenceType] const ClassWithDestructor & -# 2546| ValueCategory = prvalue(load) -# 2546| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2546| Type = [SpecifiedType] const ClassWithDestructor -# 2546| ValueCategory = prvalue(load) -# 2546| getInitializingExpr(): [FunctionCall] call to getClassWithDestructor -# 2546| Type = [Class] ClassWithDestructor -# 2546| ValueCategory = prvalue -# 2546| getInitializingExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 2546| Type = [LValueReferenceType] const ClassWithDestructor & -# 2546| ValueCategory = prvalue -# 2546| getExpr(): [CStyleCast] (const ClassWithDestructor)... -# 2546| Conversion = [GlvalueConversion] glvalue conversion -# 2546| Type = [SpecifiedType] const ClassWithDestructor -# 2546| ValueCategory = lvalue -# 2546| getExpr(): [TemporaryObjectExpr] temporary object -# 2546| Type = [Class] ClassWithDestructor -# 2546| ValueCategory = lvalue -# 2547| getThen(): [EmptyStmt] ; -# 2547| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2547| Type = [VoidType] void -# 2547| ValueCategory = prvalue -# 2547| getQualifier(): [ReuseExpr] reuse of temporary object -# 2547| Type = [Class] ClassWithDestructor -# 2547| ValueCategory = xvalue -# 2548| getStmt(1): [ReturnStmt] return ... -# 2550| [TopLevelFunction] void constexpr_inconsistency(bool) -# 2550| : -# 2550| getParameter(0): [Parameter] b -# 2550| Type = [BoolType] bool -# 2550| getEntryPoint(): [BlockStmt] { ... } -# 2551| getStmt(0): [ConstexprIfStmt] if constexpr (...) ... -# 2551| getInitialization(): [DeclStmt] declaration -# 2551| getDeclarationEntry(0): [VariableDeclarationEntry] definition of a -# 2551| Type = [LValueReferenceType] const ClassWithDestructor & -# 2551| getVariable().getInitializer(): [Initializer] initializer for a -# 2551| getExpr(): [FunctionCall] call to getClassWithDestructor -# 2551| Type = [Class] ClassWithDestructor -# 2551| ValueCategory = prvalue -# 2551| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) -# 2551| Type = [LValueReferenceType] const ClassWithDestructor & -# 2551| ValueCategory = prvalue -# 2551| getExpr(): [CStyleCast] (const ClassWithDestructor)... -# 2551| Conversion = [GlvalueConversion] glvalue conversion -# 2551| Type = [SpecifiedType] const ClassWithDestructor -# 2551| ValueCategory = lvalue -# 2551| getExpr(): [TemporaryObjectExpr] temporary object -# 2551| Type = [Class] ClassWithDestructor -# 2551| ValueCategory = lvalue -# 2551| getCondition(): [VariableAccess] initialization_with_destructor_bool -# 2551| Type = [BoolType] bool -# 2551| Value = [VariableAccess] 1 -# 2551| ValueCategory = prvalue(load) -# 2552| getThen(): [EmptyStmt] ; -# 2552| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor -# 2552| Type = [VoidType] void -# 2552| ValueCategory = prvalue -# 2552| getQualifier(): [ReuseExpr] reuse of temporary object -# 2552| Type = [Class] ClassWithDestructor -# 2552| ValueCategory = xvalue -# 2553| getStmt(1): [ReturnStmt] return ... -# 2555| [TopLevelFunction] void builtin_bitcast(unsigned long) -# 2555| : -# 2555| getParameter(0): [Parameter] ul -# 2555| Type = [LongType] unsigned long -# 2555| getEntryPoint(): [BlockStmt] { ... } -# 2556| getStmt(0): [DeclStmt] declaration -# 2556| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d -# 2556| Type = [DoubleType] double -# 2556| getVariable().getInitializer(): [Initializer] initializer for d -# 2556| getExpr(): [BuiltInBitCast] __builtin_bit_cast -# 2556| Type = [DoubleType] double -# 2556| ValueCategory = prvalue -# 2556| getChild(0): [TypeName] double -# 2556| Type = [DoubleType] double -# 2556| ValueCategory = prvalue -# 2556| getChild(1): [VariableAccess] ul -# 2556| Type = [LongType] unsigned long -# 2556| ValueCategory = prvalue(load) -# 2557| getStmt(1): [ReturnStmt] return ... -# 2559| [TopLevelFunction] void p_points_to_x_or_y(int, int) -# 2559| : -# 2559| getParameter(0): [Parameter] a -# 2559| Type = [IntType] int -# 2559| getParameter(1): [Parameter] b -# 2559| Type = [IntType] int -# 2559| getEntryPoint(): [BlockStmt] { ... } -# 2560| getStmt(0): [DeclStmt] declaration -# 2560| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 2560| Type = [IntType] int -# 2561| getStmt(1): [DeclStmt] declaration -# 2561| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 2561| Type = [IntType] int -# 2562| getStmt(2): [DeclStmt] declaration -# 2562| getDeclarationEntry(0): [VariableDeclarationEntry] definition of p -# 2562| Type = [IntPointerType] int * -# 2563| getStmt(3): [IfStmt] if (...) ... -# 2563| getCondition(): [LTExpr] ... < ... -# 2563| Type = [BoolType] bool -# 2563| ValueCategory = prvalue -# 2563| getLesserOperand(): [VariableAccess] a -# 2563| Type = [IntType] int -# 2563| ValueCategory = prvalue(load) -# 2563| getGreaterOperand(): [VariableAccess] b -# 2563| Type = [IntType] int -# 2563| ValueCategory = prvalue(load) -# 2563| getThen(): [BlockStmt] { ... } -# 2564| getStmt(0): [ExprStmt] ExprStmt -# 2564| getExpr(): [AssignExpr] ... = ... -# 2564| Type = [IntPointerType] int * -# 2564| ValueCategory = lvalue -# 2564| getLValue(): [VariableAccess] p -# 2564| Type = [IntPointerType] int * -# 2564| ValueCategory = lvalue -# 2564| getRValue(): [AddressOfExpr] & ... -# 2564| Type = [IntPointerType] int * -# 2564| ValueCategory = prvalue -# 2564| getOperand(): [VariableAccess] x -# 2564| Type = [IntType] int -# 2564| ValueCategory = lvalue -# 2565| getElse(): [BlockStmt] { ... } +# 2547| [TopLevelFunction] void this_inconsistency(bool) +# 2547| : +# 2547| getParameter(0): [Parameter] b +# 2547| Type = [BoolType] bool +# 2547| getEntryPoint(): [BlockStmt] { ... } +# 2548| getStmt(0): [IfStmt] if (...) ... +# 2548| getCondition(): [ConditionDeclExpr] (condition decl) +# 2548| Type = [BoolType] bool +# 2548| ValueCategory = prvalue +# 2548| getChild(0): [FunctionCall] call to operator bool +# 2548| Type = [BoolType] bool +# 2548| ValueCategory = prvalue +# 2548| getQualifier(): [VariableAccess] a +# 2548| Type = [LValueReferenceType] const ClassWithDestructor & +# 2548| ValueCategory = prvalue(load) +# 2548| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2548| Type = [SpecifiedType] const ClassWithDestructor +# 2548| ValueCategory = prvalue(load) +# 2548| getInitializingExpr(): [FunctionCall] call to getClassWithDestructor +# 2548| Type = [Class] ClassWithDestructor +# 2548| ValueCategory = prvalue +# 2548| getInitializingExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 2548| Type = [LValueReferenceType] const ClassWithDestructor & +# 2548| ValueCategory = prvalue +# 2548| getExpr(): [CStyleCast] (const ClassWithDestructor)... +# 2548| Conversion = [GlvalueConversion] glvalue conversion +# 2548| Type = [SpecifiedType] const ClassWithDestructor +# 2548| ValueCategory = lvalue +# 2548| getExpr(): [TemporaryObjectExpr] temporary object +# 2548| Type = [Class] ClassWithDestructor +# 2548| ValueCategory = lvalue +# 2549| getThen(): [EmptyStmt] ; +# 2549| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2549| Type = [VoidType] void +# 2549| ValueCategory = prvalue +# 2549| getQualifier(): [ReuseExpr] reuse of temporary object +# 2549| Type = [Class] ClassWithDestructor +# 2549| ValueCategory = xvalue +# 2550| getStmt(1): [ReturnStmt] return ... +# 2552| [TopLevelFunction] void constexpr_inconsistency(bool) +# 2552| : +# 2552| getParameter(0): [Parameter] b +# 2552| Type = [BoolType] bool +# 2552| getEntryPoint(): [BlockStmt] { ... } +# 2553| getStmt(0): [ConstexprIfStmt] if constexpr (...) ... +# 2553| getInitialization(): [DeclStmt] declaration +# 2553| getDeclarationEntry(0): [VariableDeclarationEntry] definition of a +# 2553| Type = [LValueReferenceType] const ClassWithDestructor & +# 2553| getVariable().getInitializer(): [Initializer] initializer for a +# 2553| getExpr(): [FunctionCall] call to getClassWithDestructor +# 2553| Type = [Class] ClassWithDestructor +# 2553| ValueCategory = prvalue +# 2553| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to) +# 2553| Type = [LValueReferenceType] const ClassWithDestructor & +# 2553| ValueCategory = prvalue +# 2553| getExpr(): [CStyleCast] (const ClassWithDestructor)... +# 2553| Conversion = [GlvalueConversion] glvalue conversion +# 2553| Type = [SpecifiedType] const ClassWithDestructor +# 2553| ValueCategory = lvalue +# 2553| getExpr(): [TemporaryObjectExpr] temporary object +# 2553| Type = [Class] ClassWithDestructor +# 2553| ValueCategory = lvalue +# 2553| getCondition(): [VariableAccess] initialization_with_destructor_bool +# 2553| Type = [BoolType] bool +# 2553| Value = [VariableAccess] 1 +# 2553| ValueCategory = prvalue(load) +# 2554| getThen(): [EmptyStmt] ; +# 2554| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor +# 2554| Type = [VoidType] void +# 2554| ValueCategory = prvalue +# 2554| getQualifier(): [ReuseExpr] reuse of temporary object +# 2554| Type = [Class] ClassWithDestructor +# 2554| ValueCategory = xvalue +# 2555| getStmt(1): [ReturnStmt] return ... +# 2557| [TopLevelFunction] void builtin_bitcast(unsigned long) +# 2557| : +# 2557| getParameter(0): [Parameter] ul +# 2557| Type = [LongType] unsigned long +# 2557| getEntryPoint(): [BlockStmt] { ... } +# 2558| getStmt(0): [DeclStmt] declaration +# 2558| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d +# 2558| Type = [DoubleType] double +# 2558| getVariable().getInitializer(): [Initializer] initializer for d +# 2558| getExpr(): [BuiltInBitCast] __builtin_bit_cast +# 2558| Type = [DoubleType] double +# 2558| ValueCategory = prvalue +# 2558| getChild(0): [TypeName] double +# 2558| Type = [DoubleType] double +# 2558| ValueCategory = prvalue +# 2558| getChild(1): [VariableAccess] ul +# 2558| Type = [LongType] unsigned long +# 2558| ValueCategory = prvalue(load) +# 2559| getStmt(1): [ReturnStmt] return ... +# 2561| [TopLevelFunction] void p_points_to_x_or_y(int, int) +# 2561| : +# 2561| getParameter(0): [Parameter] a +# 2561| Type = [IntType] int +# 2561| getParameter(1): [Parameter] b +# 2561| Type = [IntType] int +# 2561| getEntryPoint(): [BlockStmt] { ... } +# 2562| getStmt(0): [DeclStmt] declaration +# 2562| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2562| Type = [IntType] int +# 2563| getStmt(1): [DeclStmt] declaration +# 2563| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 2563| Type = [IntType] int +# 2564| getStmt(2): [DeclStmt] declaration +# 2564| getDeclarationEntry(0): [VariableDeclarationEntry] definition of p +# 2564| Type = [IntPointerType] int * +# 2565| getStmt(3): [IfStmt] if (...) ... +# 2565| getCondition(): [LTExpr] ... < ... +# 2565| Type = [BoolType] bool +# 2565| ValueCategory = prvalue +# 2565| getLesserOperand(): [VariableAccess] a +# 2565| Type = [IntType] int +# 2565| ValueCategory = prvalue(load) +# 2565| getGreaterOperand(): [VariableAccess] b +# 2565| Type = [IntType] int +# 2565| ValueCategory = prvalue(load) +# 2565| getThen(): [BlockStmt] { ... } # 2566| getStmt(0): [ExprStmt] ExprStmt # 2566| getExpr(): [AssignExpr] ... = ... # 2566| Type = [IntPointerType] int * @@ -23366,732 +23352,702 @@ ir.cpp: # 2566| getRValue(): [AddressOfExpr] & ... # 2566| Type = [IntPointerType] int * # 2566| ValueCategory = prvalue -# 2566| getOperand(): [VariableAccess] y +# 2566| getOperand(): [VariableAccess] x # 2566| Type = [IntType] int # 2566| ValueCategory = lvalue -# 2568| getStmt(4): [ExprStmt] ExprStmt -# 2568| getExpr(): [AssignExpr] ... = ... -# 2568| Type = [IntType] int -# 2568| ValueCategory = lvalue -# 2568| getLValue(): [PointerDereferenceExpr] * ... -# 2568| Type = [IntType] int -# 2568| ValueCategory = lvalue -# 2568| getOperand(): [VariableAccess] p +# 2567| getElse(): [BlockStmt] { ... } +# 2568| getStmt(0): [ExprStmt] ExprStmt +# 2568| getExpr(): [AssignExpr] ... = ... # 2568| Type = [IntPointerType] int * -# 2568| ValueCategory = prvalue(load) -# 2568| getRValue(): [Literal] 5 -# 2568| Type = [IntType] int -# 2568| Value = [Literal] 5 -# 2568| ValueCategory = prvalue -# 2569| getStmt(5): [DeclStmt] declaration -# 2569| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z -# 2569| Type = [IntType] int -# 2569| getVariable().getInitializer(): [Initializer] initializer for z -# 2569| getExpr(): [VariableAccess] x -# 2569| Type = [IntType] int -# 2569| ValueCategory = prvalue(load) -# 2570| getStmt(6): [DeclStmt] declaration -# 2570| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w +# 2568| ValueCategory = lvalue +# 2568| getLValue(): [VariableAccess] p +# 2568| Type = [IntPointerType] int * +# 2568| ValueCategory = lvalue +# 2568| getRValue(): [AddressOfExpr] & ... +# 2568| Type = [IntPointerType] int * +# 2568| ValueCategory = prvalue +# 2568| getOperand(): [VariableAccess] y +# 2568| Type = [IntType] int +# 2568| ValueCategory = lvalue +# 2570| getStmt(4): [ExprStmt] ExprStmt +# 2570| getExpr(): [AssignExpr] ... = ... # 2570| Type = [IntType] int -# 2570| getVariable().getInitializer(): [Initializer] initializer for w -# 2570| getExpr(): [VariableAccess] y -# 2570| Type = [IntType] int +# 2570| ValueCategory = lvalue +# 2570| getLValue(): [PointerDereferenceExpr] * ... +# 2570| Type = [IntType] int +# 2570| ValueCategory = lvalue +# 2570| getOperand(): [VariableAccess] p +# 2570| Type = [IntPointerType] int * # 2570| ValueCategory = prvalue(load) -# 2571| getStmt(7): [ReturnStmt] return ... -# 2573| [TopLevelFunction] int phi_after_while() -# 2573| : -# 2573| getEntryPoint(): [BlockStmt] { ... } -# 2574| getStmt(0): [DeclStmt] declaration -# 2574| getDeclarationEntry(0): [VariableDeclarationEntry] definition of r -# 2574| Type = [IntType] int -# 2575| getStmt(1): [DeclStmt] declaration -# 2575| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rP -# 2575| Type = [IntPointerType] int * -# 2575| getVariable().getInitializer(): [Initializer] initializer for rP -# 2575| getExpr(): [AddressOfExpr] & ... -# 2575| Type = [IntPointerType] int * -# 2575| ValueCategory = prvalue -# 2575| getOperand(): [VariableAccess] r -# 2575| Type = [IntType] int -# 2575| ValueCategory = lvalue -# 2577| getStmt(2): [WhileStmt] while (...) ... -# 2577| getCondition(): [FunctionCall] call to predicateA -# 2577| Type = [BoolType] bool -# 2577| ValueCategory = prvalue -# 2577| getStmt(): [BlockStmt] { ... } -# 2578| getStmt(0): [DeclStmt] declaration -# 2578| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s -# 2578| Type = [IntType] int -# 2578| getVariable().getInitializer(): [Initializer] initializer for s -# 2578| getExpr(): [Literal] 0 -# 2578| Type = [IntType] int -# 2578| Value = [Literal] 0 -# 2578| ValueCategory = prvalue -# 2579| getStmt(1): [ExprStmt] ExprStmt -# 2579| getExpr(): [AssignExpr] ... = ... -# 2579| Type = [IntType] int -# 2579| ValueCategory = lvalue -# 2579| getLValue(): [PointerDereferenceExpr] * ... -# 2579| Type = [IntType] int -# 2579| ValueCategory = lvalue -# 2579| getOperand(): [VariableAccess] rP -# 2579| Type = [IntPointerType] int * -# 2579| ValueCategory = prvalue(load) -# 2579| getRValue(): [VariableAccess] s -# 2579| Type = [IntType] int -# 2579| ValueCategory = prvalue(load) -# 2580| getStmt(2): [ExprStmt] ExprStmt -# 2580| getExpr(): [AssignExpr] ... = ... -# 2580| Type = [IntPointerType] int * -# 2580| ValueCategory = lvalue -# 2580| getLValue(): [VariableAccess] rP -# 2580| Type = [IntPointerType] int * -# 2580| ValueCategory = lvalue -# 2580| getRValue(): [AddressOfExpr] & ... -# 2580| Type = [IntPointerType] int * -# 2580| ValueCategory = prvalue -# 2580| getOperand(): [VariableAccess] s +# 2570| getRValue(): [Literal] 5 +# 2570| Type = [IntType] int +# 2570| Value = [Literal] 5 +# 2570| ValueCategory = prvalue +# 2571| getStmt(5): [DeclStmt] declaration +# 2571| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z +# 2571| Type = [IntType] int +# 2571| getVariable().getInitializer(): [Initializer] initializer for z +# 2571| getExpr(): [VariableAccess] x +# 2571| Type = [IntType] int +# 2571| ValueCategory = prvalue(load) +# 2572| getStmt(6): [DeclStmt] declaration +# 2572| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w +# 2572| Type = [IntType] int +# 2572| getVariable().getInitializer(): [Initializer] initializer for w +# 2572| getExpr(): [VariableAccess] y +# 2572| Type = [IntType] int +# 2572| ValueCategory = prvalue(load) +# 2573| getStmt(7): [ReturnStmt] return ... +# 2575| [TopLevelFunction] int phi_after_while() +# 2575| : +# 2575| getEntryPoint(): [BlockStmt] { ... } +# 2576| getStmt(0): [DeclStmt] declaration +# 2576| getDeclarationEntry(0): [VariableDeclarationEntry] definition of r +# 2576| Type = [IntType] int +# 2577| getStmt(1): [DeclStmt] declaration +# 2577| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rP +# 2577| Type = [IntPointerType] int * +# 2577| getVariable().getInitializer(): [Initializer] initializer for rP +# 2577| getExpr(): [AddressOfExpr] & ... +# 2577| Type = [IntPointerType] int * +# 2577| ValueCategory = prvalue +# 2577| getOperand(): [VariableAccess] r +# 2577| Type = [IntType] int +# 2577| ValueCategory = lvalue +# 2579| getStmt(2): [WhileStmt] while (...) ... +# 2579| getCondition(): [FunctionCall] call to predicateA +# 2579| Type = [BoolType] bool +# 2579| ValueCategory = prvalue +# 2579| getStmt(): [BlockStmt] { ... } +# 2580| getStmt(0): [DeclStmt] declaration +# 2580| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s +# 2580| Type = [IntType] int +# 2580| getVariable().getInitializer(): [Initializer] initializer for s +# 2580| getExpr(): [Literal] 0 # 2580| Type = [IntType] int -# 2580| ValueCategory = lvalue -# 2583| getStmt(3): [ReturnStmt] return ... -# 2583| getExpr(): [VariableAccess] r -# 2583| Type = [IntType] int -# 2583| ValueCategory = prvalue(load) -# 2588| [TopLevelFunction] char* recursive_conditional_call_with_increment(char*, bool) -# 2588| : -# 2588| getParameter(0): [Parameter] d -# 2588| Type = [CharPointerType] char * -# 2588| getParameter(1): [Parameter] b -# 2588| Type = [BoolType] bool -# 2589| getEntryPoint(): [BlockStmt] { ... } -# 2590| getStmt(0): [IfStmt] if (...) ... -# 2590| getCondition(): [VariableAccess] b -# 2590| Type = [BoolType] bool -# 2590| ValueCategory = prvalue(load) -# 2590| getThen(): [BlockStmt] { ... } -# 2591| getStmt(0): [ExprStmt] ExprStmt -# 2591| getExpr(): [AssignExpr] ... = ... -# 2591| Type = [CharPointerType] char * -# 2591| ValueCategory = lvalue -# 2591| getLValue(): [VariableAccess] d -# 2591| Type = [CharPointerType] char * -# 2591| ValueCategory = lvalue -# 2591| getRValue(): [FunctionCall] call to recursive_conditional_call_with_increment -# 2591| Type = [CharPointerType] char * -# 2591| ValueCategory = prvalue -# 2591| getArgument(0): [VariableAccess] d -# 2591| Type = [CharPointerType] char * -# 2591| ValueCategory = prvalue(load) -# 2591| getArgument(1): [VariableAccess] b -# 2591| Type = [BoolType] bool -# 2591| ValueCategory = prvalue(load) -# 2593| getStmt(1): [ExprStmt] ExprStmt -# 2593| getExpr(): [PostfixIncrExpr] ... ++ -# 2593| Type = [CharPointerType] char * -# 2593| ValueCategory = prvalue -# 2593| getOperand(): [VariableAccess] d -# 2593| Type = [CharPointerType] char * -# 2593| ValueCategory = lvalue -# 2594| getStmt(2): [ReturnStmt] return ... -# 2594| getExpr(): [VariableAccess] d -# 2594| Type = [CharPointerType] char * -# 2594| ValueCategory = prvalue(load) -# 2597| [CopyAssignmentOperator] Recursive& Recursive::operator=(Recursive const&) -# 2597| : +# 2580| Value = [Literal] 0 +# 2580| ValueCategory = prvalue +# 2581| getStmt(1): [ExprStmt] ExprStmt +# 2581| getExpr(): [AssignExpr] ... = ... +# 2581| Type = [IntType] int +# 2581| ValueCategory = lvalue +# 2581| getLValue(): [PointerDereferenceExpr] * ... +# 2581| Type = [IntType] int +# 2581| ValueCategory = lvalue +# 2581| getOperand(): [VariableAccess] rP +# 2581| Type = [IntPointerType] int * +# 2581| ValueCategory = prvalue(load) +# 2581| getRValue(): [VariableAccess] s +# 2581| Type = [IntType] int +# 2581| ValueCategory = prvalue(load) +# 2582| getStmt(2): [ExprStmt] ExprStmt +# 2582| getExpr(): [AssignExpr] ... = ... +# 2582| Type = [IntPointerType] int * +# 2582| ValueCategory = lvalue +# 2582| getLValue(): [VariableAccess] rP +# 2582| Type = [IntPointerType] int * +# 2582| ValueCategory = lvalue +# 2582| getRValue(): [AddressOfExpr] & ... +# 2582| Type = [IntPointerType] int * +# 2582| ValueCategory = prvalue +# 2582| getOperand(): [VariableAccess] s +# 2582| Type = [IntType] int +# 2582| ValueCategory = lvalue +# 2585| getStmt(3): [ReturnStmt] return ... +# 2585| getExpr(): [VariableAccess] r +# 2585| Type = [IntType] int +# 2585| ValueCategory = prvalue(load) +# 2590| [TopLevelFunction] char* recursive_conditional_call_with_increment(char*, bool) +# 2590| : +# 2590| getParameter(0): [Parameter] d +# 2590| Type = [CharPointerType] char * +# 2590| getParameter(1): [Parameter] b +# 2590| Type = [BoolType] bool +# 2591| getEntryPoint(): [BlockStmt] { ... } +# 2592| getStmt(0): [IfStmt] if (...) ... +# 2592| getCondition(): [VariableAccess] b +# 2592| Type = [BoolType] bool +# 2592| ValueCategory = prvalue(load) +# 2592| getThen(): [BlockStmt] { ... } +# 2593| getStmt(0): [ExprStmt] ExprStmt +# 2593| getExpr(): [AssignExpr] ... = ... +# 2593| Type = [CharPointerType] char * +# 2593| ValueCategory = lvalue +# 2593| getLValue(): [VariableAccess] d +# 2593| Type = [CharPointerType] char * +# 2593| ValueCategory = lvalue +# 2593| getRValue(): [FunctionCall] call to recursive_conditional_call_with_increment +# 2593| Type = [CharPointerType] char * +# 2593| ValueCategory = prvalue +# 2593| getArgument(0): [VariableAccess] d +# 2593| Type = [CharPointerType] char * +# 2593| ValueCategory = prvalue(load) +# 2593| getArgument(1): [VariableAccess] b +# 2593| Type = [BoolType] bool +# 2593| ValueCategory = prvalue(load) +# 2595| getStmt(1): [ExprStmt] ExprStmt +# 2595| getExpr(): [PostfixIncrExpr] ... ++ +# 2595| Type = [CharPointerType] char * +# 2595| ValueCategory = prvalue +# 2595| getOperand(): [VariableAccess] d +# 2595| Type = [CharPointerType] char * +# 2595| ValueCategory = lvalue +# 2596| getStmt(2): [ReturnStmt] return ... +# 2596| getExpr(): [VariableAccess] d +# 2596| Type = [CharPointerType] char * +# 2596| ValueCategory = prvalue(load) +# 2599| [CopyAssignmentOperator] Recursive& Recursive::operator=(Recursive const&) +# 2599| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const Recursive & -# 2597| [MoveAssignmentOperator] Recursive& Recursive::operator=(Recursive&&) -# 2597| : +# 2599| [MoveAssignmentOperator] Recursive& Recursive::operator=(Recursive&&) +# 2599| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] Recursive && -# 2602| [TopLevelFunction] Recursive* merge(Recursive*) -# 2602| : -# 2602| getParameter(0): [Parameter] a -# 2602| Type = [PointerType] Recursive * -# 2603| getEntryPoint(): [BlockStmt] { ... } -# 2604| getStmt(0): [DeclStmt] declaration -# 2604| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b -# 2604| Type = [PointerType] Recursive * -# 2605| getStmt(1): [DeclStmt] declaration -# 2605| getDeclarationEntry(0): [VariableDeclarationEntry] definition of p -# 2605| Type = [PointerType] Recursive ** -# 2605| getVariable().getInitializer(): [Initializer] initializer for p -# 2605| getExpr(): [AddressOfExpr] & ... -# 2605| Type = [PointerType] Recursive ** -# 2605| ValueCategory = prvalue -# 2605| getOperand(): [VariableAccess] b -# 2605| Type = [PointerType] Recursive * -# 2605| ValueCategory = lvalue -# 2607| getStmt(2): [WhileStmt] while (...) ... -# 2607| getCondition(): [FunctionCall] call to predicateA -# 2607| Type = [BoolType] bool -# 2607| ValueCategory = prvalue -# 2608| getStmt(): [BlockStmt] { ... } -# 2609| getStmt(0): [ExprStmt] ExprStmt -# 2609| getExpr(): [AssignExpr] ... = ... -# 2609| Type = [PointerType] Recursive * -# 2609| ValueCategory = lvalue -# 2609| getLValue(): [PointerDereferenceExpr] * ... -# 2609| Type = [PointerType] Recursive * -# 2609| ValueCategory = lvalue -# 2609| getOperand(): [VariableAccess] p -# 2609| Type = [PointerType] Recursive ** -# 2609| ValueCategory = prvalue(load) -# 2609| getRValue(): [VariableAccess] a -# 2609| Type = [PointerType] Recursive * -# 2609| ValueCategory = prvalue(load) -# 2610| getStmt(1): [ExprStmt] ExprStmt -# 2610| getExpr(): [AssignExpr] ... = ... -# 2610| Type = [PointerType] Recursive ** -# 2610| ValueCategory = lvalue -# 2610| getLValue(): [VariableAccess] p -# 2610| Type = [PointerType] Recursive ** -# 2610| ValueCategory = lvalue -# 2610| getRValue(): [AddressOfExpr] & ... -# 2610| Type = [PointerType] Recursive ** -# 2610| ValueCategory = prvalue -# 2610| getOperand(): [PointerFieldAccess] next -# 2610| Type = [PointerType] Recursive * -# 2610| ValueCategory = lvalue -# 2610| getQualifier(): [VariableAccess] a -# 2610| Type = [PointerType] Recursive * -# 2610| ValueCategory = prvalue(load) -# 2613| getStmt(3): [ReturnStmt] return ... -# 2613| getExpr(): [VariableAccess] b -# 2613| Type = [PointerType] Recursive * -# 2613| ValueCategory = prvalue(load) -# 2616| [TopLevelFunction] void use_const_int(int const*) -# 2616| : -# 2616| getParameter(0): [Parameter] (unnamed parameter 0) -# 2616| Type = [PointerType] const int * -# 2618| [TopLevelFunction] void escaping_pointer(bool) +# 2604| [TopLevelFunction] Recursive* merge(Recursive*) +# 2604| : +# 2604| getParameter(0): [Parameter] a +# 2604| Type = [PointerType] Recursive * +# 2605| getEntryPoint(): [BlockStmt] { ... } +# 2606| getStmt(0): [DeclStmt] declaration +# 2606| getDeclarationEntry(0): [VariableDeclarationEntry] definition of b +# 2606| Type = [PointerType] Recursive * +# 2607| getStmt(1): [DeclStmt] declaration +# 2607| getDeclarationEntry(0): [VariableDeclarationEntry] definition of p +# 2607| Type = [PointerType] Recursive ** +# 2607| getVariable().getInitializer(): [Initializer] initializer for p +# 2607| getExpr(): [AddressOfExpr] & ... +# 2607| Type = [PointerType] Recursive ** +# 2607| ValueCategory = prvalue +# 2607| getOperand(): [VariableAccess] b +# 2607| Type = [PointerType] Recursive * +# 2607| ValueCategory = lvalue +# 2609| getStmt(2): [WhileStmt] while (...) ... +# 2609| getCondition(): [FunctionCall] call to predicateA +# 2609| Type = [BoolType] bool +# 2609| ValueCategory = prvalue +# 2610| getStmt(): [BlockStmt] { ... } +# 2611| getStmt(0): [ExprStmt] ExprStmt +# 2611| getExpr(): [AssignExpr] ... = ... +# 2611| Type = [PointerType] Recursive * +# 2611| ValueCategory = lvalue +# 2611| getLValue(): [PointerDereferenceExpr] * ... +# 2611| Type = [PointerType] Recursive * +# 2611| ValueCategory = lvalue +# 2611| getOperand(): [VariableAccess] p +# 2611| Type = [PointerType] Recursive ** +# 2611| ValueCategory = prvalue(load) +# 2611| getRValue(): [VariableAccess] a +# 2611| Type = [PointerType] Recursive * +# 2611| ValueCategory = prvalue(load) +# 2612| getStmt(1): [ExprStmt] ExprStmt +# 2612| getExpr(): [AssignExpr] ... = ... +# 2612| Type = [PointerType] Recursive ** +# 2612| ValueCategory = lvalue +# 2612| getLValue(): [VariableAccess] p +# 2612| Type = [PointerType] Recursive ** +# 2612| ValueCategory = lvalue +# 2612| getRValue(): [AddressOfExpr] & ... +# 2612| Type = [PointerType] Recursive ** +# 2612| ValueCategory = prvalue +# 2612| getOperand(): [PointerFieldAccess] next +# 2612| Type = [PointerType] Recursive * +# 2612| ValueCategory = lvalue +# 2612| getQualifier(): [VariableAccess] a +# 2612| Type = [PointerType] Recursive * +# 2612| ValueCategory = prvalue(load) +# 2615| getStmt(3): [ReturnStmt] return ... +# 2615| getExpr(): [VariableAccess] b +# 2615| Type = [PointerType] Recursive * +# 2615| ValueCategory = prvalue(load) +# 2618| [TopLevelFunction] void use_const_int(int const*) # 2618| : -# 2618| getParameter(0): [Parameter] b -# 2618| Type = [BoolType] bool -# 2619| getEntryPoint(): [BlockStmt] { ... } -# 2620| getStmt(0): [DeclStmt] declaration -# 2620| getDeclarationEntry(0): [VariableDeclarationEntry] definition of data -# 2620| Type = [IntPointerType] int * -# 2621| getStmt(1): [DeclStmt] declaration -# 2621| getDeclarationEntry(0): [VariableDeclarationEntry] definition of l1 -# 2621| Type = [IntType] int -# 2621| getDeclarationEntry(1): [VariableDeclarationEntry] definition of l2 -# 2621| Type = [IntType] int -# 2622| getStmt(2): [IfStmt] if (...) ... -# 2622| getCondition(): [VariableAccess] b -# 2622| Type = [BoolType] bool -# 2622| ValueCategory = prvalue(load) -# 2623| getThen(): [BlockStmt] { ... } -# 2624| getStmt(0): [ExprStmt] ExprStmt -# 2624| getExpr(): [AssignExpr] ... = ... -# 2624| Type = [IntPointerType] int * -# 2624| ValueCategory = lvalue -# 2624| getLValue(): [VariableAccess] data -# 2624| Type = [IntPointerType] int * -# 2624| ValueCategory = lvalue -# 2624| getRValue(): [AddressOfExpr] & ... -# 2624| Type = [IntPointerType] int * -# 2624| ValueCategory = prvalue -# 2624| getOperand(): [VariableAccess] l1 -# 2624| Type = [IntType] int -# 2624| ValueCategory = lvalue -# 2627| getElse(): [BlockStmt] { ... } -# 2628| getStmt(0): [ExprStmt] ExprStmt -# 2628| getExpr(): [AssignExpr] ... = ... -# 2628| Type = [IntPointerType] int * -# 2628| ValueCategory = lvalue -# 2628| getLValue(): [VariableAccess] data -# 2628| Type = [IntPointerType] int * -# 2628| ValueCategory = lvalue -# 2628| getRValue(): [AddressOfExpr] & ... -# 2628| Type = [IntPointerType] int * -# 2628| ValueCategory = prvalue -# 2628| getOperand(): [VariableAccess] l2 -# 2628| Type = [IntType] int -# 2628| ValueCategory = lvalue -# 2630| getStmt(3): [ExprStmt] ExprStmt -# 2630| getExpr(): [FunctionCall] call to use_const_int -# 2630| Type = [VoidType] void -# 2630| ValueCategory = prvalue -# 2630| getArgument(0): [VariableAccess] data -# 2630| Type = [IntPointerType] int * -# 2630| ValueCategory = prvalue(load) -# 2630| getArgument(0).getFullyConverted(): [CStyleCast] (const int *)... -# 2630| Conversion = [PointerConversion] pointer conversion -# 2630| Type = [PointerType] const int * -# 2630| ValueCategory = prvalue -# 2631| getStmt(4): [ReturnStmt] return ... -# 2636| [TopLevelFunction] void* malloc(unsigned long) -# 2636| : -# 2636| getParameter(0): [Parameter] (unnamed parameter 0) -# 2636| Type = [LongType] unsigned long -# 2637| [TopLevelFunction] void use_const_void_pointer(void const*) -# 2637| : -# 2637| getParameter(0): [Parameter] (unnamed parameter 0) -# 2637| Type = [PointerType] const void * -# 2639| [TopLevelFunction] void needs_chi_for_initialize_groups() +# 2618| getParameter(0): [Parameter] (unnamed parameter 0) +# 2618| Type = [PointerType] const int * +# 2620| [TopLevelFunction] void escaping_pointer(bool) +# 2620| : +# 2620| getParameter(0): [Parameter] b +# 2620| Type = [BoolType] bool +# 2621| getEntryPoint(): [BlockStmt] { ... } +# 2622| getStmt(0): [DeclStmt] declaration +# 2622| getDeclarationEntry(0): [VariableDeclarationEntry] definition of data +# 2622| Type = [IntPointerType] int * +# 2623| getStmt(1): [DeclStmt] declaration +# 2623| getDeclarationEntry(0): [VariableDeclarationEntry] definition of l1 +# 2623| Type = [IntType] int +# 2623| getDeclarationEntry(1): [VariableDeclarationEntry] definition of l2 +# 2623| Type = [IntType] int +# 2624| getStmt(2): [IfStmt] if (...) ... +# 2624| getCondition(): [VariableAccess] b +# 2624| Type = [BoolType] bool +# 2624| ValueCategory = prvalue(load) +# 2625| getThen(): [BlockStmt] { ... } +# 2626| getStmt(0): [ExprStmt] ExprStmt +# 2626| getExpr(): [AssignExpr] ... = ... +# 2626| Type = [IntPointerType] int * +# 2626| ValueCategory = lvalue +# 2626| getLValue(): [VariableAccess] data +# 2626| Type = [IntPointerType] int * +# 2626| ValueCategory = lvalue +# 2626| getRValue(): [AddressOfExpr] & ... +# 2626| Type = [IntPointerType] int * +# 2626| ValueCategory = prvalue +# 2626| getOperand(): [VariableAccess] l1 +# 2626| Type = [IntType] int +# 2626| ValueCategory = lvalue +# 2629| getElse(): [BlockStmt] { ... } +# 2630| getStmt(0): [ExprStmt] ExprStmt +# 2630| getExpr(): [AssignExpr] ... = ... +# 2630| Type = [IntPointerType] int * +# 2630| ValueCategory = lvalue +# 2630| getLValue(): [VariableAccess] data +# 2630| Type = [IntPointerType] int * +# 2630| ValueCategory = lvalue +# 2630| getRValue(): [AddressOfExpr] & ... +# 2630| Type = [IntPointerType] int * +# 2630| ValueCategory = prvalue +# 2630| getOperand(): [VariableAccess] l2 +# 2630| Type = [IntType] int +# 2630| ValueCategory = lvalue +# 2632| getStmt(3): [ExprStmt] ExprStmt +# 2632| getExpr(): [FunctionCall] call to use_const_int +# 2632| Type = [VoidType] void +# 2632| ValueCategory = prvalue +# 2632| getArgument(0): [VariableAccess] data +# 2632| Type = [IntPointerType] int * +# 2632| ValueCategory = prvalue(load) +# 2632| getArgument(0).getFullyConverted(): [CStyleCast] (const int *)... +# 2632| Conversion = [PointerConversion] pointer conversion +# 2632| Type = [PointerType] const int * +# 2632| ValueCategory = prvalue +# 2633| getStmt(4): [ReturnStmt] return ... +# 2638| [TopLevelFunction] void* malloc(unsigned long) +# 2638| : +# 2638| getParameter(0): [Parameter] (unnamed parameter 0) +# 2638| Type = [LongType] unsigned long +# 2639| [TopLevelFunction] void use_const_void_pointer(void const*) # 2639| : -# 2640| getEntryPoint(): [BlockStmt] { ... } -# 2641| getStmt(0): [IfStmt] if (...) ... -# 2641| getCondition(): [FunctionCall] call to predicateA -# 2641| Type = [BoolType] bool -# 2641| ValueCategory = prvalue -# 2642| getThen(): [BlockStmt] { ... } -# 2643| getStmt(0): [DeclStmt] declaration -# 2643| getDeclarationEntry(0): [VariableDeclarationEntry] definition of data -# 2643| Type = [PointerType] int64_t * -# 2643| getVariable().getInitializer(): [Initializer] initializer for data -# 2643| getExpr(): [FunctionCall] call to malloc -# 2643| Type = [VoidPointerType] void * -# 2643| ValueCategory = prvalue -# 2643| getArgument(0): [Literal] 100 -# 2643| Type = [IntType] int -# 2643| Value = [Literal] 100 -# 2643| ValueCategory = prvalue -# 2643| getArgument(0).getFullyConverted(): [CStyleCast] (unsigned long)... -# 2643| Conversion = [IntegralConversion] integral conversion -# 2643| Type = [LongType] unsigned long -# 2643| Value = [CStyleCast] 100 -# 2643| ValueCategory = prvalue -# 2643| getExpr().getFullyConverted(): [CStyleCast] (int64_t *)... -# 2643| Conversion = [PointerConversion] pointer conversion -# 2643| Type = [PointerType] int64_t * -# 2643| ValueCategory = prvalue -# 2644| getStmt(1): [IfStmt] if (...) ... -# 2644| getCondition(): [NEExpr] ... != ... -# 2644| Type = [BoolType] bool -# 2644| ValueCategory = prvalue -# 2644| getLeftOperand(): [VariableAccess] data -# 2644| Type = [PointerType] int64_t * -# 2644| ValueCategory = prvalue(load) -# 2644| getRightOperand(): [Literal] 0 -# 2644| Type = [IntType] int -# 2644| Value = [Literal] 0 -# 2644| ValueCategory = prvalue -# 2644| getLeftOperand().getFullyConverted(): [CStyleCast] (void *)... -# 2644| Conversion = [PointerConversion] pointer conversion -# 2644| Type = [VoidPointerType] void * -# 2644| ValueCategory = prvalue -# 2644| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2644| Type = [VoidPointerType] void * -# 2644| Value = [ParenthesisExpr] 0 -# 2644| ValueCategory = prvalue -# 2644| getExpr(): [CStyleCast] (void *)... -# 2644| Conversion = [IntegralToPointerConversion] integral to pointer conversion -# 2644| Type = [VoidPointerType] void * -# 2644| Value = [CStyleCast] 0 -# 2644| ValueCategory = prvalue -# 2645| getThen(): [BlockStmt] { ... } -# 2646| getStmt(0): [ExprStmt] ExprStmt -# 2646| getExpr(): [AssignExpr] ... = ... -# 2646| Type = [PointerType] int64_t * -# 2646| ValueCategory = lvalue -# 2646| getLValue(): [VariableAccess] data -# 2646| Type = [PointerType] int64_t * -# 2646| ValueCategory = lvalue -# 2646| getRValue(): [FunctionCall] call to malloc -# 2646| Type = [VoidPointerType] void * -# 2646| ValueCategory = prvalue -# 2646| getArgument(0): [Literal] 100 -# 2646| Type = [IntType] int -# 2646| Value = [Literal] 100 -# 2646| ValueCategory = prvalue -# 2646| getArgument(0).getFullyConverted(): [CStyleCast] (unsigned long)... -# 2646| Conversion = [IntegralConversion] integral conversion -# 2646| Type = [LongType] unsigned long -# 2646| Value = [CStyleCast] 100 -# 2646| ValueCategory = prvalue -# 2646| getRValue().getFullyConverted(): [CStyleCast] (int64_t *)... -# 2646| Conversion = [PointerConversion] pointer conversion -# 2646| Type = [PointerType] int64_t * -# 2646| ValueCategory = prvalue -# 2648| getStmt(2): [ExprStmt] ExprStmt -# 2648| getExpr(): [FunctionCall] call to use_const_void_pointer -# 2648| Type = [VoidType] void -# 2648| ValueCategory = prvalue -# 2648| getArgument(0): [VariableAccess] data -# 2648| Type = [PointerType] int64_t * -# 2648| ValueCategory = prvalue(load) -# 2648| getArgument(0).getFullyConverted(): [CStyleCast] (const void *)... -# 2648| Conversion = [PointerConversion] pointer conversion -# 2648| Type = [PointerType] const void * -# 2648| ValueCategory = prvalue -# 2651| getElse(): [BlockStmt] { ... } -# 2652| getStmt(0): [DeclStmt] declaration -# 2652| getDeclarationEntry(0): [VariableDeclarationEntry] definition of data -# 2652| Type = [PointerType] int64_t * -# 2652| getVariable().getInitializer(): [Initializer] initializer for data -# 2652| getExpr(): [FunctionCall] call to malloc -# 2652| Type = [VoidPointerType] void * -# 2652| ValueCategory = prvalue -# 2652| getArgument(0): [Literal] 100 -# 2652| Type = [IntType] int -# 2652| Value = [Literal] 100 -# 2652| ValueCategory = prvalue -# 2652| getArgument(0).getFullyConverted(): [CStyleCast] (unsigned long)... -# 2652| Conversion = [IntegralConversion] integral conversion -# 2652| Type = [LongType] unsigned long -# 2652| Value = [CStyleCast] 100 -# 2652| ValueCategory = prvalue -# 2652| getExpr().getFullyConverted(): [CStyleCast] (int64_t *)... -# 2652| Conversion = [PointerConversion] pointer conversion -# 2652| Type = [PointerType] int64_t * -# 2652| ValueCategory = prvalue -# 2653| getStmt(1): [IfStmt] if (...) ... -# 2653| getCondition(): [NEExpr] ... != ... -# 2653| Type = [BoolType] bool -# 2653| ValueCategory = prvalue -# 2653| getLeftOperand(): [VariableAccess] data -# 2653| Type = [PointerType] int64_t * -# 2653| ValueCategory = prvalue(load) -# 2653| getRightOperand(): [Literal] 0 -# 2653| Type = [IntType] int -# 2653| Value = [Literal] 0 -# 2653| ValueCategory = prvalue -# 2653| getLeftOperand().getFullyConverted(): [CStyleCast] (void *)... -# 2653| Conversion = [PointerConversion] pointer conversion -# 2653| Type = [VoidPointerType] void * -# 2653| ValueCategory = prvalue -# 2653| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2653| Type = [VoidPointerType] void * -# 2653| Value = [ParenthesisExpr] 0 -# 2653| ValueCategory = prvalue -# 2653| getExpr(): [CStyleCast] (void *)... -# 2653| Conversion = [IntegralToPointerConversion] integral to pointer conversion -# 2653| Type = [VoidPointerType] void * -# 2653| Value = [CStyleCast] 0 -# 2653| ValueCategory = prvalue -# 2654| getThen(): [BlockStmt] { ... } -# 2655| getStmt(0): [ExprStmt] ExprStmt -# 2655| getExpr(): [AssignExpr] ... = ... -# 2655| Type = [PointerType] int64_t * -# 2655| ValueCategory = lvalue -# 2655| getLValue(): [VariableAccess] data -# 2655| Type = [PointerType] int64_t * -# 2655| ValueCategory = lvalue -# 2655| getRValue(): [FunctionCall] call to malloc -# 2655| Type = [VoidPointerType] void * -# 2655| ValueCategory = prvalue -# 2655| getArgument(0): [Literal] 200 -# 2655| Type = [IntType] int -# 2655| Value = [Literal] 200 -# 2655| ValueCategory = prvalue -# 2655| getArgument(0).getFullyConverted(): [CStyleCast] (unsigned long)... -# 2655| Conversion = [IntegralConversion] integral conversion -# 2655| Type = [LongType] unsigned long -# 2655| Value = [CStyleCast] 200 -# 2655| ValueCategory = prvalue -# 2655| getRValue().getFullyConverted(): [CStyleCast] (int64_t *)... -# 2655| Conversion = [PointerConversion] pointer conversion -# 2655| Type = [PointerType] int64_t * -# 2655| ValueCategory = prvalue -# 2657| getStmt(2): [ExprStmt] ExprStmt -# 2657| getExpr(): [FunctionCall] call to use_const_void_pointer -# 2657| Type = [VoidType] void -# 2657| ValueCategory = prvalue -# 2657| getArgument(0): [VariableAccess] data -# 2657| Type = [PointerType] int64_t * -# 2657| ValueCategory = prvalue(load) -# 2657| getArgument(0).getFullyConverted(): [CStyleCast] (const void *)... -# 2657| Conversion = [PointerConversion] pointer conversion -# 2657| Type = [PointerType] const void * -# 2657| ValueCategory = prvalue -# 2659| getStmt(1): [ReturnStmt] return ... -# 2661| [TopLevelFunction] void use_int(int) -# 2661| : -# 2661| getParameter(0): [Parameter] (unnamed parameter 0) -# 2661| Type = [IntType] int -# 2663| [TopLevelFunction] void phi_with_single_input_at_merge(bool) +# 2639| getParameter(0): [Parameter] (unnamed parameter 0) +# 2639| Type = [PointerType] const void * +# 2641| [TopLevelFunction] void needs_chi_for_initialize_groups() +# 2641| : +# 2642| getEntryPoint(): [BlockStmt] { ... } +# 2643| getStmt(0): [IfStmt] if (...) ... +# 2643| getCondition(): [FunctionCall] call to predicateA +# 2643| Type = [BoolType] bool +# 2643| ValueCategory = prvalue +# 2644| getThen(): [BlockStmt] { ... } +# 2645| getStmt(0): [DeclStmt] declaration +# 2645| getDeclarationEntry(0): [VariableDeclarationEntry] definition of data +# 2645| Type = [PointerType] int64_t * +# 2645| getVariable().getInitializer(): [Initializer] initializer for data +# 2645| getExpr(): [FunctionCall] call to malloc +# 2645| Type = [VoidPointerType] void * +# 2645| ValueCategory = prvalue +# 2645| getArgument(0): [Literal] 100 +# 2645| Type = [IntType] int +# 2645| Value = [Literal] 100 +# 2645| ValueCategory = prvalue +# 2645| getArgument(0).getFullyConverted(): [CStyleCast] (unsigned long)... +# 2645| Conversion = [IntegralConversion] integral conversion +# 2645| Type = [LongType] unsigned long +# 2645| Value = [CStyleCast] 100 +# 2645| ValueCategory = prvalue +# 2645| getExpr().getFullyConverted(): [CStyleCast] (int64_t *)... +# 2645| Conversion = [PointerConversion] pointer conversion +# 2645| Type = [PointerType] int64_t * +# 2645| ValueCategory = prvalue +# 2646| getStmt(1): [IfStmt] if (...) ... +# 2646| getCondition(): [NEExpr] ... != ... +# 2646| Type = [BoolType] bool +# 2646| ValueCategory = prvalue +# 2646| getLeftOperand(): [VariableAccess] data +# 2646| Type = [PointerType] int64_t * +# 2646| ValueCategory = prvalue(load) +# 2646| getRightOperand(): [Literal] 0 +# 2646| Type = [IntType] int +# 2646| Value = [Literal] 0 +# 2646| ValueCategory = prvalue +# 2646| getLeftOperand().getFullyConverted(): [CStyleCast] (void *)... +# 2646| Conversion = [PointerConversion] pointer conversion +# 2646| Type = [VoidPointerType] void * +# 2646| ValueCategory = prvalue +# 2646| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2646| Type = [VoidPointerType] void * +# 2646| Value = [ParenthesisExpr] 0 +# 2646| ValueCategory = prvalue +# 2646| getExpr(): [CStyleCast] (void *)... +# 2646| Conversion = [IntegralToPointerConversion] integral to pointer conversion +# 2646| Type = [VoidPointerType] void * +# 2646| Value = [CStyleCast] 0 +# 2646| ValueCategory = prvalue +# 2647| getThen(): [BlockStmt] { ... } +# 2648| getStmt(0): [ExprStmt] ExprStmt +# 2648| getExpr(): [AssignExpr] ... = ... +# 2648| Type = [PointerType] int64_t * +# 2648| ValueCategory = lvalue +# 2648| getLValue(): [VariableAccess] data +# 2648| Type = [PointerType] int64_t * +# 2648| ValueCategory = lvalue +# 2648| getRValue(): [FunctionCall] call to malloc +# 2648| Type = [VoidPointerType] void * +# 2648| ValueCategory = prvalue +# 2648| getArgument(0): [Literal] 100 +# 2648| Type = [IntType] int +# 2648| Value = [Literal] 100 +# 2648| ValueCategory = prvalue +# 2648| getArgument(0).getFullyConverted(): [CStyleCast] (unsigned long)... +# 2648| Conversion = [IntegralConversion] integral conversion +# 2648| Type = [LongType] unsigned long +# 2648| Value = [CStyleCast] 100 +# 2648| ValueCategory = prvalue +# 2648| getRValue().getFullyConverted(): [CStyleCast] (int64_t *)... +# 2648| Conversion = [PointerConversion] pointer conversion +# 2648| Type = [PointerType] int64_t * +# 2648| ValueCategory = prvalue +# 2650| getStmt(2): [ExprStmt] ExprStmt +# 2650| getExpr(): [FunctionCall] call to use_const_void_pointer +# 2650| Type = [VoidType] void +# 2650| ValueCategory = prvalue +# 2650| getArgument(0): [VariableAccess] data +# 2650| Type = [PointerType] int64_t * +# 2650| ValueCategory = prvalue(load) +# 2650| getArgument(0).getFullyConverted(): [CStyleCast] (const void *)... +# 2650| Conversion = [PointerConversion] pointer conversion +# 2650| Type = [PointerType] const void * +# 2650| ValueCategory = prvalue +# 2653| getElse(): [BlockStmt] { ... } +# 2654| getStmt(0): [DeclStmt] declaration +# 2654| getDeclarationEntry(0): [VariableDeclarationEntry] definition of data +# 2654| Type = [PointerType] int64_t * +# 2654| getVariable().getInitializer(): [Initializer] initializer for data +# 2654| getExpr(): [FunctionCall] call to malloc +# 2654| Type = [VoidPointerType] void * +# 2654| ValueCategory = prvalue +# 2654| getArgument(0): [Literal] 100 +# 2654| Type = [IntType] int +# 2654| Value = [Literal] 100 +# 2654| ValueCategory = prvalue +# 2654| getArgument(0).getFullyConverted(): [CStyleCast] (unsigned long)... +# 2654| Conversion = [IntegralConversion] integral conversion +# 2654| Type = [LongType] unsigned long +# 2654| Value = [CStyleCast] 100 +# 2654| ValueCategory = prvalue +# 2654| getExpr().getFullyConverted(): [CStyleCast] (int64_t *)... +# 2654| Conversion = [PointerConversion] pointer conversion +# 2654| Type = [PointerType] int64_t * +# 2654| ValueCategory = prvalue +# 2655| getStmt(1): [IfStmt] if (...) ... +# 2655| getCondition(): [NEExpr] ... != ... +# 2655| Type = [BoolType] bool +# 2655| ValueCategory = prvalue +# 2655| getLeftOperand(): [VariableAccess] data +# 2655| Type = [PointerType] int64_t * +# 2655| ValueCategory = prvalue(load) +# 2655| getRightOperand(): [Literal] 0 +# 2655| Type = [IntType] int +# 2655| Value = [Literal] 0 +# 2655| ValueCategory = prvalue +# 2655| getLeftOperand().getFullyConverted(): [CStyleCast] (void *)... +# 2655| Conversion = [PointerConversion] pointer conversion +# 2655| Type = [VoidPointerType] void * +# 2655| ValueCategory = prvalue +# 2655| getRightOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2655| Type = [VoidPointerType] void * +# 2655| Value = [ParenthesisExpr] 0 +# 2655| ValueCategory = prvalue +# 2655| getExpr(): [CStyleCast] (void *)... +# 2655| Conversion = [IntegralToPointerConversion] integral to pointer conversion +# 2655| Type = [VoidPointerType] void * +# 2655| Value = [CStyleCast] 0 +# 2655| ValueCategory = prvalue +# 2656| getThen(): [BlockStmt] { ... } +# 2657| getStmt(0): [ExprStmt] ExprStmt +# 2657| getExpr(): [AssignExpr] ... = ... +# 2657| Type = [PointerType] int64_t * +# 2657| ValueCategory = lvalue +# 2657| getLValue(): [VariableAccess] data +# 2657| Type = [PointerType] int64_t * +# 2657| ValueCategory = lvalue +# 2657| getRValue(): [FunctionCall] call to malloc +# 2657| Type = [VoidPointerType] void * +# 2657| ValueCategory = prvalue +# 2657| getArgument(0): [Literal] 200 +# 2657| Type = [IntType] int +# 2657| Value = [Literal] 200 +# 2657| ValueCategory = prvalue +# 2657| getArgument(0).getFullyConverted(): [CStyleCast] (unsigned long)... +# 2657| Conversion = [IntegralConversion] integral conversion +# 2657| Type = [LongType] unsigned long +# 2657| Value = [CStyleCast] 200 +# 2657| ValueCategory = prvalue +# 2657| getRValue().getFullyConverted(): [CStyleCast] (int64_t *)... +# 2657| Conversion = [PointerConversion] pointer conversion +# 2657| Type = [PointerType] int64_t * +# 2657| ValueCategory = prvalue +# 2659| getStmt(2): [ExprStmt] ExprStmt +# 2659| getExpr(): [FunctionCall] call to use_const_void_pointer +# 2659| Type = [VoidType] void +# 2659| ValueCategory = prvalue +# 2659| getArgument(0): [VariableAccess] data +# 2659| Type = [PointerType] int64_t * +# 2659| ValueCategory = prvalue(load) +# 2659| getArgument(0).getFullyConverted(): [CStyleCast] (const void *)... +# 2659| Conversion = [PointerConversion] pointer conversion +# 2659| Type = [PointerType] const void * +# 2659| ValueCategory = prvalue +# 2661| getStmt(1): [ReturnStmt] return ... +# 2663| [TopLevelFunction] void use_int(int) # 2663| : -# 2663| getParameter(0): [Parameter] b -# 2663| Type = [BoolType] bool -# 2664| getEntryPoint(): [BlockStmt] { ... } -# 2665| getStmt(0): [DeclStmt] declaration -# 2665| getDeclarationEntry(0): [VariableDeclarationEntry] definition of data -# 2665| Type = [IntPointerType] int * -# 2665| getVariable().getInitializer(): [Initializer] initializer for data -# 2665| getExpr(): [Literal] 0 -# 2665| Type = [NullPointerType] decltype(nullptr) -# 2665| Value = [Literal] 0 -# 2665| ValueCategory = prvalue -# 2665| getExpr().getFullyConverted(): [CStyleCast] (int *)... -# 2665| Conversion = [PointerConversion] pointer conversion -# 2665| Type = [IntPointerType] int * -# 2665| Value = [CStyleCast] 0 -# 2665| ValueCategory = prvalue -# 2666| getStmt(1): [IfStmt] if (...) ... -# 2666| getCondition(): [VariableAccess] b -# 2666| Type = [BoolType] bool -# 2666| ValueCategory = prvalue(load) -# 2666| getThen(): [BlockStmt] { ... } -# 2667| getStmt(0): [DeclStmt] declaration -# 2667| getDeclarationEntry(0): [VariableDeclarationEntry] definition of intBuffer -# 2667| Type = [IntType] int -# 2667| getVariable().getInitializer(): [Initializer] initializer for intBuffer -# 2667| getExpr(): [Literal] 8 -# 2667| Type = [IntType] int -# 2667| Value = [Literal] 8 -# 2667| ValueCategory = prvalue -# 2668| getStmt(1): [ExprStmt] ExprStmt -# 2668| getExpr(): [AssignExpr] ... = ... -# 2668| Type = [IntPointerType] int * -# 2668| ValueCategory = lvalue -# 2668| getLValue(): [VariableAccess] data -# 2668| Type = [IntPointerType] int * -# 2668| ValueCategory = lvalue -# 2668| getRValue(): [AddressOfExpr] & ... -# 2668| Type = [IntPointerType] int * -# 2668| ValueCategory = prvalue -# 2668| getOperand(): [VariableAccess] intBuffer -# 2668| Type = [IntType] int -# 2668| ValueCategory = lvalue -# 2670| getStmt(2): [ExprStmt] ExprStmt -# 2670| getExpr(): [FunctionCall] call to use_int -# 2670| Type = [VoidType] void -# 2670| ValueCategory = prvalue -# 2670| getArgument(0): [PointerDereferenceExpr] * ... -# 2670| Type = [IntType] int -# 2670| ValueCategory = prvalue(load) -# 2670| getOperand(): [VariableAccess] data +# 2663| getParameter(0): [Parameter] (unnamed parameter 0) +# 2663| Type = [IntType] int +# 2665| [TopLevelFunction] void phi_with_single_input_at_merge(bool) +# 2665| : +# 2665| getParameter(0): [Parameter] b +# 2665| Type = [BoolType] bool +# 2666| getEntryPoint(): [BlockStmt] { ... } +# 2667| getStmt(0): [DeclStmt] declaration +# 2667| getDeclarationEntry(0): [VariableDeclarationEntry] definition of data +# 2667| Type = [IntPointerType] int * +# 2667| getVariable().getInitializer(): [Initializer] initializer for data +# 2667| getExpr(): [Literal] 0 +# 2667| Type = [NullPointerType] decltype(nullptr) +# 2667| Value = [Literal] 0 +# 2667| ValueCategory = prvalue +# 2667| getExpr().getFullyConverted(): [CStyleCast] (int *)... +# 2667| Conversion = [PointerConversion] pointer conversion +# 2667| Type = [IntPointerType] int * +# 2667| Value = [CStyleCast] 0 +# 2667| ValueCategory = prvalue +# 2668| getStmt(1): [IfStmt] if (...) ... +# 2668| getCondition(): [VariableAccess] b +# 2668| Type = [BoolType] bool +# 2668| ValueCategory = prvalue(load) +# 2668| getThen(): [BlockStmt] { ... } +# 2669| getStmt(0): [DeclStmt] declaration +# 2669| getDeclarationEntry(0): [VariableDeclarationEntry] definition of intBuffer +# 2669| Type = [IntType] int +# 2669| getVariable().getInitializer(): [Initializer] initializer for intBuffer +# 2669| getExpr(): [Literal] 8 +# 2669| Type = [IntType] int +# 2669| Value = [Literal] 8 +# 2669| ValueCategory = prvalue +# 2670| getStmt(1): [ExprStmt] ExprStmt +# 2670| getExpr(): [AssignExpr] ... = ... # 2670| Type = [IntPointerType] int * -# 2670| ValueCategory = prvalue(load) -# 2671| getStmt(3): [ReturnStmt] return ... -# 2673| [TopLevelFunction] void use(char const*) -# 2673| : -# 2673| getParameter(0): [Parameter] fmt -# 2673| Type = [PointerType] const char * -# 2684| [TopLevelFunction] void test(bool) -# 2684| : -# 2684| getParameter(0): [Parameter] b -# 2684| Type = [BoolType] bool -# 2685| getEntryPoint(): [BlockStmt] { ... } -# 2686| getStmt(0): [DoStmt] do (...) ... -# 2686| getCondition(): [Literal] 0 -# 2686| Type = [IntType] int -# 2686| Value = [Literal] 0 -# 2686| ValueCategory = prvalue -# 2686| getStmt(): [BlockStmt] { ... } -# 2686| getStmt(0): [ExprStmt] ExprStmt -# 2686| getExpr(): [FunctionCall] call to use -# 2686| Type = [VoidType] void -# 2686| ValueCategory = prvalue -# 2686| getArgument(0): [ConditionalExpr] ... ? ... : ... -# 2686| Type = [PointerType] const char * -# 2686| ValueCategory = prvalue -# 2686| getCondition(): [VariableAccess] b -# 2686| Type = [BoolType] bool -# 2686| ValueCategory = prvalue(load) -# 2686| getThen(): -# 2686| Type = [ArrayType] const char[1] -# 2686| Value = [StringLiteral] "" -# 2686| ValueCategory = lvalue -# 2686| getElse(): -# 2686| Type = [ArrayType] const char[1] -# 2686| Value = [StringLiteral] "" -# 2686| ValueCategory = lvalue -# 2686| getThen().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 2686| Type = [PointerType] const char * -# 2686| ValueCategory = prvalue -# 2686| getElse().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 2686| Type = [PointerType] const char * -# 2686| ValueCategory = prvalue -# 2686| getStmt(1): [ExprStmt] ExprStmt -# 2686| getExpr(): [FunctionCall] call to use -# 2686| Type = [VoidType] void -# 2686| ValueCategory = prvalue -# 2686| getArgument(0): [ConditionalExpr] ... ? ... : ... -# 2686| Type = [PointerType] const char * -# 2686| ValueCategory = prvalue -# 2686| getCondition(): [VariableAccess] b -# 2686| Type = [BoolType] bool -# 2686| ValueCategory = prvalue(load) -# 2686| getThen(): -# 2686| Type = [ArrayType] const char[1] -# 2686| Value = [StringLiteral] "" -# 2686| ValueCategory = lvalue -# 2686| getElse(): -# 2686| Type = [ArrayType] const char[1] -# 2686| Value = [StringLiteral] "" -# 2686| ValueCategory = lvalue -# 2686| getThen().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 2686| Type = [PointerType] const char * -# 2686| ValueCategory = prvalue -# 2686| getElse().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 2686| Type = [PointerType] const char * -# 2686| ValueCategory = prvalue -# 2686| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2686| Conversion = [BoolConversion] conversion to bool -# 2686| Type = [BoolType] bool -# 2686| Value = [CStyleCast] 0 -# 2686| ValueCategory = prvalue -# 2687| getStmt(1): [ReturnStmt] return ... -# 2691| [TopLevelFunction] int concepts::requires_use() -# 2691| : -# 2691| getEntryPoint(): [BlockStmt] { ... } -# 2692| getStmt(0): [DeclStmt] declaration -# 2692| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 2692| Type = [IntType] int -# 2692| getVariable().getInitializer(): [Initializer] initializer for y +# 2670| ValueCategory = lvalue +# 2670| getLValue(): [VariableAccess] data +# 2670| Type = [IntPointerType] int * +# 2670| ValueCategory = lvalue +# 2670| getRValue(): [AddressOfExpr] & ... +# 2670| Type = [IntPointerType] int * +# 2670| ValueCategory = prvalue +# 2670| getOperand(): [VariableAccess] intBuffer +# 2670| Type = [IntType] int +# 2670| ValueCategory = lvalue +# 2672| getStmt(2): [ExprStmt] ExprStmt +# 2672| getExpr(): [FunctionCall] call to use_int +# 2672| Type = [VoidType] void +# 2672| ValueCategory = prvalue +# 2672| getArgument(0): [PointerDereferenceExpr] * ... +# 2672| Type = [IntType] int +# 2672| ValueCategory = prvalue(load) +# 2672| getOperand(): [VariableAccess] data +# 2672| Type = [IntPointerType] int * +# 2672| ValueCategory = prvalue(load) +# 2673| getStmt(3): [ReturnStmt] return ... +# 2675| [TopLevelFunction] void use(char const*) +# 2675| : +# 2675| getParameter(0): [Parameter] fmt +# 2675| Type = [PointerType] const char * +# 2686| [TopLevelFunction] void test(bool) +# 2686| : +# 2686| getParameter(0): [Parameter] b +# 2686| Type = [BoolType] bool +# 2687| getEntryPoint(): [BlockStmt] { ... } +# 2688| getStmt(0): [DoStmt] do (...) ... +# 2688| getCondition(): [Literal] 0 +# 2688| Type = [IntType] int +# 2688| Value = [Literal] 0 +# 2688| ValueCategory = prvalue +# 2688| getStmt(): [BlockStmt] { ... } +# 2688| getStmt(0): [ExprStmt] ExprStmt +# 2688| getExpr(): [FunctionCall] call to use +# 2688| Type = [VoidType] void +# 2688| ValueCategory = prvalue +# 2688| getArgument(0): [ConditionalExpr] ... ? ... : ... +# 2688| Type = [PointerType] const char * +# 2688| ValueCategory = prvalue +# 2688| getCondition(): [VariableAccess] b +# 2688| Type = [BoolType] bool +# 2688| ValueCategory = prvalue(load) +# 2688| getThen(): +# 2688| Type = [ArrayType] const char[1] +# 2688| Value = [StringLiteral] "" +# 2688| ValueCategory = lvalue +# 2688| getElse(): +# 2688| Type = [ArrayType] const char[1] +# 2688| Value = [StringLiteral] "" +# 2688| ValueCategory = lvalue +# 2688| getThen().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 2688| Type = [PointerType] const char * +# 2688| ValueCategory = prvalue +# 2688| getElse().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 2688| Type = [PointerType] const char * +# 2688| ValueCategory = prvalue +# 2688| getStmt(1): [ExprStmt] ExprStmt +# 2688| getExpr(): [FunctionCall] call to use +# 2688| Type = [VoidType] void +# 2688| ValueCategory = prvalue +# 2688| getArgument(0): [ConditionalExpr] ... ? ... : ... +# 2688| Type = [PointerType] const char * +# 2688| ValueCategory = prvalue +# 2688| getCondition(): [VariableAccess] b +# 2688| Type = [BoolType] bool +# 2688| ValueCategory = prvalue(load) +# 2688| getThen(): +# 2688| Type = [ArrayType] const char[1] +# 2688| Value = [StringLiteral] "" +# 2688| ValueCategory = lvalue +# 2688| getElse(): +# 2688| Type = [ArrayType] const char[1] +# 2688| Value = [StringLiteral] "" +# 2688| ValueCategory = lvalue +# 2688| getThen().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 2688| Type = [PointerType] const char * +# 2688| ValueCategory = prvalue +# 2688| getElse().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 2688| Type = [PointerType] const char * +# 2688| ValueCategory = prvalue +# 2688| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 2688| Conversion = [BoolConversion] conversion to bool +# 2688| Type = [BoolType] bool +# 2688| Value = [CStyleCast] 0 +# 2688| ValueCategory = prvalue +# 2689| getStmt(1): [ReturnStmt] return ... +# 2693| [TopLevelFunction] int concepts::requires_use() +# 2693| : +# 2693| getEntryPoint(): [BlockStmt] { ... } +# 2694| getStmt(0): [DeclStmt] declaration +# 2694| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 2694| Type = [IntType] int +# 2694| getVariable().getInitializer(): [Initializer] initializer for y #-----| getExpr(): [RequiresExpr] requires { ... } #-----| Type = [BoolType] bool #-----| Value = [RequiresExpr] 1 #-----| ValueCategory = prvalue #-----| : -# 2692| getRequirement(0): [GTExpr,SimpleRequirementExpr] ... > ... -# 2692| Type = [BoolType] bool -# 2692| ValueCategory = prvalue -# 2692| getGreaterOperand(): [SizeofTypeOperator] sizeof(int) -# 2692| Type = [LongType] unsigned long -# 2692| Value = [SizeofTypeOperator] 4 -# 2692| ValueCategory = prvalue -# 2692| getLesserOperand(): [Literal] 0 -# 2692| Type = [IntType] int -# 2692| Value = [Literal] 0 -# 2692| ValueCategory = prvalue -# 2692| getLesserOperand().getFullyConverted(): [CStyleCast] (unsigned long)... -# 2692| Conversion = [IntegralConversion] integral conversion -# 2692| Type = [LongType] unsigned long -# 2692| ValueCategory = prvalue -# 2692| getExpr().getFullyConverted(): [CStyleCast] (int)... -# 2692| Conversion = [IntegralConversion] integral conversion -# 2692| Type = [IntType] int -# 2692| Value = [CStyleCast] 1 -# 2692| ValueCategory = prvalue -# 2693| getStmt(1): [ReturnStmt] return ... -# 2693| getExpr(): [VariableAccess] y -# 2693| Type = [IntType] int -# 2693| ValueCategory = prvalue(load) -# 2698| [TopLevelFunction] void branch_on_integral_in_cpp(int, int) -# 2698| : -# 2698| getParameter(0): [Parameter] x1 -# 2698| Type = [IntType] int -# 2698| getParameter(1): [Parameter] x2 -# 2698| Type = [IntType] int -# 2698| getEntryPoint(): [BlockStmt] { ... } -# 2699| getStmt(0): [IfStmt] if (...) ... -# 2699| getCondition(): [VariableAccess] x1 -# 2699| Type = [IntType] int -# 2699| ValueCategory = prvalue(load) -# 2699| getThen(): [BlockStmt] { ... } -# 2699| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2699| Conversion = [BoolConversion] conversion to bool -# 2699| Type = [BoolType] bool -# 2699| ValueCategory = prvalue -# 2700| getStmt(1): [IfStmt] if (...) ... -# 2700| getCondition(): [NotExpr] ! ... -# 2700| Type = [BoolType] bool -# 2700| ValueCategory = prvalue -# 2700| getOperand(): [VariableAccess] x1 -# 2700| Type = [IntType] int -# 2700| ValueCategory = prvalue(load) -# 2700| getOperand().getFullyConverted(): [CStyleCast] (bool)... -# 2700| Conversion = [BoolConversion] conversion to bool -# 2700| Type = [BoolType] bool -# 2700| ValueCategory = prvalue -# 2700| getThen(): [BlockStmt] { ... } -# 2702| getStmt(2): [DeclStmt] declaration -# 2702| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 2702| Type = [IntType] int -# 2702| getVariable().getInitializer(): [Initializer] initializer for y -# 2702| getExpr(): [NotExpr] ! ... -# 2702| Type = [BoolType] bool -# 2702| ValueCategory = prvalue -# 2702| getOperand(): [VariableAccess] x1 -# 2702| Type = [IntType] int -# 2702| ValueCategory = prvalue(load) -# 2702| getOperand().getFullyConverted(): [CStyleCast] (bool)... -# 2702| Conversion = [BoolConversion] conversion to bool -# 2702| Type = [BoolType] bool -# 2702| ValueCategory = prvalue -# 2702| getExpr().getFullyConverted(): [CStyleCast] (int)... -# 2702| Conversion = [IntegralConversion] integral conversion -# 2702| Type = [IntType] int -# 2702| ValueCategory = prvalue -# 2703| getStmt(3): [IfStmt] if (...) ... -# 2703| getCondition(): [VariableAccess] y -# 2703| Type = [IntType] int -# 2703| ValueCategory = prvalue(load) -# 2703| getThen(): [BlockStmt] { ... } -# 2703| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2703| Conversion = [BoolConversion] conversion to bool -# 2703| Type = [BoolType] bool -# 2703| ValueCategory = prvalue -# 2704| getStmt(4): [IfStmt] if (...) ... -# 2704| getCondition(): [NotExpr] ! ... -# 2704| Type = [BoolType] bool -# 2704| ValueCategory = prvalue -# 2704| getOperand(): [VariableAccess] y -# 2704| Type = [IntType] int -# 2704| ValueCategory = prvalue(load) -# 2704| getOperand().getFullyConverted(): [CStyleCast] (bool)... -# 2704| Conversion = [BoolConversion] conversion to bool -# 2704| Type = [BoolType] bool -# 2704| ValueCategory = prvalue -# 2704| getThen(): [BlockStmt] { ... } -# 2706| getStmt(5): [IfStmt] if (...) ... -# 2706| getCondition(): [LogicalAndExpr] ... && ... +# 2694| getRequirement(0): [GTExpr,SimpleRequirementExpr] ... > ... +# 2694| Type = [BoolType] bool +# 2694| ValueCategory = prvalue +# 2694| getGreaterOperand(): [SizeofTypeOperator] sizeof(int) +# 2694| Type = [LongType] unsigned long +# 2694| Value = [SizeofTypeOperator] 4 +# 2694| ValueCategory = prvalue +# 2694| getLesserOperand(): [Literal] 0 +# 2694| Type = [IntType] int +# 2694| Value = [Literal] 0 +# 2694| ValueCategory = prvalue +# 2694| getLesserOperand().getFullyConverted(): [CStyleCast] (unsigned long)... +# 2694| Conversion = [IntegralConversion] integral conversion +# 2694| Type = [LongType] unsigned long +# 2694| ValueCategory = prvalue +# 2694| getExpr().getFullyConverted(): [CStyleCast] (int)... +# 2694| Conversion = [IntegralConversion] integral conversion +# 2694| Type = [IntType] int +# 2694| Value = [CStyleCast] 1 +# 2694| ValueCategory = prvalue +# 2695| getStmt(1): [ReturnStmt] return ... +# 2695| getExpr(): [VariableAccess] y +# 2695| Type = [IntType] int +# 2695| ValueCategory = prvalue(load) +# 2700| [TopLevelFunction] void branch_on_integral_in_cpp(int, int) +# 2700| : +# 2700| getParameter(0): [Parameter] x1 +# 2700| Type = [IntType] int +# 2700| getParameter(1): [Parameter] x2 +# 2700| Type = [IntType] int +# 2700| getEntryPoint(): [BlockStmt] { ... } +# 2701| getStmt(0): [IfStmt] if (...) ... +# 2701| getCondition(): [VariableAccess] x1 +# 2701| Type = [IntType] int +# 2701| ValueCategory = prvalue(load) +# 2701| getThen(): [BlockStmt] { ... } +# 2701| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 2701| Conversion = [BoolConversion] conversion to bool +# 2701| Type = [BoolType] bool +# 2701| ValueCategory = prvalue +# 2702| getStmt(1): [IfStmt] if (...) ... +# 2702| getCondition(): [NotExpr] ! ... +# 2702| Type = [BoolType] bool +# 2702| ValueCategory = prvalue +# 2702| getOperand(): [VariableAccess] x1 +# 2702| Type = [IntType] int +# 2702| ValueCategory = prvalue(load) +# 2702| getOperand().getFullyConverted(): [CStyleCast] (bool)... +# 2702| Conversion = [BoolConversion] conversion to bool +# 2702| Type = [BoolType] bool +# 2702| ValueCategory = prvalue +# 2702| getThen(): [BlockStmt] { ... } +# 2704| getStmt(2): [DeclStmt] declaration +# 2704| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 2704| Type = [IntType] int +# 2704| getVariable().getInitializer(): [Initializer] initializer for y +# 2704| getExpr(): [NotExpr] ! ... +# 2704| Type = [BoolType] bool +# 2704| ValueCategory = prvalue +# 2704| getOperand(): [VariableAccess] x1 +# 2704| Type = [IntType] int +# 2704| ValueCategory = prvalue(load) +# 2704| getOperand().getFullyConverted(): [CStyleCast] (bool)... +# 2704| Conversion = [BoolConversion] conversion to bool +# 2704| Type = [BoolType] bool +# 2704| ValueCategory = prvalue +# 2704| getExpr().getFullyConverted(): [CStyleCast] (int)... +# 2704| Conversion = [IntegralConversion] integral conversion +# 2704| Type = [IntType] int +# 2704| ValueCategory = prvalue +# 2705| getStmt(3): [IfStmt] if (...) ... +# 2705| getCondition(): [VariableAccess] y +# 2705| Type = [IntType] int +# 2705| ValueCategory = prvalue(load) +# 2705| getThen(): [BlockStmt] { ... } +# 2705| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 2705| Conversion = [BoolConversion] conversion to bool +# 2705| Type = [BoolType] bool +# 2705| ValueCategory = prvalue +# 2706| getStmt(4): [IfStmt] if (...) ... +# 2706| getCondition(): [NotExpr] ! ... # 2706| Type = [BoolType] bool # 2706| ValueCategory = prvalue -# 2706| getLeftOperand(): [VariableAccess] x1 +# 2706| getOperand(): [VariableAccess] y # 2706| Type = [IntType] int # 2706| ValueCategory = prvalue(load) -# 2706| getRightOperand(): [VariableAccess] x2 -# 2706| Type = [IntType] int -# 2706| ValueCategory = prvalue(load) -# 2706| getLeftOperand().getFullyConverted(): [CStyleCast] (bool)... -# 2706| Conversion = [BoolConversion] conversion to bool -# 2706| Type = [BoolType] bool -# 2706| ValueCategory = prvalue -# 2706| getRightOperand().getFullyConverted(): [CStyleCast] (bool)... +# 2706| getOperand().getFullyConverted(): [CStyleCast] (bool)... # 2706| Conversion = [BoolConversion] conversion to bool # 2706| Type = [BoolType] bool # 2706| ValueCategory = prvalue # 2706| getThen(): [BlockStmt] { ... } -# 2707| getStmt(6): [IfStmt] if (...) ... -# 2707| getCondition(): [LogicalAndExpr] ... && ... -# 2707| Type = [BoolType] bool -# 2707| ValueCategory = prvalue -# 2707| getLeftOperand(): [NotExpr] ! ... -# 2707| Type = [BoolType] bool -# 2707| ValueCategory = prvalue -# 2707| getOperand(): [VariableAccess] x1 -# 2707| Type = [IntType] int -# 2707| ValueCategory = prvalue(load) -# 2707| getOperand().getFullyConverted(): [CStyleCast] (bool)... -# 2707| Conversion = [BoolConversion] conversion to bool -# 2707| Type = [BoolType] bool -# 2707| ValueCategory = prvalue -# 2707| getRightOperand(): [VariableAccess] x2 -# 2707| Type = [IntType] int -# 2707| ValueCategory = prvalue(load) -# 2707| getRightOperand().getFullyConverted(): [CStyleCast] (bool)... -# 2707| Conversion = [BoolConversion] conversion to bool -# 2707| Type = [BoolType] bool -# 2707| ValueCategory = prvalue -# 2707| getThen(): [BlockStmt] { ... } -# 2708| getStmt(7): [IfStmt] if (...) ... +# 2708| getStmt(5): [IfStmt] if (...) ... # 2708| getCondition(): [LogicalAndExpr] ... && ... # 2708| Type = [BoolType] bool # 2708| ValueCategory = prvalue # 2708| getLeftOperand(): [VariableAccess] x1 # 2708| Type = [IntType] int # 2708| ValueCategory = prvalue(load) -# 2708| getRightOperand(): [NotExpr] ! ... -# 2708| Type = [BoolType] bool -# 2708| ValueCategory = prvalue -# 2708| getOperand(): [VariableAccess] x2 -# 2708| Type = [IntType] int -# 2708| ValueCategory = prvalue(load) -# 2708| getOperand().getFullyConverted(): [CStyleCast] (bool)... -# 2708| Conversion = [BoolConversion] conversion to bool -# 2708| Type = [BoolType] bool -# 2708| ValueCategory = prvalue +# 2708| getRightOperand(): [VariableAccess] x2 +# 2708| Type = [IntType] int +# 2708| ValueCategory = prvalue(load) # 2708| getLeftOperand().getFullyConverted(): [CStyleCast] (bool)... # 2708| Conversion = [BoolConversion] conversion to bool # 2708| Type = [BoolType] bool # 2708| ValueCategory = prvalue +# 2708| getRightOperand().getFullyConverted(): [CStyleCast] (bool)... +# 2708| Conversion = [BoolConversion] conversion to bool +# 2708| Type = [BoolType] bool +# 2708| ValueCategory = prvalue # 2708| getThen(): [BlockStmt] { ... } -# 2709| getStmt(8): [IfStmt] if (...) ... +# 2709| getStmt(6): [IfStmt] if (...) ... # 2709| getCondition(): [LogicalAndExpr] ... && ... # 2709| Type = [BoolType] bool # 2709| ValueCategory = prvalue @@ -24105,38 +24061,38 @@ ir.cpp: # 2709| Conversion = [BoolConversion] conversion to bool # 2709| Type = [BoolType] bool # 2709| ValueCategory = prvalue -# 2709| getRightOperand(): [NotExpr] ! ... +# 2709| getRightOperand(): [VariableAccess] x2 +# 2709| Type = [IntType] int +# 2709| ValueCategory = prvalue(load) +# 2709| getRightOperand().getFullyConverted(): [CStyleCast] (bool)... +# 2709| Conversion = [BoolConversion] conversion to bool # 2709| Type = [BoolType] bool # 2709| ValueCategory = prvalue -# 2709| getOperand(): [VariableAccess] x2 -# 2709| Type = [IntType] int -# 2709| ValueCategory = prvalue(load) -# 2709| getOperand().getFullyConverted(): [CStyleCast] (bool)... -# 2709| Conversion = [BoolConversion] conversion to bool -# 2709| Type = [BoolType] bool -# 2709| ValueCategory = prvalue # 2709| getThen(): [BlockStmt] { ... } -# 2710| getStmt(9): [IfStmt] if (...) ... -# 2710| getCondition(): [LogicalOrExpr] ... || ... +# 2710| getStmt(7): [IfStmt] if (...) ... +# 2710| getCondition(): [LogicalAndExpr] ... && ... # 2710| Type = [BoolType] bool # 2710| ValueCategory = prvalue # 2710| getLeftOperand(): [VariableAccess] x1 # 2710| Type = [IntType] int # 2710| ValueCategory = prvalue(load) -# 2710| getRightOperand(): [VariableAccess] x2 -# 2710| Type = [IntType] int -# 2710| ValueCategory = prvalue(load) +# 2710| getRightOperand(): [NotExpr] ! ... +# 2710| Type = [BoolType] bool +# 2710| ValueCategory = prvalue +# 2710| getOperand(): [VariableAccess] x2 +# 2710| Type = [IntType] int +# 2710| ValueCategory = prvalue(load) +# 2710| getOperand().getFullyConverted(): [CStyleCast] (bool)... +# 2710| Conversion = [BoolConversion] conversion to bool +# 2710| Type = [BoolType] bool +# 2710| ValueCategory = prvalue # 2710| getLeftOperand().getFullyConverted(): [CStyleCast] (bool)... # 2710| Conversion = [BoolConversion] conversion to bool # 2710| Type = [BoolType] bool # 2710| ValueCategory = prvalue -# 2710| getRightOperand().getFullyConverted(): [CStyleCast] (bool)... -# 2710| Conversion = [BoolConversion] conversion to bool -# 2710| Type = [BoolType] bool -# 2710| ValueCategory = prvalue # 2710| getThen(): [BlockStmt] { ... } -# 2711| getStmt(10): [IfStmt] if (...) ... -# 2711| getCondition(): [LogicalOrExpr] ... || ... +# 2711| getStmt(8): [IfStmt] if (...) ... +# 2711| getCondition(): [LogicalAndExpr] ... && ... # 2711| Type = [BoolType] bool # 2711| ValueCategory = prvalue # 2711| getLeftOperand(): [NotExpr] ! ... @@ -24149,37 +24105,37 @@ ir.cpp: # 2711| Conversion = [BoolConversion] conversion to bool # 2711| Type = [BoolType] bool # 2711| ValueCategory = prvalue -# 2711| getRightOperand(): [VariableAccess] x2 -# 2711| Type = [IntType] int -# 2711| ValueCategory = prvalue(load) -# 2711| getRightOperand().getFullyConverted(): [CStyleCast] (bool)... -# 2711| Conversion = [BoolConversion] conversion to bool +# 2711| getRightOperand(): [NotExpr] ! ... # 2711| Type = [BoolType] bool # 2711| ValueCategory = prvalue +# 2711| getOperand(): [VariableAccess] x2 +# 2711| Type = [IntType] int +# 2711| ValueCategory = prvalue(load) +# 2711| getOperand().getFullyConverted(): [CStyleCast] (bool)... +# 2711| Conversion = [BoolConversion] conversion to bool +# 2711| Type = [BoolType] bool +# 2711| ValueCategory = prvalue # 2711| getThen(): [BlockStmt] { ... } -# 2712| getStmt(11): [IfStmt] if (...) ... +# 2712| getStmt(9): [IfStmt] if (...) ... # 2712| getCondition(): [LogicalOrExpr] ... || ... # 2712| Type = [BoolType] bool # 2712| ValueCategory = prvalue # 2712| getLeftOperand(): [VariableAccess] x1 # 2712| Type = [IntType] int # 2712| ValueCategory = prvalue(load) -# 2712| getRightOperand(): [NotExpr] ! ... -# 2712| Type = [BoolType] bool -# 2712| ValueCategory = prvalue -# 2712| getOperand(): [VariableAccess] x2 -# 2712| Type = [IntType] int -# 2712| ValueCategory = prvalue(load) -# 2712| getOperand().getFullyConverted(): [CStyleCast] (bool)... -# 2712| Conversion = [BoolConversion] conversion to bool -# 2712| Type = [BoolType] bool -# 2712| ValueCategory = prvalue +# 2712| getRightOperand(): [VariableAccess] x2 +# 2712| Type = [IntType] int +# 2712| ValueCategory = prvalue(load) # 2712| getLeftOperand().getFullyConverted(): [CStyleCast] (bool)... # 2712| Conversion = [BoolConversion] conversion to bool # 2712| Type = [BoolType] bool # 2712| ValueCategory = prvalue +# 2712| getRightOperand().getFullyConverted(): [CStyleCast] (bool)... +# 2712| Conversion = [BoolConversion] conversion to bool +# 2712| Type = [BoolType] bool +# 2712| ValueCategory = prvalue # 2712| getThen(): [BlockStmt] { ... } -# 2713| getStmt(12): [IfStmt] if (...) ... +# 2713| getStmt(10): [IfStmt] if (...) ... # 2713| getCondition(): [LogicalOrExpr] ... || ... # 2713| Type = [BoolType] bool # 2713| ValueCategory = prvalue @@ -24193,166 +24149,182 @@ ir.cpp: # 2713| Conversion = [BoolConversion] conversion to bool # 2713| Type = [BoolType] bool # 2713| ValueCategory = prvalue -# 2713| getRightOperand(): [NotExpr] ! ... +# 2713| getRightOperand(): [VariableAccess] x2 +# 2713| Type = [IntType] int +# 2713| ValueCategory = prvalue(load) +# 2713| getRightOperand().getFullyConverted(): [CStyleCast] (bool)... +# 2713| Conversion = [BoolConversion] conversion to bool # 2713| Type = [BoolType] bool # 2713| ValueCategory = prvalue -# 2713| getOperand(): [VariableAccess] x2 -# 2713| Type = [IntType] int -# 2713| ValueCategory = prvalue(load) -# 2713| getOperand().getFullyConverted(): [CStyleCast] (bool)... -# 2713| Conversion = [BoolConversion] conversion to bool -# 2713| Type = [BoolType] bool -# 2713| ValueCategory = prvalue # 2713| getThen(): [BlockStmt] { ... } -# 2715| getStmt(13): [DeclStmt] declaration -# 2715| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x_1_and_2 -# 2715| Type = [IntType] int -# 2715| getVariable().getInitializer(): [Initializer] initializer for x_1_and_2 -# 2715| getExpr(): [LogicalAndExpr] ... && ... +# 2714| getStmt(11): [IfStmt] if (...) ... +# 2714| getCondition(): [LogicalOrExpr] ... || ... +# 2714| Type = [BoolType] bool +# 2714| ValueCategory = prvalue +# 2714| getLeftOperand(): [VariableAccess] x1 +# 2714| Type = [IntType] int +# 2714| ValueCategory = prvalue(load) +# 2714| getRightOperand(): [NotExpr] ! ... +# 2714| Type = [BoolType] bool +# 2714| ValueCategory = prvalue +# 2714| getOperand(): [VariableAccess] x2 +# 2714| Type = [IntType] int +# 2714| ValueCategory = prvalue(load) +# 2714| getOperand().getFullyConverted(): [CStyleCast] (bool)... +# 2714| Conversion = [BoolConversion] conversion to bool +# 2714| Type = [BoolType] bool +# 2714| ValueCategory = prvalue +# 2714| getLeftOperand().getFullyConverted(): [CStyleCast] (bool)... +# 2714| Conversion = [BoolConversion] conversion to bool +# 2714| Type = [BoolType] bool +# 2714| ValueCategory = prvalue +# 2714| getThen(): [BlockStmt] { ... } +# 2715| getStmt(12): [IfStmt] if (...) ... +# 2715| getCondition(): [LogicalOrExpr] ... || ... +# 2715| Type = [BoolType] bool +# 2715| ValueCategory = prvalue +# 2715| getLeftOperand(): [NotExpr] ! ... +# 2715| Type = [BoolType] bool +# 2715| ValueCategory = prvalue +# 2715| getOperand(): [VariableAccess] x1 +# 2715| Type = [IntType] int +# 2715| ValueCategory = prvalue(load) +# 2715| getOperand().getFullyConverted(): [CStyleCast] (bool)... +# 2715| Conversion = [BoolConversion] conversion to bool # 2715| Type = [BoolType] bool # 2715| ValueCategory = prvalue -# 2715| getLeftOperand(): [VariableAccess] x1 -# 2715| Type = [IntType] int -# 2715| ValueCategory = prvalue(load) -# 2715| getRightOperand(): [VariableAccess] x2 -# 2715| Type = [IntType] int -# 2715| ValueCategory = prvalue(load) -# 2715| getLeftOperand().getFullyConverted(): [CStyleCast] (bool)... -# 2715| Conversion = [BoolConversion] conversion to bool -# 2715| Type = [BoolType] bool -# 2715| ValueCategory = prvalue -# 2715| getRightOperand().getFullyConverted(): [CStyleCast] (bool)... -# 2715| Conversion = [BoolConversion] conversion to bool -# 2715| Type = [BoolType] bool -# 2715| ValueCategory = prvalue -# 2715| getExpr().getFullyConverted(): [CStyleCast] (int)... -# 2715| Conversion = [IntegralConversion] integral conversion +# 2715| getRightOperand(): [NotExpr] ! ... +# 2715| Type = [BoolType] bool +# 2715| ValueCategory = prvalue +# 2715| getOperand(): [VariableAccess] x2 # 2715| Type = [IntType] int +# 2715| ValueCategory = prvalue(load) +# 2715| getOperand().getFullyConverted(): [CStyleCast] (bool)... +# 2715| Conversion = [BoolConversion] conversion to bool +# 2715| Type = [BoolType] bool # 2715| ValueCategory = prvalue -# 2716| getStmt(14): [IfStmt] if (...) ... -# 2716| getCondition(): [VariableAccess] x_1_and_2 -# 2716| Type = [IntType] int -# 2716| ValueCategory = prvalue(load) -# 2716| getThen(): [BlockStmt] { ... } -# 2716| getCondition().getFullyConverted(): [CStyleCast] (bool)... -# 2716| Conversion = [BoolConversion] conversion to bool -# 2716| Type = [BoolType] bool -# 2716| ValueCategory = prvalue -# 2717| getStmt(15): [IfStmt] if (...) ... -# 2717| getCondition(): [NotExpr] ! ... -# 2717| Type = [BoolType] bool -# 2717| ValueCategory = prvalue -# 2717| getOperand(): [VariableAccess] x_1_and_2 -# 2717| Type = [IntType] int -# 2717| ValueCategory = prvalue(load) -# 2717| getOperand().getFullyConverted(): [CStyleCast] (bool)... -# 2717| Conversion = [BoolConversion] conversion to bool -# 2717| Type = [BoolType] bool -# 2717| ValueCategory = prvalue -# 2717| getThen(): [BlockStmt] { ... } -# 2718| getStmt(16): [ReturnStmt] return ... -# 2720| [CopyAssignmentOperator] WithBracketOperator& WithBracketOperator::operator=(WithBracketOperator const&) -# 2720| : +# 2715| getThen(): [BlockStmt] { ... } +# 2717| getStmt(13): [DeclStmt] declaration +# 2717| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x_1_and_2 +# 2717| Type = [IntType] int +# 2717| getVariable().getInitializer(): [Initializer] initializer for x_1_and_2 +# 2717| getExpr(): [LogicalAndExpr] ... && ... +# 2717| Type = [BoolType] bool +# 2717| ValueCategory = prvalue +# 2717| getLeftOperand(): [VariableAccess] x1 +# 2717| Type = [IntType] int +# 2717| ValueCategory = prvalue(load) +# 2717| getRightOperand(): [VariableAccess] x2 +# 2717| Type = [IntType] int +# 2717| ValueCategory = prvalue(load) +# 2717| getLeftOperand().getFullyConverted(): [CStyleCast] (bool)... +# 2717| Conversion = [BoolConversion] conversion to bool +# 2717| Type = [BoolType] bool +# 2717| ValueCategory = prvalue +# 2717| getRightOperand().getFullyConverted(): [CStyleCast] (bool)... +# 2717| Conversion = [BoolConversion] conversion to bool +# 2717| Type = [BoolType] bool +# 2717| ValueCategory = prvalue +# 2717| getExpr().getFullyConverted(): [CStyleCast] (int)... +# 2717| Conversion = [IntegralConversion] integral conversion +# 2717| Type = [IntType] int +# 2717| ValueCategory = prvalue +# 2718| getStmt(14): [IfStmt] if (...) ... +# 2718| getCondition(): [VariableAccess] x_1_and_2 +# 2718| Type = [IntType] int +# 2718| ValueCategory = prvalue(load) +# 2718| getThen(): [BlockStmt] { ... } +# 2718| getCondition().getFullyConverted(): [CStyleCast] (bool)... +# 2718| Conversion = [BoolConversion] conversion to bool +# 2718| Type = [BoolType] bool +# 2718| ValueCategory = prvalue +# 2719| getStmt(15): [IfStmt] if (...) ... +# 2719| getCondition(): [NotExpr] ! ... +# 2719| Type = [BoolType] bool +# 2719| ValueCategory = prvalue +# 2719| getOperand(): [VariableAccess] x_1_and_2 +# 2719| Type = [IntType] int +# 2719| ValueCategory = prvalue(load) +# 2719| getOperand().getFullyConverted(): [CStyleCast] (bool)... +# 2719| Conversion = [BoolConversion] conversion to bool +# 2719| Type = [BoolType] bool +# 2719| ValueCategory = prvalue +# 2719| getThen(): [BlockStmt] { ... } +# 2720| getStmt(16): [ReturnStmt] return ... +# 2722| [CopyAssignmentOperator] WithBracketOperator& WithBracketOperator::operator=(WithBracketOperator const&) +# 2722| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const WithBracketOperator & -# 2720| [MoveAssignmentOperator] WithBracketOperator& WithBracketOperator::operator=(WithBracketOperator&&) -# 2720| : +# 2722| [MoveAssignmentOperator] WithBracketOperator& WithBracketOperator::operator=(WithBracketOperator&&) +# 2722| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] WithBracketOperator && -# 2721| [ConstMemberFunction] char const& WithBracketOperator::operator[](int) const -# 2721| : -# 2721| getParameter(0): [Parameter] pos -# 2721| Type = [IntType] int -# 2724| [TopLevelFunction] char UseBracketOperator(WithBracketOperator const, int) -# 2724| : -# 2724| getParameter(0): [Parameter] x -# 2724| Type = [SpecifiedType] const WithBracketOperator -# 2724| getParameter(1): [Parameter] i -# 2724| Type = [IntType] int -# 2724| getEntryPoint(): [BlockStmt] { ... } -# 2725| getStmt(0): [ReturnStmt] return ... -# 2725| getExpr(): [OverloadedArrayExpr] call to operator[] -# 2725| Type = [LValueReferenceType] const char & -# 2725| ValueCategory = prvalue -# 2725| getArrayBase(): [VariableAccess] x -# 2725| Type = [SpecifiedType] const WithBracketOperator -# 2725| ValueCategory = lvalue -# 2725| getArrayOffset(): [VariableAccess] i -# 2725| Type = [IntType] int -# 2725| ValueCategory = prvalue(load) -# 2725| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2725| Type = [PlainCharType] char -# 2725| ValueCategory = prvalue(load) -# 2728| [TopLevelFunction] void test_postfix_crement(int*, int) -# 2728| : -# 2728| getParameter(0): [Parameter] p -# 2728| Type = [IntPointerType] int * -# 2728| getParameter(1): [Parameter] q -# 2728| Type = [IntType] int -# 2728| getEntryPoint(): [BlockStmt] { ... } -# 2729| getStmt(0): [ExprStmt] ExprStmt -# 2729| getExpr(): [PostfixIncrExpr] ... ++ -# 2729| Type = [IntPointerType] int * -# 2729| ValueCategory = prvalue -# 2729| getOperand(): [VariableAccess] p -# 2729| Type = [IntPointerType] int * -# 2729| ValueCategory = lvalue -# 2730| getStmt(1): [ExprStmt] ExprStmt -# 2730| getExpr(): [PostfixIncrExpr] ... ++ -# 2730| Type = [IntType] int -# 2730| ValueCategory = prvalue -# 2730| getOperand(): [VariableAccess] q -# 2730| Type = [IntType] int -# 2730| ValueCategory = lvalue -# 2731| getStmt(2): [ExprStmt] ExprStmt +# 2723| [ConstMemberFunction] char const& WithBracketOperator::operator[](int) const +# 2723| : +# 2723| getParameter(0): [Parameter] pos +# 2723| Type = [IntType] int +# 2726| [TopLevelFunction] char UseBracketOperator(WithBracketOperator const, int) +# 2726| : +# 2726| getParameter(0): [Parameter] x +# 2726| Type = [SpecifiedType] const WithBracketOperator +# 2726| getParameter(1): [Parameter] i +# 2726| Type = [IntType] int +# 2726| getEntryPoint(): [BlockStmt] { ... } +# 2727| getStmt(0): [ReturnStmt] return ... +# 2727| getExpr(): [OverloadedArrayExpr] call to operator[] +# 2727| Type = [LValueReferenceType] const char & +# 2727| ValueCategory = prvalue +# 2727| getArrayBase(): [VariableAccess] x +# 2727| Type = [SpecifiedType] const WithBracketOperator +# 2727| ValueCategory = lvalue +# 2727| getArrayOffset(): [VariableAccess] i +# 2727| Type = [IntType] int +# 2727| ValueCategory = prvalue(load) +# 2727| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2727| Type = [PlainCharType] char +# 2727| ValueCategory = prvalue(load) +# 2730| [TopLevelFunction] void test_postfix_crement(int*, int) +# 2730| : +# 2730| getParameter(0): [Parameter] p +# 2730| Type = [IntPointerType] int * +# 2730| getParameter(1): [Parameter] q +# 2730| Type = [IntType] int +# 2730| getEntryPoint(): [BlockStmt] { ... } +# 2731| getStmt(0): [ExprStmt] ExprStmt # 2731| getExpr(): [PostfixIncrExpr] ... ++ # 2731| Type = [IntPointerType] int * # 2731| ValueCategory = prvalue # 2731| getOperand(): [VariableAccess] p # 2731| Type = [IntPointerType] int * # 2731| ValueCategory = lvalue -# 2731| getExpr().getFullyConverted(): [ParenthesisExpr] (...) -# 2731| Type = [IntPointerType] int * -# 2731| ValueCategory = prvalue -# 2732| getStmt(3): [ExprStmt] ExprStmt +# 2732| getStmt(1): [ExprStmt] ExprStmt # 2732| getExpr(): [PostfixIncrExpr] ... ++ # 2732| Type = [IntType] int # 2732| ValueCategory = prvalue # 2732| getOperand(): [VariableAccess] q # 2732| Type = [IntType] int # 2732| ValueCategory = lvalue -# 2732| getExpr().getFullyConverted(): [ParenthesisExpr] (...) -# 2732| Type = [IntType] int -# 2732| ValueCategory = prvalue -# 2733| getStmt(4): [ExprStmt] ExprStmt +# 2733| getStmt(2): [ExprStmt] ExprStmt # 2733| getExpr(): [PostfixIncrExpr] ... ++ # 2733| Type = [IntPointerType] int * # 2733| ValueCategory = prvalue # 2733| getOperand(): [VariableAccess] p # 2733| Type = [IntPointerType] int * # 2733| ValueCategory = lvalue -# 2733| getExpr().getFullyConverted(): [CStyleCast] (void)... -# 2733| Conversion = [VoidConversion] conversion to void -# 2733| Type = [VoidType] void +# 2733| getExpr().getFullyConverted(): [ParenthesisExpr] (...) +# 2733| Type = [IntPointerType] int * # 2733| ValueCategory = prvalue -# 2733| getExpr(): [ParenthesisExpr] (...) -# 2733| Type = [IntPointerType] int * -# 2733| ValueCategory = prvalue -# 2734| getStmt(5): [ExprStmt] ExprStmt +# 2734| getStmt(3): [ExprStmt] ExprStmt # 2734| getExpr(): [PostfixIncrExpr] ... ++ # 2734| Type = [IntType] int # 2734| ValueCategory = prvalue # 2734| getOperand(): [VariableAccess] q # 2734| Type = [IntType] int # 2734| ValueCategory = lvalue -# 2734| getExpr().getFullyConverted(): [CStyleCast] (void)... -# 2734| Conversion = [VoidConversion] conversion to void -# 2734| Type = [VoidType] void +# 2734| getExpr().getFullyConverted(): [ParenthesisExpr] (...) +# 2734| Type = [IntType] int # 2734| ValueCategory = prvalue -# 2734| getExpr(): [ParenthesisExpr] (...) -# 2734| Type = [IntType] int -# 2734| ValueCategory = prvalue -# 2735| getStmt(6): [ExprStmt] ExprStmt +# 2735| getStmt(4): [ExprStmt] ExprStmt # 2735| getExpr(): [PostfixIncrExpr] ... ++ # 2735| Type = [IntPointerType] int * # 2735| ValueCategory = prvalue @@ -24363,7 +24335,10 @@ ir.cpp: # 2735| Conversion = [VoidConversion] conversion to void # 2735| Type = [VoidType] void # 2735| ValueCategory = prvalue -# 2736| getStmt(7): [ExprStmt] ExprStmt +# 2735| getExpr(): [ParenthesisExpr] (...) +# 2735| Type = [IntPointerType] int * +# 2735| ValueCategory = prvalue +# 2736| getStmt(5): [ExprStmt] ExprStmt # 2736| getExpr(): [PostfixIncrExpr] ... ++ # 2736| Type = [IntType] int # 2736| ValueCategory = prvalue @@ -24374,731 +24349,756 @@ ir.cpp: # 2736| Conversion = [VoidConversion] conversion to void # 2736| Type = [VoidType] void # 2736| ValueCategory = prvalue -# 2737| getStmt(8): [DeclStmt] declaration -# 2737| getDeclarationEntry(0): [VariableDeclarationEntry] definition of p1 +# 2736| getExpr(): [ParenthesisExpr] (...) +# 2736| Type = [IntType] int +# 2736| ValueCategory = prvalue +# 2737| getStmt(6): [ExprStmt] ExprStmt +# 2737| getExpr(): [PostfixIncrExpr] ... ++ # 2737| Type = [IntPointerType] int * -# 2737| getVariable().getInitializer(): [Initializer] initializer for p1 -# 2737| getExpr(): [PostfixIncrExpr] ... ++ -# 2737| Type = [IntPointerType] int * -# 2737| ValueCategory = prvalue -# 2737| getOperand(): [VariableAccess] p -# 2737| Type = [IntPointerType] int * -# 2737| ValueCategory = lvalue -# 2738| getStmt(9): [DeclStmt] declaration -# 2738| getDeclarationEntry(0): [VariableDeclarationEntry] definition of q1 +# 2737| ValueCategory = prvalue +# 2737| getOperand(): [VariableAccess] p +# 2737| Type = [IntPointerType] int * +# 2737| ValueCategory = lvalue +# 2737| getExpr().getFullyConverted(): [CStyleCast] (void)... +# 2737| Conversion = [VoidConversion] conversion to void +# 2737| Type = [VoidType] void +# 2737| ValueCategory = prvalue +# 2738| getStmt(7): [ExprStmt] ExprStmt +# 2738| getExpr(): [PostfixIncrExpr] ... ++ # 2738| Type = [IntType] int -# 2738| getVariable().getInitializer(): [Initializer] initializer for q1 -# 2738| getExpr(): [PostfixIncrExpr] ... ++ -# 2738| Type = [IntType] int -# 2738| ValueCategory = prvalue -# 2738| getOperand(): [VariableAccess] q -# 2738| Type = [IntType] int -# 2738| ValueCategory = lvalue -# 2739| getStmt(10): [ExprStmt] ExprStmt -# 2739| getExpr(): [PostfixIncrExpr] ... ++ +# 2738| ValueCategory = prvalue +# 2738| getOperand(): [VariableAccess] q +# 2738| Type = [IntType] int +# 2738| ValueCategory = lvalue +# 2738| getExpr().getFullyConverted(): [CStyleCast] (void)... +# 2738| Conversion = [VoidConversion] conversion to void +# 2738| Type = [VoidType] void +# 2738| ValueCategory = prvalue +# 2739| getStmt(8): [DeclStmt] declaration +# 2739| getDeclarationEntry(0): [VariableDeclarationEntry] definition of p1 # 2739| Type = [IntPointerType] int * -# 2739| ValueCategory = prvalue -# 2739| getOperand(): [VariableAccess] p -# 2739| Type = [IntPointerType] int * -# 2739| ValueCategory = lvalue -# 2739| getExpr().getFullyConverted(): [CStyleCast] (int *)... -# 2739| Conversion = [PointerConversion] pointer conversion -# 2739| Type = [IntPointerType] int * -# 2739| ValueCategory = prvalue -# 2739| getExpr(): [ParenthesisExpr] (...) -# 2739| Type = [IntPointerType] int * -# 2739| ValueCategory = prvalue -# 2740| getStmt(11): [ExprStmt] ExprStmt -# 2740| getExpr(): [PostfixIncrExpr] ... ++ +# 2739| getVariable().getInitializer(): [Initializer] initializer for p1 +# 2739| getExpr(): [PostfixIncrExpr] ... ++ +# 2739| Type = [IntPointerType] int * +# 2739| ValueCategory = prvalue +# 2739| getOperand(): [VariableAccess] p +# 2739| Type = [IntPointerType] int * +# 2739| ValueCategory = lvalue +# 2740| getStmt(9): [DeclStmt] declaration +# 2740| getDeclarationEntry(0): [VariableDeclarationEntry] definition of q1 # 2740| Type = [IntType] int -# 2740| ValueCategory = prvalue -# 2740| getOperand(): [VariableAccess] q -# 2740| Type = [IntType] int -# 2740| ValueCategory = lvalue -# 2740| getExpr().getFullyConverted(): [CStyleCast] (int)... -# 2740| Conversion = [IntegralConversion] integral conversion -# 2740| Type = [IntType] int -# 2740| ValueCategory = prvalue -# 2740| getExpr(): [ParenthesisExpr] (...) -# 2740| Type = [IntType] int -# 2740| ValueCategory = prvalue -# 2741| getStmt(12): [DeclStmt] declaration -# 2741| getDeclarationEntry(0): [VariableDeclarationEntry] definition of p2 +# 2740| getVariable().getInitializer(): [Initializer] initializer for q1 +# 2740| getExpr(): [PostfixIncrExpr] ... ++ +# 2740| Type = [IntType] int +# 2740| ValueCategory = prvalue +# 2740| getOperand(): [VariableAccess] q +# 2740| Type = [IntType] int +# 2740| ValueCategory = lvalue +# 2741| getStmt(10): [ExprStmt] ExprStmt +# 2741| getExpr(): [PostfixIncrExpr] ... ++ # 2741| Type = [IntPointerType] int * -# 2741| getVariable().getInitializer(): [Initializer] initializer for p2 -# 2741| getExpr(): [PostfixIncrExpr] ... ++ -# 2741| Type = [IntPointerType] int * -# 2741| ValueCategory = prvalue -# 2741| getOperand(): [VariableAccess] p -# 2741| Type = [IntPointerType] int * -# 2741| ValueCategory = lvalue -# 2741| getExpr().getFullyConverted(): [CStyleCast] (int *)... -# 2741| Conversion = [PointerConversion] pointer conversion -# 2741| Type = [IntPointerType] int * -# 2741| ValueCategory = prvalue -# 2741| getExpr(): [ParenthesisExpr] (...) -# 2741| Type = [IntPointerType] int * -# 2741| ValueCategory = prvalue -# 2742| getStmt(13): [DeclStmt] declaration -# 2742| getDeclarationEntry(0): [VariableDeclarationEntry] definition of q2 +# 2741| ValueCategory = prvalue +# 2741| getOperand(): [VariableAccess] p +# 2741| Type = [IntPointerType] int * +# 2741| ValueCategory = lvalue +# 2741| getExpr().getFullyConverted(): [CStyleCast] (int *)... +# 2741| Conversion = [PointerConversion] pointer conversion +# 2741| Type = [IntPointerType] int * +# 2741| ValueCategory = prvalue +# 2741| getExpr(): [ParenthesisExpr] (...) +# 2741| Type = [IntPointerType] int * +# 2741| ValueCategory = prvalue +# 2742| getStmt(11): [ExprStmt] ExprStmt +# 2742| getExpr(): [PostfixIncrExpr] ... ++ # 2742| Type = [IntType] int -# 2742| getVariable().getInitializer(): [Initializer] initializer for q2 -# 2742| getExpr(): [PostfixIncrExpr] ... ++ -# 2742| Type = [IntType] int -# 2742| ValueCategory = prvalue -# 2742| getOperand(): [VariableAccess] q -# 2742| Type = [IntType] int -# 2742| ValueCategory = lvalue -# 2742| getExpr().getFullyConverted(): [CStyleCast] (int)... -# 2742| Conversion = [IntegralConversion] integral conversion -# 2742| Type = [IntType] int -# 2742| ValueCategory = prvalue -# 2742| getExpr(): [ParenthesisExpr] (...) -# 2742| Type = [IntType] int -# 2742| ValueCategory = prvalue -# 2743| getStmt(14): [ReturnStmt] return ... -# 2747| [CopyAssignmentOperator] std::strong_ordering& std::strong_ordering::operator=(std::strong_ordering const&) -# 2747| : +# 2742| ValueCategory = prvalue +# 2742| getOperand(): [VariableAccess] q +# 2742| Type = [IntType] int +# 2742| ValueCategory = lvalue +# 2742| getExpr().getFullyConverted(): [CStyleCast] (int)... +# 2742| Conversion = [IntegralConversion] integral conversion +# 2742| Type = [IntType] int +# 2742| ValueCategory = prvalue +# 2742| getExpr(): [ParenthesisExpr] (...) +# 2742| Type = [IntType] int +# 2742| ValueCategory = prvalue +# 2743| getStmt(12): [DeclStmt] declaration +# 2743| getDeclarationEntry(0): [VariableDeclarationEntry] definition of p2 +# 2743| Type = [IntPointerType] int * +# 2743| getVariable().getInitializer(): [Initializer] initializer for p2 +# 2743| getExpr(): [PostfixIncrExpr] ... ++ +# 2743| Type = [IntPointerType] int * +# 2743| ValueCategory = prvalue +# 2743| getOperand(): [VariableAccess] p +# 2743| Type = [IntPointerType] int * +# 2743| ValueCategory = lvalue +# 2743| getExpr().getFullyConverted(): [CStyleCast] (int *)... +# 2743| Conversion = [PointerConversion] pointer conversion +# 2743| Type = [IntPointerType] int * +# 2743| ValueCategory = prvalue +# 2743| getExpr(): [ParenthesisExpr] (...) +# 2743| Type = [IntPointerType] int * +# 2743| ValueCategory = prvalue +# 2744| getStmt(13): [DeclStmt] declaration +# 2744| getDeclarationEntry(0): [VariableDeclarationEntry] definition of q2 +# 2744| Type = [IntType] int +# 2744| getVariable().getInitializer(): [Initializer] initializer for q2 +# 2744| getExpr(): [PostfixIncrExpr] ... ++ +# 2744| Type = [IntType] int +# 2744| ValueCategory = prvalue +# 2744| getOperand(): [VariableAccess] q +# 2744| Type = [IntType] int +# 2744| ValueCategory = lvalue +# 2744| getExpr().getFullyConverted(): [CStyleCast] (int)... +# 2744| Conversion = [IntegralConversion] integral conversion +# 2744| Type = [IntType] int +# 2744| ValueCategory = prvalue +# 2744| getExpr(): [ParenthesisExpr] (...) +# 2744| Type = [IntType] int +# 2744| ValueCategory = prvalue +# 2745| getStmt(14): [ReturnStmt] return ... +# 2749| [CopyAssignmentOperator] std::strong_ordering& std::strong_ordering::operator=(std::strong_ordering const&) +# 2749| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const strong_ordering & -# 2747| [MoveAssignmentOperator] std::strong_ordering& std::strong_ordering::operator=(std::strong_ordering&&) -# 2747| : +# 2749| [MoveAssignmentOperator] std::strong_ordering& std::strong_ordering::operator=(std::strong_ordering&&) +# 2749| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] strong_ordering && -# 2747| [CopyConstructor] void std::strong_ordering::strong_ordering(std::strong_ordering const&) -# 2747| : +# 2749| [CopyConstructor] void std::strong_ordering::strong_ordering(std::strong_ordering const&) +# 2749| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const strong_ordering & -# 2747| [MoveConstructor] void std::strong_ordering::strong_ordering(std::strong_ordering&&) -# 2747| : +# 2749| [MoveConstructor] void std::strong_ordering::strong_ordering(std::strong_ordering&&) +# 2749| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] strong_ordering && -# 2747| : -# 2747| getEntryPoint(): [BlockStmt] { ... } -# 2747| getStmt(0): [ReturnStmt] return ... -# 2748| [Constructor] void std::strong_ordering::strong_ordering(std::_Order) -# 2748| : -# 2748| getParameter(0): [Parameter] v -# 2748| Type = [ScopedEnum] _Order -# 2748| : -# 2748| getEntryPoint(): [BlockStmt] { ... } -# 2748| getStmt(0): [ReturnStmt] return ... -# 2763| [CopyAssignmentOperator] ThreeWay& ThreeWay::operator=(ThreeWay const&) -# 2763| : +# 2749| : +# 2749| getEntryPoint(): [BlockStmt] { ... } +# 2749| getStmt(0): [ReturnStmt] return ... +# 2750| [Constructor] void std::strong_ordering::strong_ordering(std::_Order) +# 2750| : +# 2750| getParameter(0): [Parameter] v +# 2750| Type = [ScopedEnum] _Order +# 2750| : +# 2750| getEntryPoint(): [BlockStmt] { ... } +# 2750| getStmt(0): [ReturnStmt] return ... +# 2765| [CopyAssignmentOperator] ThreeWay& ThreeWay::operator=(ThreeWay const&) +# 2765| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [LValueReferenceType] const ThreeWay & -# 2763| [MoveAssignmentOperator] ThreeWay& ThreeWay::operator=(ThreeWay&&) -# 2763| : +# 2765| [MoveAssignmentOperator] ThreeWay& ThreeWay::operator=(ThreeWay&&) +# 2765| : #-----| getParameter(0): [Parameter] (unnamed parameter 0) #-----| Type = [RValueReferenceType] ThreeWay && -# 2763| [Constructor] void ThreeWay::ThreeWay() -# 2763| : -# 2766| [MemberFunction] std::strong_ordering ThreeWay::operator<=>(ThreeWay&) -# 2766| : -# 2766| getParameter(0): [Parameter] y -# 2766| Type = [LValueReferenceType] ThreeWay & -# 2766| getEntryPoint(): [BlockStmt] { ... } -# 2766| getStmt(0): [ReturnStmt] return ... -# 2766| getExpr(): [SpaceshipExpr] ... <=> ... -# 2766| Type = [Class] strong_ordering -# 2766| ValueCategory = prvalue -# 2766| getChild(0): [PointerFieldAccess] x -# 2766| Type = [IntType] int -# 2766| ValueCategory = prvalue(load) -# 2766| getQualifier(): [ThisExpr] this -# 2766| Type = [PointerType] ThreeWay * -# 2766| ValueCategory = prvalue(load) -# 2766| getChild(1): [ReferenceFieldAccess] x -# 2766| Type = [IntType] int -# 2766| ValueCategory = prvalue(load) -# 2766| getQualifier(): [VariableAccess] y -# 2766| Type = [LValueReferenceType] ThreeWay & -# 2766| ValueCategory = prvalue(load) -# 2766| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) -# 2766| Type = [Class] ThreeWay -# 2766| ValueCategory = lvalue -# 2769| [TopLevelFunction] void test_three_way(int, int, ThreeWay, ThreeWay) -# 2769| : -# 2769| getParameter(0): [Parameter] a -# 2769| Type = [IntType] int -# 2769| getParameter(1): [Parameter] b -# 2769| Type = [IntType] int -# 2769| getParameter(2): [Parameter] c -# 2769| Type = [Class] ThreeWay -# 2769| getParameter(3): [Parameter] d -# 2769| Type = [Class] ThreeWay -# 2769| getEntryPoint(): [BlockStmt] { ... } -# 2770| getStmt(0): [DeclStmt] declaration -# 2770| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 2770| Type = [Class] strong_ordering -# 2770| getVariable().getInitializer(): [Initializer] initializer for x -# 2770| getExpr(): [SpaceshipExpr] ... <=> ... -# 2770| Type = [Class] strong_ordering -# 2770| ValueCategory = prvalue -# 2770| getChild(0): [VariableAccess] a -# 2770| Type = [IntType] int -# 2770| ValueCategory = prvalue(load) -# 2770| getChild(1): [VariableAccess] b -# 2770| Type = [IntType] int -# 2770| ValueCategory = prvalue(load) -# 2771| getStmt(1): [DeclStmt] declaration -# 2771| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y -# 2771| Type = [Class] strong_ordering -# 2771| getVariable().getInitializer(): [Initializer] initializer for y -# 2771| getExpr(): [FunctionCall] call to operator<=> -# 2771| Type = [Class] strong_ordering -# 2771| ValueCategory = prvalue -# 2771| getQualifier(): [VariableAccess] c -# 2771| Type = [Class] ThreeWay -# 2771| ValueCategory = lvalue -# 2771| getArgument(0): [VariableAccess] d -# 2771| Type = [Class] ThreeWay -# 2771| ValueCategory = lvalue -# 2771| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) -# 2771| Type = [LValueReferenceType] ThreeWay & -# 2771| ValueCategory = prvalue -# 2772| getStmt(2): [ReturnStmt] return ... -# 2774| [TopLevelFunction] void test_allocation_with_initializer() -# 2774| : -# 2774| getEntryPoint(): [BlockStmt] { ... } -# 2775| getStmt(0): [DeclStmt] declaration -# 2775| getDeclarationEntry(0): [VariableDeclarationEntry] definition of p1 -# 2775| Type = [IntPointerType] int * -# 2775| getVariable().getInitializer(): [Initializer] initializer for p1 -# 2775| getExpr(): [NewExpr] new -# 2775| Type = [IntPointerType] int * -# 2775| ValueCategory = prvalue -# 2775| getInitializer(): [Literal] 42 -# 2775| Type = [IntType] int -# 2775| Value = [Literal] 42 -# 2775| ValueCategory = prvalue -# 2776| getStmt(1): [DeclStmt] declaration -# 2776| getDeclarationEntry(0): [VariableDeclarationEntry] definition of p2 -# 2776| Type = [PointerType] long * -# 2776| getVariable().getInitializer(): [Initializer] initializer for p2 -# 2776| getExpr(): [NewExpr] new -# 2776| Type = [PointerType] long * -# 2776| ValueCategory = prvalue -# 2776| getInitializer(): [Literal] 42 -# 2776| Type = [IntType] int -# 2776| Value = [Literal] 42 -# 2776| ValueCategory = prvalue -# 2776| getInitializer().getFullyConverted(): [CStyleCast] (long)... -# 2776| Conversion = [IntegralConversion] integral conversion -# 2776| Type = [LongType] long -# 2776| Value = [CStyleCast] 42 -# 2776| ValueCategory = prvalue -# 2777| getStmt(2): [ReturnStmt] return ... -# 2779| [TopLevelFunction] void vla_sizeof_test(int, size_t, char) -# 2779| : -# 2779| getParameter(0): [Parameter] len1 -# 2779| Type = [IntType] int -# 2779| getParameter(1): [Parameter] len2 -# 2779| Type = [CTypedefType,Size_t] size_t -# 2779| getParameter(2): [Parameter] len3 -# 2779| Type = [PlainCharType] char -# 2779| getEntryPoint(): [BlockStmt] { ... } -# 2780| getStmt(0): [DeclStmt] declaration -# 2780| getDeclarationEntry(0): [VariableDeclarationEntry] definition of tmp1 -# 2780| Type = [ArrayType] char[] -# 2780| getStmt(1): [VlaDimensionStmt] VLA dimension size -# 2780| getDimensionExpr(): [VariableAccess] len1 -# 2780| Type = [IntType] int -# 2780| ValueCategory = prvalue(load) -# 2780| getStmt(2): [VlaDeclStmt] VLA declaration -# 2781| getStmt(3): [DeclStmt] declaration -# 2781| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x -# 2781| Type = [CTypedefType,Size_t] size_t -# 2781| getVariable().getInitializer(): [Initializer] initializer for x -# 2781| getExpr(): [SizeofExprOperator] sizeof() -# 2781| Type = [LongType] unsigned long -# 2781| ValueCategory = prvalue -# 2781| getExprOperand(): [VariableAccess] tmp1 -# 2781| Type = [ArrayType] char[] -# 2781| ValueCategory = lvalue -# 2781| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2781| Type = [ArrayType] char[] -# 2781| ValueCategory = lvalue -# 2782| getStmt(4): [DeclStmt] declaration -# 2782| getDeclarationEntry(0): [VariableDeclarationEntry] definition of tmp2 -# 2782| Type = [ArrayType] int[][] -# 2782| getStmt(5): [VlaDimensionStmt] VLA dimension size +# 2765| [Constructor] void ThreeWay::ThreeWay() +# 2765| : +# 2768| [MemberFunction] std::strong_ordering ThreeWay::operator<=>(ThreeWay&) +# 2768| : +# 2768| getParameter(0): [Parameter] y +# 2768| Type = [LValueReferenceType] ThreeWay & +# 2768| getEntryPoint(): [BlockStmt] { ... } +# 2768| getStmt(0): [ReturnStmt] return ... +# 2768| getExpr(): [SpaceshipExpr] ... <=> ... +# 2768| Type = [Class] strong_ordering +# 2768| ValueCategory = prvalue +# 2768| getChild(0): [PointerFieldAccess] x +# 2768| Type = [IntType] int +# 2768| ValueCategory = prvalue(load) +# 2768| getQualifier(): [ThisExpr] this +# 2768| Type = [PointerType] ThreeWay * +# 2768| ValueCategory = prvalue(load) +# 2768| getChild(1): [ReferenceFieldAccess] x +# 2768| Type = [IntType] int +# 2768| ValueCategory = prvalue(load) +# 2768| getQualifier(): [VariableAccess] y +# 2768| Type = [LValueReferenceType] ThreeWay & +# 2768| ValueCategory = prvalue(load) +# 2768| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference) +# 2768| Type = [Class] ThreeWay +# 2768| ValueCategory = lvalue +# 2771| [TopLevelFunction] void test_three_way(int, int, ThreeWay, ThreeWay) +# 2771| : +# 2771| getParameter(0): [Parameter] a +# 2771| Type = [IntType] int +# 2771| getParameter(1): [Parameter] b +# 2771| Type = [IntType] int +# 2771| getParameter(2): [Parameter] c +# 2771| Type = [Class] ThreeWay +# 2771| getParameter(3): [Parameter] d +# 2771| Type = [Class] ThreeWay +# 2771| getEntryPoint(): [BlockStmt] { ... } +# 2772| getStmt(0): [DeclStmt] declaration +# 2772| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x +# 2772| Type = [Class] strong_ordering +# 2772| getVariable().getInitializer(): [Initializer] initializer for x +# 2772| getExpr(): [SpaceshipExpr] ... <=> ... +# 2772| Type = [Class] strong_ordering +# 2772| ValueCategory = prvalue +# 2772| getChild(0): [VariableAccess] a +# 2772| Type = [IntType] int +# 2772| ValueCategory = prvalue(load) +# 2772| getChild(1): [VariableAccess] b +# 2772| Type = [IntType] int +# 2772| ValueCategory = prvalue(load) +# 2773| getStmt(1): [DeclStmt] declaration +# 2773| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 2773| Type = [Class] strong_ordering +# 2773| getVariable().getInitializer(): [Initializer] initializer for y +# 2773| getExpr(): [FunctionCall] call to operator<=> +# 2773| Type = [Class] strong_ordering +# 2773| ValueCategory = prvalue +# 2773| getQualifier(): [VariableAccess] c +# 2773| Type = [Class] ThreeWay +# 2773| ValueCategory = lvalue +# 2773| getArgument(0): [VariableAccess] d +# 2773| Type = [Class] ThreeWay +# 2773| ValueCategory = lvalue +# 2773| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to) +# 2773| Type = [LValueReferenceType] ThreeWay & +# 2773| ValueCategory = prvalue +# 2774| getStmt(2): [ReturnStmt] return ... +# 2776| [TopLevelFunction] void test_allocation_with_initializer() +# 2776| : +# 2776| getEntryPoint(): [BlockStmt] { ... } +# 2777| getStmt(0): [DeclStmt] declaration +# 2777| getDeclarationEntry(0): [VariableDeclarationEntry] definition of p1 +# 2777| Type = [IntPointerType] int * +# 2777| getVariable().getInitializer(): [Initializer] initializer for p1 +# 2777| getExpr(): [NewExpr] new +# 2777| Type = [IntPointerType] int * +# 2777| ValueCategory = prvalue +# 2777| getInitializer(): [Literal] 42 +# 2777| Type = [IntType] int +# 2777| Value = [Literal] 42 +# 2777| ValueCategory = prvalue +# 2778| getStmt(1): [DeclStmt] declaration +# 2778| getDeclarationEntry(0): [VariableDeclarationEntry] definition of p2 +# 2778| Type = [PointerType] long * +# 2778| getVariable().getInitializer(): [Initializer] initializer for p2 +# 2778| getExpr(): [NewExpr] new +# 2778| Type = [PointerType] long * +# 2778| ValueCategory = prvalue +# 2778| getInitializer(): [Literal] 42 +# 2778| Type = [IntType] int +# 2778| Value = [Literal] 42 +# 2778| ValueCategory = prvalue +# 2778| getInitializer().getFullyConverted(): [CStyleCast] (long)... +# 2778| Conversion = [IntegralConversion] integral conversion +# 2778| Type = [LongType] long +# 2778| Value = [CStyleCast] 42 +# 2778| ValueCategory = prvalue +# 2779| getStmt(2): [ReturnStmt] return ... +# 2781| [TopLevelFunction] void vla_sizeof_test(int, size_t, char) +# 2781| : +# 2781| getParameter(0): [Parameter] len1 +# 2781| Type = [IntType] int +# 2781| getParameter(1): [Parameter] len2 +# 2781| Type = [CTypedefType,Size_t] size_t +# 2781| getParameter(2): [Parameter] len3 +# 2781| Type = [PlainCharType] char +# 2781| getEntryPoint(): [BlockStmt] { ... } +# 2782| getStmt(0): [DeclStmt] declaration +# 2782| getDeclarationEntry(0): [VariableDeclarationEntry] definition of tmp1 +# 2782| Type = [ArrayType] char[] +# 2782| getStmt(1): [VlaDimensionStmt] VLA dimension size # 2782| getDimensionExpr(): [VariableAccess] len1 # 2782| Type = [IntType] int # 2782| ValueCategory = prvalue(load) -# 2782| getStmt(6): [VlaDimensionStmt] VLA dimension size -# 2782| getDimensionExpr(): [VariableAccess] len2 -# 2782| Type = [CTypedefType,Size_t] size_t -# 2782| ValueCategory = prvalue(load) -# 2782| getStmt(7): [VlaDeclStmt] VLA declaration -# 2783| getStmt(8): [DeclStmt] declaration -# 2783| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y +# 2782| getStmt(2): [VlaDeclStmt] VLA declaration +# 2783| getStmt(3): [DeclStmt] declaration +# 2783| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x # 2783| Type = [CTypedefType,Size_t] size_t -# 2783| getVariable().getInitializer(): [Initializer] initializer for y +# 2783| getVariable().getInitializer(): [Initializer] initializer for x # 2783| getExpr(): [SizeofExprOperator] sizeof() # 2783| Type = [LongType] unsigned long # 2783| ValueCategory = prvalue -# 2783| getExprOperand(): [VariableAccess] tmp2 -# 2783| Type = [ArrayType] int[][] +# 2783| getExprOperand(): [VariableAccess] tmp1 +# 2783| Type = [ArrayType] char[] # 2783| ValueCategory = lvalue # 2783| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2783| Type = [ArrayType] int[][] +# 2783| Type = [ArrayType] char[] # 2783| ValueCategory = lvalue -# 2784| getStmt(9): [DeclStmt] declaration -# 2784| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z +# 2784| getStmt(4): [DeclStmt] declaration +# 2784| getDeclarationEntry(0): [VariableDeclarationEntry] definition of tmp2 +# 2784| Type = [ArrayType] int[][] +# 2784| getStmt(5): [VlaDimensionStmt] VLA dimension size +# 2784| getDimensionExpr(): [VariableAccess] len1 +# 2784| Type = [IntType] int +# 2784| ValueCategory = prvalue(load) +# 2784| getStmt(6): [VlaDimensionStmt] VLA dimension size +# 2784| getDimensionExpr(): [VariableAccess] len2 # 2784| Type = [CTypedefType,Size_t] size_t -# 2784| getVariable().getInitializer(): [Initializer] initializer for z -# 2784| getExpr(): [SizeofExprOperator] sizeof() -# 2784| Type = [LongType] unsigned long -# 2784| ValueCategory = prvalue -# 2784| getExprOperand(): [PointerDereferenceExpr] * ... -# 2784| Type = [ArrayType] int[] -# 2784| ValueCategory = lvalue -# 2784| getOperand(): [VariableAccess] tmp2 -# 2784| Type = [ArrayType] int[][] -# 2784| ValueCategory = lvalue -# 2784| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 2784| Type = [PointerType] int(*)[] -# 2784| ValueCategory = prvalue -# 2784| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2784| Type = [ArrayType] int[] -# 2784| ValueCategory = lvalue -# 2785| getStmt(10): [DeclStmt] declaration -# 2785| getDeclarationEntry(0): [VariableDeclarationEntry] definition of tmp3 -# 2785| Type = [ArrayType] int[][][] -# 2785| getStmt(11): [VlaDimensionStmt] VLA dimension size -# 2785| getDimensionExpr(): [VariableAccess] len1 -# 2785| Type = [IntType] int -# 2785| ValueCategory = prvalue(load) -# 2785| getStmt(12): [VlaDimensionStmt] VLA dimension size -# 2785| getDimensionExpr(): [VariableAccess] len2 +# 2784| ValueCategory = prvalue(load) +# 2784| getStmt(7): [VlaDeclStmt] VLA declaration +# 2785| getStmt(8): [DeclStmt] declaration +# 2785| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y # 2785| Type = [CTypedefType,Size_t] size_t -# 2785| ValueCategory = prvalue(load) -# 2785| getStmt(13): [VlaDimensionStmt] VLA dimension size -# 2785| getDimensionExpr(): [VariableAccess] len3 -# 2785| Type = [PlainCharType] char -# 2785| ValueCategory = prvalue(load) -# 2785| getStmt(14): [VlaDeclStmt] VLA declaration -# 2786| getStmt(15): [DeclStmt] declaration -# 2786| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w +# 2785| getVariable().getInitializer(): [Initializer] initializer for y +# 2785| getExpr(): [SizeofExprOperator] sizeof() +# 2785| Type = [LongType] unsigned long +# 2785| ValueCategory = prvalue +# 2785| getExprOperand(): [VariableAccess] tmp2 +# 2785| Type = [ArrayType] int[][] +# 2785| ValueCategory = lvalue +# 2785| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2785| Type = [ArrayType] int[][] +# 2785| ValueCategory = lvalue +# 2786| getStmt(9): [DeclStmt] declaration +# 2786| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z # 2786| Type = [CTypedefType,Size_t] size_t -# 2786| getVariable().getInitializer(): [Initializer] initializer for w +# 2786| getVariable().getInitializer(): [Initializer] initializer for z # 2786| getExpr(): [SizeofExprOperator] sizeof() # 2786| Type = [LongType] unsigned long # 2786| ValueCategory = prvalue -# 2786| getExprOperand(): [VariableAccess] tmp3 -# 2786| Type = [ArrayType] int[][][] +# 2786| getExprOperand(): [PointerDereferenceExpr] * ... +# 2786| Type = [ArrayType] int[] # 2786| ValueCategory = lvalue +# 2786| getOperand(): [VariableAccess] tmp2 +# 2786| Type = [ArrayType] int[][] +# 2786| ValueCategory = lvalue +# 2786| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 2786| Type = [PointerType] int(*)[] +# 2786| ValueCategory = prvalue # 2786| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2786| Type = [ArrayType] int[][][] +# 2786| Type = [ArrayType] int[] # 2786| ValueCategory = lvalue -# 2787| getStmt(16): [DeclStmt] declaration -# 2787| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v +# 2787| getStmt(10): [DeclStmt] declaration +# 2787| getDeclarationEntry(0): [VariableDeclarationEntry] definition of tmp3 +# 2787| Type = [ArrayType] int[][][] +# 2787| getStmt(11): [VlaDimensionStmt] VLA dimension size +# 2787| getDimensionExpr(): [VariableAccess] len1 +# 2787| Type = [IntType] int +# 2787| ValueCategory = prvalue(load) +# 2787| getStmt(12): [VlaDimensionStmt] VLA dimension size +# 2787| getDimensionExpr(): [VariableAccess] len2 # 2787| Type = [CTypedefType,Size_t] size_t -# 2787| getVariable().getInitializer(): [Initializer] initializer for v -# 2787| getExpr(): [SizeofExprOperator] sizeof() -# 2787| Type = [LongType] unsigned long -# 2787| ValueCategory = prvalue -# 2787| getExprOperand(): [PointerDereferenceExpr] * ... -# 2787| Type = [ArrayType] int[][] -# 2787| ValueCategory = lvalue -# 2787| getOperand(): [VariableAccess] tmp3 -# 2787| Type = [ArrayType] int[][][] -# 2787| ValueCategory = lvalue -# 2787| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 2787| Type = [PointerType] int(*)[][] -# 2787| ValueCategory = prvalue -# 2787| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2787| Type = [ArrayType] int[][] -# 2787| ValueCategory = lvalue -# 2788| getStmt(17): [DeclStmt] declaration -# 2788| getDeclarationEntry(0): [VariableDeclarationEntry] definition of u +# 2787| ValueCategory = prvalue(load) +# 2787| getStmt(13): [VlaDimensionStmt] VLA dimension size +# 2787| getDimensionExpr(): [VariableAccess] len3 +# 2787| Type = [PlainCharType] char +# 2787| ValueCategory = prvalue(load) +# 2787| getStmt(14): [VlaDeclStmt] VLA declaration +# 2788| getStmt(15): [DeclStmt] declaration +# 2788| getDeclarationEntry(0): [VariableDeclarationEntry] definition of w # 2788| Type = [CTypedefType,Size_t] size_t -# 2788| getVariable().getInitializer(): [Initializer] initializer for u +# 2788| getVariable().getInitializer(): [Initializer] initializer for w # 2788| getExpr(): [SizeofExprOperator] sizeof() # 2788| Type = [LongType] unsigned long # 2788| ValueCategory = prvalue -# 2788| getExprOperand(): [PointerDereferenceExpr] * ... -# 2788| Type = [ArrayType] int[] +# 2788| getExprOperand(): [VariableAccess] tmp3 +# 2788| Type = [ArrayType] int[][][] # 2788| ValueCategory = lvalue -# 2788| getOperand(): [PointerDereferenceExpr] * ... -# 2788| Type = [ArrayType] int[][] -# 2788| ValueCategory = lvalue -# 2788| getOperand(): [VariableAccess] tmp3 -# 2788| Type = [ArrayType] int[][][] -# 2788| ValueCategory = lvalue -# 2788| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 2788| Type = [PointerType] int(*)[][] -# 2788| ValueCategory = prvalue -# 2788| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 2788| Type = [PointerType] int(*)[] -# 2788| ValueCategory = prvalue # 2788| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2788| Type = [ArrayType] int[] +# 2788| Type = [ArrayType] int[][][] # 2788| ValueCategory = lvalue -# 2789| getStmt(18): [DeclStmt] declaration -# 2789| getDeclarationEntry(0): [VariableDeclarationEntry] definition of t +# 2789| getStmt(16): [DeclStmt] declaration +# 2789| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v # 2789| Type = [CTypedefType,Size_t] size_t -# 2789| getVariable().getInitializer(): [Initializer] initializer for t +# 2789| getVariable().getInitializer(): [Initializer] initializer for v # 2789| getExpr(): [SizeofExprOperator] sizeof() # 2789| Type = [LongType] unsigned long -# 2789| Value = [SizeofExprOperator] 4 # 2789| ValueCategory = prvalue # 2789| getExprOperand(): [PointerDereferenceExpr] * ... -# 2789| Type = [IntType] int +# 2789| Type = [ArrayType] int[][] # 2789| ValueCategory = lvalue -# 2789| getOperand(): [PointerDereferenceExpr] * ... -# 2789| Type = [ArrayType] int[] +# 2789| getOperand(): [VariableAccess] tmp3 +# 2789| Type = [ArrayType] int[][][] # 2789| ValueCategory = lvalue -# 2789| getOperand(): [PointerDereferenceExpr] * ... -# 2789| Type = [ArrayType] int[][] -# 2789| ValueCategory = lvalue -# 2789| getOperand(): [VariableAccess] tmp3 -# 2789| Type = [ArrayType] int[][][] -# 2789| ValueCategory = lvalue -# 2789| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 2789| Type = [PointerType] int(*)[][] -# 2789| ValueCategory = prvalue -# 2789| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 2789| Type = [PointerType] int(*)[] -# 2789| ValueCategory = prvalue # 2789| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 2789| Type = [IntPointerType] int * +# 2789| Type = [PointerType] int(*)[][] # 2789| ValueCategory = prvalue # 2789| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2789| Type = [IntType] int +# 2789| Type = [ArrayType] int[][] # 2789| ValueCategory = lvalue -# 2790| getStmt(19): [ReturnStmt] return ... -# 2792| [TopLevelFunction] void vla_sizeof_test2(int, size_t, char) -# 2792| : -# 2792| getParameter(0): [Parameter] len1 -# 2792| Type = [IntType] int -# 2792| getParameter(1): [Parameter] len2 -# 2792| Type = [CTypedefType,Size_t] size_t -# 2792| getParameter(2): [Parameter] len3 -# 2792| Type = [PlainCharType] char -# 2792| getEntryPoint(): [BlockStmt] { ... } -# 2793| getStmt(0): [DeclStmt] declaration -# 2793| getDeclarationEntry(0): [VariableDeclarationEntry] definition of tmp1 -# 2793| Type = [ArrayType] int[][] -# 2793| getStmt(1): [VlaDimensionStmt] VLA dimension size -# 2793| getDimensionExpr(): [VariableAccess] len1 -# 2793| Type = [IntType] int -# 2793| ValueCategory = prvalue(load) -# 2793| getStmt(2): [VlaDimensionStmt] VLA dimension size -# 2793| getDimensionExpr(): [VariableAccess] len2 -# 2793| Type = [CTypedefType,Size_t] size_t -# 2793| ValueCategory = prvalue(load) -# 2793| getStmt(3): [VlaDeclStmt] VLA declaration -# 2794| getStmt(4): [DeclStmt] declaration -# 2794| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z -# 2794| Type = [CTypedefType,Size_t] size_t -# 2794| getVariable().getInitializer(): [Initializer] initializer for z -# 2794| getExpr(): [SizeofExprOperator] sizeof() -# 2794| Type = [LongType] unsigned long -# 2794| ValueCategory = prvalue -# 2794| getExprOperand(): [ArrayExpr] access to array -# 2794| Type = [ArrayType] int[] -# 2794| ValueCategory = lvalue -# 2794| getArrayBase(): [VariableAccess] tmp1 -# 2794| Type = [ArrayType] int[][] -# 2794| ValueCategory = lvalue -# 2794| getArrayOffset(): [Literal] 1 -# 2794| Type = [IntType] int -# 2794| Value = [Literal] 1 -# 2794| ValueCategory = prvalue -# 2794| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 2794| Type = [PointerType] int(*)[] -# 2794| ValueCategory = prvalue -# 2794| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2794| Type = [ArrayType] int[] -# 2794| ValueCategory = lvalue -# 2795| getStmt(5): [DeclStmt] declaration -# 2795| getDeclarationEntry(0): [VariableDeclarationEntry] definition of tmp2 -# 2795| Type = [ArrayType] int[][][] -# 2795| getStmt(6): [VlaDimensionStmt] VLA dimension size +# 2790| getStmt(17): [DeclStmt] declaration +# 2790| getDeclarationEntry(0): [VariableDeclarationEntry] definition of u +# 2790| Type = [CTypedefType,Size_t] size_t +# 2790| getVariable().getInitializer(): [Initializer] initializer for u +# 2790| getExpr(): [SizeofExprOperator] sizeof() +# 2790| Type = [LongType] unsigned long +# 2790| ValueCategory = prvalue +# 2790| getExprOperand(): [PointerDereferenceExpr] * ... +# 2790| Type = [ArrayType] int[] +# 2790| ValueCategory = lvalue +# 2790| getOperand(): [PointerDereferenceExpr] * ... +# 2790| Type = [ArrayType] int[][] +# 2790| ValueCategory = lvalue +# 2790| getOperand(): [VariableAccess] tmp3 +# 2790| Type = [ArrayType] int[][][] +# 2790| ValueCategory = lvalue +# 2790| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 2790| Type = [PointerType] int(*)[][] +# 2790| ValueCategory = prvalue +# 2790| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 2790| Type = [PointerType] int(*)[] +# 2790| ValueCategory = prvalue +# 2790| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2790| Type = [ArrayType] int[] +# 2790| ValueCategory = lvalue +# 2791| getStmt(18): [DeclStmt] declaration +# 2791| getDeclarationEntry(0): [VariableDeclarationEntry] definition of t +# 2791| Type = [CTypedefType,Size_t] size_t +# 2791| getVariable().getInitializer(): [Initializer] initializer for t +# 2791| getExpr(): [SizeofExprOperator] sizeof() +# 2791| Type = [LongType] unsigned long +# 2791| Value = [SizeofExprOperator] 4 +# 2791| ValueCategory = prvalue +# 2791| getExprOperand(): [PointerDereferenceExpr] * ... +# 2791| Type = [IntType] int +# 2791| ValueCategory = lvalue +# 2791| getOperand(): [PointerDereferenceExpr] * ... +# 2791| Type = [ArrayType] int[] +# 2791| ValueCategory = lvalue +# 2791| getOperand(): [PointerDereferenceExpr] * ... +# 2791| Type = [ArrayType] int[][] +# 2791| ValueCategory = lvalue +# 2791| getOperand(): [VariableAccess] tmp3 +# 2791| Type = [ArrayType] int[][][] +# 2791| ValueCategory = lvalue +# 2791| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 2791| Type = [PointerType] int(*)[][] +# 2791| ValueCategory = prvalue +# 2791| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 2791| Type = [PointerType] int(*)[] +# 2791| ValueCategory = prvalue +# 2791| getOperand().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 2791| Type = [IntPointerType] int * +# 2791| ValueCategory = prvalue +# 2791| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2791| Type = [IntType] int +# 2791| ValueCategory = lvalue +# 2792| getStmt(19): [ReturnStmt] return ... +# 2794| [TopLevelFunction] void vla_sizeof_test2(int, size_t, char) +# 2794| : +# 2794| getParameter(0): [Parameter] len1 +# 2794| Type = [IntType] int +# 2794| getParameter(1): [Parameter] len2 +# 2794| Type = [CTypedefType,Size_t] size_t +# 2794| getParameter(2): [Parameter] len3 +# 2794| Type = [PlainCharType] char +# 2794| getEntryPoint(): [BlockStmt] { ... } +# 2795| getStmt(0): [DeclStmt] declaration +# 2795| getDeclarationEntry(0): [VariableDeclarationEntry] definition of tmp1 +# 2795| Type = [ArrayType] int[][] +# 2795| getStmt(1): [VlaDimensionStmt] VLA dimension size # 2795| getDimensionExpr(): [VariableAccess] len1 # 2795| Type = [IntType] int # 2795| ValueCategory = prvalue(load) -# 2795| getStmt(7): [VlaDimensionStmt] VLA dimension size +# 2795| getStmt(2): [VlaDimensionStmt] VLA dimension size # 2795| getDimensionExpr(): [VariableAccess] len2 # 2795| Type = [CTypedefType,Size_t] size_t # 2795| ValueCategory = prvalue(load) -# 2795| getStmt(8): [VlaDimensionStmt] VLA dimension size -# 2795| getDimensionExpr(): [VariableAccess] len3 -# 2795| Type = [PlainCharType] char -# 2795| ValueCategory = prvalue(load) -# 2795| getStmt(9): [VlaDeclStmt] VLA declaration -# 2796| getStmt(10): [DeclStmt] declaration -# 2796| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v +# 2795| getStmt(3): [VlaDeclStmt] VLA declaration +# 2796| getStmt(4): [DeclStmt] declaration +# 2796| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z # 2796| Type = [CTypedefType,Size_t] size_t -# 2796| getVariable().getInitializer(): [Initializer] initializer for v +# 2796| getVariable().getInitializer(): [Initializer] initializer for z # 2796| getExpr(): [SizeofExprOperator] sizeof() # 2796| Type = [LongType] unsigned long # 2796| ValueCategory = prvalue # 2796| getExprOperand(): [ArrayExpr] access to array -# 2796| Type = [ArrayType] int[][] +# 2796| Type = [ArrayType] int[] # 2796| ValueCategory = lvalue -# 2796| getArrayBase(): [VariableAccess] tmp2 -# 2796| Type = [ArrayType] int[][][] +# 2796| getArrayBase(): [VariableAccess] tmp1 +# 2796| Type = [ArrayType] int[][] # 2796| ValueCategory = lvalue # 2796| getArrayOffset(): [Literal] 1 # 2796| Type = [IntType] int # 2796| Value = [Literal] 1 # 2796| ValueCategory = prvalue # 2796| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 2796| Type = [PointerType] int(*)[][] +# 2796| Type = [PointerType] int(*)[] # 2796| ValueCategory = prvalue # 2796| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2796| Type = [ArrayType] int[][] +# 2796| Type = [ArrayType] int[] # 2796| ValueCategory = lvalue -# 2797| getStmt(11): [DeclStmt] declaration -# 2797| getDeclarationEntry(0): [VariableDeclarationEntry] definition of u +# 2797| getStmt(5): [DeclStmt] declaration +# 2797| getDeclarationEntry(0): [VariableDeclarationEntry] definition of tmp2 +# 2797| Type = [ArrayType] int[][][] +# 2797| getStmt(6): [VlaDimensionStmt] VLA dimension size +# 2797| getDimensionExpr(): [VariableAccess] len1 +# 2797| Type = [IntType] int +# 2797| ValueCategory = prvalue(load) +# 2797| getStmt(7): [VlaDimensionStmt] VLA dimension size +# 2797| getDimensionExpr(): [VariableAccess] len2 # 2797| Type = [CTypedefType,Size_t] size_t -# 2797| getVariable().getInitializer(): [Initializer] initializer for u -# 2797| getExpr(): [SizeofExprOperator] sizeof() -# 2797| Type = [LongType] unsigned long -# 2797| ValueCategory = prvalue -# 2797| getExprOperand(): [ArrayExpr] access to array -# 2797| Type = [ArrayType] int[] -# 2797| ValueCategory = lvalue -# 2797| getArrayBase(): [ArrayExpr] access to array -# 2797| Type = [ArrayType] int[][] -# 2797| ValueCategory = lvalue -# 2797| getArrayBase(): [VariableAccess] tmp2 -# 2797| Type = [ArrayType] int[][][] -# 2797| ValueCategory = lvalue -# 2797| getArrayOffset(): [Literal] 1 -# 2797| Type = [IntType] int -# 2797| Value = [Literal] 1 -# 2797| ValueCategory = prvalue -# 2797| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 2797| Type = [PointerType] int(*)[][] -# 2797| ValueCategory = prvalue -# 2797| getArrayOffset(): [Literal] 2 -# 2797| Type = [IntType] int -# 2797| Value = [Literal] 2 -# 2797| ValueCategory = prvalue -# 2797| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 2797| Type = [PointerType] int(*)[] -# 2797| ValueCategory = prvalue -# 2797| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2797| Type = [ArrayType] int[] -# 2797| ValueCategory = lvalue -# 2798| getStmt(12): [DeclStmt] declaration -# 2798| getDeclarationEntry(0): [VariableDeclarationEntry] definition of t +# 2797| ValueCategory = prvalue(load) +# 2797| getStmt(8): [VlaDimensionStmt] VLA dimension size +# 2797| getDimensionExpr(): [VariableAccess] len3 +# 2797| Type = [PlainCharType] char +# 2797| ValueCategory = prvalue(load) +# 2797| getStmt(9): [VlaDeclStmt] VLA declaration +# 2798| getStmt(10): [DeclStmt] declaration +# 2798| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v # 2798| Type = [CTypedefType,Size_t] size_t -# 2798| getVariable().getInitializer(): [Initializer] initializer for t +# 2798| getVariable().getInitializer(): [Initializer] initializer for v # 2798| getExpr(): [SizeofExprOperator] sizeof() # 2798| Type = [LongType] unsigned long -# 2798| Value = [SizeofExprOperator] 4 # 2798| ValueCategory = prvalue # 2798| getExprOperand(): [ArrayExpr] access to array -# 2798| Type = [IntType] int +# 2798| Type = [ArrayType] int[][] # 2798| ValueCategory = lvalue -# 2798| getArrayBase(): [ArrayExpr] access to array -# 2798| Type = [ArrayType] int[] +# 2798| getArrayBase(): [VariableAccess] tmp2 +# 2798| Type = [ArrayType] int[][][] # 2798| ValueCategory = lvalue -# 2798| getArrayBase(): [ArrayExpr] access to array -# 2798| Type = [ArrayType] int[][] -# 2798| ValueCategory = lvalue -# 2798| getArrayBase(): [VariableAccess] tmp2 -# 2798| Type = [ArrayType] int[][][] -# 2798| ValueCategory = lvalue -# 2798| getArrayOffset(): [Literal] 1 -# 2798| Type = [IntType] int -# 2798| Value = [Literal] 1 -# 2798| ValueCategory = prvalue -# 2798| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 2798| Type = [PointerType] int(*)[][] -# 2798| ValueCategory = prvalue -# 2798| getArrayOffset(): [Literal] 2 -# 2798| Type = [IntType] int -# 2798| Value = [Literal] 2 -# 2798| ValueCategory = prvalue -# 2798| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 2798| Type = [PointerType] int(*)[] -# 2798| ValueCategory = prvalue -# 2798| getArrayOffset(): [Literal] 3 +# 2798| getArrayOffset(): [Literal] 1 # 2798| Type = [IntType] int -# 2798| Value = [Literal] 3 +# 2798| Value = [Literal] 1 # 2798| ValueCategory = prvalue # 2798| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 2798| Type = [IntPointerType] int * +# 2798| Type = [PointerType] int(*)[][] # 2798| ValueCategory = prvalue # 2798| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2798| Type = [IntType] int +# 2798| Type = [ArrayType] int[][] # 2798| ValueCategory = lvalue -# 2799| getStmt(13): [ReturnStmt] return ... -# 2801| [TopLevelFunction] size_t vla_sizeof_test3(int, size_t, char, bool) -# 2801| : -# 2801| getParameter(0): [Parameter] len1 -# 2801| Type = [IntType] int -# 2801| getParameter(1): [Parameter] len2 -# 2801| Type = [CTypedefType,Size_t] size_t -# 2801| getParameter(2): [Parameter] len3 -# 2801| Type = [PlainCharType] char -# 2801| getParameter(3): [Parameter] b -# 2801| Type = [BoolType] bool -# 2801| getEntryPoint(): [BlockStmt] { ... } -# 2802| getStmt(0): [DeclStmt] declaration -# 2802| getDeclarationEntry(0): [TypeDeclarationEntry] declaration of arr -# 2802| Type = [CTypedefType,LocalTypedefType] arr -# 2802| getStmt(1): [VlaDimensionStmt] VLA dimension size -# 2802| getDimensionExpr(): [VariableAccess] len1 -# 2802| Type = [IntType] int -# 2802| ValueCategory = prvalue(load) -# 2802| getStmt(2): [VlaDimensionStmt] VLA dimension size -# 2802| getDimensionExpr(): [VariableAccess] len2 -# 2802| Type = [CTypedefType,Size_t] size_t -# 2802| ValueCategory = prvalue(load) -# 2802| getStmt(3): [VlaDeclStmt] VLA declaration -# 2803| getStmt(4): [DeclStmt] declaration -# 2803| getDeclarationEntry(0): [TypeDeclarationEntry] declaration of arr2 -# 2803| Type = [CTypedefType,LocalTypedefType] arr2 -# 2803| getStmt(5): [VlaDeclStmt] VLA declaration -# 2804| getStmt(6): [DeclStmt] declaration -# 2804| getDeclarationEntry(0): [TypeDeclarationEntry] declaration of arr3 -# 2804| Type = [CTypedefType,LocalTypedefType] arr3 -# 2804| getStmt(7): [VlaDimensionStmt] VLA dimension size -# 2804| getDimensionExpr(): [VariableAccess] len3 -# 2804| Type = [PlainCharType] char +# 2799| getStmt(11): [DeclStmt] declaration +# 2799| getDeclarationEntry(0): [VariableDeclarationEntry] definition of u +# 2799| Type = [CTypedefType,Size_t] size_t +# 2799| getVariable().getInitializer(): [Initializer] initializer for u +# 2799| getExpr(): [SizeofExprOperator] sizeof() +# 2799| Type = [LongType] unsigned long +# 2799| ValueCategory = prvalue +# 2799| getExprOperand(): [ArrayExpr] access to array +# 2799| Type = [ArrayType] int[] +# 2799| ValueCategory = lvalue +# 2799| getArrayBase(): [ArrayExpr] access to array +# 2799| Type = [ArrayType] int[][] +# 2799| ValueCategory = lvalue +# 2799| getArrayBase(): [VariableAccess] tmp2 +# 2799| Type = [ArrayType] int[][][] +# 2799| ValueCategory = lvalue +# 2799| getArrayOffset(): [Literal] 1 +# 2799| Type = [IntType] int +# 2799| Value = [Literal] 1 +# 2799| ValueCategory = prvalue +# 2799| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 2799| Type = [PointerType] int(*)[][] +# 2799| ValueCategory = prvalue +# 2799| getArrayOffset(): [Literal] 2 +# 2799| Type = [IntType] int +# 2799| Value = [Literal] 2 +# 2799| ValueCategory = prvalue +# 2799| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 2799| Type = [PointerType] int(*)[] +# 2799| ValueCategory = prvalue +# 2799| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2799| Type = [ArrayType] int[] +# 2799| ValueCategory = lvalue +# 2800| getStmt(12): [DeclStmt] declaration +# 2800| getDeclarationEntry(0): [VariableDeclarationEntry] definition of t +# 2800| Type = [CTypedefType,Size_t] size_t +# 2800| getVariable().getInitializer(): [Initializer] initializer for t +# 2800| getExpr(): [SizeofExprOperator] sizeof() +# 2800| Type = [LongType] unsigned long +# 2800| Value = [SizeofExprOperator] 4 +# 2800| ValueCategory = prvalue +# 2800| getExprOperand(): [ArrayExpr] access to array +# 2800| Type = [IntType] int +# 2800| ValueCategory = lvalue +# 2800| getArrayBase(): [ArrayExpr] access to array +# 2800| Type = [ArrayType] int[] +# 2800| ValueCategory = lvalue +# 2800| getArrayBase(): [ArrayExpr] access to array +# 2800| Type = [ArrayType] int[][] +# 2800| ValueCategory = lvalue +# 2800| getArrayBase(): [VariableAccess] tmp2 +# 2800| Type = [ArrayType] int[][][] +# 2800| ValueCategory = lvalue +# 2800| getArrayOffset(): [Literal] 1 +# 2800| Type = [IntType] int +# 2800| Value = [Literal] 1 +# 2800| ValueCategory = prvalue +# 2800| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 2800| Type = [PointerType] int(*)[][] +# 2800| ValueCategory = prvalue +# 2800| getArrayOffset(): [Literal] 2 +# 2800| Type = [IntType] int +# 2800| Value = [Literal] 2 +# 2800| ValueCategory = prvalue +# 2800| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 2800| Type = [PointerType] int(*)[] +# 2800| ValueCategory = prvalue +# 2800| getArrayOffset(): [Literal] 3 +# 2800| Type = [IntType] int +# 2800| Value = [Literal] 3 +# 2800| ValueCategory = prvalue +# 2800| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 2800| Type = [IntPointerType] int * +# 2800| ValueCategory = prvalue +# 2800| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2800| Type = [IntType] int +# 2800| ValueCategory = lvalue +# 2801| getStmt(13): [ReturnStmt] return ... +# 2803| [TopLevelFunction] size_t vla_sizeof_test3(int, size_t, char, bool) +# 2803| : +# 2803| getParameter(0): [Parameter] len1 +# 2803| Type = [IntType] int +# 2803| getParameter(1): [Parameter] len2 +# 2803| Type = [CTypedefType,Size_t] size_t +# 2803| getParameter(2): [Parameter] len3 +# 2803| Type = [PlainCharType] char +# 2803| getParameter(3): [Parameter] b +# 2803| Type = [BoolType] bool +# 2803| getEntryPoint(): [BlockStmt] { ... } +# 2804| getStmt(0): [DeclStmt] declaration +# 2804| getDeclarationEntry(0): [TypeDeclarationEntry] declaration of arr +# 2804| Type = [CTypedefType,LocalTypedefType] arr +# 2804| getStmt(1): [VlaDimensionStmt] VLA dimension size +# 2804| getDimensionExpr(): [VariableAccess] len1 +# 2804| Type = [IntType] int # 2804| ValueCategory = prvalue(load) -# 2804| getStmt(8): [VlaDeclStmt] VLA declaration -# 2806| getStmt(9): [IfStmt] if (...) ... -# 2806| getCondition(): [VariableAccess] b -# 2806| Type = [BoolType] bool +# 2804| getStmt(2): [VlaDimensionStmt] VLA dimension size +# 2804| getDimensionExpr(): [VariableAccess] len2 +# 2804| Type = [CTypedefType,Size_t] size_t +# 2804| ValueCategory = prvalue(load) +# 2804| getStmt(3): [VlaDeclStmt] VLA declaration +# 2805| getStmt(4): [DeclStmt] declaration +# 2805| getDeclarationEntry(0): [TypeDeclarationEntry] declaration of arr2 +# 2805| Type = [CTypedefType,LocalTypedefType] arr2 +# 2805| getStmt(5): [VlaDeclStmt] VLA declaration +# 2806| getStmt(6): [DeclStmt] declaration +# 2806| getDeclarationEntry(0): [TypeDeclarationEntry] declaration of arr3 +# 2806| Type = [CTypedefType,LocalTypedefType] arr3 +# 2806| getStmt(7): [VlaDimensionStmt] VLA dimension size +# 2806| getDimensionExpr(): [VariableAccess] len3 +# 2806| Type = [PlainCharType] char # 2806| ValueCategory = prvalue(load) -# 2806| getThen(): [BlockStmt] { ... } -# 2807| getStmt(0): [DeclStmt] declaration -# 2807| getDeclarationEntry(0): [VariableDeclarationEntry] definition of tmp -# 2807| Type = [CTypedefType,LocalTypedefType] arr3 -# 2807| getStmt(1): [VlaDeclStmt] VLA declaration -# 2808| getStmt(2): [ReturnStmt] return ... -# 2808| getExpr(): [SizeofExprOperator] sizeof() -# 2808| Type = [LongType] unsigned long -# 2808| ValueCategory = prvalue -# 2808| getExprOperand(): [ArrayExpr] access to array -# 2808| Type = [CTypedefType,LocalTypedefType] arr2 -# 2808| ValueCategory = lvalue -# 2808| getArrayBase(): [VariableAccess] tmp -# 2808| Type = [CTypedefType,LocalTypedefType] arr3 -# 2808| ValueCategory = lvalue -# 2808| getArrayOffset(): [Literal] 1 -# 2808| Type = [IntType] int -# 2808| Value = [Literal] 1 -# 2808| ValueCategory = prvalue -# 2808| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 2808| Type = [PointerType] arr2 * -# 2808| ValueCategory = prvalue -# 2808| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2808| Type = [CTypedefType,LocalTypedefType] arr2 -# 2808| ValueCategory = lvalue -# 2811| getStmt(10): [ReturnStmt] return ... -# 2811| getExpr(): [Literal] 0 -# 2811| Type = [IntType] int -# 2811| Value = [Literal] 0 -# 2811| ValueCategory = prvalue -# 2811| getExpr().getFullyConverted(): [CStyleCast] (size_t)... -# 2811| Conversion = [IntegralConversion] integral conversion -# 2811| Type = [CTypedefType,Size_t] size_t -# 2811| Value = [CStyleCast] 0 -# 2811| ValueCategory = prvalue -# 2814| [TopLevelFunction] void vla_sizeof_test4(int, size_t) -# 2814| : -# 2814| getParameter(0): [Parameter] len1 -# 2814| Type = [IntType] int -# 2814| getParameter(1): [Parameter] len2 -# 2814| Type = [CTypedefType,Size_t] size_t -# 2814| getEntryPoint(): [BlockStmt] { ... } -# 2815| getStmt(0): [DeclStmt] declaration -# 2815| getDeclarationEntry(0): [VariableDeclarationEntry] definition of tmp1 -# 2815| Type = [ArrayType] int[][] -# 2815| getStmt(1): [VlaDimensionStmt] VLA dimension size -# 2815| getDimensionExpr(): [VariableAccess] len1 -# 2815| Type = [IntType] int -# 2815| ValueCategory = prvalue(load) -# 2815| getStmt(2): [VlaDimensionStmt] VLA dimension size -# 2815| getDimensionExpr(): [VariableAccess] len2 -# 2815| Type = [CTypedefType,Size_t] size_t -# 2815| ValueCategory = prvalue(load) -# 2815| getStmt(3): [VlaDeclStmt] VLA declaration -# 2816| getStmt(4): [DeclStmt] declaration -# 2816| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z -# 2816| Type = [CTypedefType,Size_t] size_t -# 2816| getVariable().getInitializer(): [Initializer] initializer for z -# 2816| getExpr(): [SizeofExprOperator] sizeof() -# 2816| Type = [LongType] unsigned long -# 2816| ValueCategory = prvalue -# 2816| getExprOperand(): [ArrayExpr] access to array -# 2816| Type = [ArrayType] int[] -# 2816| ValueCategory = lvalue -# 2816| getArrayBase(): [VariableAccess] tmp1 -# 2816| Type = [ArrayType] int[][] -# 2816| ValueCategory = lvalue -# 2816| getArrayOffset(): [Literal] 1 -# 2816| Type = [IntType] int -# 2816| Value = [Literal] 1 -# 2816| ValueCategory = prvalue -# 2816| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion -# 2816| Type = [PointerType] int(*)[] -# 2816| ValueCategory = prvalue -# 2816| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2816| Type = [ArrayType] int[] -# 2816| ValueCategory = lvalue -# 2817| getStmt(5): [ReturnStmt] return ... -# 2819| [TopLevelFunction] void vla_sizeof_test5(int, size_t) -# 2819| : -# 2819| getParameter(0): [Parameter] len1 -# 2819| Type = [IntType] int -# 2819| getParameter(1): [Parameter] len2 -# 2819| Type = [CTypedefType,Size_t] size_t -# 2819| getEntryPoint(): [BlockStmt] { ... } -# 2820| getStmt(0): [DeclStmt] declaration -# 2820| getDeclarationEntry(0): [VariableDeclarationEntry] definition of tmp1 -# 2820| Type = [ArrayType] int[][] -# 2820| getStmt(1): [VlaDimensionStmt] VLA dimension size -# 2820| getDimensionExpr(): [VariableAccess] len1 -# 2820| Type = [IntType] int -# 2820| ValueCategory = prvalue(load) -# 2820| getStmt(2): [VlaDimensionStmt] VLA dimension size -# 2820| getDimensionExpr(): [VariableAccess] len2 -# 2820| Type = [CTypedefType,Size_t] size_t -# 2820| ValueCategory = prvalue(load) -# 2820| getStmt(3): [VlaDeclStmt] VLA declaration -# 2821| getStmt(4): [DeclStmt] declaration -# 2821| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z -# 2821| Type = [CTypedefType,Size_t] size_t -# 2821| getVariable().getInitializer(): [Initializer] initializer for z -# 2821| getExpr(): [SizeofExprOperator] sizeof() -# 2821| Type = [LongType] unsigned long -# 2821| ValueCategory = prvalue -# 2821| getExprOperand(): [ArrayExpr] access to array -# 2821| Type = [ArrayType] int[] -# 2821| ValueCategory = lvalue -# 2821| getArrayBase(): [PointerDereferenceExpr] * ... -# 2821| Type = [ArrayType] int[][] -# 2821| ValueCategory = lvalue -# 2821| getOperand(): [AddressOfExpr] & ... -# 2821| Type = [PointerType] int(*)[][] -# 2821| ValueCategory = prvalue -# 2821| getOperand(): [VariableAccess] tmp1 -# 2821| Type = [ArrayType] int[][] -# 2821| ValueCategory = lvalue -# 2821| getArrayOffset(): [Literal] 1 -# 2821| Type = [IntType] int -# 2821| Value = [Literal] 1 -# 2821| ValueCategory = prvalue -# 2821| getArrayBase().getFullyConverted(): [ParenthesisExpr] (...) -# 2821| Type = [PointerType] int(*)[] -# 2821| ValueCategory = prvalue -# 2821| getExpr(): [ArrayToPointerConversion] array to pointer conversion -# 2821| Type = [PointerType] int(*)[] -# 2821| ValueCategory = prvalue -# 2821| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...) -# 2821| Type = [ArrayType] int[] -# 2821| ValueCategory = lvalue -# 2822| getStmt(5): [ReturnStmt] return ... +# 2806| getStmt(8): [VlaDeclStmt] VLA declaration +# 2808| getStmt(9): [IfStmt] if (...) ... +# 2808| getCondition(): [VariableAccess] b +# 2808| Type = [BoolType] bool +# 2808| ValueCategory = prvalue(load) +# 2808| getThen(): [BlockStmt] { ... } +# 2809| getStmt(0): [DeclStmt] declaration +# 2809| getDeclarationEntry(0): [VariableDeclarationEntry] definition of tmp +# 2809| Type = [CTypedefType,LocalTypedefType] arr3 +# 2809| getStmt(1): [VlaDeclStmt] VLA declaration +# 2810| getStmt(2): [ReturnStmt] return ... +# 2810| getExpr(): [SizeofExprOperator] sizeof() +# 2810| Type = [LongType] unsigned long +# 2810| ValueCategory = prvalue +# 2810| getExprOperand(): [ArrayExpr] access to array +# 2810| Type = [CTypedefType,LocalTypedefType] arr2 +# 2810| ValueCategory = lvalue +# 2810| getArrayBase(): [VariableAccess] tmp +# 2810| Type = [CTypedefType,LocalTypedefType] arr3 +# 2810| ValueCategory = lvalue +# 2810| getArrayOffset(): [Literal] 1 +# 2810| Type = [IntType] int +# 2810| Value = [Literal] 1 +# 2810| ValueCategory = prvalue +# 2810| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 2810| Type = [PointerType] arr2 * +# 2810| ValueCategory = prvalue +# 2810| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2810| Type = [CTypedefType,LocalTypedefType] arr2 +# 2810| ValueCategory = lvalue +# 2813| getStmt(10): [ReturnStmt] return ... +# 2813| getExpr(): [Literal] 0 +# 2813| Type = [IntType] int +# 2813| Value = [Literal] 0 +# 2813| ValueCategory = prvalue +# 2813| getExpr().getFullyConverted(): [CStyleCast] (size_t)... +# 2813| Conversion = [IntegralConversion] integral conversion +# 2813| Type = [CTypedefType,Size_t] size_t +# 2813| Value = [CStyleCast] 0 +# 2813| ValueCategory = prvalue +# 2816| [TopLevelFunction] void vla_sizeof_test4(int, size_t) +# 2816| : +# 2816| getParameter(0): [Parameter] len1 +# 2816| Type = [IntType] int +# 2816| getParameter(1): [Parameter] len2 +# 2816| Type = [CTypedefType,Size_t] size_t +# 2816| getEntryPoint(): [BlockStmt] { ... } +# 2817| getStmt(0): [DeclStmt] declaration +# 2817| getDeclarationEntry(0): [VariableDeclarationEntry] definition of tmp1 +# 2817| Type = [ArrayType] int[][] +# 2817| getStmt(1): [VlaDimensionStmt] VLA dimension size +# 2817| getDimensionExpr(): [VariableAccess] len1 +# 2817| Type = [IntType] int +# 2817| ValueCategory = prvalue(load) +# 2817| getStmt(2): [VlaDimensionStmt] VLA dimension size +# 2817| getDimensionExpr(): [VariableAccess] len2 +# 2817| Type = [CTypedefType,Size_t] size_t +# 2817| ValueCategory = prvalue(load) +# 2817| getStmt(3): [VlaDeclStmt] VLA declaration +# 2818| getStmt(4): [DeclStmt] declaration +# 2818| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z +# 2818| Type = [CTypedefType,Size_t] size_t +# 2818| getVariable().getInitializer(): [Initializer] initializer for z +# 2818| getExpr(): [SizeofExprOperator] sizeof() +# 2818| Type = [LongType] unsigned long +# 2818| ValueCategory = prvalue +# 2818| getExprOperand(): [ArrayExpr] access to array +# 2818| Type = [ArrayType] int[] +# 2818| ValueCategory = lvalue +# 2818| getArrayBase(): [VariableAccess] tmp1 +# 2818| Type = [ArrayType] int[][] +# 2818| ValueCategory = lvalue +# 2818| getArrayOffset(): [Literal] 1 +# 2818| Type = [IntType] int +# 2818| Value = [Literal] 1 +# 2818| ValueCategory = prvalue +# 2818| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion +# 2818| Type = [PointerType] int(*)[] +# 2818| ValueCategory = prvalue +# 2818| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2818| Type = [ArrayType] int[] +# 2818| ValueCategory = lvalue +# 2819| getStmt(5): [ReturnStmt] return ... +# 2821| [TopLevelFunction] void vla_sizeof_test5(int, size_t) +# 2821| : +# 2821| getParameter(0): [Parameter] len1 +# 2821| Type = [IntType] int +# 2821| getParameter(1): [Parameter] len2 +# 2821| Type = [CTypedefType,Size_t] size_t +# 2821| getEntryPoint(): [BlockStmt] { ... } +# 2822| getStmt(0): [DeclStmt] declaration +# 2822| getDeclarationEntry(0): [VariableDeclarationEntry] definition of tmp1 +# 2822| Type = [ArrayType] int[][] +# 2822| getStmt(1): [VlaDimensionStmt] VLA dimension size +# 2822| getDimensionExpr(): [VariableAccess] len1 +# 2822| Type = [IntType] int +# 2822| ValueCategory = prvalue(load) +# 2822| getStmt(2): [VlaDimensionStmt] VLA dimension size +# 2822| getDimensionExpr(): [VariableAccess] len2 +# 2822| Type = [CTypedefType,Size_t] size_t +# 2822| ValueCategory = prvalue(load) +# 2822| getStmt(3): [VlaDeclStmt] VLA declaration +# 2823| getStmt(4): [DeclStmt] declaration +# 2823| getDeclarationEntry(0): [VariableDeclarationEntry] definition of z +# 2823| Type = [CTypedefType,Size_t] size_t +# 2823| getVariable().getInitializer(): [Initializer] initializer for z +# 2823| getExpr(): [SizeofExprOperator] sizeof() +# 2823| Type = [LongType] unsigned long +# 2823| ValueCategory = prvalue +# 2823| getExprOperand(): [ArrayExpr] access to array +# 2823| Type = [ArrayType] int[] +# 2823| ValueCategory = lvalue +# 2823| getArrayBase(): [PointerDereferenceExpr] * ... +# 2823| Type = [ArrayType] int[][] +# 2823| ValueCategory = lvalue +# 2823| getOperand(): [AddressOfExpr] & ... +# 2823| Type = [PointerType] int(*)[][] +# 2823| ValueCategory = prvalue +# 2823| getOperand(): [VariableAccess] tmp1 +# 2823| Type = [ArrayType] int[][] +# 2823| ValueCategory = lvalue +# 2823| getArrayOffset(): [Literal] 1 +# 2823| Type = [IntType] int +# 2823| Value = [Literal] 1 +# 2823| ValueCategory = prvalue +# 2823| getArrayBase().getFullyConverted(): [ParenthesisExpr] (...) +# 2823| Type = [PointerType] int(*)[] +# 2823| ValueCategory = prvalue +# 2823| getExpr(): [ArrayToPointerConversion] array to pointer conversion +# 2823| Type = [PointerType] int(*)[] +# 2823| ValueCategory = prvalue +# 2823| getExprOperand().getFullyConverted(): [ParenthesisExpr] (...) +# 2823| Type = [ArrayType] int[] +# 2823| ValueCategory = lvalue +# 2824| getStmt(5): [ReturnStmt] return ... ir23.cpp: # 1| [TopLevelFunction] bool consteval_1() # 1| : diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected index 00681a2dc71..0ff90fbb5d8 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected @@ -10486,3665 +10486,3649 @@ ir.cpp: # 1216| r1216_5(__attribute((vector_size(16UL))) int) = Add : r1216_2, r1216_4 # 1216| r1216_6(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : # 1216| m1216_7(__attribute((vector_size(16UL))) int) = Store[vi4] : &:r1216_6, r1216_5 -# 1217| v1217_1(void) = NoOp : +# 1219| v1219_1(void) = NoOp : # 1211| v1211_7(void) = ReturnVoid : # 1211| v1211_8(void) = AliasedUse : m1211_3 # 1211| v1211_9(void) = ExitFunction : -# 1221| int ModeledCallTarget(int) -# 1221| Block 0 -# 1221| v1221_1(void) = EnterFunction : -# 1221| m1221_2(unknown) = AliasedDefinition : -# 1221| m1221_3(unknown) = InitializeNonLocal : -# 1221| m1221_4(unknown) = Chi : total:m1221_2, partial:m1221_3 -# 1221| r1221_5(glval) = VariableAddress[x] : -# 1221| m1221_6(int) = InitializeParameter[x] : &:r1221_5 -# 1222| r1222_1(glval) = VariableAddress[y] : -# 1222| m1222_2(int) = Uninitialized[y] : &:r1222_1 -# 1223| r1223_1(glval) = FunctionAddress[memcpy] : -# 1223| r1223_2(glval) = VariableAddress[y] : -# 1223| r1223_3(int *) = CopyValue : r1223_2 -# 1223| r1223_4(void *) = Convert : r1223_3 +# 1223| int ModeledCallTarget(int) +# 1223| Block 0 +# 1223| v1223_1(void) = EnterFunction : +# 1223| m1223_2(unknown) = AliasedDefinition : +# 1223| m1223_3(unknown) = InitializeNonLocal : +# 1223| m1223_4(unknown) = Chi : total:m1223_2, partial:m1223_3 # 1223| r1223_5(glval) = VariableAddress[x] : -# 1223| r1223_6(int *) = CopyValue : r1223_5 -# 1223| r1223_7(void *) = Convert : r1223_6 -# 1223| r1223_8(int) = Constant[4] : -# 1223| r1223_9(void *) = Call[memcpy] : func:r1223_1, 0:r1223_4, 1:r1223_7, 2:r1223_8 -# 1223| v1223_10(void) = ^SizedBufferReadSideEffect[1] : &:r1223_7, r1223_8, ~m1221_6 -# 1223| m1223_11(unknown) = ^SizedBufferMustWriteSideEffect[0] : &:r1223_4, r1223_8 -# 1223| m1223_12(int) = Chi : total:m1222_2, partial:m1223_11 -# 1224| r1224_1(glval) = VariableAddress[#return] : -# 1224| r1224_2(glval) = VariableAddress[y] : -# 1224| r1224_3(int) = Load[y] : &:r1224_2, m1223_12 -# 1224| m1224_4(int) = Store[#return] : &:r1224_1, r1224_3 -# 1221| r1221_7(glval) = VariableAddress[#return] : -# 1221| v1221_8(void) = ReturnValue : &:r1221_7, m1224_4 -# 1221| v1221_9(void) = AliasedUse : m1221_3 -# 1221| v1221_10(void) = ExitFunction : +# 1223| m1223_6(int) = InitializeParameter[x] : &:r1223_5 +# 1224| r1224_1(glval) = VariableAddress[y] : +# 1224| m1224_2(int) = Uninitialized[y] : &:r1224_1 +# 1225| r1225_1(glval) = FunctionAddress[memcpy] : +# 1225| r1225_2(glval) = VariableAddress[y] : +# 1225| r1225_3(int *) = CopyValue : r1225_2 +# 1225| r1225_4(void *) = Convert : r1225_3 +# 1225| r1225_5(glval) = VariableAddress[x] : +# 1225| r1225_6(int *) = CopyValue : r1225_5 +# 1225| r1225_7(void *) = Convert : r1225_6 +# 1225| r1225_8(int) = Constant[4] : +# 1225| r1225_9(void *) = Call[memcpy] : func:r1225_1, 0:r1225_4, 1:r1225_7, 2:r1225_8 +# 1225| v1225_10(void) = ^SizedBufferReadSideEffect[1] : &:r1225_7, r1225_8, ~m1223_6 +# 1225| m1225_11(unknown) = ^SizedBufferMustWriteSideEffect[0] : &:r1225_4, r1225_8 +# 1225| m1225_12(int) = Chi : total:m1224_2, partial:m1225_11 +# 1226| r1226_1(glval) = VariableAddress[#return] : +# 1226| r1226_2(glval) = VariableAddress[y] : +# 1226| r1226_3(int) = Load[y] : &:r1226_2, m1225_12 +# 1226| m1226_4(int) = Store[#return] : &:r1226_1, r1226_3 +# 1223| r1223_7(glval) = VariableAddress[#return] : +# 1223| v1223_8(void) = ReturnValue : &:r1223_7, m1226_4 +# 1223| v1223_9(void) = AliasedUse : m1223_3 +# 1223| v1223_10(void) = ExitFunction : -# 1227| String ReturnObjectImpl() -# 1227| Block 0 -# 1227| v1227_1(void) = EnterFunction : -# 1227| m1227_2(unknown) = AliasedDefinition : -# 1227| m1227_3(unknown) = InitializeNonLocal : -# 1227| m1227_4(unknown) = Chi : total:m1227_2, partial:m1227_3 -# 1228| r1228_1(glval) = VariableAddress[#return] : -# 1228| m1228_2(String) = Uninitialized[#return] : &:r1228_1 -# 1228| m1228_3(unknown) = Chi : total:m1227_4, partial:m1228_2 -# 1228| r1228_4(glval) = FunctionAddress[String] : -# 1228| r1228_5(glval) = StringConstant["foo"] : -# 1228| r1228_6(char *) = Convert : r1228_5 -# 1228| v1228_7(void) = Call[String] : func:r1228_4, this:r1228_1, 0:r1228_6 -# 1228| m1228_8(unknown) = ^CallSideEffect : ~m1228_3 -# 1228| m1228_9(unknown) = Chi : total:m1228_3, partial:m1228_8 -# 1228| v1228_10(void) = ^BufferReadSideEffect[0] : &:r1228_6, ~m1227_3 -# 1228| m1228_11(String) = ^IndirectMayWriteSideEffect[-1] : &:r1228_1 -# 1228| m1228_12(unknown) = Chi : total:m1228_9, partial:m1228_11 -# 1227| r1227_5(glval) = VariableAddress[#return] : -# 1227| v1227_6(void) = ReturnValue : &:r1227_5, ~m1228_12 -# 1227| v1227_7(void) = AliasedUse : ~m1228_9 -# 1227| v1227_8(void) = ExitFunction : +# 1229| String ReturnObjectImpl() +# 1229| Block 0 +# 1229| v1229_1(void) = EnterFunction : +# 1229| m1229_2(unknown) = AliasedDefinition : +# 1229| m1229_3(unknown) = InitializeNonLocal : +# 1229| m1229_4(unknown) = Chi : total:m1229_2, partial:m1229_3 +# 1230| r1230_1(glval) = VariableAddress[#return] : +# 1230| m1230_2(String) = Uninitialized[#return] : &:r1230_1 +# 1230| m1230_3(unknown) = Chi : total:m1229_4, partial:m1230_2 +# 1230| r1230_4(glval) = FunctionAddress[String] : +# 1230| r1230_5(glval) = StringConstant["foo"] : +# 1230| r1230_6(char *) = Convert : r1230_5 +# 1230| v1230_7(void) = Call[String] : func:r1230_4, this:r1230_1, 0:r1230_6 +# 1230| m1230_8(unknown) = ^CallSideEffect : ~m1230_3 +# 1230| m1230_9(unknown) = Chi : total:m1230_3, partial:m1230_8 +# 1230| v1230_10(void) = ^BufferReadSideEffect[0] : &:r1230_6, ~m1229_3 +# 1230| m1230_11(String) = ^IndirectMayWriteSideEffect[-1] : &:r1230_1 +# 1230| m1230_12(unknown) = Chi : total:m1230_9, partial:m1230_11 +# 1229| r1229_5(glval) = VariableAddress[#return] : +# 1229| v1229_6(void) = ReturnValue : &:r1229_5, ~m1230_12 +# 1229| v1229_7(void) = AliasedUse : ~m1230_9 +# 1229| v1229_8(void) = ExitFunction : -# 1231| void switch1Case(int) -# 1231| Block 0 -# 1231| v1231_1(void) = EnterFunction : -# 1231| m1231_2(unknown) = AliasedDefinition : -# 1231| m1231_3(unknown) = InitializeNonLocal : -# 1231| m1231_4(unknown) = Chi : total:m1231_2, partial:m1231_3 -# 1231| r1231_5(glval) = VariableAddress[x] : -# 1231| m1231_6(int) = InitializeParameter[x] : &:r1231_5 -# 1232| r1232_1(glval) = VariableAddress[y] : -# 1232| r1232_2(int) = Constant[0] : -# 1232| m1232_3(int) = Store[y] : &:r1232_1, r1232_2 -# 1233| r1233_1(glval) = VariableAddress[x] : -# 1233| r1233_2(int) = Load[x] : &:r1233_1, m1231_6 -# 1233| v1233_3(void) = Switch : r1233_2 +# 1233| void switch1Case(int) +# 1233| Block 0 +# 1233| v1233_1(void) = EnterFunction : +# 1233| m1233_2(unknown) = AliasedDefinition : +# 1233| m1233_3(unknown) = InitializeNonLocal : +# 1233| m1233_4(unknown) = Chi : total:m1233_2, partial:m1233_3 +# 1233| r1233_5(glval) = VariableAddress[x] : +# 1233| m1233_6(int) = InitializeParameter[x] : &:r1233_5 +# 1234| r1234_1(glval) = VariableAddress[y] : +# 1234| r1234_2(int) = Constant[0] : +# 1234| m1234_3(int) = Store[y] : &:r1234_1, r1234_2 +# 1235| r1235_1(glval) = VariableAddress[x] : +# 1235| r1235_2(int) = Load[x] : &:r1235_1, m1233_6 +# 1235| v1235_3(void) = Switch : r1235_2 #-----| Case[1] -> Block 1 #-----| Default -> Block 2 -# 1234| Block 1 -# 1234| v1234_1(void) = NoOp : -# 1235| r1235_1(int) = Constant[2] : -# 1235| r1235_2(glval) = VariableAddress[y] : -# 1235| m1235_3(int) = Store[y] : &:r1235_2, r1235_1 +# 1236| Block 1 +# 1236| v1236_1(void) = NoOp : +# 1237| r1237_1(int) = Constant[2] : +# 1237| r1237_2(glval) = VariableAddress[y] : +# 1237| m1237_3(int) = Store[y] : &:r1237_2, r1237_1 #-----| Goto -> Block 2 -# 1237| Block 2 -# 1237| m1237_1(int) = Phi : from 0:m1232_3, from 1:m1235_3 -# 1237| r1237_2(glval) = VariableAddress[z] : -# 1237| r1237_3(glval) = VariableAddress[y] : -# 1237| r1237_4(int) = Load[y] : &:r1237_3, m1237_1 -# 1237| m1237_5(int) = Store[z] : &:r1237_2, r1237_4 -# 1238| v1238_1(void) = NoOp : -# 1231| v1231_7(void) = ReturnVoid : -# 1231| v1231_8(void) = AliasedUse : m1231_3 -# 1231| v1231_9(void) = ExitFunction : +# 1239| Block 2 +# 1239| m1239_1(int) = Phi : from 0:m1234_3, from 1:m1237_3 +# 1239| r1239_2(glval) = VariableAddress[z] : +# 1239| r1239_3(glval) = VariableAddress[y] : +# 1239| r1239_4(int) = Load[y] : &:r1239_3, m1239_1 +# 1239| m1239_5(int) = Store[z] : &:r1239_2, r1239_4 +# 1240| v1240_1(void) = NoOp : +# 1233| v1233_7(void) = ReturnVoid : +# 1233| v1233_8(void) = AliasedUse : m1233_3 +# 1233| v1233_9(void) = ExitFunction : -# 1240| void switch2Case_fallthrough(int) -# 1240| Block 0 -# 1240| v1240_1(void) = EnterFunction : -# 1240| m1240_2(unknown) = AliasedDefinition : -# 1240| m1240_3(unknown) = InitializeNonLocal : -# 1240| m1240_4(unknown) = Chi : total:m1240_2, partial:m1240_3 -# 1240| r1240_5(glval) = VariableAddress[x] : -# 1240| m1240_6(int) = InitializeParameter[x] : &:r1240_5 -# 1241| r1241_1(glval) = VariableAddress[y] : -# 1241| r1241_2(int) = Constant[0] : -# 1241| m1241_3(int) = Store[y] : &:r1241_1, r1241_2 -# 1242| r1242_1(glval) = VariableAddress[x] : -# 1242| r1242_2(int) = Load[x] : &:r1242_1, m1240_6 -# 1242| v1242_3(void) = Switch : r1242_2 +# 1242| void switch2Case_fallthrough(int) +# 1242| Block 0 +# 1242| v1242_1(void) = EnterFunction : +# 1242| m1242_2(unknown) = AliasedDefinition : +# 1242| m1242_3(unknown) = InitializeNonLocal : +# 1242| m1242_4(unknown) = Chi : total:m1242_2, partial:m1242_3 +# 1242| r1242_5(glval) = VariableAddress[x] : +# 1242| m1242_6(int) = InitializeParameter[x] : &:r1242_5 +# 1243| r1243_1(glval) = VariableAddress[y] : +# 1243| r1243_2(int) = Constant[0] : +# 1243| m1243_3(int) = Store[y] : &:r1243_1, r1243_2 +# 1244| r1244_1(glval) = VariableAddress[x] : +# 1244| r1244_2(int) = Load[x] : &:r1244_1, m1242_6 +# 1244| v1244_3(void) = Switch : r1244_2 #-----| Case[1] -> Block 1 #-----| Case[2] -> Block 2 #-----| Default -> Block 3 -# 1243| Block 1 -# 1243| v1243_1(void) = NoOp : -# 1244| r1244_1(int) = Constant[2] : -# 1244| r1244_2(glval) = VariableAddress[y] : -# 1244| m1244_3(int) = Store[y] : &:r1244_2, r1244_1 -#-----| Goto -> Block 2 - -# 1245| Block 2 +# 1245| Block 1 # 1245| v1245_1(void) = NoOp : -# 1246| r1246_1(int) = Constant[3] : +# 1246| r1246_1(int) = Constant[2] : # 1246| r1246_2(glval) = VariableAddress[y] : # 1246| m1246_3(int) = Store[y] : &:r1246_2, r1246_1 +#-----| Goto -> Block 2 + +# 1247| Block 2 +# 1247| v1247_1(void) = NoOp : +# 1248| r1248_1(int) = Constant[3] : +# 1248| r1248_2(glval) = VariableAddress[y] : +# 1248| m1248_3(int) = Store[y] : &:r1248_2, r1248_1 #-----| Goto -> Block 3 -# 1248| Block 3 -# 1248| m1248_1(int) = Phi : from 0:m1241_3, from 2:m1246_3 -# 1248| r1248_2(glval) = VariableAddress[z] : -# 1248| r1248_3(glval) = VariableAddress[y] : -# 1248| r1248_4(int) = Load[y] : &:r1248_3, m1248_1 -# 1248| m1248_5(int) = Store[z] : &:r1248_2, r1248_4 -# 1249| v1249_1(void) = NoOp : -# 1240| v1240_7(void) = ReturnVoid : -# 1240| v1240_8(void) = AliasedUse : m1240_3 -# 1240| v1240_9(void) = ExitFunction : +# 1250| Block 3 +# 1250| m1250_1(int) = Phi : from 0:m1243_3, from 2:m1248_3 +# 1250| r1250_2(glval) = VariableAddress[z] : +# 1250| r1250_3(glval) = VariableAddress[y] : +# 1250| r1250_4(int) = Load[y] : &:r1250_3, m1250_1 +# 1250| m1250_5(int) = Store[z] : &:r1250_2, r1250_4 +# 1251| v1251_1(void) = NoOp : +# 1242| v1242_7(void) = ReturnVoid : +# 1242| v1242_8(void) = AliasedUse : m1242_3 +# 1242| v1242_9(void) = ExitFunction : -# 1251| void switch2Case(int) -# 1251| Block 0 -# 1251| v1251_1(void) = EnterFunction : -# 1251| m1251_2(unknown) = AliasedDefinition : -# 1251| m1251_3(unknown) = InitializeNonLocal : -# 1251| m1251_4(unknown) = Chi : total:m1251_2, partial:m1251_3 -# 1251| r1251_5(glval) = VariableAddress[x] : -# 1251| m1251_6(int) = InitializeParameter[x] : &:r1251_5 -# 1252| r1252_1(glval) = VariableAddress[y] : -# 1252| r1252_2(int) = Constant[0] : -# 1252| m1252_3(int) = Store[y] : &:r1252_1, r1252_2 -# 1253| r1253_1(glval) = VariableAddress[x] : -# 1253| r1253_2(int) = Load[x] : &:r1253_1, m1251_6 -# 1253| v1253_3(void) = Switch : r1253_2 +# 1253| void switch2Case(int) +# 1253| Block 0 +# 1253| v1253_1(void) = EnterFunction : +# 1253| m1253_2(unknown) = AliasedDefinition : +# 1253| m1253_3(unknown) = InitializeNonLocal : +# 1253| m1253_4(unknown) = Chi : total:m1253_2, partial:m1253_3 +# 1253| r1253_5(glval) = VariableAddress[x] : +# 1253| m1253_6(int) = InitializeParameter[x] : &:r1253_5 +# 1254| r1254_1(glval) = VariableAddress[y] : +# 1254| r1254_2(int) = Constant[0] : +# 1254| m1254_3(int) = Store[y] : &:r1254_1, r1254_2 +# 1255| r1255_1(glval) = VariableAddress[x] : +# 1255| r1255_2(int) = Load[x] : &:r1255_1, m1253_6 +# 1255| v1255_3(void) = Switch : r1255_2 #-----| Case[1] -> Block 1 #-----| Case[2] -> Block 2 #-----| Default -> Block 3 -# 1254| Block 1 -# 1254| v1254_1(void) = NoOp : -# 1255| r1255_1(int) = Constant[2] : -# 1255| r1255_2(glval) = VariableAddress[y] : -# 1255| m1255_3(int) = Store[y] : &:r1255_2, r1255_1 +# 1256| Block 1 # 1256| v1256_1(void) = NoOp : +# 1257| r1257_1(int) = Constant[2] : +# 1257| r1257_2(glval) = VariableAddress[y] : +# 1257| m1257_3(int) = Store[y] : &:r1257_2, r1257_1 +# 1258| v1258_1(void) = NoOp : #-----| Goto -> Block 3 -# 1257| Block 2 -# 1257| v1257_1(void) = NoOp : -# 1258| r1258_1(int) = Constant[3] : -# 1258| r1258_2(glval) = VariableAddress[y] : -# 1258| m1258_3(int) = Store[y] : &:r1258_2, r1258_1 -#-----| Goto -> Block 3 - -# 1259| Block 3 -# 1259| m1259_1(int) = Phi : from 0:m1252_3, from 1:m1255_3, from 2:m1258_3 -# 1259| v1259_2(void) = NoOp : -# 1260| r1260_1(glval) = VariableAddress[z] : +# 1259| Block 2 +# 1259| v1259_1(void) = NoOp : +# 1260| r1260_1(int) = Constant[3] : # 1260| r1260_2(glval) = VariableAddress[y] : -# 1260| r1260_3(int) = Load[y] : &:r1260_2, m1259_1 -# 1260| m1260_4(int) = Store[z] : &:r1260_1, r1260_3 -# 1261| v1261_1(void) = NoOp : -# 1251| v1251_7(void) = ReturnVoid : -# 1251| v1251_8(void) = AliasedUse : m1251_3 -# 1251| v1251_9(void) = ExitFunction : +# 1260| m1260_3(int) = Store[y] : &:r1260_2, r1260_1 +#-----| Goto -> Block 3 -# 1263| void switch2Case_default(int) -# 1263| Block 0 -# 1263| v1263_1(void) = EnterFunction : -# 1263| m1263_2(unknown) = AliasedDefinition : -# 1263| m1263_3(unknown) = InitializeNonLocal : -# 1263| m1263_4(unknown) = Chi : total:m1263_2, partial:m1263_3 -# 1263| r1263_5(glval) = VariableAddress[x] : -# 1263| m1263_6(int) = InitializeParameter[x] : &:r1263_5 -# 1264| r1264_1(glval) = VariableAddress[y] : -# 1264| r1264_2(int) = Constant[0] : -# 1264| m1264_3(int) = Store[y] : &:r1264_1, r1264_2 -# 1265| r1265_1(glval) = VariableAddress[x] : -# 1265| r1265_2(int) = Load[x] : &:r1265_1, m1263_6 -# 1265| v1265_3(void) = Switch : r1265_2 +# 1261| Block 3 +# 1261| m1261_1(int) = Phi : from 0:m1254_3, from 1:m1257_3, from 2:m1260_3 +# 1261| v1261_2(void) = NoOp : +# 1262| r1262_1(glval) = VariableAddress[z] : +# 1262| r1262_2(glval) = VariableAddress[y] : +# 1262| r1262_3(int) = Load[y] : &:r1262_2, m1261_1 +# 1262| m1262_4(int) = Store[z] : &:r1262_1, r1262_3 +# 1263| v1263_1(void) = NoOp : +# 1253| v1253_7(void) = ReturnVoid : +# 1253| v1253_8(void) = AliasedUse : m1253_3 +# 1253| v1253_9(void) = ExitFunction : + +# 1265| void switch2Case_default(int) +# 1265| Block 0 +# 1265| v1265_1(void) = EnterFunction : +# 1265| m1265_2(unknown) = AliasedDefinition : +# 1265| m1265_3(unknown) = InitializeNonLocal : +# 1265| m1265_4(unknown) = Chi : total:m1265_2, partial:m1265_3 +# 1265| r1265_5(glval) = VariableAddress[x] : +# 1265| m1265_6(int) = InitializeParameter[x] : &:r1265_5 +# 1266| r1266_1(glval) = VariableAddress[y] : +# 1266| r1266_2(int) = Constant[0] : +# 1266| m1266_3(int) = Store[y] : &:r1266_1, r1266_2 +# 1267| r1267_1(glval) = VariableAddress[x] : +# 1267| r1267_2(int) = Load[x] : &:r1267_1, m1265_6 +# 1267| v1267_3(void) = Switch : r1267_2 #-----| Case[1] -> Block 1 #-----| Case[2] -> Block 2 #-----| Default -> Block 3 -# 1266| Block 1 -# 1266| v1266_1(void) = NoOp : -# 1267| r1267_1(int) = Constant[2] : -# 1267| r1267_2(glval) = VariableAddress[y] : -# 1267| m1267_3(int) = Store[y] : &:r1267_2, r1267_1 +# 1268| Block 1 # 1268| v1268_1(void) = NoOp : -#-----| Goto -> Block 4 - -# 1270| Block 2 +# 1269| r1269_1(int) = Constant[2] : +# 1269| r1269_2(glval) = VariableAddress[y] : +# 1269| m1269_3(int) = Store[y] : &:r1269_2, r1269_1 # 1270| v1270_1(void) = NoOp : -# 1271| r1271_1(int) = Constant[3] : -# 1271| r1271_2(glval) = VariableAddress[y] : -# 1271| m1271_3(int) = Store[y] : &:r1271_2, r1271_1 +#-----| Goto -> Block 4 + +# 1272| Block 2 # 1272| v1272_1(void) = NoOp : -#-----| Goto -> Block 4 - -# 1274| Block 3 +# 1273| r1273_1(int) = Constant[3] : +# 1273| r1273_2(glval) = VariableAddress[y] : +# 1273| m1273_3(int) = Store[y] : &:r1273_2, r1273_1 # 1274| v1274_1(void) = NoOp : -# 1275| r1275_1(int) = Constant[4] : -# 1275| r1275_2(glval) = VariableAddress[y] : -# 1275| m1275_3(int) = Store[y] : &:r1275_2, r1275_1 #-----| Goto -> Block 4 -# 1276| Block 4 -# 1276| m1276_1(int) = Phi : from 1:m1267_3, from 2:m1271_3, from 3:m1275_3 -# 1276| v1276_2(void) = NoOp : -# 1277| r1277_1(glval) = VariableAddress[z] : +# 1276| Block 3 +# 1276| v1276_1(void) = NoOp : +# 1277| r1277_1(int) = Constant[4] : # 1277| r1277_2(glval) = VariableAddress[y] : -# 1277| r1277_3(int) = Load[y] : &:r1277_2, m1276_1 -# 1277| m1277_4(int) = Store[z] : &:r1277_1, r1277_3 -# 1278| v1278_1(void) = NoOp : -# 1263| v1263_7(void) = ReturnVoid : -# 1263| v1263_8(void) = AliasedUse : m1263_3 -# 1263| v1263_9(void) = ExitFunction : +# 1277| m1277_3(int) = Store[y] : &:r1277_2, r1277_1 +#-----| Goto -> Block 4 -# 1280| int staticLocalInit(int) -# 1280| Block 0 -# 1280| v1280_1(void) = EnterFunction : -# 1280| m1280_2(unknown) = AliasedDefinition : -# 1280| m1280_3(unknown) = InitializeNonLocal : -# 1280| m1280_4(unknown) = Chi : total:m1280_2, partial:m1280_3 -# 1280| r1280_5(glval) = VariableAddress[x] : -# 1280| m1280_6(int) = InitializeParameter[x] : &:r1280_5 -# 1283| r1283_1(glval) = VariableAddress[c#init] : -# 1283| r1283_2(bool) = Load[c#init] : &:r1283_1, ~m1280_3 -# 1283| v1283_3(void) = ConditionalBranch : r1283_2 -#-----| False -> Block 1 -#-----| True -> Block 2 +# 1278| Block 4 +# 1278| m1278_1(int) = Phi : from 1:m1269_3, from 2:m1273_3, from 3:m1277_3 +# 1278| v1278_2(void) = NoOp : +# 1279| r1279_1(glval) = VariableAddress[z] : +# 1279| r1279_2(glval) = VariableAddress[y] : +# 1279| r1279_3(int) = Load[y] : &:r1279_2, m1278_1 +# 1279| m1279_4(int) = Store[z] : &:r1279_1, r1279_3 +# 1280| v1280_1(void) = NoOp : +# 1265| v1265_7(void) = ReturnVoid : +# 1265| v1265_8(void) = AliasedUse : m1265_3 +# 1265| v1265_9(void) = ExitFunction : -# 1283| Block 1 -# 1283| r1283_4(glval) = VariableAddress[c] : -# 1283| r1283_5(glval) = VariableAddress[x] : -# 1283| r1283_6(int) = Load[x] : &:r1283_5, m1280_6 -# 1283| m1283_7(int) = Store[c] : &:r1283_4, r1283_6 -# 1283| m1283_8(unknown) = Chi : total:m1280_4, partial:m1283_7 -# 1283| r1283_9(bool) = Constant[1] : -# 1283| m1283_10(bool) = Store[c#init] : &:r1283_1, r1283_9 -# 1283| m1283_11(unknown) = Chi : total:m1283_8, partial:m1283_10 -#-----| Goto -> Block 2 - -# 1286| Block 2 -# 1286| m1286_1(int) = Phi : from 0:~m1280_3, from 1:m1283_7 -# 1286| m1286_2(unknown) = Phi : from 0:~m1280_4, from 1:~m1283_11 -# 1286| r1286_3(glval) = VariableAddress[#return] : -# 1286| r1286_4(glval) = VariableAddress[a] : -# 1286| r1286_5(int) = Load[a] : &:r1286_4, ~m1286_2 -# 1286| r1286_6(glval) = VariableAddress[b] : -# 1286| r1286_7(int) = Load[b] : &:r1286_6, ~m1286_2 -# 1286| r1286_8(int) = Add : r1286_5, r1286_7 -# 1286| r1286_9(glval) = VariableAddress[c] : -# 1286| r1286_10(int) = Load[c] : &:r1286_9, m1286_1 -# 1286| r1286_11(int) = Add : r1286_8, r1286_10 -# 1286| r1286_12(glval) = VariableAddress[d] : -# 1286| r1286_13(int) = Load[d] : &:r1286_12, ~m1286_2 -# 1286| r1286_14(int) = Add : r1286_11, r1286_13 -# 1286| m1286_15(int) = Store[#return] : &:r1286_3, r1286_14 -# 1280| r1280_7(glval) = VariableAddress[#return] : -# 1280| v1280_8(void) = ReturnValue : &:r1280_7, m1286_15 -# 1280| v1280_9(void) = AliasedUse : ~m1286_2 -# 1280| v1280_10(void) = ExitFunction : - -# 1281| int a -# 1281| Block 0 -# 1281| v1281_1(void) = EnterFunction : -# 1281| m1281_2(unknown) = AliasedDefinition : -# 1281| r1281_3(glval) = VariableAddress[a] : -# 1281| r1281_4(int) = Constant[0] : -# 1281| m1281_5(int) = Store[a] : &:r1281_3, r1281_4 -# 1281| m1281_6(unknown) = Chi : total:m1281_2, partial:m1281_5 -# 1281| v1281_7(void) = ReturnVoid : -# 1281| v1281_8(void) = AliasedUse : ~m1281_6 -# 1281| v1281_9(void) = ExitFunction : - -# 1282| int b +# 1282| int staticLocalInit(int) # 1282| Block 0 -# 1282| v1282_1(void) = EnterFunction : -# 1282| m1282_2(unknown) = AliasedDefinition : -# 1282| r1282_3(glval) = VariableAddress[b] : -# 1282| r1282_4(int) = Constant[4] : -# 1282| m1282_5(int) = Store[b] : &:r1282_3, r1282_4 -# 1282| m1282_6(unknown) = Chi : total:m1282_2, partial:m1282_5 -# 1282| v1282_7(void) = ReturnVoid : -# 1282| v1282_8(void) = AliasedUse : ~m1282_6 -# 1282| v1282_9(void) = ExitFunction : - -# 1289| void staticLocalWithConstructor(char const*) -# 1289| Block 0 -# 1289| v1289_1(void) = EnterFunction : -# 1289| m1289_2(unknown) = AliasedDefinition : -# 1289| m1289_3(unknown) = InitializeNonLocal : -# 1289| m1289_4(unknown) = Chi : total:m1289_2, partial:m1289_3 -# 1289| r1289_5(glval) = VariableAddress[dynamic] : -# 1289| m1289_6(char *) = InitializeParameter[dynamic] : &:r1289_5 -# 1289| r1289_7(char *) = Load[dynamic] : &:r1289_5, m1289_6 -# 1289| m1289_8(unknown) = InitializeIndirection[dynamic] : &:r1289_7 -# 1289| m1289_9(unknown) = Chi : total:m1289_4, partial:m1289_8 -# 1290| r1290_1(glval) = VariableAddress[a#init] : -# 1290| r1290_2(bool) = Load[a#init] : &:r1290_1, ~m1289_3 -# 1290| v1290_3(void) = ConditionalBranch : r1290_2 +# 1282| v1282_1(void) = EnterFunction : +# 1282| m1282_2(unknown) = AliasedDefinition : +# 1282| m1282_3(unknown) = InitializeNonLocal : +# 1282| m1282_4(unknown) = Chi : total:m1282_2, partial:m1282_3 +# 1282| r1282_5(glval) = VariableAddress[x] : +# 1282| m1282_6(int) = InitializeParameter[x] : &:r1282_5 +# 1285| r1285_1(glval) = VariableAddress[c#init] : +# 1285| r1285_2(bool) = Load[c#init] : &:r1285_1, ~m1282_3 +# 1285| v1285_3(void) = ConditionalBranch : r1285_2 #-----| False -> Block 1 #-----| True -> Block 2 -# 1290| Block 1 -# 1290| r1290_4(glval) = VariableAddress[a] : -#-----| r0_1(glval) = FunctionAddress[String] : -#-----| v0_2(void) = Call[String] : func:r0_1, this:r1290_4 -#-----| m0_3(unknown) = ^CallSideEffect : ~m1289_9 -#-----| m0_4(unknown) = Chi : total:m1289_9, partial:m0_3 -#-----| m0_5(String) = ^IndirectMayWriteSideEffect[-1] : &:r1290_4 -#-----| m0_6(unknown) = Chi : total:m0_4, partial:m0_5 -# 1290| r1290_5(bool) = Constant[1] : -# 1290| m1290_6(bool) = Store[a#init] : &:r1290_1, r1290_5 -# 1290| m1290_7(unknown) = Chi : total:m0_6, partial:m1290_6 +# 1285| Block 1 +# 1285| r1285_4(glval) = VariableAddress[c] : +# 1285| r1285_5(glval) = VariableAddress[x] : +# 1285| r1285_6(int) = Load[x] : &:r1285_5, m1282_6 +# 1285| m1285_7(int) = Store[c] : &:r1285_4, r1285_6 +# 1285| m1285_8(unknown) = Chi : total:m1282_4, partial:m1285_7 +# 1285| r1285_9(bool) = Constant[1] : +# 1285| m1285_10(bool) = Store[c#init] : &:r1285_1, r1285_9 +# 1285| m1285_11(unknown) = Chi : total:m1285_8, partial:m1285_10 #-----| Goto -> Block 2 -# 1291| Block 2 -# 1291| m1291_1(unknown) = Phi : from 0:~m1289_9, from 1:~m1290_7 -# 1291| r1291_2(glval) = VariableAddress[b#init] : -# 1291| r1291_3(bool) = Load[b#init] : &:r1291_2, ~m1291_1 -# 1291| v1291_4(void) = ConditionalBranch : r1291_3 +# 1288| Block 2 +# 1288| m1288_1(int) = Phi : from 0:~m1282_3, from 1:m1285_7 +# 1288| m1288_2(unknown) = Phi : from 0:~m1282_4, from 1:~m1285_11 +# 1288| r1288_3(glval) = VariableAddress[#return] : +# 1288| r1288_4(glval) = VariableAddress[a] : +# 1288| r1288_5(int) = Load[a] : &:r1288_4, ~m1288_2 +# 1288| r1288_6(glval) = VariableAddress[b] : +# 1288| r1288_7(int) = Load[b] : &:r1288_6, ~m1288_2 +# 1288| r1288_8(int) = Add : r1288_5, r1288_7 +# 1288| r1288_9(glval) = VariableAddress[c] : +# 1288| r1288_10(int) = Load[c] : &:r1288_9, m1288_1 +# 1288| r1288_11(int) = Add : r1288_8, r1288_10 +# 1288| r1288_12(glval) = VariableAddress[d] : +# 1288| r1288_13(int) = Load[d] : &:r1288_12, ~m1288_2 +# 1288| r1288_14(int) = Add : r1288_11, r1288_13 +# 1288| m1288_15(int) = Store[#return] : &:r1288_3, r1288_14 +# 1282| r1282_7(glval) = VariableAddress[#return] : +# 1282| v1282_8(void) = ReturnValue : &:r1282_7, m1288_15 +# 1282| v1282_9(void) = AliasedUse : ~m1288_2 +# 1282| v1282_10(void) = ExitFunction : + +# 1283| int a +# 1283| Block 0 +# 1283| v1283_1(void) = EnterFunction : +# 1283| m1283_2(unknown) = AliasedDefinition : +# 1283| r1283_3(glval) = VariableAddress[a] : +# 1283| r1283_4(int) = Constant[0] : +# 1283| m1283_5(int) = Store[a] : &:r1283_3, r1283_4 +# 1283| m1283_6(unknown) = Chi : total:m1283_2, partial:m1283_5 +# 1283| v1283_7(void) = ReturnVoid : +# 1283| v1283_8(void) = AliasedUse : ~m1283_6 +# 1283| v1283_9(void) = ExitFunction : + +# 1284| int b +# 1284| Block 0 +# 1284| v1284_1(void) = EnterFunction : +# 1284| m1284_2(unknown) = AliasedDefinition : +# 1284| r1284_3(glval) = VariableAddress[b] : +# 1284| r1284_4(int) = Constant[4] : +# 1284| m1284_5(int) = Store[b] : &:r1284_3, r1284_4 +# 1284| m1284_6(unknown) = Chi : total:m1284_2, partial:m1284_5 +# 1284| v1284_7(void) = ReturnVoid : +# 1284| v1284_8(void) = AliasedUse : ~m1284_6 +# 1284| v1284_9(void) = ExitFunction : + +# 1291| void staticLocalWithConstructor(char const*) +# 1291| Block 0 +# 1291| v1291_1(void) = EnterFunction : +# 1291| m1291_2(unknown) = AliasedDefinition : +# 1291| m1291_3(unknown) = InitializeNonLocal : +# 1291| m1291_4(unknown) = Chi : total:m1291_2, partial:m1291_3 +# 1291| r1291_5(glval) = VariableAddress[dynamic] : +# 1291| m1291_6(char *) = InitializeParameter[dynamic] : &:r1291_5 +# 1291| r1291_7(char *) = Load[dynamic] : &:r1291_5, m1291_6 +# 1291| m1291_8(unknown) = InitializeIndirection[dynamic] : &:r1291_7 +# 1291| m1291_9(unknown) = Chi : total:m1291_4, partial:m1291_8 +# 1292| r1292_1(glval) = VariableAddress[a#init] : +# 1292| r1292_2(bool) = Load[a#init] : &:r1292_1, ~m1291_3 +# 1292| v1292_3(void) = ConditionalBranch : r1292_2 +#-----| False -> Block 1 +#-----| True -> Block 2 + +# 1292| Block 1 +# 1292| r1292_4(glval) = VariableAddress[a] : +#-----| r0_1(glval) = FunctionAddress[String] : +#-----| v0_2(void) = Call[String] : func:r0_1, this:r1292_4 +#-----| m0_3(unknown) = ^CallSideEffect : ~m1291_9 +#-----| m0_4(unknown) = Chi : total:m1291_9, partial:m0_3 +#-----| m0_5(String) = ^IndirectMayWriteSideEffect[-1] : &:r1292_4 +#-----| m0_6(unknown) = Chi : total:m0_4, partial:m0_5 +# 1292| r1292_5(bool) = Constant[1] : +# 1292| m1292_6(bool) = Store[a#init] : &:r1292_1, r1292_5 +# 1292| m1292_7(unknown) = Chi : total:m0_6, partial:m1292_6 +#-----| Goto -> Block 2 + +# 1293| Block 2 +# 1293| m1293_1(unknown) = Phi : from 0:~m1291_9, from 1:~m1292_7 +# 1293| r1293_2(glval) = VariableAddress[b#init] : +# 1293| r1293_3(bool) = Load[b#init] : &:r1293_2, ~m1293_1 +# 1293| v1293_4(void) = ConditionalBranch : r1293_3 #-----| False -> Block 3 #-----| True -> Block 4 -# 1291| Block 3 -# 1291| r1291_5(glval) = VariableAddress[b] : -# 1291| r1291_6(glval) = FunctionAddress[String] : -# 1291| r1291_7(glval) = StringConstant["static"] : -# 1291| r1291_8(char *) = Convert : r1291_7 -# 1291| v1291_9(void) = Call[String] : func:r1291_6, this:r1291_5, 0:r1291_8 -# 1291| m1291_10(unknown) = ^CallSideEffect : ~m1291_1 -# 1291| m1291_11(unknown) = Chi : total:m1291_1, partial:m1291_10 -# 1291| v1291_12(void) = ^BufferReadSideEffect[0] : &:r1291_8, ~m1289_3 -# 1291| m1291_13(String) = ^IndirectMayWriteSideEffect[-1] : &:r1291_5 -# 1291| m1291_14(unknown) = Chi : total:m1291_11, partial:m1291_13 -# 1291| r1291_15(bool) = Constant[1] : -# 1291| m1291_16(bool) = Store[b#init] : &:r1291_2, r1291_15 -# 1291| m1291_17(unknown) = Chi : total:m1291_14, partial:m1291_16 +# 1293| Block 3 +# 1293| r1293_5(glval) = VariableAddress[b] : +# 1293| r1293_6(glval) = FunctionAddress[String] : +# 1293| r1293_7(glval) = StringConstant["static"] : +# 1293| r1293_8(char *) = Convert : r1293_7 +# 1293| v1293_9(void) = Call[String] : func:r1293_6, this:r1293_5, 0:r1293_8 +# 1293| m1293_10(unknown) = ^CallSideEffect : ~m1293_1 +# 1293| m1293_11(unknown) = Chi : total:m1293_1, partial:m1293_10 +# 1293| v1293_12(void) = ^BufferReadSideEffect[0] : &:r1293_8, ~m1291_3 +# 1293| m1293_13(String) = ^IndirectMayWriteSideEffect[-1] : &:r1293_5 +# 1293| m1293_14(unknown) = Chi : total:m1293_11, partial:m1293_13 +# 1293| r1293_15(bool) = Constant[1] : +# 1293| m1293_16(bool) = Store[b#init] : &:r1293_2, r1293_15 +# 1293| m1293_17(unknown) = Chi : total:m1293_14, partial:m1293_16 #-----| Goto -> Block 4 -# 1292| Block 4 -# 1292| m1292_1(unknown) = Phi : from 2:~m1291_1, from 3:~m1291_17 -# 1292| r1292_2(glval) = VariableAddress[c#init] : -# 1292| r1292_3(bool) = Load[c#init] : &:r1292_2, ~m1292_1 -# 1292| v1292_4(void) = ConditionalBranch : r1292_3 +# 1294| Block 4 +# 1294| m1294_1(unknown) = Phi : from 2:~m1293_1, from 3:~m1293_17 +# 1294| r1294_2(glval) = VariableAddress[c#init] : +# 1294| r1294_3(bool) = Load[c#init] : &:r1294_2, ~m1294_1 +# 1294| v1294_4(void) = ConditionalBranch : r1294_3 #-----| False -> Block 5 #-----| True -> Block 6 -# 1292| Block 5 -# 1292| r1292_5(glval) = VariableAddress[c] : -# 1292| r1292_6(glval) = FunctionAddress[String] : -# 1292| r1292_7(glval) = VariableAddress[dynamic] : -# 1292| r1292_8(char *) = Load[dynamic] : &:r1292_7, m1289_6 -# 1292| v1292_9(void) = Call[String] : func:r1292_6, this:r1292_5, 0:r1292_8 -# 1292| m1292_10(unknown) = ^CallSideEffect : ~m1292_1 -# 1292| m1292_11(unknown) = Chi : total:m1292_1, partial:m1292_10 -# 1292| v1292_12(void) = ^BufferReadSideEffect[0] : &:r1292_8, ~m1292_11 -# 1292| m1292_13(String) = ^IndirectMayWriteSideEffect[-1] : &:r1292_5 -# 1292| m1292_14(unknown) = Chi : total:m1292_11, partial:m1292_13 -# 1292| r1292_15(bool) = Constant[1] : -# 1292| m1292_16(bool) = Store[c#init] : &:r1292_2, r1292_15 -# 1292| m1292_17(unknown) = Chi : total:m1292_14, partial:m1292_16 +# 1294| Block 5 +# 1294| r1294_5(glval) = VariableAddress[c] : +# 1294| r1294_6(glval) = FunctionAddress[String] : +# 1294| r1294_7(glval) = VariableAddress[dynamic] : +# 1294| r1294_8(char *) = Load[dynamic] : &:r1294_7, m1291_6 +# 1294| v1294_9(void) = Call[String] : func:r1294_6, this:r1294_5, 0:r1294_8 +# 1294| m1294_10(unknown) = ^CallSideEffect : ~m1294_1 +# 1294| m1294_11(unknown) = Chi : total:m1294_1, partial:m1294_10 +# 1294| v1294_12(void) = ^BufferReadSideEffect[0] : &:r1294_8, ~m1294_11 +# 1294| m1294_13(String) = ^IndirectMayWriteSideEffect[-1] : &:r1294_5 +# 1294| m1294_14(unknown) = Chi : total:m1294_11, partial:m1294_13 +# 1294| r1294_15(bool) = Constant[1] : +# 1294| m1294_16(bool) = Store[c#init] : &:r1294_2, r1294_15 +# 1294| m1294_17(unknown) = Chi : total:m1294_14, partial:m1294_16 #-----| Goto -> Block 6 -# 1293| Block 6 -# 1293| m1293_1(unknown) = Phi : from 4:~m1292_1, from 5:~m1292_17 -# 1293| v1293_2(void) = NoOp : -# 1289| v1289_10(void) = ReturnIndirection[dynamic] : &:r1289_7, ~m1293_1 -# 1289| v1289_11(void) = ReturnVoid : -# 1289| v1289_12(void) = AliasedUse : ~m1293_1 -# 1289| v1289_13(void) = ExitFunction : +# 1295| Block 6 +# 1295| m1295_1(unknown) = Phi : from 4:~m1294_1, from 5:~m1294_17 +# 1295| v1295_2(void) = NoOp : +# 1291| v1291_10(void) = ReturnIndirection[dynamic] : &:r1291_7, ~m1295_1 +# 1291| v1291_11(void) = ReturnVoid : +# 1291| v1291_12(void) = AliasedUse : ~m1295_1 +# 1291| v1291_13(void) = ExitFunction : -# 1300| void test_strings(char*, char*) -# 1300| Block 0 -# 1300| v1300_1(void) = EnterFunction : -# 1300| m1300_2(unknown) = AliasedDefinition : -# 1300| m1300_3(unknown) = InitializeNonLocal : -# 1300| m1300_4(unknown) = Chi : total:m1300_2, partial:m1300_3 -# 1300| r1300_5(glval) = VariableAddress[s1] : -# 1300| m1300_6(char *) = InitializeParameter[s1] : &:r1300_5 -# 1300| r1300_7(char *) = Load[s1] : &:r1300_5, m1300_6 -# 1300| m1300_8(unknown) = InitializeIndirection[s1] : &:r1300_7 -# 1300| m1300_9(unknown) = Chi : total:m1300_4, partial:m1300_8 -# 1300| r1300_10(glval) = VariableAddress[s2] : -# 1300| m1300_11(char *) = InitializeParameter[s2] : &:r1300_10 -# 1300| r1300_12(char *) = Load[s2] : &:r1300_10, m1300_11 -# 1300| m1300_13(unknown) = InitializeIndirection[s2] : &:r1300_12 -# 1300| m1300_14(unknown) = Chi : total:m1300_9, partial:m1300_13 -# 1301| r1301_1(glval) = VariableAddress[buffer] : -# 1301| m1301_2(char[1024]) = Uninitialized[buffer] : &:r1301_1 -# 1301| m1301_3(unknown) = Chi : total:m1300_14, partial:m1301_2 -# 1301| r1301_4(int) = Constant[0] : -# 1301| r1301_5(glval) = PointerAdd[1] : r1301_1, r1301_4 -# 1301| r1301_6(char) = Constant[0] : -# 1301| m1301_7(char) = Store[?] : &:r1301_5, r1301_6 -# 1301| m1301_8(unknown) = Chi : total:m1301_3, partial:m1301_7 -# 1301| r1301_9(int) = Constant[1] : -# 1301| r1301_10(glval) = PointerAdd[1] : r1301_1, r1301_9 -# 1301| r1301_11(unknown[1023]) = Constant[0] : -# 1301| m1301_12(unknown[1023]) = Store[?] : &:r1301_10, r1301_11 -# 1301| m1301_13(unknown) = Chi : total:m1301_8, partial:m1301_12 -# 1303| r1303_1(glval) = FunctionAddress[strcpy] : -# 1303| r1303_2(glval) = VariableAddress[buffer] : -# 1303| r1303_3(char *) = Convert : r1303_2 -# 1303| r1303_4(glval) = VariableAddress[s1] : -# 1303| r1303_5(char *) = Load[s1] : &:r1303_4, m1300_6 -# 1303| r1303_6(char *) = Convert : r1303_5 -# 1303| r1303_7(char *) = Call[strcpy] : func:r1303_1, 0:r1303_3, 1:r1303_6 -# 1303| v1303_8(void) = ^BufferReadSideEffect[1] : &:r1303_6, ~m1300_8 -# 1303| m1303_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r1303_3 -# 1303| m1303_10(unknown) = Chi : total:m1301_13, partial:m1303_9 -# 1304| r1304_1(glval) = FunctionAddress[strcat] : -# 1304| r1304_2(glval) = VariableAddress[buffer] : -# 1304| r1304_3(char *) = Convert : r1304_2 -# 1304| r1304_4(glval) = VariableAddress[s2] : -# 1304| r1304_5(char *) = Load[s2] : &:r1304_4, m1300_11 -# 1304| r1304_6(char *) = Convert : r1304_5 -# 1304| r1304_7(char *) = Call[strcat] : func:r1304_1, 0:r1304_3, 1:r1304_6 -# 1304| v1304_8(void) = ^BufferReadSideEffect[0] : &:r1304_3, ~m1303_10 -# 1304| v1304_9(void) = ^BufferReadSideEffect[1] : &:r1304_6, ~m1300_13 -# 1304| m1304_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r1304_3 -# 1304| m1304_11(unknown) = Chi : total:m1303_10, partial:m1304_10 -# 1305| v1305_1(void) = NoOp : -# 1300| v1300_15(void) = ReturnIndirection[s1] : &:r1300_7, ~m1304_11 -# 1300| v1300_16(void) = ReturnIndirection[s2] : &:r1300_12, ~m1304_11 -# 1300| v1300_17(void) = ReturnVoid : -# 1300| v1300_18(void) = AliasedUse : ~m1300_14 -# 1300| v1300_19(void) = ExitFunction : +# 1302| void test_strings(char*, char*) +# 1302| Block 0 +# 1302| v1302_1(void) = EnterFunction : +# 1302| m1302_2(unknown) = AliasedDefinition : +# 1302| m1302_3(unknown) = InitializeNonLocal : +# 1302| m1302_4(unknown) = Chi : total:m1302_2, partial:m1302_3 +# 1302| r1302_5(glval) = VariableAddress[s1] : +# 1302| m1302_6(char *) = InitializeParameter[s1] : &:r1302_5 +# 1302| r1302_7(char *) = Load[s1] : &:r1302_5, m1302_6 +# 1302| m1302_8(unknown) = InitializeIndirection[s1] : &:r1302_7 +# 1302| m1302_9(unknown) = Chi : total:m1302_4, partial:m1302_8 +# 1302| r1302_10(glval) = VariableAddress[s2] : +# 1302| m1302_11(char *) = InitializeParameter[s2] : &:r1302_10 +# 1302| r1302_12(char *) = Load[s2] : &:r1302_10, m1302_11 +# 1302| m1302_13(unknown) = InitializeIndirection[s2] : &:r1302_12 +# 1302| m1302_14(unknown) = Chi : total:m1302_9, partial:m1302_13 +# 1303| r1303_1(glval) = VariableAddress[buffer] : +# 1303| m1303_2(char[1024]) = Uninitialized[buffer] : &:r1303_1 +# 1303| m1303_3(unknown) = Chi : total:m1302_14, partial:m1303_2 +# 1303| r1303_4(int) = Constant[0] : +# 1303| r1303_5(glval) = PointerAdd[1] : r1303_1, r1303_4 +# 1303| r1303_6(char) = Constant[0] : +# 1303| m1303_7(char) = Store[?] : &:r1303_5, r1303_6 +# 1303| m1303_8(unknown) = Chi : total:m1303_3, partial:m1303_7 +# 1303| r1303_9(int) = Constant[1] : +# 1303| r1303_10(glval) = PointerAdd[1] : r1303_1, r1303_9 +# 1303| r1303_11(unknown[1023]) = Constant[0] : +# 1303| m1303_12(unknown[1023]) = Store[?] : &:r1303_10, r1303_11 +# 1303| m1303_13(unknown) = Chi : total:m1303_8, partial:m1303_12 +# 1305| r1305_1(glval) = FunctionAddress[strcpy] : +# 1305| r1305_2(glval) = VariableAddress[buffer] : +# 1305| r1305_3(char *) = Convert : r1305_2 +# 1305| r1305_4(glval) = VariableAddress[s1] : +# 1305| r1305_5(char *) = Load[s1] : &:r1305_4, m1302_6 +# 1305| r1305_6(char *) = Convert : r1305_5 +# 1305| r1305_7(char *) = Call[strcpy] : func:r1305_1, 0:r1305_3, 1:r1305_6 +# 1305| v1305_8(void) = ^BufferReadSideEffect[1] : &:r1305_6, ~m1302_8 +# 1305| m1305_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r1305_3 +# 1305| m1305_10(unknown) = Chi : total:m1303_13, partial:m1305_9 +# 1306| r1306_1(glval) = FunctionAddress[strcat] : +# 1306| r1306_2(glval) = VariableAddress[buffer] : +# 1306| r1306_3(char *) = Convert : r1306_2 +# 1306| r1306_4(glval) = VariableAddress[s2] : +# 1306| r1306_5(char *) = Load[s2] : &:r1306_4, m1302_11 +# 1306| r1306_6(char *) = Convert : r1306_5 +# 1306| r1306_7(char *) = Call[strcat] : func:r1306_1, 0:r1306_3, 1:r1306_6 +# 1306| v1306_8(void) = ^BufferReadSideEffect[0] : &:r1306_3, ~m1305_10 +# 1306| v1306_9(void) = ^BufferReadSideEffect[1] : &:r1306_6, ~m1302_13 +# 1306| m1306_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r1306_3 +# 1306| m1306_11(unknown) = Chi : total:m1305_10, partial:m1306_10 +# 1307| v1307_1(void) = NoOp : +# 1302| v1302_15(void) = ReturnIndirection[s1] : &:r1302_7, ~m1306_11 +# 1302| v1302_16(void) = ReturnIndirection[s2] : &:r1302_12, ~m1306_11 +# 1302| v1302_17(void) = ReturnVoid : +# 1302| v1302_18(void) = AliasedUse : ~m1302_14 +# 1302| v1302_19(void) = ExitFunction : -# 1310| void A::static_member(A*, int) -# 1310| Block 0 -# 1310| v1310_1(void) = EnterFunction : -# 1310| m1310_2(unknown) = AliasedDefinition : -# 1310| m1310_3(unknown) = InitializeNonLocal : -# 1310| m1310_4(unknown) = Chi : total:m1310_2, partial:m1310_3 -# 1310| r1310_5(glval) = VariableAddress[a] : -# 1310| m1310_6(A *) = InitializeParameter[a] : &:r1310_5 -# 1310| r1310_7(A *) = Load[a] : &:r1310_5, m1310_6 -# 1310| m1310_8(unknown) = InitializeIndirection[a] : &:r1310_7 -# 1310| r1310_9(glval) = VariableAddress[x] : -# 1310| m1310_10(int) = InitializeParameter[x] : &:r1310_9 -# 1311| r1311_1(glval) = VariableAddress[x] : -# 1311| r1311_2(int) = Load[x] : &:r1311_1, m1310_10 -# 1311| r1311_3(glval) = VariableAddress[a] : -# 1311| r1311_4(A *) = Load[a] : &:r1311_3, m1310_6 -# 1311| r1311_5(glval) = FieldAddress[member] : r1311_4 -# 1311| m1311_6(int) = Store[?] : &:r1311_5, r1311_2 -# 1311| m1311_7(unknown) = Chi : total:m1310_8, partial:m1311_6 -# 1312| v1312_1(void) = NoOp : -# 1310| v1310_11(void) = ReturnIndirection[a] : &:r1310_7, m1311_7 -# 1310| v1310_12(void) = ReturnVoid : -# 1310| v1310_13(void) = AliasedUse : m1310_3 -# 1310| v1310_14(void) = ExitFunction : +# 1312| void A::static_member(A*, int) +# 1312| Block 0 +# 1312| v1312_1(void) = EnterFunction : +# 1312| m1312_2(unknown) = AliasedDefinition : +# 1312| m1312_3(unknown) = InitializeNonLocal : +# 1312| m1312_4(unknown) = Chi : total:m1312_2, partial:m1312_3 +# 1312| r1312_5(glval) = VariableAddress[a] : +# 1312| m1312_6(A *) = InitializeParameter[a] : &:r1312_5 +# 1312| r1312_7(A *) = Load[a] : &:r1312_5, m1312_6 +# 1312| m1312_8(unknown) = InitializeIndirection[a] : &:r1312_7 +# 1312| r1312_9(glval) = VariableAddress[x] : +# 1312| m1312_10(int) = InitializeParameter[x] : &:r1312_9 +# 1313| r1313_1(glval) = VariableAddress[x] : +# 1313| r1313_2(int) = Load[x] : &:r1313_1, m1312_10 +# 1313| r1313_3(glval) = VariableAddress[a] : +# 1313| r1313_4(A *) = Load[a] : &:r1313_3, m1312_6 +# 1313| r1313_5(glval) = FieldAddress[member] : r1313_4 +# 1313| m1313_6(int) = Store[?] : &:r1313_5, r1313_2 +# 1313| m1313_7(unknown) = Chi : total:m1312_8, partial:m1313_6 +# 1314| v1314_1(void) = NoOp : +# 1312| v1312_11(void) = ReturnIndirection[a] : &:r1312_7, m1313_7 +# 1312| v1312_12(void) = ReturnVoid : +# 1312| v1312_13(void) = AliasedUse : m1312_3 +# 1312| v1312_14(void) = ExitFunction : -# 1319| void test_static_member_functions(int, A*) -# 1319| Block 0 -# 1319| v1319_1(void) = EnterFunction : -# 1319| m1319_2(unknown) = AliasedDefinition : -# 1319| m1319_3(unknown) = InitializeNonLocal : -# 1319| m1319_4(unknown) = Chi : total:m1319_2, partial:m1319_3 -# 1319| r1319_5(glval) = VariableAddress[int_arg] : -# 1319| m1319_6(int) = InitializeParameter[int_arg] : &:r1319_5 -# 1319| r1319_7(glval) = VariableAddress[a_arg] : -# 1319| m1319_8(A *) = InitializeParameter[a_arg] : &:r1319_7 -# 1319| r1319_9(A *) = Load[a_arg] : &:r1319_7, m1319_8 -# 1319| m1319_10(unknown) = InitializeIndirection[a_arg] : &:r1319_9 -# 1320| r1320_1(glval) = VariableAddress[c] : -# 1320| m1320_2(C) = Uninitialized[c] : &:r1320_1 -# 1320| m1320_3(unknown) = Chi : total:m1319_4, partial:m1320_2 -# 1320| r1320_4(glval) = FunctionAddress[C] : -# 1320| v1320_5(void) = Call[C] : func:r1320_4, this:r1320_1 -# 1320| m1320_6(unknown) = ^CallSideEffect : ~m1320_3 -# 1320| m1320_7(unknown) = Chi : total:m1320_3, partial:m1320_6 -# 1320| m1320_8(C) = ^IndirectMayWriteSideEffect[-1] : &:r1320_1 -# 1320| m1320_9(unknown) = Chi : total:m1320_7, partial:m1320_8 -# 1321| r1321_1(glval) = VariableAddress[c] : -# 1321| r1321_2(glval) = FunctionAddress[StaticMemberFunction] : -# 1321| r1321_3(int) = Constant[10] : -# 1321| r1321_4(int) = Call[StaticMemberFunction] : func:r1321_2, 0:r1321_3 -# 1321| m1321_5(unknown) = ^CallSideEffect : ~m1320_9 -# 1321| m1321_6(unknown) = Chi : total:m1320_9, partial:m1321_5 -# 1322| r1322_1(glval) = FunctionAddress[StaticMemberFunction] : -# 1322| r1322_2(int) = Constant[10] : -# 1322| r1322_3(int) = Call[StaticMemberFunction] : func:r1322_1, 0:r1322_2 -# 1322| m1322_4(unknown) = ^CallSideEffect : ~m1321_6 -# 1322| m1322_5(unknown) = Chi : total:m1321_6, partial:m1322_4 -# 1324| r1324_1(glval) = VariableAddress[a] : -# 1324| m1324_2(A) = Uninitialized[a] : &:r1324_1 -# 1325| r1325_1(glval) = VariableAddress[a] : -# 1325| r1325_2(glval) = FunctionAddress[static_member] : -# 1325| r1325_3(glval) = VariableAddress[a] : -# 1325| r1325_4(A *) = CopyValue : r1325_3 -# 1325| r1325_5(glval) = VariableAddress[int_arg] : -# 1325| r1325_6(int) = Load[int_arg] : &:r1325_5, m1319_6 -# 1325| v1325_7(void) = Call[static_member] : func:r1325_2, 0:r1325_4, 1:r1325_6 -# 1325| m1325_8(unknown) = ^CallSideEffect : ~m1322_5 -# 1325| m1325_9(unknown) = Chi : total:m1322_5, partial:m1325_8 -# 1325| v1325_10(void) = ^BufferReadSideEffect[0] : &:r1325_4, ~m1324_2 -# 1325| m1325_11(unknown) = ^BufferMayWriteSideEffect[0] : &:r1325_4 -# 1325| m1325_12(A) = Chi : total:m1324_2, partial:m1325_11 -# 1326| r1326_1(glval) = FunctionAddress[static_member] : -# 1326| r1326_2(glval) = VariableAddress[a] : -# 1326| r1326_3(A *) = CopyValue : r1326_2 -# 1326| r1326_4(glval) = VariableAddress[int_arg] : -# 1326| r1326_5(int) = Load[int_arg] : &:r1326_4, m1319_6 -# 1326| v1326_6(void) = Call[static_member] : func:r1326_1, 0:r1326_3, 1:r1326_5 -# 1326| m1326_7(unknown) = ^CallSideEffect : ~m1325_9 -# 1326| m1326_8(unknown) = Chi : total:m1325_9, partial:m1326_7 -# 1326| v1326_9(void) = ^BufferReadSideEffect[0] : &:r1326_3, ~m1325_12 -# 1326| m1326_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r1326_3 -# 1326| m1326_11(A) = Chi : total:m1325_12, partial:m1326_10 -# 1328| r1328_1(glval) = VariableAddress[a] : -# 1328| r1328_2(A *) = CopyValue : r1328_1 -# 1328| r1328_3(glval) = FunctionAddress[static_member] : -# 1328| r1328_4(glval) = VariableAddress[a_arg] : -# 1328| r1328_5(A *) = Load[a_arg] : &:r1328_4, m1319_8 -# 1328| r1328_6(glval) = VariableAddress[int_arg] : -# 1328| r1328_7(int) = Load[int_arg] : &:r1328_6, m1319_6 -# 1328| r1328_8(int) = Constant[2] : -# 1328| r1328_9(int) = Add : r1328_7, r1328_8 -# 1328| v1328_10(void) = Call[static_member] : func:r1328_3, 0:r1328_5, 1:r1328_9 -# 1328| m1328_11(unknown) = ^CallSideEffect : ~m1326_8 -# 1328| m1328_12(unknown) = Chi : total:m1326_8, partial:m1328_11 -# 1328| v1328_13(void) = ^BufferReadSideEffect[0] : &:r1328_5, ~m1319_10 -# 1328| m1328_14(unknown) = ^BufferMayWriteSideEffect[0] : &:r1328_5 -# 1328| m1328_15(unknown) = Chi : total:m1319_10, partial:m1328_14 -# 1329| r1329_1(glval) = VariableAddress[a_arg] : -# 1329| r1329_2(A *) = Load[a_arg] : &:r1329_1, m1319_8 -# 1329| r1329_3(glval) = CopyValue : r1329_2 -# 1329| r1329_4(glval) = FunctionAddress[static_member] : -# 1329| r1329_5(glval) = VariableAddress[a] : -# 1329| r1329_6(A *) = CopyValue : r1329_5 -# 1329| r1329_7(int) = Constant[99] : -# 1329| v1329_8(void) = Call[static_member] : func:r1329_4, 0:r1329_6, 1:r1329_7 -# 1329| m1329_9(unknown) = ^CallSideEffect : ~m1328_12 -# 1329| m1329_10(unknown) = Chi : total:m1328_12, partial:m1329_9 -# 1329| v1329_11(void) = ^BufferReadSideEffect[0] : &:r1329_6, ~m1326_11 -# 1329| m1329_12(unknown) = ^BufferMayWriteSideEffect[0] : &:r1329_6 -# 1329| m1329_13(A) = Chi : total:m1326_11, partial:m1329_12 -# 1330| r1330_1(glval) = VariableAddress[a_arg] : -# 1330| r1330_2(A *) = Load[a_arg] : &:r1330_1, m1319_8 +# 1321| void test_static_member_functions(int, A*) +# 1321| Block 0 +# 1321| v1321_1(void) = EnterFunction : +# 1321| m1321_2(unknown) = AliasedDefinition : +# 1321| m1321_3(unknown) = InitializeNonLocal : +# 1321| m1321_4(unknown) = Chi : total:m1321_2, partial:m1321_3 +# 1321| r1321_5(glval) = VariableAddress[int_arg] : +# 1321| m1321_6(int) = InitializeParameter[int_arg] : &:r1321_5 +# 1321| r1321_7(glval) = VariableAddress[a_arg] : +# 1321| m1321_8(A *) = InitializeParameter[a_arg] : &:r1321_7 +# 1321| r1321_9(A *) = Load[a_arg] : &:r1321_7, m1321_8 +# 1321| m1321_10(unknown) = InitializeIndirection[a_arg] : &:r1321_9 +# 1322| r1322_1(glval) = VariableAddress[c] : +# 1322| m1322_2(C) = Uninitialized[c] : &:r1322_1 +# 1322| m1322_3(unknown) = Chi : total:m1321_4, partial:m1322_2 +# 1322| r1322_4(glval) = FunctionAddress[C] : +# 1322| v1322_5(void) = Call[C] : func:r1322_4, this:r1322_1 +# 1322| m1322_6(unknown) = ^CallSideEffect : ~m1322_3 +# 1322| m1322_7(unknown) = Chi : total:m1322_3, partial:m1322_6 +# 1322| m1322_8(C) = ^IndirectMayWriteSideEffect[-1] : &:r1322_1 +# 1322| m1322_9(unknown) = Chi : total:m1322_7, partial:m1322_8 +# 1323| r1323_1(glval) = VariableAddress[c] : +# 1323| r1323_2(glval) = FunctionAddress[StaticMemberFunction] : +# 1323| r1323_3(int) = Constant[10] : +# 1323| r1323_4(int) = Call[StaticMemberFunction] : func:r1323_2, 0:r1323_3 +# 1323| m1323_5(unknown) = ^CallSideEffect : ~m1322_9 +# 1323| m1323_6(unknown) = Chi : total:m1322_9, partial:m1323_5 +# 1324| r1324_1(glval) = FunctionAddress[StaticMemberFunction] : +# 1324| r1324_2(int) = Constant[10] : +# 1324| r1324_3(int) = Call[StaticMemberFunction] : func:r1324_1, 0:r1324_2 +# 1324| m1324_4(unknown) = ^CallSideEffect : ~m1323_6 +# 1324| m1324_5(unknown) = Chi : total:m1323_6, partial:m1324_4 +# 1326| r1326_1(glval) = VariableAddress[a] : +# 1326| m1326_2(A) = Uninitialized[a] : &:r1326_1 +# 1327| r1327_1(glval) = VariableAddress[a] : +# 1327| r1327_2(glval) = FunctionAddress[static_member] : +# 1327| r1327_3(glval) = VariableAddress[a] : +# 1327| r1327_4(A *) = CopyValue : r1327_3 +# 1327| r1327_5(glval) = VariableAddress[int_arg] : +# 1327| r1327_6(int) = Load[int_arg] : &:r1327_5, m1321_6 +# 1327| v1327_7(void) = Call[static_member] : func:r1327_2, 0:r1327_4, 1:r1327_6 +# 1327| m1327_8(unknown) = ^CallSideEffect : ~m1324_5 +# 1327| m1327_9(unknown) = Chi : total:m1324_5, partial:m1327_8 +# 1327| v1327_10(void) = ^BufferReadSideEffect[0] : &:r1327_4, ~m1326_2 +# 1327| m1327_11(unknown) = ^BufferMayWriteSideEffect[0] : &:r1327_4 +# 1327| m1327_12(A) = Chi : total:m1326_2, partial:m1327_11 +# 1328| r1328_1(glval) = FunctionAddress[static_member] : +# 1328| r1328_2(glval) = VariableAddress[a] : +# 1328| r1328_3(A *) = CopyValue : r1328_2 +# 1328| r1328_4(glval) = VariableAddress[int_arg] : +# 1328| r1328_5(int) = Load[int_arg] : &:r1328_4, m1321_6 +# 1328| v1328_6(void) = Call[static_member] : func:r1328_1, 0:r1328_3, 1:r1328_5 +# 1328| m1328_7(unknown) = ^CallSideEffect : ~m1327_9 +# 1328| m1328_8(unknown) = Chi : total:m1327_9, partial:m1328_7 +# 1328| v1328_9(void) = ^BufferReadSideEffect[0] : &:r1328_3, ~m1327_12 +# 1328| m1328_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r1328_3 +# 1328| m1328_11(A) = Chi : total:m1327_12, partial:m1328_10 +# 1330| r1330_1(glval) = VariableAddress[a] : +# 1330| r1330_2(A *) = CopyValue : r1330_1 # 1330| r1330_3(glval) = FunctionAddress[static_member] : # 1330| r1330_4(glval) = VariableAddress[a_arg] : -# 1330| r1330_5(A *) = Load[a_arg] : &:r1330_4, m1319_8 -# 1330| r1330_6(int) = Constant[-1] : -# 1330| v1330_7(void) = Call[static_member] : func:r1330_3, 0:r1330_5, 1:r1330_6 -# 1330| m1330_8(unknown) = ^CallSideEffect : ~m1329_10 -# 1330| m1330_9(unknown) = Chi : total:m1329_10, partial:m1330_8 -# 1330| v1330_10(void) = ^BufferReadSideEffect[0] : &:r1330_5, ~m1328_15 -# 1330| m1330_11(unknown) = ^BufferMayWriteSideEffect[0] : &:r1330_5 -# 1330| m1330_12(unknown) = Chi : total:m1328_15, partial:m1330_11 -# 1332| r1332_1(glval) = VariableAddress[a] : -# 1332| r1332_2(glval) = FunctionAddress[static_member_without_def] : -# 1332| v1332_3(void) = Call[static_member_without_def] : func:r1332_2 -# 1332| m1332_4(unknown) = ^CallSideEffect : ~m1330_9 -# 1332| m1332_5(unknown) = Chi : total:m1330_9, partial:m1332_4 -# 1333| r1333_1(glval) = FunctionAddress[static_member_without_def] : -# 1333| v1333_2(void) = Call[static_member_without_def] : func:r1333_1 -# 1333| m1333_3(unknown) = ^CallSideEffect : ~m1332_5 -# 1333| m1333_4(unknown) = Chi : total:m1332_5, partial:m1333_3 -# 1335| r1335_1(glval) = FunctionAddress[getAnInstanceOfA] : -# 1335| r1335_2(A *) = Call[getAnInstanceOfA] : func:r1335_1 -# 1335| m1335_3(unknown) = ^CallSideEffect : ~m1333_4 -# 1335| m1335_4(unknown) = Chi : total:m1333_4, partial:m1335_3 -# 1335| r1335_5(glval) = FunctionAddress[static_member_without_def] : -# 1335| v1335_6(void) = Call[static_member_without_def] : func:r1335_5 -# 1335| m1335_7(unknown) = ^CallSideEffect : ~m1335_4 -# 1335| m1335_8(unknown) = Chi : total:m1335_4, partial:m1335_7 -# 1336| v1336_1(void) = NoOp : -# 1336| r1336_2(glval) = VariableAddress[c] : -# 1336| r1336_3(glval) = FunctionAddress[~C] : -# 1336| v1336_4(void) = Call[~C] : func:r1336_3, this:r1336_2 -# 1336| m1336_5(unknown) = ^CallSideEffect : ~m1335_8 -# 1336| m1336_6(unknown) = Chi : total:m1335_8, partial:m1336_5 -# 1336| v1336_7(void) = ^IndirectReadSideEffect[-1] : &:r1336_2, ~m1336_6 -# 1336| m1336_8(C) = ^IndirectMayWriteSideEffect[-1] : &:r1336_2 -# 1336| m1336_9(unknown) = Chi : total:m1336_6, partial:m1336_8 -# 1319| v1319_11(void) = ReturnIndirection[a_arg] : &:r1319_9, m1330_12 -# 1319| v1319_12(void) = ReturnVoid : -# 1319| v1319_13(void) = AliasedUse : ~m1336_6 -# 1319| v1319_14(void) = ExitFunction : +# 1330| r1330_5(A *) = Load[a_arg] : &:r1330_4, m1321_8 +# 1330| r1330_6(glval) = VariableAddress[int_arg] : +# 1330| r1330_7(int) = Load[int_arg] : &:r1330_6, m1321_6 +# 1330| r1330_8(int) = Constant[2] : +# 1330| r1330_9(int) = Add : r1330_7, r1330_8 +# 1330| v1330_10(void) = Call[static_member] : func:r1330_3, 0:r1330_5, 1:r1330_9 +# 1330| m1330_11(unknown) = ^CallSideEffect : ~m1328_8 +# 1330| m1330_12(unknown) = Chi : total:m1328_8, partial:m1330_11 +# 1330| v1330_13(void) = ^BufferReadSideEffect[0] : &:r1330_5, ~m1321_10 +# 1330| m1330_14(unknown) = ^BufferMayWriteSideEffect[0] : &:r1330_5 +# 1330| m1330_15(unknown) = Chi : total:m1321_10, partial:m1330_14 +# 1331| r1331_1(glval) = VariableAddress[a_arg] : +# 1331| r1331_2(A *) = Load[a_arg] : &:r1331_1, m1321_8 +# 1331| r1331_3(glval) = CopyValue : r1331_2 +# 1331| r1331_4(glval) = FunctionAddress[static_member] : +# 1331| r1331_5(glval) = VariableAddress[a] : +# 1331| r1331_6(A *) = CopyValue : r1331_5 +# 1331| r1331_7(int) = Constant[99] : +# 1331| v1331_8(void) = Call[static_member] : func:r1331_4, 0:r1331_6, 1:r1331_7 +# 1331| m1331_9(unknown) = ^CallSideEffect : ~m1330_12 +# 1331| m1331_10(unknown) = Chi : total:m1330_12, partial:m1331_9 +# 1331| v1331_11(void) = ^BufferReadSideEffect[0] : &:r1331_6, ~m1328_11 +# 1331| m1331_12(unknown) = ^BufferMayWriteSideEffect[0] : &:r1331_6 +# 1331| m1331_13(A) = Chi : total:m1328_11, partial:m1331_12 +# 1332| r1332_1(glval) = VariableAddress[a_arg] : +# 1332| r1332_2(A *) = Load[a_arg] : &:r1332_1, m1321_8 +# 1332| r1332_3(glval) = FunctionAddress[static_member] : +# 1332| r1332_4(glval) = VariableAddress[a_arg] : +# 1332| r1332_5(A *) = Load[a_arg] : &:r1332_4, m1321_8 +# 1332| r1332_6(int) = Constant[-1] : +# 1332| v1332_7(void) = Call[static_member] : func:r1332_3, 0:r1332_5, 1:r1332_6 +# 1332| m1332_8(unknown) = ^CallSideEffect : ~m1331_10 +# 1332| m1332_9(unknown) = Chi : total:m1331_10, partial:m1332_8 +# 1332| v1332_10(void) = ^BufferReadSideEffect[0] : &:r1332_5, ~m1330_15 +# 1332| m1332_11(unknown) = ^BufferMayWriteSideEffect[0] : &:r1332_5 +# 1332| m1332_12(unknown) = Chi : total:m1330_15, partial:m1332_11 +# 1334| r1334_1(glval) = VariableAddress[a] : +# 1334| r1334_2(glval) = FunctionAddress[static_member_without_def] : +# 1334| v1334_3(void) = Call[static_member_without_def] : func:r1334_2 +# 1334| m1334_4(unknown) = ^CallSideEffect : ~m1332_9 +# 1334| m1334_5(unknown) = Chi : total:m1332_9, partial:m1334_4 +# 1335| r1335_1(glval) = FunctionAddress[static_member_without_def] : +# 1335| v1335_2(void) = Call[static_member_without_def] : func:r1335_1 +# 1335| m1335_3(unknown) = ^CallSideEffect : ~m1334_5 +# 1335| m1335_4(unknown) = Chi : total:m1334_5, partial:m1335_3 +# 1337| r1337_1(glval) = FunctionAddress[getAnInstanceOfA] : +# 1337| r1337_2(A *) = Call[getAnInstanceOfA] : func:r1337_1 +# 1337| m1337_3(unknown) = ^CallSideEffect : ~m1335_4 +# 1337| m1337_4(unknown) = Chi : total:m1335_4, partial:m1337_3 +# 1337| r1337_5(glval) = FunctionAddress[static_member_without_def] : +# 1337| v1337_6(void) = Call[static_member_without_def] : func:r1337_5 +# 1337| m1337_7(unknown) = ^CallSideEffect : ~m1337_4 +# 1337| m1337_8(unknown) = Chi : total:m1337_4, partial:m1337_7 +# 1338| v1338_1(void) = NoOp : +# 1338| r1338_2(glval) = VariableAddress[c] : +# 1338| r1338_3(glval) = FunctionAddress[~C] : +# 1338| v1338_4(void) = Call[~C] : func:r1338_3, this:r1338_2 +# 1338| m1338_5(unknown) = ^CallSideEffect : ~m1337_8 +# 1338| m1338_6(unknown) = Chi : total:m1337_8, partial:m1338_5 +# 1338| v1338_7(void) = ^IndirectReadSideEffect[-1] : &:r1338_2, ~m1338_6 +# 1338| m1338_8(C) = ^IndirectMayWriteSideEffect[-1] : &:r1338_2 +# 1338| m1338_9(unknown) = Chi : total:m1338_6, partial:m1338_8 +# 1321| v1321_11(void) = ReturnIndirection[a_arg] : &:r1321_9, m1332_12 +# 1321| v1321_12(void) = ReturnVoid : +# 1321| v1321_13(void) = AliasedUse : ~m1338_6 +# 1321| v1321_14(void) = ExitFunction : -# 1338| int missingReturnValue(bool, int) -# 1338| Block 0 -# 1338| v1338_1(void) = EnterFunction : -# 1338| m1338_2(unknown) = AliasedDefinition : -# 1338| m1338_3(unknown) = InitializeNonLocal : -# 1338| m1338_4(unknown) = Chi : total:m1338_2, partial:m1338_3 -# 1338| r1338_5(glval) = VariableAddress[b] : -# 1338| m1338_6(bool) = InitializeParameter[b] : &:r1338_5 -# 1338| r1338_7(glval) = VariableAddress[x] : -# 1338| m1338_8(int) = InitializeParameter[x] : &:r1338_7 -# 1339| r1339_1(glval) = VariableAddress[b] : -# 1339| r1339_2(bool) = Load[b] : &:r1339_1, m1338_6 -# 1339| v1339_3(void) = ConditionalBranch : r1339_2 +# 1340| int missingReturnValue(bool, int) +# 1340| Block 0 +# 1340| v1340_1(void) = EnterFunction : +# 1340| m1340_2(unknown) = AliasedDefinition : +# 1340| m1340_3(unknown) = InitializeNonLocal : +# 1340| m1340_4(unknown) = Chi : total:m1340_2, partial:m1340_3 +# 1340| r1340_5(glval) = VariableAddress[b] : +# 1340| m1340_6(bool) = InitializeParameter[b] : &:r1340_5 +# 1340| r1340_7(glval) = VariableAddress[x] : +# 1340| m1340_8(int) = InitializeParameter[x] : &:r1340_7 +# 1341| r1341_1(glval) = VariableAddress[b] : +# 1341| r1341_2(bool) = Load[b] : &:r1341_1, m1340_6 +# 1341| v1341_3(void) = ConditionalBranch : r1341_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 1338| Block 1 -# 1338| m1338_9(int) = Phi : from 2:m1340_4, from 3:m1342_2 -# 1338| r1338_10(glval) = VariableAddress[#return] : -# 1338| v1338_11(void) = ReturnValue : &:r1338_10, m1338_9 -# 1338| v1338_12(void) = AliasedUse : m1338_3 -# 1338| v1338_13(void) = ExitFunction : +# 1340| Block 1 +# 1340| m1340_9(int) = Phi : from 2:m1342_4, from 3:m1344_2 +# 1340| r1340_10(glval) = VariableAddress[#return] : +# 1340| v1340_11(void) = ReturnValue : &:r1340_10, m1340_9 +# 1340| v1340_12(void) = AliasedUse : m1340_3 +# 1340| v1340_13(void) = ExitFunction : -# 1340| Block 2 -# 1340| r1340_1(glval) = VariableAddress[#return] : -# 1340| r1340_2(glval) = VariableAddress[x] : -# 1340| r1340_3(int) = Load[x] : &:r1340_2, m1338_8 -# 1340| m1340_4(int) = Store[#return] : &:r1340_1, r1340_3 -#-----| Goto -> Block 1 - -# 1342| Block 3 +# 1342| Block 2 # 1342| r1342_1(glval) = VariableAddress[#return] : -# 1342| m1342_2(int) = Uninitialized[#return] : &:r1342_1 +# 1342| r1342_2(glval) = VariableAddress[x] : +# 1342| r1342_3(int) = Load[x] : &:r1342_2, m1340_8 +# 1342| m1342_4(int) = Store[#return] : &:r1342_1, r1342_3 #-----| Goto -> Block 1 -# 1344| void returnVoid(int, int) -# 1344| Block 0 -# 1344| v1344_1(void) = EnterFunction : -# 1344| m1344_2(unknown) = AliasedDefinition : -# 1344| m1344_3(unknown) = InitializeNonLocal : -# 1344| m1344_4(unknown) = Chi : total:m1344_2, partial:m1344_3 -# 1344| r1344_5(glval) = VariableAddress[x] : -# 1344| m1344_6(int) = InitializeParameter[x] : &:r1344_5 -# 1344| r1344_7(glval) = VariableAddress[y] : -# 1344| m1344_8(int) = InitializeParameter[y] : &:r1344_7 -# 1345| r1345_1(glval) = FunctionAddress[IntegerOps] : -# 1345| r1345_2(glval) = VariableAddress[x] : -# 1345| r1345_3(int) = Load[x] : &:r1345_2, m1344_6 -# 1345| r1345_4(glval) = VariableAddress[y] : -# 1345| r1345_5(int) = Load[y] : &:r1345_4, m1344_8 -# 1345| v1345_6(void) = Call[IntegerOps] : func:r1345_1, 0:r1345_3, 1:r1345_5 -# 1345| m1345_7(unknown) = ^CallSideEffect : ~m1344_4 -# 1345| m1345_8(unknown) = Chi : total:m1344_4, partial:m1345_7 -# 1345| v1345_9(void) = NoOp : -# 1344| v1344_9(void) = ReturnVoid : -# 1344| v1344_10(void) = AliasedUse : ~m1345_8 -# 1344| v1344_11(void) = ExitFunction : +# 1344| Block 3 +# 1344| r1344_1(glval) = VariableAddress[#return] : +# 1344| m1344_2(int) = Uninitialized[#return] : &:r1344_1 +#-----| Goto -> Block 1 -# 1348| void gccBinaryConditional(bool, int, long) -# 1348| Block 0 -# 1348| v1348_1(void) = EnterFunction : -# 1348| m1348_2(unknown) = AliasedDefinition : -# 1348| m1348_3(unknown) = InitializeNonLocal : -# 1348| m1348_4(unknown) = Chi : total:m1348_2, partial:m1348_3 -# 1348| r1348_5(glval) = VariableAddress[b] : -# 1348| m1348_6(bool) = InitializeParameter[b] : &:r1348_5 -# 1348| r1348_7(glval) = VariableAddress[x] : -# 1348| m1348_8(int) = InitializeParameter[x] : &:r1348_7 -# 1348| r1348_9(glval) = VariableAddress[y] : -# 1348| m1348_10(long) = InitializeParameter[y] : &:r1348_9 -# 1349| r1349_1(glval) = VariableAddress[z] : -# 1349| r1349_2(glval) = VariableAddress[x] : -# 1349| r1349_3(int) = Load[x] : &:r1349_2, m1348_8 -# 1349| m1349_4(int) = Store[z] : &:r1349_1, r1349_3 -# 1350| r1350_1(glval) = VariableAddress[b] : -# 1350| r1350_2(bool) = Load[b] : &:r1350_1, m1348_6 -# 1350| v1350_3(void) = ConditionalBranch : r1350_2 +# 1346| void returnVoid(int, int) +# 1346| Block 0 +# 1346| v1346_1(void) = EnterFunction : +# 1346| m1346_2(unknown) = AliasedDefinition : +# 1346| m1346_3(unknown) = InitializeNonLocal : +# 1346| m1346_4(unknown) = Chi : total:m1346_2, partial:m1346_3 +# 1346| r1346_5(glval) = VariableAddress[x] : +# 1346| m1346_6(int) = InitializeParameter[x] : &:r1346_5 +# 1346| r1346_7(glval) = VariableAddress[y] : +# 1346| m1346_8(int) = InitializeParameter[y] : &:r1346_7 +# 1347| r1347_1(glval) = FunctionAddress[IntegerOps] : +# 1347| r1347_2(glval) = VariableAddress[x] : +# 1347| r1347_3(int) = Load[x] : &:r1347_2, m1346_6 +# 1347| r1347_4(glval) = VariableAddress[y] : +# 1347| r1347_5(int) = Load[y] : &:r1347_4, m1346_8 +# 1347| v1347_6(void) = Call[IntegerOps] : func:r1347_1, 0:r1347_3, 1:r1347_5 +# 1347| m1347_7(unknown) = ^CallSideEffect : ~m1346_4 +# 1347| m1347_8(unknown) = Chi : total:m1346_4, partial:m1347_7 +# 1347| v1347_9(void) = NoOp : +# 1346| v1346_9(void) = ReturnVoid : +# 1346| v1346_10(void) = AliasedUse : ~m1347_8 +# 1346| v1346_11(void) = ExitFunction : + +# 1350| void gccBinaryConditional(bool, int, long) +# 1350| Block 0 +# 1350| v1350_1(void) = EnterFunction : +# 1350| m1350_2(unknown) = AliasedDefinition : +# 1350| m1350_3(unknown) = InitializeNonLocal : +# 1350| m1350_4(unknown) = Chi : total:m1350_2, partial:m1350_3 +# 1350| r1350_5(glval) = VariableAddress[b] : +# 1350| m1350_6(bool) = InitializeParameter[b] : &:r1350_5 +# 1350| r1350_7(glval) = VariableAddress[x] : +# 1350| m1350_8(int) = InitializeParameter[x] : &:r1350_7 +# 1350| r1350_9(glval) = VariableAddress[y] : +# 1350| m1350_10(long) = InitializeParameter[y] : &:r1350_9 +# 1351| r1351_1(glval) = VariableAddress[z] : +# 1351| r1351_2(glval) = VariableAddress[x] : +# 1351| r1351_3(int) = Load[x] : &:r1351_2, m1350_8 +# 1351| m1351_4(int) = Store[z] : &:r1351_1, r1351_3 +# 1352| r1352_1(glval) = VariableAddress[b] : +# 1352| r1352_2(bool) = Load[b] : &:r1352_1, m1350_6 +# 1352| v1352_3(void) = ConditionalBranch : r1352_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 1350| Block 1 -# 1350| m1350_4(int) = Phi : from 2:m1350_10, from 3:m1350_14 -# 1350| r1350_5(glval) = VariableAddress[#temp1350:9] : -# 1350| r1350_6(int) = Load[#temp1350:9] : &:r1350_5, m1350_4 -# 1350| r1350_7(glval) = VariableAddress[z] : -# 1350| m1350_8(int) = Store[z] : &:r1350_7, r1350_6 -# 1351| r1351_1(glval) = VariableAddress[b] : -# 1351| r1351_2(bool) = Load[b] : &:r1351_1, m1348_6 -# 1351| v1351_3(void) = ConditionalBranch : r1351_2 +# 1352| Block 1 +# 1352| m1352_4(int) = Phi : from 2:m1352_10, from 3:m1352_14 +# 1352| r1352_5(glval) = VariableAddress[#temp1352:9] : +# 1352| r1352_6(int) = Load[#temp1352:9] : &:r1352_5, m1352_4 +# 1352| r1352_7(glval) = VariableAddress[z] : +# 1352| m1352_8(int) = Store[z] : &:r1352_7, r1352_6 +# 1353| r1353_1(glval) = VariableAddress[b] : +# 1353| r1353_2(bool) = Load[b] : &:r1353_1, m1350_6 +# 1353| v1353_3(void) = ConditionalBranch : r1353_2 #-----| False -> Block 6 #-----| True -> Block 5 -# 1350| Block 2 -# 1350| r1350_9(glval) = VariableAddress[#temp1350:9] : -# 1350| m1350_10(int) = Store[#temp1350:9] : &:r1350_9, r1350_2 +# 1352| Block 2 +# 1352| r1352_9(glval) = VariableAddress[#temp1352:9] : +# 1352| m1352_10(int) = Store[#temp1352:9] : &:r1352_9, r1352_2 #-----| Goto -> Block 1 -# 1350| Block 3 -# 1350| r1350_11(glval) = VariableAddress[x] : -# 1350| r1350_12(int) = Load[x] : &:r1350_11, m1348_8 -# 1350| r1350_13(glval) = VariableAddress[#temp1350:9] : -# 1350| m1350_14(int) = Store[#temp1350:9] : &:r1350_13, r1350_12 +# 1352| Block 3 +# 1352| r1352_11(glval) = VariableAddress[x] : +# 1352| r1352_12(int) = Load[x] : &:r1352_11, m1350_8 +# 1352| r1352_13(glval) = VariableAddress[#temp1352:9] : +# 1352| m1352_14(int) = Store[#temp1352:9] : &:r1352_13, r1352_12 #-----| Goto -> Block 1 -# 1351| Block 4 -# 1351| m1351_4(long) = Phi : from 5:m1351_11, from 6:m1351_15 -# 1351| r1351_5(glval) = VariableAddress[#temp1351:9] : -# 1351| r1351_6(long) = Load[#temp1351:9] : &:r1351_5, m1351_4 -# 1351| r1351_7(int) = Convert : r1351_6 -# 1351| r1351_8(glval) = VariableAddress[z] : -# 1351| m1351_9(int) = Store[z] : &:r1351_8, r1351_7 -# 1352| r1352_1(glval) = VariableAddress[x] : -# 1352| r1352_2(int) = Load[x] : &:r1352_1, m1348_8 -# 1352| r1352_3(int) = Constant[0] : -# 1352| r1352_4(bool) = CompareNE : r1352_2, r1352_3 -# 1352| v1352_5(void) = ConditionalBranch : r1352_4 +# 1353| Block 4 +# 1353| m1353_4(long) = Phi : from 5:m1353_11, from 6:m1353_15 +# 1353| r1353_5(glval) = VariableAddress[#temp1353:9] : +# 1353| r1353_6(long) = Load[#temp1353:9] : &:r1353_5, m1353_4 +# 1353| r1353_7(int) = Convert : r1353_6 +# 1353| r1353_8(glval) = VariableAddress[z] : +# 1353| m1353_9(int) = Store[z] : &:r1353_8, r1353_7 +# 1354| r1354_1(glval) = VariableAddress[x] : +# 1354| r1354_2(int) = Load[x] : &:r1354_1, m1350_8 +# 1354| r1354_3(int) = Constant[0] : +# 1354| r1354_4(bool) = CompareNE : r1354_2, r1354_3 +# 1354| v1354_5(void) = ConditionalBranch : r1354_4 #-----| False -> Block 9 #-----| True -> Block 8 -# 1351| Block 5 -# 1351| r1351_10(glval) = VariableAddress[#temp1351:9] : -# 1351| m1351_11(long) = Store[#temp1351:9] : &:r1351_10, r1351_2 +# 1353| Block 5 +# 1353| r1353_10(glval) = VariableAddress[#temp1353:9] : +# 1353| m1353_11(long) = Store[#temp1353:9] : &:r1353_10, r1353_2 #-----| Goto -> Block 4 -# 1351| Block 6 -# 1351| r1351_12(glval) = VariableAddress[y] : -# 1351| r1351_13(long) = Load[y] : &:r1351_12, m1348_10 -# 1351| r1351_14(glval) = VariableAddress[#temp1351:9] : -# 1351| m1351_15(long) = Store[#temp1351:9] : &:r1351_14, r1351_13 +# 1353| Block 6 +# 1353| r1353_12(glval) = VariableAddress[y] : +# 1353| r1353_13(long) = Load[y] : &:r1353_12, m1350_10 +# 1353| r1353_14(glval) = VariableAddress[#temp1353:9] : +# 1353| m1353_15(long) = Store[#temp1353:9] : &:r1353_14, r1353_13 #-----| Goto -> Block 4 -# 1352| Block 7 -# 1352| m1352_6(int) = Phi : from 8:m1352_12, from 9:m1352_16 -# 1352| r1352_7(glval) = VariableAddress[#temp1352:9] : -# 1352| r1352_8(int) = Load[#temp1352:9] : &:r1352_7, m1352_6 -# 1352| r1352_9(glval) = VariableAddress[z] : -# 1352| m1352_10(int) = Store[z] : &:r1352_9, r1352_8 -# 1353| r1353_1(glval) = VariableAddress[x] : -# 1353| r1353_2(int) = Load[x] : &:r1353_1, m1348_8 -# 1353| r1353_3(int) = Constant[0] : -# 1353| r1353_4(bool) = CompareNE : r1353_2, r1353_3 -# 1353| v1353_5(void) = ConditionalBranch : r1353_4 +# 1354| Block 7 +# 1354| m1354_6(int) = Phi : from 8:m1354_12, from 9:m1354_16 +# 1354| r1354_7(glval) = VariableAddress[#temp1354:9] : +# 1354| r1354_8(int) = Load[#temp1354:9] : &:r1354_7, m1354_6 +# 1354| r1354_9(glval) = VariableAddress[z] : +# 1354| m1354_10(int) = Store[z] : &:r1354_9, r1354_8 +# 1355| r1355_1(glval) = VariableAddress[x] : +# 1355| r1355_2(int) = Load[x] : &:r1355_1, m1350_8 +# 1355| r1355_3(int) = Constant[0] : +# 1355| r1355_4(bool) = CompareNE : r1355_2, r1355_3 +# 1355| v1355_5(void) = ConditionalBranch : r1355_4 #-----| False -> Block 12 #-----| True -> Block 11 -# 1352| Block 8 -# 1352| r1352_11(glval) = VariableAddress[#temp1352:9] : -# 1352| m1352_12(int) = Store[#temp1352:9] : &:r1352_11, r1352_2 +# 1354| Block 8 +# 1354| r1354_11(glval) = VariableAddress[#temp1354:9] : +# 1354| m1354_12(int) = Store[#temp1354:9] : &:r1354_11, r1354_2 #-----| Goto -> Block 7 -# 1352| Block 9 -# 1352| r1352_13(glval) = VariableAddress[x] : -# 1352| r1352_14(int) = Load[x] : &:r1352_13, m1348_8 -# 1352| r1352_15(glval) = VariableAddress[#temp1352:9] : -# 1352| m1352_16(int) = Store[#temp1352:9] : &:r1352_15, r1352_14 +# 1354| Block 9 +# 1354| r1354_13(glval) = VariableAddress[x] : +# 1354| r1354_14(int) = Load[x] : &:r1354_13, m1350_8 +# 1354| r1354_15(glval) = VariableAddress[#temp1354:9] : +# 1354| m1354_16(int) = Store[#temp1354:9] : &:r1354_15, r1354_14 #-----| Goto -> Block 7 -# 1353| Block 10 -# 1353| m1353_6(long) = Phi : from 11:m1353_13, from 12:m1353_17 -# 1353| r1353_7(glval) = VariableAddress[#temp1353:9] : -# 1353| r1353_8(long) = Load[#temp1353:9] : &:r1353_7, m1353_6 -# 1353| r1353_9(int) = Convert : r1353_8 -# 1353| r1353_10(glval) = VariableAddress[z] : -# 1353| m1353_11(int) = Store[z] : &:r1353_10, r1353_9 -# 1354| r1354_1(glval) = VariableAddress[y] : -# 1354| r1354_2(long) = Load[y] : &:r1354_1, m1348_10 -# 1354| r1354_3(long) = Constant[0] : -# 1354| r1354_4(bool) = CompareNE : r1354_2, r1354_3 -# 1354| v1354_5(void) = ConditionalBranch : r1354_4 -#-----| False -> Block 15 -#-----| True -> Block 14 - -# 1353| Block 11 -# 1353| r1353_12(glval) = VariableAddress[#temp1353:9] : -# 1353| m1353_13(long) = Store[#temp1353:9] : &:r1353_12, r1353_2 -#-----| Goto -> Block 10 - -# 1353| Block 12 -# 1353| r1353_14(glval) = VariableAddress[y] : -# 1353| r1353_15(long) = Load[y] : &:r1353_14, m1348_10 -# 1353| r1353_16(glval) = VariableAddress[#temp1353:9] : -# 1353| m1353_17(long) = Store[#temp1353:9] : &:r1353_16, r1353_15 -#-----| Goto -> Block 10 - -# 1354| Block 13 -# 1354| m1354_6(long) = Phi : from 14:m1354_13, from 15:m1354_18 -# 1354| r1354_7(glval) = VariableAddress[#temp1354:9] : -# 1354| r1354_8(long) = Load[#temp1354:9] : &:r1354_7, m1354_6 -# 1354| r1354_9(int) = Convert : r1354_8 -# 1354| r1354_10(glval) = VariableAddress[z] : -# 1354| m1354_11(int) = Store[z] : &:r1354_10, r1354_9 -# 1355| r1355_1(glval) = VariableAddress[y] : -# 1355| r1355_2(long) = Load[y] : &:r1355_1, m1348_10 -# 1355| r1355_3(long) = Constant[0] : -# 1355| r1355_4(bool) = CompareNE : r1355_2, r1355_3 -# 1355| v1355_5(void) = ConditionalBranch : r1355_4 -#-----| False -> Block 18 -#-----| True -> Block 17 - -# 1354| Block 14 -# 1354| r1354_12(glval) = VariableAddress[#temp1354:9] : -# 1354| m1354_13(long) = Store[#temp1354:9] : &:r1354_12, r1354_2 -#-----| Goto -> Block 13 - -# 1354| Block 15 -# 1354| r1354_14(glval) = VariableAddress[x] : -# 1354| r1354_15(int) = Load[x] : &:r1354_14, m1348_8 -# 1354| r1354_16(long) = Convert : r1354_15 -# 1354| r1354_17(glval) = VariableAddress[#temp1354:9] : -# 1354| m1354_18(long) = Store[#temp1354:9] : &:r1354_17, r1354_16 -#-----| Goto -> Block 13 - -# 1355| Block 16 -# 1355| m1355_6(long) = Phi : from 17:m1355_13, from 18:m1355_17 +# 1355| Block 10 +# 1355| m1355_6(long) = Phi : from 11:m1355_13, from 12:m1355_17 # 1355| r1355_7(glval) = VariableAddress[#temp1355:9] : # 1355| r1355_8(long) = Load[#temp1355:9] : &:r1355_7, m1355_6 # 1355| r1355_9(int) = Convert : r1355_8 # 1355| r1355_10(glval) = VariableAddress[z] : # 1355| m1355_11(int) = Store[z] : &:r1355_10, r1355_9 -# 1357| r1357_1(glval) = VariableAddress[x] : -# 1357| r1357_2(int) = Load[x] : &:r1357_1, m1348_8 -# 1357| r1357_3(int) = Constant[0] : +# 1356| r1356_1(glval) = VariableAddress[y] : +# 1356| r1356_2(long) = Load[y] : &:r1356_1, m1350_10 +# 1356| r1356_3(long) = Constant[0] : +# 1356| r1356_4(bool) = CompareNE : r1356_2, r1356_3 +# 1356| v1356_5(void) = ConditionalBranch : r1356_4 +#-----| False -> Block 15 +#-----| True -> Block 14 + +# 1355| Block 11 +# 1355| r1355_12(glval) = VariableAddress[#temp1355:9] : +# 1355| m1355_13(long) = Store[#temp1355:9] : &:r1355_12, r1355_2 +#-----| Goto -> Block 10 + +# 1355| Block 12 +# 1355| r1355_14(glval) = VariableAddress[y] : +# 1355| r1355_15(long) = Load[y] : &:r1355_14, m1350_10 +# 1355| r1355_16(glval) = VariableAddress[#temp1355:9] : +# 1355| m1355_17(long) = Store[#temp1355:9] : &:r1355_16, r1355_15 +#-----| Goto -> Block 10 + +# 1356| Block 13 +# 1356| m1356_6(long) = Phi : from 14:m1356_13, from 15:m1356_18 +# 1356| r1356_7(glval) = VariableAddress[#temp1356:9] : +# 1356| r1356_8(long) = Load[#temp1356:9] : &:r1356_7, m1356_6 +# 1356| r1356_9(int) = Convert : r1356_8 +# 1356| r1356_10(glval) = VariableAddress[z] : +# 1356| m1356_11(int) = Store[z] : &:r1356_10, r1356_9 +# 1357| r1357_1(glval) = VariableAddress[y] : +# 1357| r1357_2(long) = Load[y] : &:r1357_1, m1350_10 +# 1357| r1357_3(long) = Constant[0] : # 1357| r1357_4(bool) = CompareNE : r1357_2, r1357_3 # 1357| v1357_5(void) = ConditionalBranch : r1357_4 +#-----| False -> Block 18 +#-----| True -> Block 17 + +# 1356| Block 14 +# 1356| r1356_12(glval) = VariableAddress[#temp1356:9] : +# 1356| m1356_13(long) = Store[#temp1356:9] : &:r1356_12, r1356_2 +#-----| Goto -> Block 13 + +# 1356| Block 15 +# 1356| r1356_14(glval) = VariableAddress[x] : +# 1356| r1356_15(int) = Load[x] : &:r1356_14, m1350_8 +# 1356| r1356_16(long) = Convert : r1356_15 +# 1356| r1356_17(glval) = VariableAddress[#temp1356:9] : +# 1356| m1356_18(long) = Store[#temp1356:9] : &:r1356_17, r1356_16 +#-----| Goto -> Block 13 + +# 1357| Block 16 +# 1357| m1357_6(long) = Phi : from 17:m1357_13, from 18:m1357_17 +# 1357| r1357_7(glval) = VariableAddress[#temp1357:9] : +# 1357| r1357_8(long) = Load[#temp1357:9] : &:r1357_7, m1357_6 +# 1357| r1357_9(int) = Convert : r1357_8 +# 1357| r1357_10(glval) = VariableAddress[z] : +# 1357| m1357_11(int) = Store[z] : &:r1357_10, r1357_9 +# 1359| r1359_1(glval) = VariableAddress[x] : +# 1359| r1359_2(int) = Load[x] : &:r1359_1, m1350_8 +# 1359| r1359_3(int) = Constant[0] : +# 1359| r1359_4(bool) = CompareNE : r1359_2, r1359_3 +# 1359| v1359_5(void) = ConditionalBranch : r1359_4 #-----| False -> Block 25 #-----| True -> Block 24 -# 1355| Block 17 -# 1355| r1355_12(glval) = VariableAddress[#temp1355:9] : -# 1355| m1355_13(long) = Store[#temp1355:9] : &:r1355_12, r1355_2 +# 1357| Block 17 +# 1357| r1357_12(glval) = VariableAddress[#temp1357:9] : +# 1357| m1357_13(long) = Store[#temp1357:9] : &:r1357_12, r1357_2 #-----| Goto -> Block 16 -# 1355| Block 18 -# 1355| r1355_14(glval) = VariableAddress[y] : -# 1355| r1355_15(long) = Load[y] : &:r1355_14, m1348_10 -# 1355| r1355_16(glval) = VariableAddress[#temp1355:9] : -# 1355| m1355_17(long) = Store[#temp1355:9] : &:r1355_16, r1355_15 +# 1357| Block 18 +# 1357| r1357_14(glval) = VariableAddress[y] : +# 1357| r1357_15(long) = Load[y] : &:r1357_14, m1350_10 +# 1357| r1357_16(glval) = VariableAddress[#temp1357:9] : +# 1357| m1357_17(long) = Store[#temp1357:9] : &:r1357_16, r1357_15 #-----| Goto -> Block 16 -# 1357| Block 19 -# 1357| m1357_6(int) = Phi : from 20:m1357_12, from 26:m1357_34 -# 1357| r1357_7(glval) = VariableAddress[#temp1357:9] : -# 1357| r1357_8(int) = Load[#temp1357:9] : &:r1357_7, m1357_6 -# 1357| r1357_9(glval) = VariableAddress[z] : -# 1357| m1357_10(int) = Store[z] : &:r1357_9, r1357_8 -# 1358| v1358_1(void) = NoOp : -# 1348| v1348_11(void) = ReturnVoid : -# 1348| v1348_12(void) = AliasedUse : m1348_3 -# 1348| v1348_13(void) = ExitFunction : +# 1359| Block 19 +# 1359| m1359_6(int) = Phi : from 20:m1359_12, from 26:m1359_34 +# 1359| r1359_7(glval) = VariableAddress[#temp1359:9] : +# 1359| r1359_8(int) = Load[#temp1359:9] : &:r1359_7, m1359_6 +# 1359| r1359_9(glval) = VariableAddress[z] : +# 1359| m1359_10(int) = Store[z] : &:r1359_9, r1359_8 +# 1360| v1360_1(void) = NoOp : +# 1350| v1350_11(void) = ReturnVoid : +# 1350| v1350_12(void) = AliasedUse : m1350_3 +# 1350| v1350_13(void) = ExitFunction : -# 1357| Block 20 -# 1357| r1357_11(glval) = VariableAddress[#temp1357:9] : -# 1357| m1357_12(int) = Store[#temp1357:9] : &:r1357_11, r1357_18 +# 1359| Block 20 +# 1359| r1359_11(glval) = VariableAddress[#temp1359:9] : +# 1359| m1359_12(int) = Store[#temp1359:9] : &:r1359_11, r1359_18 #-----| Goto -> Block 19 -# 1357| Block 21 -# 1357| r1357_13(glval) = VariableAddress[#temp1357:10] : -# 1357| r1357_14(bool) = Constant[0] : -# 1357| m1357_15(bool) = Store[#temp1357:10] : &:r1357_13, r1357_14 +# 1359| Block 21 +# 1359| r1359_13(glval) = VariableAddress[#temp1359:10] : +# 1359| r1359_14(bool) = Constant[0] : +# 1359| m1359_15(bool) = Store[#temp1359:10] : &:r1359_13, r1359_14 #-----| Goto -> Block 22 -# 1357| Block 22 -# 1357| m1357_16(bool) = Phi : from 21:m1357_15, from 23:m1357_22 -# 1357| r1357_17(glval) = VariableAddress[#temp1357:10] : -# 1357| r1357_18(bool) = Load[#temp1357:10] : &:r1357_17, m1357_16 -# 1357| v1357_19(void) = ConditionalBranch : r1357_18 +# 1359| Block 22 +# 1359| m1359_16(bool) = Phi : from 21:m1359_15, from 23:m1359_22 +# 1359| r1359_17(glval) = VariableAddress[#temp1359:10] : +# 1359| r1359_18(bool) = Load[#temp1359:10] : &:r1359_17, m1359_16 +# 1359| v1359_19(void) = ConditionalBranch : r1359_18 #-----| False -> Block 26 #-----| True -> Block 20 -# 1357| Block 23 -# 1357| r1357_20(glval) = VariableAddress[#temp1357:10] : -# 1357| r1357_21(bool) = Constant[1] : -# 1357| m1357_22(bool) = Store[#temp1357:10] : &:r1357_20, r1357_21 +# 1359| Block 23 +# 1359| r1359_20(glval) = VariableAddress[#temp1359:10] : +# 1359| r1359_21(bool) = Constant[1] : +# 1359| m1359_22(bool) = Store[#temp1359:10] : &:r1359_20, r1359_21 #-----| Goto -> Block 22 -# 1357| Block 24 -# 1357| r1357_23(glval) = VariableAddress[b] : -# 1357| r1357_24(bool) = Load[b] : &:r1357_23, m1348_6 -# 1357| v1357_25(void) = ConditionalBranch : r1357_24 +# 1359| Block 24 +# 1359| r1359_23(glval) = VariableAddress[b] : +# 1359| r1359_24(bool) = Load[b] : &:r1359_23, m1350_6 +# 1359| v1359_25(void) = ConditionalBranch : r1359_24 #-----| False -> Block 25 #-----| True -> Block 23 -# 1357| Block 25 -# 1357| r1357_26(glval) = VariableAddress[y] : -# 1357| r1357_27(long) = Load[y] : &:r1357_26, m1348_10 -# 1357| r1357_28(long) = Constant[0] : -# 1357| r1357_29(bool) = CompareNE : r1357_27, r1357_28 -# 1357| v1357_30(void) = ConditionalBranch : r1357_29 +# 1359| Block 25 +# 1359| r1359_26(glval) = VariableAddress[y] : +# 1359| r1359_27(long) = Load[y] : &:r1359_26, m1350_10 +# 1359| r1359_28(long) = Constant[0] : +# 1359| r1359_29(bool) = CompareNE : r1359_27, r1359_28 +# 1359| v1359_30(void) = ConditionalBranch : r1359_29 #-----| False -> Block 21 #-----| True -> Block 23 -# 1357| Block 26 -# 1357| r1357_31(glval) = VariableAddress[x] : -# 1357| r1357_32(int) = Load[x] : &:r1357_31, m1348_8 -# 1357| r1357_33(glval) = VariableAddress[#temp1357:9] : -# 1357| m1357_34(int) = Store[#temp1357:9] : &:r1357_33, r1357_32 +# 1359| Block 26 +# 1359| r1359_31(glval) = VariableAddress[x] : +# 1359| r1359_32(int) = Load[x] : &:r1359_31, m1350_8 +# 1359| r1359_33(glval) = VariableAddress[#temp1359:9] : +# 1359| m1359_34(int) = Store[#temp1359:9] : &:r1359_33, r1359_32 #-----| Goto -> Block 19 -# 1363| int shortCircuitConditional(int, int) -# 1363| Block 0 -# 1363| v1363_1(void) = EnterFunction : -# 1363| m1363_2(unknown) = AliasedDefinition : -# 1363| m1363_3(unknown) = InitializeNonLocal : -# 1363| m1363_4(unknown) = Chi : total:m1363_2, partial:m1363_3 -# 1363| r1363_5(glval) = VariableAddress[x] : -# 1363| m1363_6(int) = InitializeParameter[x] : &:r1363_5 -# 1363| r1363_7(glval) = VariableAddress[y] : -# 1363| m1363_8(int) = InitializeParameter[y] : &:r1363_7 -# 1364| r1364_1(glval) = VariableAddress[#return] : -# 1364| r1364_2(glval) = FunctionAddress[predicateA] : -# 1364| r1364_3(bool) = Call[predicateA] : func:r1364_2 -# 1364| m1364_4(unknown) = ^CallSideEffect : ~m1363_4 -# 1364| m1364_5(unknown) = Chi : total:m1363_4, partial:m1364_4 -# 1364| v1364_6(void) = ConditionalBranch : r1364_3 +# 1365| int shortCircuitConditional(int, int) +# 1365| Block 0 +# 1365| v1365_1(void) = EnterFunction : +# 1365| m1365_2(unknown) = AliasedDefinition : +# 1365| m1365_3(unknown) = InitializeNonLocal : +# 1365| m1365_4(unknown) = Chi : total:m1365_2, partial:m1365_3 +# 1365| r1365_5(glval) = VariableAddress[x] : +# 1365| m1365_6(int) = InitializeParameter[x] : &:r1365_5 +# 1365| r1365_7(glval) = VariableAddress[y] : +# 1365| m1365_8(int) = InitializeParameter[y] : &:r1365_7 +# 1366| r1366_1(glval) = VariableAddress[#return] : +# 1366| r1366_2(glval) = FunctionAddress[predicateA] : +# 1366| r1366_3(bool) = Call[predicateA] : func:r1366_2 +# 1366| m1366_4(unknown) = ^CallSideEffect : ~m1365_4 +# 1366| m1366_5(unknown) = Chi : total:m1365_4, partial:m1366_4 +# 1366| v1366_6(void) = ConditionalBranch : r1366_3 #-----| False -> Block 4 #-----| True -> Block 2 -# 1364| Block 1 -# 1364| m1364_7(unknown) = Phi : from 3:~m1364_15, from 4:~m1364_21 -# 1364| m1364_8(int) = Phi : from 3:m1364_20, from 4:m1364_25 -# 1364| r1364_9(glval) = VariableAddress[#temp1364:12] : -# 1364| r1364_10(int) = Load[#temp1364:12] : &:r1364_9, m1364_8 -# 1364| m1364_11(int) = Store[#return] : &:r1364_1, r1364_10 -# 1363| r1363_9(glval) = VariableAddress[#return] : -# 1363| v1363_10(void) = ReturnValue : &:r1363_9, m1364_11 -# 1363| v1363_11(void) = AliasedUse : ~m1364_7 -# 1363| v1363_12(void) = ExitFunction : +# 1366| Block 1 +# 1366| m1366_7(unknown) = Phi : from 3:~m1366_15, from 4:~m1366_21 +# 1366| m1366_8(int) = Phi : from 3:m1366_20, from 4:m1366_25 +# 1366| r1366_9(glval) = VariableAddress[#temp1366:12] : +# 1366| r1366_10(int) = Load[#temp1366:12] : &:r1366_9, m1366_8 +# 1366| m1366_11(int) = Store[#return] : &:r1366_1, r1366_10 +# 1365| r1365_9(glval) = VariableAddress[#return] : +# 1365| v1365_10(void) = ReturnValue : &:r1365_9, m1366_11 +# 1365| v1365_11(void) = AliasedUse : ~m1366_7 +# 1365| v1365_12(void) = ExitFunction : -# 1364| Block 2 -# 1364| r1364_12(glval) = FunctionAddress[predicateB] : -# 1364| r1364_13(bool) = Call[predicateB] : func:r1364_12 -# 1364| m1364_14(unknown) = ^CallSideEffect : ~m1364_5 -# 1364| m1364_15(unknown) = Chi : total:m1364_5, partial:m1364_14 -# 1364| v1364_16(void) = ConditionalBranch : r1364_13 +# 1366| Block 2 +# 1366| r1366_12(glval) = FunctionAddress[predicateB] : +# 1366| r1366_13(bool) = Call[predicateB] : func:r1366_12 +# 1366| m1366_14(unknown) = ^CallSideEffect : ~m1366_5 +# 1366| m1366_15(unknown) = Chi : total:m1366_5, partial:m1366_14 +# 1366| v1366_16(void) = ConditionalBranch : r1366_13 #-----| False -> Block 4 #-----| True -> Block 3 -# 1364| Block 3 -# 1364| r1364_17(glval) = VariableAddress[x] : -# 1364| r1364_18(int) = Load[x] : &:r1364_17, m1363_6 -# 1364| r1364_19(glval) = VariableAddress[#temp1364:12] : -# 1364| m1364_20(int) = Store[#temp1364:12] : &:r1364_19, r1364_18 +# 1366| Block 3 +# 1366| r1366_17(glval) = VariableAddress[x] : +# 1366| r1366_18(int) = Load[x] : &:r1366_17, m1365_6 +# 1366| r1366_19(glval) = VariableAddress[#temp1366:12] : +# 1366| m1366_20(int) = Store[#temp1366:12] : &:r1366_19, r1366_18 #-----| Goto -> Block 1 -# 1364| Block 4 -# 1364| m1364_21(unknown) = Phi : from 0:~m1364_5, from 2:~m1364_15 -# 1364| r1364_22(glval) = VariableAddress[y] : -# 1364| r1364_23(int) = Load[y] : &:r1364_22, m1363_8 -# 1364| r1364_24(glval) = VariableAddress[#temp1364:12] : -# 1364| m1364_25(int) = Store[#temp1364:12] : &:r1364_24, r1364_23 +# 1366| Block 4 +# 1366| m1366_21(unknown) = Phi : from 0:~m1366_5, from 2:~m1366_15 +# 1366| r1366_22(glval) = VariableAddress[y] : +# 1366| r1366_23(int) = Load[y] : &:r1366_22, m1365_8 +# 1366| r1366_24(glval) = VariableAddress[#temp1366:12] : +# 1366| m1366_25(int) = Store[#temp1366:12] : &:r1366_24, r1366_23 #-----| Goto -> Block 1 -# 1369| void f(int*) -# 1369| Block 0 -# 1369| v1369_1(void) = EnterFunction : -# 1369| m1369_2(unknown) = AliasedDefinition : -# 1369| m1369_3(unknown) = InitializeNonLocal : -# 1369| m1369_4(unknown) = Chi : total:m1369_2, partial:m1369_3 -# 1369| r1369_5(glval) = VariableAddress[p] : -# 1369| m1369_6(int *) = InitializeParameter[p] : &:r1369_5 -# 1369| r1369_7(int *) = Load[p] : &:r1369_5, m1369_6 -# 1369| m1369_8(unknown) = InitializeIndirection[p] : &:r1369_7 -# 1369| m1369_9(unknown) = Chi : total:m1369_4, partial:m1369_8 -# 1371| r1371_1(glval) = FunctionAddress[operator new] : -# 1371| r1371_2(unsigned long) = Constant[4] : -# 1371| r1371_3(glval) = VariableAddress[p] : -# 1371| r1371_4(int *) = Load[p] : &:r1371_3, m1369_6 -# 1371| r1371_5(void *) = Convert : r1371_4 -# 1371| r1371_6(void *) = Call[operator new] : func:r1371_1, 0:r1371_2, 1:r1371_5 -# 1371| m1371_7(unknown) = ^CallSideEffect : ~m1369_9 -# 1371| m1371_8(unknown) = Chi : total:m1369_9, partial:m1371_7 -# 1371| m1371_9(unknown) = ^InitializeDynamicAllocation : &:r1371_6 -# 1371| r1371_10(int *) = Convert : r1371_6 -# 1372| v1372_1(void) = NoOp : -# 1369| v1369_10(void) = ReturnIndirection[p] : &:r1369_7, ~m1371_8 -# 1369| v1369_11(void) = ReturnVoid : -# 1369| v1369_12(void) = AliasedUse : ~m1371_8 -# 1369| v1369_13(void) = ExitFunction : +# 1371| void f(int*) +# 1371| Block 0 +# 1371| v1371_1(void) = EnterFunction : +# 1371| m1371_2(unknown) = AliasedDefinition : +# 1371| m1371_3(unknown) = InitializeNonLocal : +# 1371| m1371_4(unknown) = Chi : total:m1371_2, partial:m1371_3 +# 1371| r1371_5(glval) = VariableAddress[p] : +# 1371| m1371_6(int *) = InitializeParameter[p] : &:r1371_5 +# 1371| r1371_7(int *) = Load[p] : &:r1371_5, m1371_6 +# 1371| m1371_8(unknown) = InitializeIndirection[p] : &:r1371_7 +# 1371| m1371_9(unknown) = Chi : total:m1371_4, partial:m1371_8 +# 1373| r1373_1(glval) = FunctionAddress[operator new] : +# 1373| r1373_2(unsigned long) = Constant[4] : +# 1373| r1373_3(glval) = VariableAddress[p] : +# 1373| r1373_4(int *) = Load[p] : &:r1373_3, m1371_6 +# 1373| r1373_5(void *) = Convert : r1373_4 +# 1373| r1373_6(void *) = Call[operator new] : func:r1373_1, 0:r1373_2, 1:r1373_5 +# 1373| m1373_7(unknown) = ^CallSideEffect : ~m1371_9 +# 1373| m1373_8(unknown) = Chi : total:m1371_9, partial:m1373_7 +# 1373| m1373_9(unknown) = ^InitializeDynamicAllocation : &:r1373_6 +# 1373| r1373_10(int *) = Convert : r1373_6 +# 1374| v1374_1(void) = NoOp : +# 1371| v1371_10(void) = ReturnIndirection[p] : &:r1371_7, ~m1373_8 +# 1371| v1371_11(void) = ReturnVoid : +# 1371| v1371_12(void) = AliasedUse : ~m1373_8 +# 1371| v1371_13(void) = ExitFunction : -# 1375| Point defaultConstruct() -# 1375| Block 0 -# 1375| v1375_1(void) = EnterFunction : -# 1375| m1375_2(unknown) = AliasedDefinition : -# 1375| m1375_3(unknown) = InitializeNonLocal : -# 1375| m1375_4(unknown) = Chi : total:m1375_2, partial:m1375_3 -# 1376| r1376_1(glval) = VariableAddress[#return] : -# 1376| r1376_2(Point) = Constant[0] : -# 1376| m1376_3(Point) = Store[#return] : &:r1376_1, r1376_2 -# 1375| r1375_5(glval) = VariableAddress[#return] : -# 1375| v1375_6(void) = ReturnValue : &:r1375_5, m1376_3 -# 1375| v1375_7(void) = AliasedUse : m1375_3 -# 1375| v1375_8(void) = ExitFunction : +# 1377| Point defaultConstruct() +# 1377| Block 0 +# 1377| v1377_1(void) = EnterFunction : +# 1377| m1377_2(unknown) = AliasedDefinition : +# 1377| m1377_3(unknown) = InitializeNonLocal : +# 1377| m1377_4(unknown) = Chi : total:m1377_2, partial:m1377_3 +# 1378| r1378_1(glval) = VariableAddress[#return] : +# 1378| r1378_2(Point) = Constant[0] : +# 1378| m1378_3(Point) = Store[#return] : &:r1378_1, r1378_2 +# 1377| r1377_5(glval) = VariableAddress[#return] : +# 1377| v1377_6(void) = ReturnValue : &:r1377_5, m1378_3 +# 1377| v1377_7(void) = AliasedUse : m1377_3 +# 1377| v1377_8(void) = ExitFunction : -# 1375| String defaultConstruct() -# 1375| Block 0 -# 1375| v1375_1(void) = EnterFunction : -# 1375| m1375_2(unknown) = AliasedDefinition : -# 1375| m1375_3(unknown) = InitializeNonLocal : -# 1375| m1375_4(unknown) = Chi : total:m1375_2, partial:m1375_3 -# 1376| r1376_1(glval) = VariableAddress[#return] : -# 1376| m1376_2(String) = Uninitialized[#return] : &:r1376_1 -# 1376| m1376_3(unknown) = Chi : total:m1375_4, partial:m1376_2 -# 1376| r1376_4(glval) = FunctionAddress[String] : -# 1376| v1376_5(void) = Call[String] : func:r1376_4, this:r1376_1 -# 1376| m1376_6(unknown) = ^CallSideEffect : ~m1376_3 -# 1376| m1376_7(unknown) = Chi : total:m1376_3, partial:m1376_6 -# 1376| m1376_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r1376_1 -# 1376| m1376_9(unknown) = Chi : total:m1376_7, partial:m1376_8 -# 1375| r1375_5(glval) = VariableAddress[#return] : -# 1375| v1375_6(void) = ReturnValue : &:r1375_5, ~m1376_9 -# 1375| v1375_7(void) = AliasedUse : ~m1376_7 -# 1375| v1375_8(void) = ExitFunction : +# 1377| String defaultConstruct() +# 1377| Block 0 +# 1377| v1377_1(void) = EnterFunction : +# 1377| m1377_2(unknown) = AliasedDefinition : +# 1377| m1377_3(unknown) = InitializeNonLocal : +# 1377| m1377_4(unknown) = Chi : total:m1377_2, partial:m1377_3 +# 1378| r1378_1(glval) = VariableAddress[#return] : +# 1378| m1378_2(String) = Uninitialized[#return] : &:r1378_1 +# 1378| m1378_3(unknown) = Chi : total:m1377_4, partial:m1378_2 +# 1378| r1378_4(glval) = FunctionAddress[String] : +# 1378| v1378_5(void) = Call[String] : func:r1378_4, this:r1378_1 +# 1378| m1378_6(unknown) = ^CallSideEffect : ~m1378_3 +# 1378| m1378_7(unknown) = Chi : total:m1378_3, partial:m1378_6 +# 1378| m1378_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r1378_1 +# 1378| m1378_9(unknown) = Chi : total:m1378_7, partial:m1378_8 +# 1377| r1377_5(glval) = VariableAddress[#return] : +# 1377| v1377_6(void) = ReturnValue : &:r1377_5, ~m1378_9 +# 1377| v1377_7(void) = AliasedUse : ~m1378_7 +# 1377| v1377_8(void) = ExitFunction : -# 1375| copy_constructor defaultConstruct() -# 1375| Block 0 -# 1375| v1375_1(void) = EnterFunction : -# 1375| m1375_2(unknown) = AliasedDefinition : -# 1375| m1375_3(unknown) = InitializeNonLocal : -# 1375| m1375_4(unknown) = Chi : total:m1375_2, partial:m1375_3 -# 1376| r1376_1(glval) = VariableAddress[#return] : -# 1376| m1376_2(copy_constructor) = Uninitialized[#return] : &:r1376_1 -# 1376| m1376_3(unknown) = Chi : total:m1375_4, partial:m1376_2 -# 1376| r1376_4(glval) = FunctionAddress[copy_constructor] : -# 1376| v1376_5(void) = Call[copy_constructor] : func:r1376_4, this:r1376_1 -# 1376| m1376_6(unknown) = ^CallSideEffect : ~m1376_3 -# 1376| m1376_7(unknown) = Chi : total:m1376_3, partial:m1376_6 -# 1376| m1376_8(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1376_1 -# 1376| m1376_9(unknown) = Chi : total:m1376_7, partial:m1376_8 -# 1375| r1375_5(glval) = VariableAddress[#return] : -# 1375| v1375_6(void) = ReturnValue : &:r1375_5, ~m1376_9 -# 1375| v1375_7(void) = AliasedUse : ~m1376_7 -# 1375| v1375_8(void) = ExitFunction : +# 1377| copy_constructor defaultConstruct() +# 1377| Block 0 +# 1377| v1377_1(void) = EnterFunction : +# 1377| m1377_2(unknown) = AliasedDefinition : +# 1377| m1377_3(unknown) = InitializeNonLocal : +# 1377| m1377_4(unknown) = Chi : total:m1377_2, partial:m1377_3 +# 1378| r1378_1(glval) = VariableAddress[#return] : +# 1378| m1378_2(copy_constructor) = Uninitialized[#return] : &:r1378_1 +# 1378| m1378_3(unknown) = Chi : total:m1377_4, partial:m1378_2 +# 1378| r1378_4(glval) = FunctionAddress[copy_constructor] : +# 1378| v1378_5(void) = Call[copy_constructor] : func:r1378_4, this:r1378_1 +# 1378| m1378_6(unknown) = ^CallSideEffect : ~m1378_3 +# 1378| m1378_7(unknown) = Chi : total:m1378_3, partial:m1378_6 +# 1378| m1378_8(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1378_1 +# 1378| m1378_9(unknown) = Chi : total:m1378_7, partial:m1378_8 +# 1377| r1377_5(glval) = VariableAddress[#return] : +# 1377| v1377_6(void) = ReturnValue : &:r1377_5, ~m1378_9 +# 1377| v1377_7(void) = AliasedUse : ~m1378_7 +# 1377| v1377_8(void) = ExitFunction : -# 1375| destructor_only defaultConstruct() -# 1375| Block 0 -# 1375| v1375_1(void) = EnterFunction : -# 1375| m1375_2(unknown) = AliasedDefinition : -# 1375| m1375_3(unknown) = InitializeNonLocal : -# 1375| m1375_4(unknown) = Chi : total:m1375_2, partial:m1375_3 -# 1376| r1376_1(glval) = VariableAddress[#return] : -# 1376| r1376_2(destructor_only) = Constant[0] : -# 1376| m1376_3(destructor_only) = Store[#return] : &:r1376_1, r1376_2 -# 1375| r1375_5(glval) = VariableAddress[#return] : -# 1375| v1375_6(void) = ReturnValue : &:r1375_5, m1376_3 -# 1375| v1375_7(void) = AliasedUse : m1375_3 -# 1375| v1375_8(void) = ExitFunction : +# 1377| destructor_only defaultConstruct() +# 1377| Block 0 +# 1377| v1377_1(void) = EnterFunction : +# 1377| m1377_2(unknown) = AliasedDefinition : +# 1377| m1377_3(unknown) = InitializeNonLocal : +# 1377| m1377_4(unknown) = Chi : total:m1377_2, partial:m1377_3 +# 1378| r1378_1(glval) = VariableAddress[#return] : +# 1378| r1378_2(destructor_only) = Constant[0] : +# 1378| m1378_3(destructor_only) = Store[#return] : &:r1378_1, r1378_2 +# 1377| r1377_5(glval) = VariableAddress[#return] : +# 1377| v1377_6(void) = ReturnValue : &:r1377_5, m1378_3 +# 1377| v1377_7(void) = AliasedUse : m1377_3 +# 1377| v1377_8(void) = ExitFunction : -# 1414| void temporary_string() -# 1414| Block 0 -# 1414| v1414_1(void) = EnterFunction : -# 1414| m1414_2(unknown) = AliasedDefinition : -# 1414| m1414_3(unknown) = InitializeNonLocal : -# 1414| m1414_4(unknown) = Chi : total:m1414_2, partial:m1414_3 -# 1415| r1415_1(glval) = VariableAddress[s] : -# 1415| r1415_2(glval) = FunctionAddress[returnValue] : -# 1415| r1415_3(String) = Call[returnValue] : func:r1415_2 -# 1415| m1415_4(unknown) = ^CallSideEffect : ~m1414_4 -# 1415| m1415_5(unknown) = Chi : total:m1414_4, partial:m1415_4 -# 1415| m1415_6(String) = Store[s] : &:r1415_1, r1415_3 -# 1415| m1415_7(unknown) = Chi : total:m1415_5, partial:m1415_6 -# 1416| r1416_1(glval) = VariableAddress[rs] : -# 1416| r1416_2(glval) = VariableAddress[#temp1416:24] : -# 1416| r1416_3(glval) = FunctionAddress[returnValue] : -# 1416| r1416_4(String) = Call[returnValue] : func:r1416_3 -# 1416| m1416_5(unknown) = ^CallSideEffect : ~m1415_7 -# 1416| m1416_6(unknown) = Chi : total:m1415_7, partial:m1416_5 -# 1416| m1416_7(String) = Store[#temp1416:24] : &:r1416_2, r1416_4 -# 1416| m1416_8(unknown) = Chi : total:m1416_6, partial:m1416_7 -# 1416| r1416_9(glval) = Convert : r1416_2 -# 1416| r1416_10(String &) = CopyValue : r1416_9 -# 1416| m1416_11(String &) = Store[rs] : &:r1416_1, r1416_10 -# 1418| r1418_1(glval) = FunctionAddress[acceptRef] : -# 1418| r1418_2(glval) = VariableAddress[s] : -# 1418| r1418_3(glval) = Convert : r1418_2 -# 1418| r1418_4(String &) = CopyValue : r1418_3 -# 1418| v1418_5(void) = Call[acceptRef] : func:r1418_1, 0:r1418_4 -# 1418| m1418_6(unknown) = ^CallSideEffect : ~m1416_8 -# 1418| m1418_7(unknown) = Chi : total:m1416_8, partial:m1418_6 -# 1418| v1418_8(void) = ^BufferReadSideEffect[0] : &:r1418_4, ~m1418_7 -# 1419| r1419_1(glval) = FunctionAddress[acceptRef] : -# 1419| r1419_2(glval) = VariableAddress[#temp1419:23] : -# 1419| m1419_3(String) = Uninitialized[#temp1419:23] : &:r1419_2 -# 1419| m1419_4(unknown) = Chi : total:m1418_7, partial:m1419_3 -# 1419| r1419_5(glval) = FunctionAddress[String] : -# 1419| r1419_6(glval) = StringConstant["foo"] : -# 1419| r1419_7(char *) = Convert : r1419_6 -# 1419| v1419_8(void) = Call[String] : func:r1419_5, this:r1419_2, 0:r1419_7 -# 1419| m1419_9(unknown) = ^CallSideEffect : ~m1419_4 -# 1419| m1419_10(unknown) = Chi : total:m1419_4, partial:m1419_9 -# 1419| v1419_11(void) = ^BufferReadSideEffect[0] : &:r1419_7, ~m1414_3 -# 1419| m1419_12(String) = ^IndirectMayWriteSideEffect[-1] : &:r1419_2 -# 1419| m1419_13(unknown) = Chi : total:m1419_10, partial:m1419_12 -# 1419| r1419_14(String &) = CopyValue : r1419_2 -# 1419| v1419_15(void) = Call[acceptRef] : func:r1419_1, 0:r1419_14 -# 1419| m1419_16(unknown) = ^CallSideEffect : ~m1419_13 -# 1419| m1419_17(unknown) = Chi : total:m1419_13, partial:m1419_16 -# 1419| v1419_18(void) = ^BufferReadSideEffect[0] : &:r1419_14, ~m1419_17 -# 1419| r1419_19(glval) = CopyValue : r1419_2 -# 1419| r1419_20(glval) = FunctionAddress[~String] : -# 1419| v1419_21(void) = Call[~String] : func:r1419_20, this:r1419_19 -# 1419| m1419_22(unknown) = ^CallSideEffect : ~m1419_17 -# 1419| m1419_23(unknown) = Chi : total:m1419_17, partial:m1419_22 -# 1419| v1419_24(void) = ^IndirectReadSideEffect[-1] : &:r1419_19, ~m1419_23 -# 1419| m1419_25(String) = ^IndirectMayWriteSideEffect[-1] : &:r1419_19 -# 1419| m1419_26(unknown) = Chi : total:m1419_23, partial:m1419_25 -# 1420| r1420_1(glval) = FunctionAddress[acceptValue] : -# 1420| r1420_2(glval) = VariableAddress[#temp1420:17] : -# 1420| m1420_3(String) = Uninitialized[#temp1420:17] : &:r1420_2 -# 1420| m1420_4(unknown) = Chi : total:m1419_26, partial:m1420_3 -# 1420| r1420_5(glval) = FunctionAddress[String] : -# 1420| r1420_6(glval) = VariableAddress[s] : -# 1420| r1420_7(glval) = Convert : r1420_6 -# 1420| r1420_8(String &) = CopyValue : r1420_7 -# 1420| v1420_9(void) = Call[String] : func:r1420_5, this:r1420_2, 0:r1420_8 -# 1420| m1420_10(unknown) = ^CallSideEffect : ~m1420_4 -# 1420| m1420_11(unknown) = Chi : total:m1420_4, partial:m1420_10 -# 1420| v1420_12(void) = ^BufferReadSideEffect[0] : &:r1420_8, ~m1420_11 -# 1420| m1420_13(String) = ^IndirectMayWriteSideEffect[-1] : &:r1420_2 -# 1420| m1420_14(unknown) = Chi : total:m1420_11, partial:m1420_13 -# 1420| r1420_15(String) = Load[#temp1420:17] : &:r1420_2, ~m1420_14 -# 1420| v1420_16(void) = Call[acceptValue] : func:r1420_1, 0:r1420_15 -# 1420| m1420_17(unknown) = ^CallSideEffect : ~m1420_14 -# 1420| m1420_18(unknown) = Chi : total:m1420_14, partial:m1420_17 -# 1420| r1420_19(glval) = CopyValue : r1420_2 -# 1420| r1420_20(glval) = FunctionAddress[~String] : -# 1420| v1420_21(void) = Call[~String] : func:r1420_20, this:r1420_19 -# 1420| m1420_22(unknown) = ^CallSideEffect : ~m1420_18 -# 1420| m1420_23(unknown) = Chi : total:m1420_18, partial:m1420_22 -# 1420| v1420_24(void) = ^IndirectReadSideEffect[-1] : &:r1420_19, ~m1420_23 -# 1420| m1420_25(String) = ^IndirectMayWriteSideEffect[-1] : &:r1420_19 -# 1420| m1420_26(unknown) = Chi : total:m1420_23, partial:m1420_25 -# 1421| r1421_1(glval) = FunctionAddress[acceptValue] : -# 1421| r1421_2(glval) = VariableAddress[#temp1421:25] : -# 1421| m1421_3(String) = Uninitialized[#temp1421:25] : &:r1421_2 -# 1421| m1421_4(unknown) = Chi : total:m1420_26, partial:m1421_3 +# 1416| void temporary_string() +# 1416| Block 0 +# 1416| v1416_1(void) = EnterFunction : +# 1416| m1416_2(unknown) = AliasedDefinition : +# 1416| m1416_3(unknown) = InitializeNonLocal : +# 1416| m1416_4(unknown) = Chi : total:m1416_2, partial:m1416_3 +# 1417| r1417_1(glval) = VariableAddress[s] : +# 1417| r1417_2(glval) = FunctionAddress[returnValue] : +# 1417| r1417_3(String) = Call[returnValue] : func:r1417_2 +# 1417| m1417_4(unknown) = ^CallSideEffect : ~m1416_4 +# 1417| m1417_5(unknown) = Chi : total:m1416_4, partial:m1417_4 +# 1417| m1417_6(String) = Store[s] : &:r1417_1, r1417_3 +# 1417| m1417_7(unknown) = Chi : total:m1417_5, partial:m1417_6 +# 1418| r1418_1(glval) = VariableAddress[rs] : +# 1418| r1418_2(glval) = VariableAddress[#temp1418:24] : +# 1418| r1418_3(glval) = FunctionAddress[returnValue] : +# 1418| r1418_4(String) = Call[returnValue] : func:r1418_3 +# 1418| m1418_5(unknown) = ^CallSideEffect : ~m1417_7 +# 1418| m1418_6(unknown) = Chi : total:m1417_7, partial:m1418_5 +# 1418| m1418_7(String) = Store[#temp1418:24] : &:r1418_2, r1418_4 +# 1418| m1418_8(unknown) = Chi : total:m1418_6, partial:m1418_7 +# 1418| r1418_9(glval) = Convert : r1418_2 +# 1418| r1418_10(String &) = CopyValue : r1418_9 +# 1418| m1418_11(String &) = Store[rs] : &:r1418_1, r1418_10 +# 1420| r1420_1(glval) = FunctionAddress[acceptRef] : +# 1420| r1420_2(glval) = VariableAddress[s] : +# 1420| r1420_3(glval) = Convert : r1420_2 +# 1420| r1420_4(String &) = CopyValue : r1420_3 +# 1420| v1420_5(void) = Call[acceptRef] : func:r1420_1, 0:r1420_4 +# 1420| m1420_6(unknown) = ^CallSideEffect : ~m1418_8 +# 1420| m1420_7(unknown) = Chi : total:m1418_8, partial:m1420_6 +# 1420| v1420_8(void) = ^BufferReadSideEffect[0] : &:r1420_4, ~m1420_7 +# 1421| r1421_1(glval) = FunctionAddress[acceptRef] : +# 1421| r1421_2(glval) = VariableAddress[#temp1421:23] : +# 1421| m1421_3(String) = Uninitialized[#temp1421:23] : &:r1421_2 +# 1421| m1421_4(unknown) = Chi : total:m1420_7, partial:m1421_3 # 1421| r1421_5(glval) = FunctionAddress[String] : # 1421| r1421_6(glval) = StringConstant["foo"] : # 1421| r1421_7(char *) = Convert : r1421_6 # 1421| v1421_8(void) = Call[String] : func:r1421_5, this:r1421_2, 0:r1421_7 # 1421| m1421_9(unknown) = ^CallSideEffect : ~m1421_4 # 1421| m1421_10(unknown) = Chi : total:m1421_4, partial:m1421_9 -# 1421| v1421_11(void) = ^BufferReadSideEffect[0] : &:r1421_7, ~m1414_3 +# 1421| v1421_11(void) = ^BufferReadSideEffect[0] : &:r1421_7, ~m1416_3 # 1421| m1421_12(String) = ^IndirectMayWriteSideEffect[-1] : &:r1421_2 # 1421| m1421_13(unknown) = Chi : total:m1421_10, partial:m1421_12 -# 1421| r1421_14(String) = Load[#temp1421:25] : &:r1421_2, ~m1421_13 -# 1421| v1421_15(void) = Call[acceptValue] : func:r1421_1, 0:r1421_14 +# 1421| r1421_14(String &) = CopyValue : r1421_2 +# 1421| v1421_15(void) = Call[acceptRef] : func:r1421_1, 0:r1421_14 # 1421| m1421_16(unknown) = ^CallSideEffect : ~m1421_13 # 1421| m1421_17(unknown) = Chi : total:m1421_13, partial:m1421_16 -# 1421| r1421_18(glval) = CopyValue : r1421_2 -# 1421| r1421_19(glval) = FunctionAddress[~String] : -# 1421| v1421_20(void) = Call[~String] : func:r1421_19, this:r1421_18 -# 1421| m1421_21(unknown) = ^CallSideEffect : ~m1421_17 -# 1421| m1421_22(unknown) = Chi : total:m1421_17, partial:m1421_21 -# 1421| v1421_23(void) = ^IndirectReadSideEffect[-1] : &:r1421_18, ~m1421_22 -# 1421| m1421_24(String) = ^IndirectMayWriteSideEffect[-1] : &:r1421_18 -# 1421| m1421_25(unknown) = Chi : total:m1421_22, partial:m1421_24 -# 1422| r1422_1(glval) = VariableAddress[#temp1422:5] : -# 1422| m1422_2(String) = Uninitialized[#temp1422:5] : &:r1422_1 -# 1422| m1422_3(unknown) = Chi : total:m1421_25, partial:m1422_2 -# 1422| r1422_4(glval) = FunctionAddress[String] : -# 1422| v1422_5(void) = Call[String] : func:r1422_4, this:r1422_1 -# 1422| m1422_6(unknown) = ^CallSideEffect : ~m1422_3 -# 1422| m1422_7(unknown) = Chi : total:m1422_3, partial:m1422_6 -# 1422| m1422_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r1422_1 -# 1422| m1422_9(unknown) = Chi : total:m1422_7, partial:m1422_8 -# 1422| r1422_10(glval) = Convert : r1422_1 -# 1422| r1422_11(glval) = FunctionAddress[c_str] : -# 1422| r1422_12(char *) = Call[c_str] : func:r1422_11, this:r1422_10 -# 1422| m1422_13(unknown) = ^CallSideEffect : ~m1422_9 -# 1422| m1422_14(unknown) = Chi : total:m1422_9, partial:m1422_13 -# 1422| v1422_15(void) = ^IndirectReadSideEffect[-1] : &:r1422_10, ~m1422_14 -# 1422| r1422_16(glval) = CopyValue : r1422_1 -# 1422| r1422_17(glval) = FunctionAddress[~String] : -# 1422| v1422_18(void) = Call[~String] : func:r1422_17, this:r1422_16 -# 1422| m1422_19(unknown) = ^CallSideEffect : ~m1422_14 -# 1422| m1422_20(unknown) = Chi : total:m1422_14, partial:m1422_19 -# 1422| v1422_21(void) = ^IndirectReadSideEffect[-1] : &:r1422_16, ~m1422_20 -# 1422| m1422_22(String) = ^IndirectMayWriteSideEffect[-1] : &:r1422_16 -# 1422| m1422_23(unknown) = Chi : total:m1422_20, partial:m1422_22 -# 1423| r1423_1(glval) = VariableAddress[#temp1423:5] : -# 1423| r1423_2(glval) = FunctionAddress[returnValue] : -# 1423| r1423_3(String) = Call[returnValue] : func:r1423_2 -# 1423| m1423_4(unknown) = ^CallSideEffect : ~m1422_23 -# 1423| m1423_5(unknown) = Chi : total:m1422_23, partial:m1423_4 -# 1423| m1423_6(String) = Store[#temp1423:5] : &:r1423_1, r1423_3 -# 1423| m1423_7(unknown) = Chi : total:m1423_5, partial:m1423_6 -# 1423| r1423_8(glval) = Convert : r1423_1 -# 1423| r1423_9(glval) = FunctionAddress[c_str] : -# 1423| r1423_10(char *) = Call[c_str] : func:r1423_9, this:r1423_8 -# 1423| m1423_11(unknown) = ^CallSideEffect : ~m1423_7 -# 1423| m1423_12(unknown) = Chi : total:m1423_7, partial:m1423_11 -# 1423| v1423_13(void) = ^IndirectReadSideEffect[-1] : &:r1423_8, ~m1423_12 -# 1423| r1423_14(glval) = CopyValue : r1423_1 -# 1423| r1423_15(glval) = FunctionAddress[~String] : -# 1423| v1423_16(void) = Call[~String] : func:r1423_15, this:r1423_14 -# 1423| m1423_17(unknown) = ^CallSideEffect : ~m1423_12 -# 1423| m1423_18(unknown) = Chi : total:m1423_12, partial:m1423_17 -# 1423| v1423_19(void) = ^IndirectReadSideEffect[-1] : &:r1423_14, ~m1423_18 -# 1423| m1423_20(String) = ^IndirectMayWriteSideEffect[-1] : &:r1423_14 -# 1423| m1423_21(unknown) = Chi : total:m1423_18, partial:m1423_20 +# 1421| v1421_18(void) = ^BufferReadSideEffect[0] : &:r1421_14, ~m1421_17 +# 1421| r1421_19(glval) = CopyValue : r1421_2 +# 1421| r1421_20(glval) = FunctionAddress[~String] : +# 1421| v1421_21(void) = Call[~String] : func:r1421_20, this:r1421_19 +# 1421| m1421_22(unknown) = ^CallSideEffect : ~m1421_17 +# 1421| m1421_23(unknown) = Chi : total:m1421_17, partial:m1421_22 +# 1421| v1421_24(void) = ^IndirectReadSideEffect[-1] : &:r1421_19, ~m1421_23 +# 1421| m1421_25(String) = ^IndirectMayWriteSideEffect[-1] : &:r1421_19 +# 1421| m1421_26(unknown) = Chi : total:m1421_23, partial:m1421_25 +# 1422| r1422_1(glval) = FunctionAddress[acceptValue] : +# 1422| r1422_2(glval) = VariableAddress[#temp1422:17] : +# 1422| m1422_3(String) = Uninitialized[#temp1422:17] : &:r1422_2 +# 1422| m1422_4(unknown) = Chi : total:m1421_26, partial:m1422_3 +# 1422| r1422_5(glval) = FunctionAddress[String] : +# 1422| r1422_6(glval) = VariableAddress[s] : +# 1422| r1422_7(glval) = Convert : r1422_6 +# 1422| r1422_8(String &) = CopyValue : r1422_7 +# 1422| v1422_9(void) = Call[String] : func:r1422_5, this:r1422_2, 0:r1422_8 +# 1422| m1422_10(unknown) = ^CallSideEffect : ~m1422_4 +# 1422| m1422_11(unknown) = Chi : total:m1422_4, partial:m1422_10 +# 1422| v1422_12(void) = ^BufferReadSideEffect[0] : &:r1422_8, ~m1422_11 +# 1422| m1422_13(String) = ^IndirectMayWriteSideEffect[-1] : &:r1422_2 +# 1422| m1422_14(unknown) = Chi : total:m1422_11, partial:m1422_13 +# 1422| r1422_15(String) = Load[#temp1422:17] : &:r1422_2, ~m1422_14 +# 1422| v1422_16(void) = Call[acceptValue] : func:r1422_1, 0:r1422_15 +# 1422| m1422_17(unknown) = ^CallSideEffect : ~m1422_14 +# 1422| m1422_18(unknown) = Chi : total:m1422_14, partial:m1422_17 +# 1422| r1422_19(glval) = CopyValue : r1422_2 +# 1422| r1422_20(glval) = FunctionAddress[~String] : +# 1422| v1422_21(void) = Call[~String] : func:r1422_20, this:r1422_19 +# 1422| m1422_22(unknown) = ^CallSideEffect : ~m1422_18 +# 1422| m1422_23(unknown) = Chi : total:m1422_18, partial:m1422_22 +# 1422| v1422_24(void) = ^IndirectReadSideEffect[-1] : &:r1422_19, ~m1422_23 +# 1422| m1422_25(String) = ^IndirectMayWriteSideEffect[-1] : &:r1422_19 +# 1422| m1422_26(unknown) = Chi : total:m1422_23, partial:m1422_25 +# 1423| r1423_1(glval) = FunctionAddress[acceptValue] : +# 1423| r1423_2(glval) = VariableAddress[#temp1423:25] : +# 1423| m1423_3(String) = Uninitialized[#temp1423:25] : &:r1423_2 +# 1423| m1423_4(unknown) = Chi : total:m1422_26, partial:m1423_3 +# 1423| r1423_5(glval) = FunctionAddress[String] : +# 1423| r1423_6(glval) = StringConstant["foo"] : +# 1423| r1423_7(char *) = Convert : r1423_6 +# 1423| v1423_8(void) = Call[String] : func:r1423_5, this:r1423_2, 0:r1423_7 +# 1423| m1423_9(unknown) = ^CallSideEffect : ~m1423_4 +# 1423| m1423_10(unknown) = Chi : total:m1423_4, partial:m1423_9 +# 1423| v1423_11(void) = ^BufferReadSideEffect[0] : &:r1423_7, ~m1416_3 +# 1423| m1423_12(String) = ^IndirectMayWriteSideEffect[-1] : &:r1423_2 +# 1423| m1423_13(unknown) = Chi : total:m1423_10, partial:m1423_12 +# 1423| r1423_14(String) = Load[#temp1423:25] : &:r1423_2, ~m1423_13 +# 1423| v1423_15(void) = Call[acceptValue] : func:r1423_1, 0:r1423_14 +# 1423| m1423_16(unknown) = ^CallSideEffect : ~m1423_13 +# 1423| m1423_17(unknown) = Chi : total:m1423_13, partial:m1423_16 +# 1423| r1423_18(glval) = CopyValue : r1423_2 +# 1423| r1423_19(glval) = FunctionAddress[~String] : +# 1423| v1423_20(void) = Call[~String] : func:r1423_19, this:r1423_18 +# 1423| m1423_21(unknown) = ^CallSideEffect : ~m1423_17 +# 1423| m1423_22(unknown) = Chi : total:m1423_17, partial:m1423_21 +# 1423| v1423_23(void) = ^IndirectReadSideEffect[-1] : &:r1423_18, ~m1423_22 +# 1423| m1423_24(String) = ^IndirectMayWriteSideEffect[-1] : &:r1423_18 +# 1423| m1423_25(unknown) = Chi : total:m1423_22, partial:m1423_24 +# 1424| r1424_1(glval) = VariableAddress[#temp1424:5] : +# 1424| m1424_2(String) = Uninitialized[#temp1424:5] : &:r1424_1 +# 1424| m1424_3(unknown) = Chi : total:m1423_25, partial:m1424_2 +# 1424| r1424_4(glval) = FunctionAddress[String] : +# 1424| v1424_5(void) = Call[String] : func:r1424_4, this:r1424_1 +# 1424| m1424_6(unknown) = ^CallSideEffect : ~m1424_3 +# 1424| m1424_7(unknown) = Chi : total:m1424_3, partial:m1424_6 +# 1424| m1424_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r1424_1 +# 1424| m1424_9(unknown) = Chi : total:m1424_7, partial:m1424_8 +# 1424| r1424_10(glval) = Convert : r1424_1 +# 1424| r1424_11(glval) = FunctionAddress[c_str] : +# 1424| r1424_12(char *) = Call[c_str] : func:r1424_11, this:r1424_10 +# 1424| m1424_13(unknown) = ^CallSideEffect : ~m1424_9 +# 1424| m1424_14(unknown) = Chi : total:m1424_9, partial:m1424_13 +# 1424| v1424_15(void) = ^IndirectReadSideEffect[-1] : &:r1424_10, ~m1424_14 +# 1424| r1424_16(glval) = CopyValue : r1424_1 +# 1424| r1424_17(glval) = FunctionAddress[~String] : +# 1424| v1424_18(void) = Call[~String] : func:r1424_17, this:r1424_16 +# 1424| m1424_19(unknown) = ^CallSideEffect : ~m1424_14 +# 1424| m1424_20(unknown) = Chi : total:m1424_14, partial:m1424_19 +# 1424| v1424_21(void) = ^IndirectReadSideEffect[-1] : &:r1424_16, ~m1424_20 +# 1424| m1424_22(String) = ^IndirectMayWriteSideEffect[-1] : &:r1424_16 +# 1424| m1424_23(unknown) = Chi : total:m1424_20, partial:m1424_22 # 1425| r1425_1(glval) = VariableAddress[#temp1425:5] : -# 1425| r1425_2(glval) = FunctionAddress[defaultConstruct] : -# 1425| r1425_3(String) = Call[defaultConstruct] : func:r1425_2 -# 1425| m1425_4(unknown) = ^CallSideEffect : ~m1423_21 -# 1425| m1425_5(unknown) = Chi : total:m1423_21, partial:m1425_4 +# 1425| r1425_2(glval) = FunctionAddress[returnValue] : +# 1425| r1425_3(String) = Call[returnValue] : func:r1425_2 +# 1425| m1425_4(unknown) = ^CallSideEffect : ~m1424_23 +# 1425| m1425_5(unknown) = Chi : total:m1424_23, partial:m1425_4 # 1425| m1425_6(String) = Store[#temp1425:5] : &:r1425_1, r1425_3 # 1425| m1425_7(unknown) = Chi : total:m1425_5, partial:m1425_6 -# 1425| r1425_8(glval) = CopyValue : r1425_1 -# 1425| r1425_9(glval) = FunctionAddress[~String] : -# 1425| v1425_10(void) = Call[~String] : func:r1425_9, this:r1425_8 +# 1425| r1425_8(glval) = Convert : r1425_1 +# 1425| r1425_9(glval) = FunctionAddress[c_str] : +# 1425| r1425_10(char *) = Call[c_str] : func:r1425_9, this:r1425_8 # 1425| m1425_11(unknown) = ^CallSideEffect : ~m1425_7 # 1425| m1425_12(unknown) = Chi : total:m1425_7, partial:m1425_11 # 1425| v1425_13(void) = ^IndirectReadSideEffect[-1] : &:r1425_8, ~m1425_12 -# 1425| m1425_14(String) = ^IndirectMayWriteSideEffect[-1] : &:r1425_8 -# 1425| m1425_15(unknown) = Chi : total:m1425_12, partial:m1425_14 -# 1426| v1426_1(void) = NoOp : -# 1426| r1426_2(glval) = CopyValue : r1416_2 -# 1426| r1426_3(glval) = FunctionAddress[~String] : -# 1426| v1426_4(void) = Call[~String] : func:r1426_3, this:r1426_2 -# 1426| m1426_5(unknown) = ^CallSideEffect : ~m1425_15 -# 1426| m1426_6(unknown) = Chi : total:m1425_15, partial:m1426_5 -# 1426| v1426_7(void) = ^IndirectReadSideEffect[-1] : &:r1426_2, ~m1426_6 -# 1426| m1426_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r1426_2 -# 1426| m1426_9(unknown) = Chi : total:m1426_6, partial:m1426_8 -# 1426| r1426_10(glval) = VariableAddress[s] : -# 1426| r1426_11(glval) = FunctionAddress[~String] : -# 1426| v1426_12(void) = Call[~String] : func:r1426_11, this:r1426_10 -# 1426| m1426_13(unknown) = ^CallSideEffect : ~m1426_9 -# 1426| m1426_14(unknown) = Chi : total:m1426_9, partial:m1426_13 -# 1426| v1426_15(void) = ^IndirectReadSideEffect[-1] : &:r1426_10, ~m1426_14 -# 1426| m1426_16(String) = ^IndirectMayWriteSideEffect[-1] : &:r1426_10 -# 1426| m1426_17(unknown) = Chi : total:m1426_14, partial:m1426_16 -# 1414| v1414_5(void) = ReturnVoid : -# 1414| v1414_6(void) = AliasedUse : ~m1426_14 -# 1414| v1414_7(void) = ExitFunction : +# 1425| r1425_14(glval) = CopyValue : r1425_1 +# 1425| r1425_15(glval) = FunctionAddress[~String] : +# 1425| v1425_16(void) = Call[~String] : func:r1425_15, this:r1425_14 +# 1425| m1425_17(unknown) = ^CallSideEffect : ~m1425_12 +# 1425| m1425_18(unknown) = Chi : total:m1425_12, partial:m1425_17 +# 1425| v1425_19(void) = ^IndirectReadSideEffect[-1] : &:r1425_14, ~m1425_18 +# 1425| m1425_20(String) = ^IndirectMayWriteSideEffect[-1] : &:r1425_14 +# 1425| m1425_21(unknown) = Chi : total:m1425_18, partial:m1425_20 +# 1427| r1427_1(glval) = VariableAddress[#temp1427:5] : +# 1427| r1427_2(glval) = FunctionAddress[defaultConstruct] : +# 1427| r1427_3(String) = Call[defaultConstruct] : func:r1427_2 +# 1427| m1427_4(unknown) = ^CallSideEffect : ~m1425_21 +# 1427| m1427_5(unknown) = Chi : total:m1425_21, partial:m1427_4 +# 1427| m1427_6(String) = Store[#temp1427:5] : &:r1427_1, r1427_3 +# 1427| m1427_7(unknown) = Chi : total:m1427_5, partial:m1427_6 +# 1427| r1427_8(glval) = CopyValue : r1427_1 +# 1427| r1427_9(glval) = FunctionAddress[~String] : +# 1427| v1427_10(void) = Call[~String] : func:r1427_9, this:r1427_8 +# 1427| m1427_11(unknown) = ^CallSideEffect : ~m1427_7 +# 1427| m1427_12(unknown) = Chi : total:m1427_7, partial:m1427_11 +# 1427| v1427_13(void) = ^IndirectReadSideEffect[-1] : &:r1427_8, ~m1427_12 +# 1427| m1427_14(String) = ^IndirectMayWriteSideEffect[-1] : &:r1427_8 +# 1427| m1427_15(unknown) = Chi : total:m1427_12, partial:m1427_14 +# 1428| v1428_1(void) = NoOp : +# 1428| r1428_2(glval) = CopyValue : r1418_2 +# 1428| r1428_3(glval) = FunctionAddress[~String] : +# 1428| v1428_4(void) = Call[~String] : func:r1428_3, this:r1428_2 +# 1428| m1428_5(unknown) = ^CallSideEffect : ~m1427_15 +# 1428| m1428_6(unknown) = Chi : total:m1427_15, partial:m1428_5 +# 1428| v1428_7(void) = ^IndirectReadSideEffect[-1] : &:r1428_2, ~m1428_6 +# 1428| m1428_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r1428_2 +# 1428| m1428_9(unknown) = Chi : total:m1428_6, partial:m1428_8 +# 1428| r1428_10(glval) = VariableAddress[s] : +# 1428| r1428_11(glval) = FunctionAddress[~String] : +# 1428| v1428_12(void) = Call[~String] : func:r1428_11, this:r1428_10 +# 1428| m1428_13(unknown) = ^CallSideEffect : ~m1428_9 +# 1428| m1428_14(unknown) = Chi : total:m1428_9, partial:m1428_13 +# 1428| v1428_15(void) = ^IndirectReadSideEffect[-1] : &:r1428_10, ~m1428_14 +# 1428| m1428_16(String) = ^IndirectMayWriteSideEffect[-1] : &:r1428_10 +# 1428| m1428_17(unknown) = Chi : total:m1428_14, partial:m1428_16 +# 1416| v1416_5(void) = ReturnVoid : +# 1416| v1416_6(void) = AliasedUse : ~m1428_14 +# 1416| v1416_7(void) = ExitFunction : -# 1428| void temporary_destructor_only() -# 1428| Block 0 -# 1428| v1428_1(void) = EnterFunction : -# 1428| m1428_2(unknown) = AliasedDefinition : -# 1428| m1428_3(unknown) = InitializeNonLocal : -# 1428| m1428_4(unknown) = Chi : total:m1428_2, partial:m1428_3 -# 1429| r1429_1(glval) = VariableAddress[d] : -# 1429| r1429_2(glval) = FunctionAddress[returnValue] : -# 1429| r1429_3(destructor_only) = Call[returnValue] : func:r1429_2 -# 1429| m1429_4(unknown) = ^CallSideEffect : ~m1428_4 -# 1429| m1429_5(unknown) = Chi : total:m1428_4, partial:m1429_4 -# 1429| m1429_6(destructor_only) = Store[d] : &:r1429_1, r1429_3 -# 1429| m1429_7(unknown) = Chi : total:m1429_5, partial:m1429_6 -# 1430| r1430_1(glval) = VariableAddress[rd] : -# 1430| r1430_2(glval) = VariableAddress[#temp1430:33] : -# 1430| r1430_3(glval) = FunctionAddress[returnValue] : -# 1430| r1430_4(destructor_only) = Call[returnValue] : func:r1430_3 -# 1430| m1430_5(unknown) = ^CallSideEffect : ~m1429_7 -# 1430| m1430_6(unknown) = Chi : total:m1429_7, partial:m1430_5 -# 1430| m1430_7(destructor_only) = Store[#temp1430:33] : &:r1430_2, r1430_4 -# 1430| m1430_8(unknown) = Chi : total:m1430_6, partial:m1430_7 -# 1430| r1430_9(glval) = Convert : r1430_2 -# 1430| r1430_10(destructor_only &) = CopyValue : r1430_9 -# 1430| m1430_11(destructor_only &) = Store[rd] : &:r1430_1, r1430_10 -# 1431| r1431_1(glval) = VariableAddress[d2] : -# 1431| m1431_2(destructor_only) = Uninitialized[d2] : &:r1431_1 -# 1431| m1431_3(unknown) = Chi : total:m1430_8, partial:m1431_2 -# 1432| r1432_1(glval) = FunctionAddress[acceptRef] : -# 1432| r1432_2(glval) = VariableAddress[d] : -# 1432| r1432_3(glval) = Convert : r1432_2 -# 1432| r1432_4(destructor_only &) = CopyValue : r1432_3 -# 1432| v1432_5(void) = Call[acceptRef] : func:r1432_1, 0:r1432_4 -# 1432| m1432_6(unknown) = ^CallSideEffect : ~m1431_3 -# 1432| m1432_7(unknown) = Chi : total:m1431_3, partial:m1432_6 -# 1432| v1432_8(void) = ^BufferReadSideEffect[0] : &:r1432_4, ~m1432_7 -# 1433| r1433_1(glval) = FunctionAddress[acceptValue] : -# 1433| r1433_2(glval) = VariableAddress[#temp1433:17] : -# 1433| r1433_3(glval) = VariableAddress[d] : -# 1433| r1433_4(destructor_only) = Load[d] : &:r1433_3, ~m1432_7 -# 1433| m1433_5(destructor_only) = Store[#temp1433:17] : &:r1433_2, r1433_4 -# 1433| m1433_6(unknown) = Chi : total:m1432_7, partial:m1433_5 -# 1433| r1433_7(destructor_only) = Load[#temp1433:17] : &:r1433_2, m1433_5 -# 1433| v1433_8(void) = Call[acceptValue] : func:r1433_1, 0:r1433_7 -# 1433| m1433_9(unknown) = ^CallSideEffect : ~m1433_6 -# 1433| m1433_10(unknown) = Chi : total:m1433_6, partial:m1433_9 -# 1433| r1433_11(glval) = CopyValue : r1433_2 -# 1433| r1433_12(glval) = FunctionAddress[~destructor_only] : -# 1433| v1433_13(void) = Call[~destructor_only] : func:r1433_12, this:r1433_11 -# 1433| m1433_14(unknown) = ^CallSideEffect : ~m1433_10 -# 1433| m1433_15(unknown) = Chi : total:m1433_10, partial:m1433_14 -# 1433| v1433_16(void) = ^IndirectReadSideEffect[-1] : &:r1433_11, ~m1433_15 -# 1433| m1433_17(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1433_11 -# 1433| m1433_18(unknown) = Chi : total:m1433_15, partial:m1433_17 -# 1434| r1434_1(glval) = VariableAddress[#temp1434:5] : -# 1434| r1434_2(destructor_only) = Constant[0] : -# 1434| m1434_3(destructor_only) = Store[#temp1434:5] : &:r1434_1, r1434_2 -# 1434| m1434_4(unknown) = Chi : total:m1433_18, partial:m1434_3 -# 1434| r1434_5(glval) = FunctionAddress[method] : -# 1434| v1434_6(void) = Call[method] : func:r1434_5, this:r1434_1 -# 1434| m1434_7(unknown) = ^CallSideEffect : ~m1434_4 -# 1434| m1434_8(unknown) = Chi : total:m1434_4, partial:m1434_7 -# 1434| v1434_9(void) = ^IndirectReadSideEffect[-1] : &:r1434_1, ~m1434_8 -# 1434| m1434_10(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1434_1 -# 1434| m1434_11(unknown) = Chi : total:m1434_8, partial:m1434_10 -# 1434| r1434_12(glval) = CopyValue : r1434_1 -# 1434| r1434_13(glval) = FunctionAddress[~destructor_only] : -# 1434| v1434_14(void) = Call[~destructor_only] : func:r1434_13, this:r1434_12 -# 1434| m1434_15(unknown) = ^CallSideEffect : ~m1434_11 -# 1434| m1434_16(unknown) = Chi : total:m1434_11, partial:m1434_15 -# 1434| v1434_17(void) = ^IndirectReadSideEffect[-1] : &:r1434_12, ~m1434_16 -# 1434| m1434_18(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1434_12 -# 1434| m1434_19(unknown) = Chi : total:m1434_16, partial:m1434_18 -# 1435| r1435_1(glval) = VariableAddress[#temp1435:5] : -# 1435| r1435_2(glval) = FunctionAddress[returnValue] : -# 1435| r1435_3(destructor_only) = Call[returnValue] : func:r1435_2 -# 1435| m1435_4(unknown) = ^CallSideEffect : ~m1434_19 -# 1435| m1435_5(unknown) = Chi : total:m1434_19, partial:m1435_4 -# 1435| m1435_6(destructor_only) = Store[#temp1435:5] : &:r1435_1, r1435_3 -# 1435| m1435_7(unknown) = Chi : total:m1435_5, partial:m1435_6 -# 1435| r1435_8(glval) = FunctionAddress[method] : -# 1435| v1435_9(void) = Call[method] : func:r1435_8, this:r1435_1 -# 1435| m1435_10(unknown) = ^CallSideEffect : ~m1435_7 -# 1435| m1435_11(unknown) = Chi : total:m1435_7, partial:m1435_10 -# 1435| v1435_12(void) = ^IndirectReadSideEffect[-1] : &:r1435_1, ~m1435_11 -# 1435| m1435_13(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1435_1 -# 1435| m1435_14(unknown) = Chi : total:m1435_11, partial:m1435_13 -# 1435| r1435_15(glval) = CopyValue : r1435_1 -# 1435| r1435_16(glval) = FunctionAddress[~destructor_only] : -# 1435| v1435_17(void) = Call[~destructor_only] : func:r1435_16, this:r1435_15 -# 1435| m1435_18(unknown) = ^CallSideEffect : ~m1435_14 -# 1435| m1435_19(unknown) = Chi : total:m1435_14, partial:m1435_18 -# 1435| v1435_20(void) = ^IndirectReadSideEffect[-1] : &:r1435_15, ~m1435_19 -# 1435| m1435_21(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1435_15 -# 1435| m1435_22(unknown) = Chi : total:m1435_19, partial:m1435_21 +# 1430| void temporary_destructor_only() +# 1430| Block 0 +# 1430| v1430_1(void) = EnterFunction : +# 1430| m1430_2(unknown) = AliasedDefinition : +# 1430| m1430_3(unknown) = InitializeNonLocal : +# 1430| m1430_4(unknown) = Chi : total:m1430_2, partial:m1430_3 +# 1431| r1431_1(glval) = VariableAddress[d] : +# 1431| r1431_2(glval) = FunctionAddress[returnValue] : +# 1431| r1431_3(destructor_only) = Call[returnValue] : func:r1431_2 +# 1431| m1431_4(unknown) = ^CallSideEffect : ~m1430_4 +# 1431| m1431_5(unknown) = Chi : total:m1430_4, partial:m1431_4 +# 1431| m1431_6(destructor_only) = Store[d] : &:r1431_1, r1431_3 +# 1431| m1431_7(unknown) = Chi : total:m1431_5, partial:m1431_6 +# 1432| r1432_1(glval) = VariableAddress[rd] : +# 1432| r1432_2(glval) = VariableAddress[#temp1432:33] : +# 1432| r1432_3(glval) = FunctionAddress[returnValue] : +# 1432| r1432_4(destructor_only) = Call[returnValue] : func:r1432_3 +# 1432| m1432_5(unknown) = ^CallSideEffect : ~m1431_7 +# 1432| m1432_6(unknown) = Chi : total:m1431_7, partial:m1432_5 +# 1432| m1432_7(destructor_only) = Store[#temp1432:33] : &:r1432_2, r1432_4 +# 1432| m1432_8(unknown) = Chi : total:m1432_6, partial:m1432_7 +# 1432| r1432_9(glval) = Convert : r1432_2 +# 1432| r1432_10(destructor_only &) = CopyValue : r1432_9 +# 1432| m1432_11(destructor_only &) = Store[rd] : &:r1432_1, r1432_10 +# 1433| r1433_1(glval) = VariableAddress[d2] : +# 1433| m1433_2(destructor_only) = Uninitialized[d2] : &:r1433_1 +# 1433| m1433_3(unknown) = Chi : total:m1432_8, partial:m1433_2 +# 1434| r1434_1(glval) = FunctionAddress[acceptRef] : +# 1434| r1434_2(glval) = VariableAddress[d] : +# 1434| r1434_3(glval) = Convert : r1434_2 +# 1434| r1434_4(destructor_only &) = CopyValue : r1434_3 +# 1434| v1434_5(void) = Call[acceptRef] : func:r1434_1, 0:r1434_4 +# 1434| m1434_6(unknown) = ^CallSideEffect : ~m1433_3 +# 1434| m1434_7(unknown) = Chi : total:m1433_3, partial:m1434_6 +# 1434| v1434_8(void) = ^BufferReadSideEffect[0] : &:r1434_4, ~m1434_7 +# 1435| r1435_1(glval) = FunctionAddress[acceptValue] : +# 1435| r1435_2(glval) = VariableAddress[#temp1435:17] : +# 1435| r1435_3(glval) = VariableAddress[d] : +# 1435| r1435_4(destructor_only) = Load[d] : &:r1435_3, ~m1434_7 +# 1435| m1435_5(destructor_only) = Store[#temp1435:17] : &:r1435_2, r1435_4 +# 1435| m1435_6(unknown) = Chi : total:m1434_7, partial:m1435_5 +# 1435| r1435_7(destructor_only) = Load[#temp1435:17] : &:r1435_2, m1435_5 +# 1435| v1435_8(void) = Call[acceptValue] : func:r1435_1, 0:r1435_7 +# 1435| m1435_9(unknown) = ^CallSideEffect : ~m1435_6 +# 1435| m1435_10(unknown) = Chi : total:m1435_6, partial:m1435_9 +# 1435| r1435_11(glval) = CopyValue : r1435_2 +# 1435| r1435_12(glval) = FunctionAddress[~destructor_only] : +# 1435| v1435_13(void) = Call[~destructor_only] : func:r1435_12, this:r1435_11 +# 1435| m1435_14(unknown) = ^CallSideEffect : ~m1435_10 +# 1435| m1435_15(unknown) = Chi : total:m1435_10, partial:m1435_14 +# 1435| v1435_16(void) = ^IndirectReadSideEffect[-1] : &:r1435_11, ~m1435_15 +# 1435| m1435_17(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1435_11 +# 1435| m1435_18(unknown) = Chi : total:m1435_15, partial:m1435_17 +# 1436| r1436_1(glval) = VariableAddress[#temp1436:5] : +# 1436| r1436_2(destructor_only) = Constant[0] : +# 1436| m1436_3(destructor_only) = Store[#temp1436:5] : &:r1436_1, r1436_2 +# 1436| m1436_4(unknown) = Chi : total:m1435_18, partial:m1436_3 +# 1436| r1436_5(glval) = FunctionAddress[method] : +# 1436| v1436_6(void) = Call[method] : func:r1436_5, this:r1436_1 +# 1436| m1436_7(unknown) = ^CallSideEffect : ~m1436_4 +# 1436| m1436_8(unknown) = Chi : total:m1436_4, partial:m1436_7 +# 1436| v1436_9(void) = ^IndirectReadSideEffect[-1] : &:r1436_1, ~m1436_8 +# 1436| m1436_10(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1436_1 +# 1436| m1436_11(unknown) = Chi : total:m1436_8, partial:m1436_10 +# 1436| r1436_12(glval) = CopyValue : r1436_1 +# 1436| r1436_13(glval) = FunctionAddress[~destructor_only] : +# 1436| v1436_14(void) = Call[~destructor_only] : func:r1436_13, this:r1436_12 +# 1436| m1436_15(unknown) = ^CallSideEffect : ~m1436_11 +# 1436| m1436_16(unknown) = Chi : total:m1436_11, partial:m1436_15 +# 1436| v1436_17(void) = ^IndirectReadSideEffect[-1] : &:r1436_12, ~m1436_16 +# 1436| m1436_18(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1436_12 +# 1436| m1436_19(unknown) = Chi : total:m1436_16, partial:m1436_18 # 1437| r1437_1(glval) = VariableAddress[#temp1437:5] : -# 1437| r1437_2(glval) = FunctionAddress[defaultConstruct] : -# 1437| r1437_3(destructor_only) = Call[defaultConstruct] : func:r1437_2 -# 1437| m1437_4(unknown) = ^CallSideEffect : ~m1435_22 -# 1437| m1437_5(unknown) = Chi : total:m1435_22, partial:m1437_4 +# 1437| r1437_2(glval) = FunctionAddress[returnValue] : +# 1437| r1437_3(destructor_only) = Call[returnValue] : func:r1437_2 +# 1437| m1437_4(unknown) = ^CallSideEffect : ~m1436_19 +# 1437| m1437_5(unknown) = Chi : total:m1436_19, partial:m1437_4 # 1437| m1437_6(destructor_only) = Store[#temp1437:5] : &:r1437_1, r1437_3 # 1437| m1437_7(unknown) = Chi : total:m1437_5, partial:m1437_6 -# 1437| r1437_8(glval) = CopyValue : r1437_1 -# 1437| r1437_9(glval) = FunctionAddress[~destructor_only] : -# 1437| v1437_10(void) = Call[~destructor_only] : func:r1437_9, this:r1437_8 -# 1437| m1437_11(unknown) = ^CallSideEffect : ~m1437_7 -# 1437| m1437_12(unknown) = Chi : total:m1437_7, partial:m1437_11 -# 1437| v1437_13(void) = ^IndirectReadSideEffect[-1] : &:r1437_8, ~m1437_12 -# 1437| m1437_14(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1437_8 -# 1437| m1437_15(unknown) = Chi : total:m1437_12, partial:m1437_14 -# 1438| v1438_1(void) = NoOp : -# 1438| r1438_2(glval) = VariableAddress[d2] : -# 1438| r1438_3(glval) = FunctionAddress[~destructor_only] : -# 1438| v1438_4(void) = Call[~destructor_only] : func:r1438_3, this:r1438_2 -# 1438| m1438_5(unknown) = ^CallSideEffect : ~m1437_15 -# 1438| m1438_6(unknown) = Chi : total:m1437_15, partial:m1438_5 -# 1438| v1438_7(void) = ^IndirectReadSideEffect[-1] : &:r1438_2, ~m1438_6 -# 1438| m1438_8(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1438_2 -# 1438| m1438_9(unknown) = Chi : total:m1438_6, partial:m1438_8 -# 1438| r1438_10(glval) = CopyValue : r1430_2 -# 1438| r1438_11(glval) = FunctionAddress[~destructor_only] : -# 1438| v1438_12(void) = Call[~destructor_only] : func:r1438_11, this:r1438_10 -# 1438| m1438_13(unknown) = ^CallSideEffect : ~m1438_9 -# 1438| m1438_14(unknown) = Chi : total:m1438_9, partial:m1438_13 -# 1438| v1438_15(void) = ^IndirectReadSideEffect[-1] : &:r1438_10, ~m1438_14 -# 1438| m1438_16(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1438_10 -# 1438| m1438_17(unknown) = Chi : total:m1438_14, partial:m1438_16 -# 1438| r1438_18(glval) = VariableAddress[d] : -# 1438| r1438_19(glval) = FunctionAddress[~destructor_only] : -# 1438| v1438_20(void) = Call[~destructor_only] : func:r1438_19, this:r1438_18 -# 1438| m1438_21(unknown) = ^CallSideEffect : ~m1438_17 -# 1438| m1438_22(unknown) = Chi : total:m1438_17, partial:m1438_21 -# 1438| v1438_23(void) = ^IndirectReadSideEffect[-1] : &:r1438_18, ~m1438_22 -# 1438| m1438_24(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1438_18 -# 1438| m1438_25(unknown) = Chi : total:m1438_22, partial:m1438_24 -# 1428| v1428_5(void) = ReturnVoid : -# 1428| v1428_6(void) = AliasedUse : ~m1438_22 -# 1428| v1428_7(void) = ExitFunction : +# 1437| r1437_8(glval) = FunctionAddress[method] : +# 1437| v1437_9(void) = Call[method] : func:r1437_8, this:r1437_1 +# 1437| m1437_10(unknown) = ^CallSideEffect : ~m1437_7 +# 1437| m1437_11(unknown) = Chi : total:m1437_7, partial:m1437_10 +# 1437| v1437_12(void) = ^IndirectReadSideEffect[-1] : &:r1437_1, ~m1437_11 +# 1437| m1437_13(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1437_1 +# 1437| m1437_14(unknown) = Chi : total:m1437_11, partial:m1437_13 +# 1437| r1437_15(glval) = CopyValue : r1437_1 +# 1437| r1437_16(glval) = FunctionAddress[~destructor_only] : +# 1437| v1437_17(void) = Call[~destructor_only] : func:r1437_16, this:r1437_15 +# 1437| m1437_18(unknown) = ^CallSideEffect : ~m1437_14 +# 1437| m1437_19(unknown) = Chi : total:m1437_14, partial:m1437_18 +# 1437| v1437_20(void) = ^IndirectReadSideEffect[-1] : &:r1437_15, ~m1437_19 +# 1437| m1437_21(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1437_15 +# 1437| m1437_22(unknown) = Chi : total:m1437_19, partial:m1437_21 +# 1439| r1439_1(glval) = VariableAddress[#temp1439:5] : +# 1439| r1439_2(glval) = FunctionAddress[defaultConstruct] : +# 1439| r1439_3(destructor_only) = Call[defaultConstruct] : func:r1439_2 +# 1439| m1439_4(unknown) = ^CallSideEffect : ~m1437_22 +# 1439| m1439_5(unknown) = Chi : total:m1437_22, partial:m1439_4 +# 1439| m1439_6(destructor_only) = Store[#temp1439:5] : &:r1439_1, r1439_3 +# 1439| m1439_7(unknown) = Chi : total:m1439_5, partial:m1439_6 +# 1439| r1439_8(glval) = CopyValue : r1439_1 +# 1439| r1439_9(glval) = FunctionAddress[~destructor_only] : +# 1439| v1439_10(void) = Call[~destructor_only] : func:r1439_9, this:r1439_8 +# 1439| m1439_11(unknown) = ^CallSideEffect : ~m1439_7 +# 1439| m1439_12(unknown) = Chi : total:m1439_7, partial:m1439_11 +# 1439| v1439_13(void) = ^IndirectReadSideEffect[-1] : &:r1439_8, ~m1439_12 +# 1439| m1439_14(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1439_8 +# 1439| m1439_15(unknown) = Chi : total:m1439_12, partial:m1439_14 +# 1440| v1440_1(void) = NoOp : +# 1440| r1440_2(glval) = VariableAddress[d2] : +# 1440| r1440_3(glval) = FunctionAddress[~destructor_only] : +# 1440| v1440_4(void) = Call[~destructor_only] : func:r1440_3, this:r1440_2 +# 1440| m1440_5(unknown) = ^CallSideEffect : ~m1439_15 +# 1440| m1440_6(unknown) = Chi : total:m1439_15, partial:m1440_5 +# 1440| v1440_7(void) = ^IndirectReadSideEffect[-1] : &:r1440_2, ~m1440_6 +# 1440| m1440_8(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1440_2 +# 1440| m1440_9(unknown) = Chi : total:m1440_6, partial:m1440_8 +# 1440| r1440_10(glval) = CopyValue : r1432_2 +# 1440| r1440_11(glval) = FunctionAddress[~destructor_only] : +# 1440| v1440_12(void) = Call[~destructor_only] : func:r1440_11, this:r1440_10 +# 1440| m1440_13(unknown) = ^CallSideEffect : ~m1440_9 +# 1440| m1440_14(unknown) = Chi : total:m1440_9, partial:m1440_13 +# 1440| v1440_15(void) = ^IndirectReadSideEffect[-1] : &:r1440_10, ~m1440_14 +# 1440| m1440_16(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1440_10 +# 1440| m1440_17(unknown) = Chi : total:m1440_14, partial:m1440_16 +# 1440| r1440_18(glval) = VariableAddress[d] : +# 1440| r1440_19(glval) = FunctionAddress[~destructor_only] : +# 1440| v1440_20(void) = Call[~destructor_only] : func:r1440_19, this:r1440_18 +# 1440| m1440_21(unknown) = ^CallSideEffect : ~m1440_17 +# 1440| m1440_22(unknown) = Chi : total:m1440_17, partial:m1440_21 +# 1440| v1440_23(void) = ^IndirectReadSideEffect[-1] : &:r1440_18, ~m1440_22 +# 1440| m1440_24(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1440_18 +# 1440| m1440_25(unknown) = Chi : total:m1440_22, partial:m1440_24 +# 1430| v1430_5(void) = ReturnVoid : +# 1430| v1430_6(void) = AliasedUse : ~m1440_22 +# 1430| v1430_7(void) = ExitFunction : -# 1440| void temporary_copy_constructor() -# 1440| Block 0 -# 1440| v1440_1(void) = EnterFunction : -# 1440| m1440_2(unknown) = AliasedDefinition : -# 1440| m1440_3(unknown) = InitializeNonLocal : -# 1440| m1440_4(unknown) = Chi : total:m1440_2, partial:m1440_3 -# 1441| r1441_1(glval) = VariableAddress[d] : -# 1441| r1441_2(glval) = FunctionAddress[returnValue] : -# 1441| r1441_3(copy_constructor) = Call[returnValue] : func:r1441_2 -# 1441| m1441_4(unknown) = ^CallSideEffect : ~m1440_4 -# 1441| m1441_5(unknown) = Chi : total:m1440_4, partial:m1441_4 -# 1441| m1441_6(copy_constructor) = Store[d] : &:r1441_1, r1441_3 -# 1441| m1441_7(unknown) = Chi : total:m1441_5, partial:m1441_6 -# 1442| r1442_1(glval) = VariableAddress[rd] : -# 1442| r1442_2(glval) = VariableAddress[#temp1442:34] : -# 1442| r1442_3(glval) = FunctionAddress[returnValue] : -# 1442| r1442_4(copy_constructor) = Call[returnValue] : func:r1442_3 -# 1442| m1442_5(unknown) = ^CallSideEffect : ~m1441_7 -# 1442| m1442_6(unknown) = Chi : total:m1441_7, partial:m1442_5 -# 1442| m1442_7(copy_constructor) = Store[#temp1442:34] : &:r1442_2, r1442_4 -# 1442| r1442_8(glval) = Convert : r1442_2 -# 1442| r1442_9(copy_constructor &) = CopyValue : r1442_8 -# 1442| m1442_10(copy_constructor &) = Store[rd] : &:r1442_1, r1442_9 -# 1443| r1443_1(glval) = VariableAddress[d2] : -# 1443| m1443_2(copy_constructor) = Uninitialized[d2] : &:r1443_1 -# 1443| m1443_3(unknown) = Chi : total:m1442_6, partial:m1443_2 -# 1443| r1443_4(glval) = FunctionAddress[copy_constructor] : -# 1443| v1443_5(void) = Call[copy_constructor] : func:r1443_4, this:r1443_1 -# 1443| m1443_6(unknown) = ^CallSideEffect : ~m1443_3 -# 1443| m1443_7(unknown) = Chi : total:m1443_3, partial:m1443_6 -# 1443| m1443_8(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1443_1 -# 1443| m1443_9(unknown) = Chi : total:m1443_7, partial:m1443_8 -# 1444| r1444_1(glval) = FunctionAddress[acceptRef] : -# 1444| r1444_2(glval) = VariableAddress[d] : -# 1444| r1444_3(glval) = Convert : r1444_2 -# 1444| r1444_4(copy_constructor &) = CopyValue : r1444_3 -# 1444| v1444_5(void) = Call[acceptRef] : func:r1444_1, 0:r1444_4 -# 1444| m1444_6(unknown) = ^CallSideEffect : ~m1443_9 -# 1444| m1444_7(unknown) = Chi : total:m1443_9, partial:m1444_6 -# 1444| v1444_8(void) = ^BufferReadSideEffect[0] : &:r1444_4, ~m1444_7 -# 1445| r1445_1(glval) = FunctionAddress[acceptValue] : -# 1445| r1445_2(glval) = VariableAddress[#temp1445:17] : -# 1445| m1445_3(copy_constructor) = Uninitialized[#temp1445:17] : &:r1445_2 -# 1445| m1445_4(unknown) = Chi : total:m1444_7, partial:m1445_3 -# 1445| r1445_5(glval) = FunctionAddress[copy_constructor] : -# 1445| r1445_6(glval) = VariableAddress[d] : -# 1445| r1445_7(glval) = Convert : r1445_6 -# 1445| r1445_8(copy_constructor &) = CopyValue : r1445_7 -# 1445| v1445_9(void) = Call[copy_constructor] : func:r1445_5, this:r1445_2, 0:r1445_8 -# 1445| m1445_10(unknown) = ^CallSideEffect : ~m1445_4 -# 1445| m1445_11(unknown) = Chi : total:m1445_4, partial:m1445_10 -# 1445| v1445_12(void) = ^BufferReadSideEffect[0] : &:r1445_8, ~m1445_11 -# 1445| m1445_13(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1445_2 -# 1445| m1445_14(unknown) = Chi : total:m1445_11, partial:m1445_13 -# 1445| r1445_15(copy_constructor) = Load[#temp1445:17] : &:r1445_2, ~m1445_14 -# 1445| v1445_16(void) = Call[acceptValue] : func:r1445_1, 0:r1445_15 -# 1445| m1445_17(unknown) = ^CallSideEffect : ~m1445_14 -# 1445| m1445_18(unknown) = Chi : total:m1445_14, partial:m1445_17 -# 1446| r1446_1(glval) = VariableAddress[#temp1446:5] : -# 1446| m1446_2(copy_constructor) = Uninitialized[#temp1446:5] : &:r1446_1 -# 1446| m1446_3(unknown) = Chi : total:m1445_18, partial:m1446_2 -# 1446| r1446_4(glval) = FunctionAddress[copy_constructor] : -# 1446| v1446_5(void) = Call[copy_constructor] : func:r1446_4, this:r1446_1 -# 1446| m1446_6(unknown) = ^CallSideEffect : ~m1446_3 -# 1446| m1446_7(unknown) = Chi : total:m1446_3, partial:m1446_6 -# 1446| m1446_8(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1446_1 -# 1446| m1446_9(unknown) = Chi : total:m1446_7, partial:m1446_8 -# 1446| r1446_10(glval) = FunctionAddress[method] : -# 1446| v1446_11(void) = Call[method] : func:r1446_10, this:r1446_1 -# 1446| m1446_12(unknown) = ^CallSideEffect : ~m1446_9 -# 1446| m1446_13(unknown) = Chi : total:m1446_9, partial:m1446_12 -# 1446| v1446_14(void) = ^IndirectReadSideEffect[-1] : &:r1446_1, ~m1446_13 -# 1446| m1446_15(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1446_1 -# 1446| m1446_16(unknown) = Chi : total:m1446_13, partial:m1446_15 -# 1447| r1447_1(glval) = VariableAddress[#temp1447:5] : -# 1447| r1447_2(glval) = FunctionAddress[returnValue] : -# 1447| r1447_3(copy_constructor) = Call[returnValue] : func:r1447_2 -# 1447| m1447_4(unknown) = ^CallSideEffect : ~m1446_16 -# 1447| m1447_5(unknown) = Chi : total:m1446_16, partial:m1447_4 -# 1447| m1447_6(copy_constructor) = Store[#temp1447:5] : &:r1447_1, r1447_3 -# 1447| m1447_7(unknown) = Chi : total:m1447_5, partial:m1447_6 -# 1447| r1447_8(glval) = FunctionAddress[method] : -# 1447| v1447_9(void) = Call[method] : func:r1447_8, this:r1447_1 -# 1447| m1447_10(unknown) = ^CallSideEffect : ~m1447_7 -# 1447| m1447_11(unknown) = Chi : total:m1447_7, partial:m1447_10 -# 1447| v1447_12(void) = ^IndirectReadSideEffect[-1] : &:r1447_1, ~m1447_11 -# 1447| m1447_13(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1447_1 +# 1442| void temporary_copy_constructor() +# 1442| Block 0 +# 1442| v1442_1(void) = EnterFunction : +# 1442| m1442_2(unknown) = AliasedDefinition : +# 1442| m1442_3(unknown) = InitializeNonLocal : +# 1442| m1442_4(unknown) = Chi : total:m1442_2, partial:m1442_3 +# 1443| r1443_1(glval) = VariableAddress[d] : +# 1443| r1443_2(glval) = FunctionAddress[returnValue] : +# 1443| r1443_3(copy_constructor) = Call[returnValue] : func:r1443_2 +# 1443| m1443_4(unknown) = ^CallSideEffect : ~m1442_4 +# 1443| m1443_5(unknown) = Chi : total:m1442_4, partial:m1443_4 +# 1443| m1443_6(copy_constructor) = Store[d] : &:r1443_1, r1443_3 +# 1443| m1443_7(unknown) = Chi : total:m1443_5, partial:m1443_6 +# 1444| r1444_1(glval) = VariableAddress[rd] : +# 1444| r1444_2(glval) = VariableAddress[#temp1444:34] : +# 1444| r1444_3(glval) = FunctionAddress[returnValue] : +# 1444| r1444_4(copy_constructor) = Call[returnValue] : func:r1444_3 +# 1444| m1444_5(unknown) = ^CallSideEffect : ~m1443_7 +# 1444| m1444_6(unknown) = Chi : total:m1443_7, partial:m1444_5 +# 1444| m1444_7(copy_constructor) = Store[#temp1444:34] : &:r1444_2, r1444_4 +# 1444| r1444_8(glval) = Convert : r1444_2 +# 1444| r1444_9(copy_constructor &) = CopyValue : r1444_8 +# 1444| m1444_10(copy_constructor &) = Store[rd] : &:r1444_1, r1444_9 +# 1445| r1445_1(glval) = VariableAddress[d2] : +# 1445| m1445_2(copy_constructor) = Uninitialized[d2] : &:r1445_1 +# 1445| m1445_3(unknown) = Chi : total:m1444_6, partial:m1445_2 +# 1445| r1445_4(glval) = FunctionAddress[copy_constructor] : +# 1445| v1445_5(void) = Call[copy_constructor] : func:r1445_4, this:r1445_1 +# 1445| m1445_6(unknown) = ^CallSideEffect : ~m1445_3 +# 1445| m1445_7(unknown) = Chi : total:m1445_3, partial:m1445_6 +# 1445| m1445_8(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1445_1 +# 1445| m1445_9(unknown) = Chi : total:m1445_7, partial:m1445_8 +# 1446| r1446_1(glval) = FunctionAddress[acceptRef] : +# 1446| r1446_2(glval) = VariableAddress[d] : +# 1446| r1446_3(glval) = Convert : r1446_2 +# 1446| r1446_4(copy_constructor &) = CopyValue : r1446_3 +# 1446| v1446_5(void) = Call[acceptRef] : func:r1446_1, 0:r1446_4 +# 1446| m1446_6(unknown) = ^CallSideEffect : ~m1445_9 +# 1446| m1446_7(unknown) = Chi : total:m1445_9, partial:m1446_6 +# 1446| v1446_8(void) = ^BufferReadSideEffect[0] : &:r1446_4, ~m1446_7 +# 1447| r1447_1(glval) = FunctionAddress[acceptValue] : +# 1447| r1447_2(glval) = VariableAddress[#temp1447:17] : +# 1447| m1447_3(copy_constructor) = Uninitialized[#temp1447:17] : &:r1447_2 +# 1447| m1447_4(unknown) = Chi : total:m1446_7, partial:m1447_3 +# 1447| r1447_5(glval) = FunctionAddress[copy_constructor] : +# 1447| r1447_6(glval) = VariableAddress[d] : +# 1447| r1447_7(glval) = Convert : r1447_6 +# 1447| r1447_8(copy_constructor &) = CopyValue : r1447_7 +# 1447| v1447_9(void) = Call[copy_constructor] : func:r1447_5, this:r1447_2, 0:r1447_8 +# 1447| m1447_10(unknown) = ^CallSideEffect : ~m1447_4 +# 1447| m1447_11(unknown) = Chi : total:m1447_4, partial:m1447_10 +# 1447| v1447_12(void) = ^BufferReadSideEffect[0] : &:r1447_8, ~m1447_11 +# 1447| m1447_13(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1447_2 # 1447| m1447_14(unknown) = Chi : total:m1447_11, partial:m1447_13 +# 1447| r1447_15(copy_constructor) = Load[#temp1447:17] : &:r1447_2, ~m1447_14 +# 1447| v1447_16(void) = Call[acceptValue] : func:r1447_1, 0:r1447_15 +# 1447| m1447_17(unknown) = ^CallSideEffect : ~m1447_14 +# 1447| m1447_18(unknown) = Chi : total:m1447_14, partial:m1447_17 # 1448| r1448_1(glval) = VariableAddress[#temp1448:5] : -# 1448| r1448_2(glval) = FunctionAddress[defaultConstruct] : -# 1448| r1448_3(copy_constructor) = Call[defaultConstruct] : func:r1448_2 -# 1448| m1448_4(unknown) = ^CallSideEffect : ~m1447_14 -# 1448| m1448_5(unknown) = Chi : total:m1447_14, partial:m1448_4 -# 1448| m1448_6(copy_constructor) = Store[#temp1448:5] : &:r1448_1, r1448_3 -# 1450| r1450_1(glval) = VariableAddress[y] : -# 1450| r1450_2(glval) = VariableAddress[#temp1450:13] : -# 1450| r1450_3(glval) = FunctionAddress[returnValue] : -# 1450| r1450_4(copy_constructor) = Call[returnValue] : func:r1450_3 -# 1450| m1450_5(unknown) = ^CallSideEffect : ~m1448_5 -# 1450| m1450_6(unknown) = Chi : total:m1448_5, partial:m1450_5 -# 1450| m1450_7(copy_constructor) = Store[#temp1450:13] : &:r1450_2, r1450_4 -# 1450| r1450_8(glval) = FieldAddress[y] : r1450_2 -# 1450| r1450_9(int) = Load[?] : &:r1450_8, ~m1450_7 -# 1450| m1450_10(int) = Store[y] : &:r1450_1, r1450_9 -# 1451| v1451_1(void) = NoOp : -# 1440| v1440_5(void) = ReturnVoid : -# 1440| v1440_6(void) = AliasedUse : ~m1450_6 -# 1440| v1440_7(void) = ExitFunction : +# 1448| m1448_2(copy_constructor) = Uninitialized[#temp1448:5] : &:r1448_1 +# 1448| m1448_3(unknown) = Chi : total:m1447_18, partial:m1448_2 +# 1448| r1448_4(glval) = FunctionAddress[copy_constructor] : +# 1448| v1448_5(void) = Call[copy_constructor] : func:r1448_4, this:r1448_1 +# 1448| m1448_6(unknown) = ^CallSideEffect : ~m1448_3 +# 1448| m1448_7(unknown) = Chi : total:m1448_3, partial:m1448_6 +# 1448| m1448_8(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1448_1 +# 1448| m1448_9(unknown) = Chi : total:m1448_7, partial:m1448_8 +# 1448| r1448_10(glval) = FunctionAddress[method] : +# 1448| v1448_11(void) = Call[method] : func:r1448_10, this:r1448_1 +# 1448| m1448_12(unknown) = ^CallSideEffect : ~m1448_9 +# 1448| m1448_13(unknown) = Chi : total:m1448_9, partial:m1448_12 +# 1448| v1448_14(void) = ^IndirectReadSideEffect[-1] : &:r1448_1, ~m1448_13 +# 1448| m1448_15(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1448_1 +# 1448| m1448_16(unknown) = Chi : total:m1448_13, partial:m1448_15 +# 1449| r1449_1(glval) = VariableAddress[#temp1449:5] : +# 1449| r1449_2(glval) = FunctionAddress[returnValue] : +# 1449| r1449_3(copy_constructor) = Call[returnValue] : func:r1449_2 +# 1449| m1449_4(unknown) = ^CallSideEffect : ~m1448_16 +# 1449| m1449_5(unknown) = Chi : total:m1448_16, partial:m1449_4 +# 1449| m1449_6(copy_constructor) = Store[#temp1449:5] : &:r1449_1, r1449_3 +# 1449| m1449_7(unknown) = Chi : total:m1449_5, partial:m1449_6 +# 1449| r1449_8(glval) = FunctionAddress[method] : +# 1449| v1449_9(void) = Call[method] : func:r1449_8, this:r1449_1 +# 1449| m1449_10(unknown) = ^CallSideEffect : ~m1449_7 +# 1449| m1449_11(unknown) = Chi : total:m1449_7, partial:m1449_10 +# 1449| v1449_12(void) = ^IndirectReadSideEffect[-1] : &:r1449_1, ~m1449_11 +# 1449| m1449_13(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1449_1 +# 1449| m1449_14(unknown) = Chi : total:m1449_11, partial:m1449_13 +# 1450| r1450_1(glval) = VariableAddress[#temp1450:5] : +# 1450| r1450_2(glval) = FunctionAddress[defaultConstruct] : +# 1450| r1450_3(copy_constructor) = Call[defaultConstruct] : func:r1450_2 +# 1450| m1450_4(unknown) = ^CallSideEffect : ~m1449_14 +# 1450| m1450_5(unknown) = Chi : total:m1449_14, partial:m1450_4 +# 1450| m1450_6(copy_constructor) = Store[#temp1450:5] : &:r1450_1, r1450_3 +# 1452| r1452_1(glval) = VariableAddress[y] : +# 1452| r1452_2(glval) = VariableAddress[#temp1452:13] : +# 1452| r1452_3(glval) = FunctionAddress[returnValue] : +# 1452| r1452_4(copy_constructor) = Call[returnValue] : func:r1452_3 +# 1452| m1452_5(unknown) = ^CallSideEffect : ~m1450_5 +# 1452| m1452_6(unknown) = Chi : total:m1450_5, partial:m1452_5 +# 1452| m1452_7(copy_constructor) = Store[#temp1452:13] : &:r1452_2, r1452_4 +# 1452| r1452_8(glval) = FieldAddress[y] : r1452_2 +# 1452| r1452_9(int) = Load[?] : &:r1452_8, ~m1452_7 +# 1452| m1452_10(int) = Store[y] : &:r1452_1, r1452_9 +# 1453| v1453_1(void) = NoOp : +# 1442| v1442_5(void) = ReturnVoid : +# 1442| v1442_6(void) = AliasedUse : ~m1452_6 +# 1442| v1442_7(void) = ExitFunction : -# 1453| void temporary_point() -# 1453| Block 0 -# 1453| v1453_1(void) = EnterFunction : -# 1453| m1453_2(unknown) = AliasedDefinition : -# 1453| m1453_3(unknown) = InitializeNonLocal : -# 1453| m1453_4(unknown) = Chi : total:m1453_2, partial:m1453_3 -# 1454| r1454_1(glval) = VariableAddress[p] : -# 1454| r1454_2(glval) = FunctionAddress[returnValue] : -# 1454| r1454_3(Point) = Call[returnValue] : func:r1454_2 -# 1454| m1454_4(unknown) = ^CallSideEffect : ~m1453_4 -# 1454| m1454_5(unknown) = Chi : total:m1453_4, partial:m1454_4 -# 1454| m1454_6(Point) = Store[p] : &:r1454_1, r1454_3 -# 1454| m1454_7(unknown) = Chi : total:m1454_5, partial:m1454_6 -# 1455| r1455_1(glval) = VariableAddress[rp] : -# 1455| r1455_2(glval) = VariableAddress[#temp1455:23] : -# 1455| r1455_3(glval) = FunctionAddress[returnValue] : -# 1455| r1455_4(Point) = Call[returnValue] : func:r1455_3 -# 1455| m1455_5(unknown) = ^CallSideEffect : ~m1454_7 -# 1455| m1455_6(unknown) = Chi : total:m1454_7, partial:m1455_5 -# 1455| m1455_7(Point) = Store[#temp1455:23] : &:r1455_2, r1455_4 -# 1455| r1455_8(glval) = Convert : r1455_2 -# 1455| r1455_9(Point &) = CopyValue : r1455_8 -# 1455| m1455_10(Point &) = Store[rp] : &:r1455_1, r1455_9 -# 1457| r1457_1(glval) = FunctionAddress[acceptRef] : -# 1457| r1457_2(glval) = VariableAddress[p] : -# 1457| r1457_3(glval) = Convert : r1457_2 -# 1457| r1457_4(Point &) = CopyValue : r1457_3 -# 1457| v1457_5(void) = Call[acceptRef] : func:r1457_1, 0:r1457_4 -# 1457| m1457_6(unknown) = ^CallSideEffect : ~m1455_6 -# 1457| m1457_7(unknown) = Chi : total:m1455_6, partial:m1457_6 -# 1457| v1457_8(void) = ^BufferReadSideEffect[0] : &:r1457_4, ~m1457_7 -# 1458| r1458_1(glval) = FunctionAddress[acceptValue] : -# 1458| r1458_2(glval) = VariableAddress[p] : -# 1458| r1458_3(Point) = Load[p] : &:r1458_2, ~m1457_7 -# 1458| v1458_4(void) = Call[acceptValue] : func:r1458_1, 0:r1458_3 -# 1458| m1458_5(unknown) = ^CallSideEffect : ~m1457_7 -# 1458| m1458_6(unknown) = Chi : total:m1457_7, partial:m1458_5 -# 1459| r1459_1(int) = Constant[0] : -# 1460| r1460_1(glval) = VariableAddress[y] : -# 1460| r1460_2(glval) = FunctionAddress[returnValue] : -# 1460| r1460_3(Point) = Call[returnValue] : func:r1460_2 -# 1460| m1460_4(unknown) = ^CallSideEffect : ~m1458_6 -# 1460| m1460_5(unknown) = Chi : total:m1458_6, partial:m1460_4 -# 1460| r1460_6(glval) = VariableAddress[#temp1460:13] : -# 1460| m1460_7(Point) = Store[#temp1460:13] : &:r1460_6, r1460_3 -# 1460| r1460_8(glval) = FieldAddress[y] : r1460_6 -# 1460| r1460_9(int) = Load[?] : &:r1460_8, ~m1460_7 -# 1460| m1460_10(int) = Store[y] : &:r1460_1, r1460_9 -# 1462| r1462_1(glval) = FunctionAddress[defaultConstruct] : -# 1462| r1462_2(Point) = Call[defaultConstruct] : func:r1462_1 -# 1462| m1462_3(unknown) = ^CallSideEffect : ~m1460_5 -# 1462| m1462_4(unknown) = Chi : total:m1460_5, partial:m1462_3 -# 1463| v1463_1(void) = NoOp : -# 1453| v1453_5(void) = ReturnVoid : -# 1453| v1453_6(void) = AliasedUse : ~m1462_4 -# 1453| v1453_7(void) = ExitFunction : +# 1455| void temporary_point() +# 1455| Block 0 +# 1455| v1455_1(void) = EnterFunction : +# 1455| m1455_2(unknown) = AliasedDefinition : +# 1455| m1455_3(unknown) = InitializeNonLocal : +# 1455| m1455_4(unknown) = Chi : total:m1455_2, partial:m1455_3 +# 1456| r1456_1(glval) = VariableAddress[p] : +# 1456| r1456_2(glval) = FunctionAddress[returnValue] : +# 1456| r1456_3(Point) = Call[returnValue] : func:r1456_2 +# 1456| m1456_4(unknown) = ^CallSideEffect : ~m1455_4 +# 1456| m1456_5(unknown) = Chi : total:m1455_4, partial:m1456_4 +# 1456| m1456_6(Point) = Store[p] : &:r1456_1, r1456_3 +# 1456| m1456_7(unknown) = Chi : total:m1456_5, partial:m1456_6 +# 1457| r1457_1(glval) = VariableAddress[rp] : +# 1457| r1457_2(glval) = VariableAddress[#temp1457:23] : +# 1457| r1457_3(glval) = FunctionAddress[returnValue] : +# 1457| r1457_4(Point) = Call[returnValue] : func:r1457_3 +# 1457| m1457_5(unknown) = ^CallSideEffect : ~m1456_7 +# 1457| m1457_6(unknown) = Chi : total:m1456_7, partial:m1457_5 +# 1457| m1457_7(Point) = Store[#temp1457:23] : &:r1457_2, r1457_4 +# 1457| r1457_8(glval) = Convert : r1457_2 +# 1457| r1457_9(Point &) = CopyValue : r1457_8 +# 1457| m1457_10(Point &) = Store[rp] : &:r1457_1, r1457_9 +# 1459| r1459_1(glval) = FunctionAddress[acceptRef] : +# 1459| r1459_2(glval) = VariableAddress[p] : +# 1459| r1459_3(glval) = Convert : r1459_2 +# 1459| r1459_4(Point &) = CopyValue : r1459_3 +# 1459| v1459_5(void) = Call[acceptRef] : func:r1459_1, 0:r1459_4 +# 1459| m1459_6(unknown) = ^CallSideEffect : ~m1457_6 +# 1459| m1459_7(unknown) = Chi : total:m1457_6, partial:m1459_6 +# 1459| v1459_8(void) = ^BufferReadSideEffect[0] : &:r1459_4, ~m1459_7 +# 1460| r1460_1(glval) = FunctionAddress[acceptValue] : +# 1460| r1460_2(glval) = VariableAddress[p] : +# 1460| r1460_3(Point) = Load[p] : &:r1460_2, ~m1459_7 +# 1460| v1460_4(void) = Call[acceptValue] : func:r1460_1, 0:r1460_3 +# 1460| m1460_5(unknown) = ^CallSideEffect : ~m1459_7 +# 1460| m1460_6(unknown) = Chi : total:m1459_7, partial:m1460_5 +# 1461| r1461_1(int) = Constant[0] : +# 1462| r1462_1(glval) = VariableAddress[y] : +# 1462| r1462_2(glval) = FunctionAddress[returnValue] : +# 1462| r1462_3(Point) = Call[returnValue] : func:r1462_2 +# 1462| m1462_4(unknown) = ^CallSideEffect : ~m1460_6 +# 1462| m1462_5(unknown) = Chi : total:m1460_6, partial:m1462_4 +# 1462| r1462_6(glval) = VariableAddress[#temp1462:13] : +# 1462| m1462_7(Point) = Store[#temp1462:13] : &:r1462_6, r1462_3 +# 1462| r1462_8(glval) = FieldAddress[y] : r1462_6 +# 1462| r1462_9(int) = Load[?] : &:r1462_8, ~m1462_7 +# 1462| m1462_10(int) = Store[y] : &:r1462_1, r1462_9 +# 1464| r1464_1(glval) = FunctionAddress[defaultConstruct] : +# 1464| r1464_2(Point) = Call[defaultConstruct] : func:r1464_1 +# 1464| m1464_3(unknown) = ^CallSideEffect : ~m1462_5 +# 1464| m1464_4(unknown) = Chi : total:m1462_5, partial:m1464_3 +# 1465| v1465_1(void) = NoOp : +# 1455| v1455_5(void) = ReturnVoid : +# 1455| v1455_6(void) = AliasedUse : ~m1464_4 +# 1455| v1455_7(void) = ExitFunction : -# 1470| void temporary_unusual_fields() -# 1470| Block 0 -# 1470| v1470_1(void) = EnterFunction : -# 1470| m1470_2(unknown) = AliasedDefinition : -# 1470| m1470_3(unknown) = InitializeNonLocal : -# 1470| m1470_4(unknown) = Chi : total:m1470_2, partial:m1470_3 -# 1471| r1471_1(glval) = VariableAddress[rx] : -# 1471| r1471_2(glval) = FunctionAddress[returnValue] : -# 1471| r1471_3(UnusualFields) = Call[returnValue] : func:r1471_2 -# 1471| m1471_4(unknown) = ^CallSideEffect : ~m1470_4 -# 1471| m1471_5(unknown) = Chi : total:m1470_4, partial:m1471_4 -# 1471| r1471_6(glval) = VariableAddress[#temp1471:21] : -# 1471| m1471_7(UnusualFields) = Store[#temp1471:21] : &:r1471_6, r1471_3 -# 1471| r1471_8(glval) = FieldAddress[r] : r1471_6 -# 1471| r1471_9(int &) = Load[?] : &:r1471_8, ~m1471_7 -# 1471| r1471_10(glval) = CopyValue : r1471_9 -# 1471| r1471_11(glval) = Convert : r1471_10 -# 1471| r1471_12(int &) = CopyValue : r1471_11 -# 1471| m1471_13(int &) = Store[rx] : &:r1471_1, r1471_12 -# 1472| r1472_1(glval) = VariableAddress[x] : -# 1472| r1472_2(glval) = FunctionAddress[returnValue] : -# 1472| r1472_3(UnusualFields) = Call[returnValue] : func:r1472_2 -# 1472| m1472_4(unknown) = ^CallSideEffect : ~m1471_5 -# 1472| m1472_5(unknown) = Chi : total:m1471_5, partial:m1472_4 -# 1472| r1472_6(glval) = VariableAddress[#temp1472:13] : -# 1472| m1472_7(UnusualFields) = Store[#temp1472:13] : &:r1472_6, r1472_3 -# 1472| r1472_8(glval) = FieldAddress[r] : r1472_6 -# 1472| r1472_9(int &) = Load[?] : &:r1472_8, ~m1472_7 -# 1472| r1472_10(int) = Load[?] : &:r1472_9, ~m1472_5 -# 1472| m1472_11(int) = Store[x] : &:r1472_1, r1472_10 -# 1474| r1474_1(glval) = VariableAddress[rf] : +# 1472| void temporary_unusual_fields() +# 1472| Block 0 +# 1472| v1472_1(void) = EnterFunction : +# 1472| m1472_2(unknown) = AliasedDefinition : +# 1472| m1472_3(unknown) = InitializeNonLocal : +# 1472| m1472_4(unknown) = Chi : total:m1472_2, partial:m1472_3 +# 1473| r1473_1(glval) = VariableAddress[rx] : +# 1473| r1473_2(glval) = FunctionAddress[returnValue] : +# 1473| r1473_3(UnusualFields) = Call[returnValue] : func:r1473_2 +# 1473| m1473_4(unknown) = ^CallSideEffect : ~m1472_4 +# 1473| m1473_5(unknown) = Chi : total:m1472_4, partial:m1473_4 +# 1473| r1473_6(glval) = VariableAddress[#temp1473:21] : +# 1473| m1473_7(UnusualFields) = Store[#temp1473:21] : &:r1473_6, r1473_3 +# 1473| r1473_8(glval) = FieldAddress[r] : r1473_6 +# 1473| r1473_9(int &) = Load[?] : &:r1473_8, ~m1473_7 +# 1473| r1473_10(glval) = CopyValue : r1473_9 +# 1473| r1473_11(glval) = Convert : r1473_10 +# 1473| r1473_12(int &) = CopyValue : r1473_11 +# 1473| m1473_13(int &) = Store[rx] : &:r1473_1, r1473_12 +# 1474| r1474_1(glval) = VariableAddress[x] : # 1474| r1474_2(glval) = FunctionAddress[returnValue] : # 1474| r1474_3(UnusualFields) = Call[returnValue] : func:r1474_2 -# 1474| m1474_4(unknown) = ^CallSideEffect : ~m1472_5 -# 1474| m1474_5(unknown) = Chi : total:m1472_5, partial:m1474_4 -# 1474| r1474_6(glval) = VariableAddress[#temp1474:23] : -# 1474| m1474_7(UnusualFields) = Store[#temp1474:23] : &:r1474_6, r1474_3 -# 1474| r1474_8(glval) = FieldAddress[a] : r1474_6 -# 1474| r1474_9(float *) = Convert : r1474_8 -# 1474| r1474_10(int) = Constant[3] : -# 1474| r1474_11(glval) = PointerAdd[4] : r1474_9, r1474_10 -# 1474| r1474_12(glval) = Convert : r1474_11 -# 1474| r1474_13(float &) = CopyValue : r1474_12 -# 1474| m1474_14(float &) = Store[rf] : &:r1474_1, r1474_13 -# 1475| r1475_1(glval) = VariableAddress[f] : -# 1475| r1475_2(glval) = FunctionAddress[returnValue] : -# 1475| r1475_3(UnusualFields) = Call[returnValue] : func:r1475_2 -# 1475| m1475_4(unknown) = ^CallSideEffect : ~m1474_5 -# 1475| m1475_5(unknown) = Chi : total:m1474_5, partial:m1475_4 -# 1475| r1475_6(glval) = VariableAddress[#temp1475:15] : -# 1475| m1475_7(UnusualFields) = Store[#temp1475:15] : &:r1475_6, r1475_3 -# 1475| r1475_8(glval) = FieldAddress[a] : r1475_6 -# 1475| r1475_9(float *) = Convert : r1475_8 -# 1475| r1475_10(int) = Constant[5] : -# 1475| r1475_11(glval) = PointerAdd[4] : r1475_9, r1475_10 -# 1475| r1475_12(float) = Load[?] : &:r1475_11, ~m1475_7 -# 1475| m1475_13(float) = Store[f] : &:r1475_1, r1475_12 -# 1476| v1476_1(void) = NoOp : -# 1470| v1470_5(void) = ReturnVoid : -# 1470| v1470_6(void) = AliasedUse : ~m1475_5 -# 1470| v1470_7(void) = ExitFunction : +# 1474| m1474_4(unknown) = ^CallSideEffect : ~m1473_5 +# 1474| m1474_5(unknown) = Chi : total:m1473_5, partial:m1474_4 +# 1474| r1474_6(glval) = VariableAddress[#temp1474:13] : +# 1474| m1474_7(UnusualFields) = Store[#temp1474:13] : &:r1474_6, r1474_3 +# 1474| r1474_8(glval) = FieldAddress[r] : r1474_6 +# 1474| r1474_9(int &) = Load[?] : &:r1474_8, ~m1474_7 +# 1474| r1474_10(int) = Load[?] : &:r1474_9, ~m1474_5 +# 1474| m1474_11(int) = Store[x] : &:r1474_1, r1474_10 +# 1476| r1476_1(glval) = VariableAddress[rf] : +# 1476| r1476_2(glval) = FunctionAddress[returnValue] : +# 1476| r1476_3(UnusualFields) = Call[returnValue] : func:r1476_2 +# 1476| m1476_4(unknown) = ^CallSideEffect : ~m1474_5 +# 1476| m1476_5(unknown) = Chi : total:m1474_5, partial:m1476_4 +# 1476| r1476_6(glval) = VariableAddress[#temp1476:23] : +# 1476| m1476_7(UnusualFields) = Store[#temp1476:23] : &:r1476_6, r1476_3 +# 1476| r1476_8(glval) = FieldAddress[a] : r1476_6 +# 1476| r1476_9(float *) = Convert : r1476_8 +# 1476| r1476_10(int) = Constant[3] : +# 1476| r1476_11(glval) = PointerAdd[4] : r1476_9, r1476_10 +# 1476| r1476_12(glval) = Convert : r1476_11 +# 1476| r1476_13(float &) = CopyValue : r1476_12 +# 1476| m1476_14(float &) = Store[rf] : &:r1476_1, r1476_13 +# 1477| r1477_1(glval) = VariableAddress[f] : +# 1477| r1477_2(glval) = FunctionAddress[returnValue] : +# 1477| r1477_3(UnusualFields) = Call[returnValue] : func:r1477_2 +# 1477| m1477_4(unknown) = ^CallSideEffect : ~m1476_5 +# 1477| m1477_5(unknown) = Chi : total:m1476_5, partial:m1477_4 +# 1477| r1477_6(glval) = VariableAddress[#temp1477:15] : +# 1477| m1477_7(UnusualFields) = Store[#temp1477:15] : &:r1477_6, r1477_3 +# 1477| r1477_8(glval) = FieldAddress[a] : r1477_6 +# 1477| r1477_9(float *) = Convert : r1477_8 +# 1477| r1477_10(int) = Constant[5] : +# 1477| r1477_11(glval) = PointerAdd[4] : r1477_9, r1477_10 +# 1477| r1477_12(float) = Load[?] : &:r1477_11, ~m1477_7 +# 1477| m1477_13(float) = Store[f] : &:r1477_1, r1477_12 +# 1478| v1478_1(void) = NoOp : +# 1472| v1472_5(void) = ReturnVoid : +# 1472| v1472_6(void) = AliasedUse : ~m1477_5 +# 1472| v1472_7(void) = ExitFunction : -# 1492| void temporary_hierarchy() -# 1492| Block 0 -# 1492| v1492_1(void) = EnterFunction : -# 1492| m1492_2(unknown) = AliasedDefinition : -# 1492| m1492_3(unknown) = InitializeNonLocal : -# 1492| m1492_4(unknown) = Chi : total:m1492_2, partial:m1492_3 -# 1493| r1493_1(glval) = VariableAddress[b] : +# 1494| void temporary_hierarchy() +# 1494| Block 0 +# 1494| v1494_1(void) = EnterFunction : +# 1494| m1494_2(unknown) = AliasedDefinition : +# 1494| m1494_3(unknown) = InitializeNonLocal : +# 1494| m1494_4(unknown) = Chi : total:m1494_2, partial:m1494_3 +# 1495| r1495_1(glval) = VariableAddress[b] : #-----| r0_1(glval) = VariableAddress[#temp0:0] : -# 1493| r1493_2(glval) = FunctionAddress[returnValue] : -# 1493| r1493_3(POD_Middle) = Call[returnValue] : func:r1493_2 -# 1493| m1493_4(unknown) = ^CallSideEffect : ~m1492_4 -# 1493| m1493_5(unknown) = Chi : total:m1492_4, partial:m1493_4 -# 1493| m1493_6(POD_Middle) = Store[#temp0:0] : &:r0_1, r1493_3 -#-----| r0_2(glval) = ConvertToNonVirtualBase[POD_Middle : POD_Base] : r0_1 -#-----| r0_3(POD_Base) = Load[?] : &:r0_2, ~m1493_6 -#-----| m0_4(POD_Base) = Store[b] : &:r1493_1, r0_3 -# 1494| r1494_1(glval) = VariableAddress[#temp1494:9] : -# 1494| r1494_2(glval) = FunctionAddress[returnValue] : -# 1494| r1494_3(POD_Derived) = Call[returnValue] : func:r1494_2 -# 1494| m1494_4(unknown) = ^CallSideEffect : ~m1493_5 -# 1494| m1494_5(unknown) = Chi : total:m1493_5, partial:m1494_4 -# 1494| m1494_6(POD_Derived) = Store[#temp1494:9] : &:r1494_1, r1494_3 -# 1494| r1494_7(glval) = ConvertToNonVirtualBase[POD_Derived : POD_Middle] : r1494_1 -# 1494| r1494_8(glval) = ConvertToNonVirtualBase[POD_Middle : POD_Base] : r1494_7 -# 1494| r1494_9(POD_Base) = Load[?] : &:r1494_8, ~m1494_6 -# 1494| r1494_10(glval) = VariableAddress[b] : -# 1494| m1494_11(POD_Base) = Store[b] : &:r1494_10, r1494_9 -# 1495| r1495_1(glval) = VariableAddress[x] : -#-----| r0_5(glval) = VariableAddress[#temp0:0] : # 1495| r1495_2(glval) = FunctionAddress[returnValue] : -# 1495| r1495_3(POD_Derived) = Call[returnValue] : func:r1495_2 -# 1495| m1495_4(unknown) = ^CallSideEffect : ~m1494_5 -# 1495| m1495_5(unknown) = Chi : total:m1494_5, partial:m1495_4 -# 1495| m1495_6(POD_Derived) = Store[#temp0:0] : &:r0_5, r1495_3 -#-----| r0_6(glval) = ConvertToNonVirtualBase[POD_Derived : POD_Middle] : r0_5 -#-----| r0_7(glval) = ConvertToNonVirtualBase[POD_Middle : POD_Base] : r0_6 -# 1495| r1495_7(glval) = FieldAddress[x] : r0_7 -# 1495| r1495_8(int) = Load[?] : &:r1495_7, ~m1495_6 -# 1495| m1495_9(int) = Store[x] : &:r1495_1, r1495_8 -# 1496| r1496_1(glval) = VariableAddress[f] : -#-----| r0_8(glval) = VariableAddress[#temp0:0] : +# 1495| r1495_3(POD_Middle) = Call[returnValue] : func:r1495_2 +# 1495| m1495_4(unknown) = ^CallSideEffect : ~m1494_4 +# 1495| m1495_5(unknown) = Chi : total:m1494_4, partial:m1495_4 +# 1495| m1495_6(POD_Middle) = Store[#temp0:0] : &:r0_1, r1495_3 +#-----| r0_2(glval) = ConvertToNonVirtualBase[POD_Middle : POD_Base] : r0_1 +#-----| r0_3(POD_Base) = Load[?] : &:r0_2, ~m1495_6 +#-----| m0_4(POD_Base) = Store[b] : &:r1495_1, r0_3 +# 1496| r1496_1(glval) = VariableAddress[#temp1496:9] : # 1496| r1496_2(glval) = FunctionAddress[returnValue] : # 1496| r1496_3(POD_Derived) = Call[returnValue] : func:r1496_2 # 1496| m1496_4(unknown) = ^CallSideEffect : ~m1495_5 # 1496| m1496_5(unknown) = Chi : total:m1495_5, partial:m1496_4 -# 1496| m1496_6(POD_Derived) = Store[#temp0:0] : &:r0_8, r1496_3 -# 1496| m1496_7(unknown) = Chi : total:m1496_5, partial:m1496_6 +# 1496| m1496_6(POD_Derived) = Store[#temp1496:9] : &:r1496_1, r1496_3 +# 1496| r1496_7(glval) = ConvertToNonVirtualBase[POD_Derived : POD_Middle] : r1496_1 +# 1496| r1496_8(glval) = ConvertToNonVirtualBase[POD_Middle : POD_Base] : r1496_7 +# 1496| r1496_9(POD_Base) = Load[?] : &:r1496_8, ~m1496_6 +# 1496| r1496_10(glval) = VariableAddress[b] : +# 1496| m1496_11(POD_Base) = Store[b] : &:r1496_10, r1496_9 +# 1497| r1497_1(glval) = VariableAddress[x] : +#-----| r0_5(glval) = VariableAddress[#temp0:0] : +# 1497| r1497_2(glval) = FunctionAddress[returnValue] : +# 1497| r1497_3(POD_Derived) = Call[returnValue] : func:r1497_2 +# 1497| m1497_4(unknown) = ^CallSideEffect : ~m1496_5 +# 1497| m1497_5(unknown) = Chi : total:m1496_5, partial:m1497_4 +# 1497| m1497_6(POD_Derived) = Store[#temp0:0] : &:r0_5, r1497_3 +#-----| r0_6(glval) = ConvertToNonVirtualBase[POD_Derived : POD_Middle] : r0_5 +#-----| r0_7(glval) = ConvertToNonVirtualBase[POD_Middle : POD_Base] : r0_6 +# 1497| r1497_7(glval) = FieldAddress[x] : r0_7 +# 1497| r1497_8(int) = Load[?] : &:r1497_7, ~m1497_6 +# 1497| m1497_9(int) = Store[x] : &:r1497_1, r1497_8 +# 1498| r1498_1(glval) = VariableAddress[f] : +#-----| r0_8(glval) = VariableAddress[#temp0:0] : +# 1498| r1498_2(glval) = FunctionAddress[returnValue] : +# 1498| r1498_3(POD_Derived) = Call[returnValue] : func:r1498_2 +# 1498| m1498_4(unknown) = ^CallSideEffect : ~m1497_5 +# 1498| m1498_5(unknown) = Chi : total:m1497_5, partial:m1498_4 +# 1498| m1498_6(POD_Derived) = Store[#temp0:0] : &:r0_8, r1498_3 +# 1498| m1498_7(unknown) = Chi : total:m1498_5, partial:m1498_6 #-----| r0_9(glval) = ConvertToNonVirtualBase[POD_Derived : POD_Middle] : r0_8 #-----| r0_10(glval) = ConvertToNonVirtualBase[POD_Middle : POD_Base] : r0_9 #-----| r0_11(glval) = Convert : r0_10 -# 1496| r1496_8(glval) = FunctionAddress[f] : -# 1496| r1496_9(float) = Call[f] : func:r1496_8, this:r0_11 -# 1496| m1496_10(unknown) = ^CallSideEffect : ~m1496_7 -# 1496| m1496_11(unknown) = Chi : total:m1496_7, partial:m1496_10 -#-----| v0_12(void) = ^IndirectReadSideEffect[-1] : &:r0_11, ~m1496_11 -# 1496| m1496_12(float) = Store[f] : &:r1496_1, r1496_9 -# 1497| v1497_1(void) = NoOp : -# 1492| v1492_5(void) = ReturnVoid : -# 1492| v1492_6(void) = AliasedUse : ~m1496_11 -# 1492| v1492_7(void) = ExitFunction : +# 1498| r1498_8(glval) = FunctionAddress[f] : +# 1498| r1498_9(float) = Call[f] : func:r1498_8, this:r0_11 +# 1498| m1498_10(unknown) = ^CallSideEffect : ~m1498_7 +# 1498| m1498_11(unknown) = Chi : total:m1498_7, partial:m1498_10 +#-----| v0_12(void) = ^IndirectReadSideEffect[-1] : &:r0_11, ~m1498_11 +# 1498| m1498_12(float) = Store[f] : &:r1498_1, r1498_9 +# 1499| v1499_1(void) = NoOp : +# 1494| v1494_5(void) = ReturnVoid : +# 1494| v1494_6(void) = AliasedUse : ~m1498_11 +# 1494| v1494_7(void) = ExitFunction : -# 1500| void Inheritance_Test_B::~Inheritance_Test_B() -# 1500| Block 0 -# 1500| v1500_1(void) = EnterFunction : -# 1500| m1500_2(unknown) = AliasedDefinition : -# 1500| m1500_3(unknown) = InitializeNonLocal : -# 1500| m1500_4(unknown) = Chi : total:m1500_2, partial:m1500_3 -# 1500| r1500_5(glval) = VariableAddress[#this] : -# 1500| m1500_6(glval) = InitializeParameter[#this] : &:r1500_5 -# 1500| r1500_7(glval) = Load[#this] : &:r1500_5, m1500_6 -# 1500| m1500_8(Inheritance_Test_B) = InitializeIndirection[#this] : &:r1500_7 -# 1500| v1500_9(void) = NoOp : -# 1500| v1500_10(void) = ReturnIndirection[#this] : &:r1500_7, m1500_8 -# 1500| v1500_11(void) = ReturnVoid : -# 1500| v1500_12(void) = AliasedUse : m1500_3 -# 1500| v1500_13(void) = ExitFunction : +# 1502| void Inheritance_Test_B::~Inheritance_Test_B() +# 1502| Block 0 +# 1502| v1502_1(void) = EnterFunction : +# 1502| m1502_2(unknown) = AliasedDefinition : +# 1502| m1502_3(unknown) = InitializeNonLocal : +# 1502| m1502_4(unknown) = Chi : total:m1502_2, partial:m1502_3 +# 1502| r1502_5(glval) = VariableAddress[#this] : +# 1502| m1502_6(glval) = InitializeParameter[#this] : &:r1502_5 +# 1502| r1502_7(glval) = Load[#this] : &:r1502_5, m1502_6 +# 1502| m1502_8(Inheritance_Test_B) = InitializeIndirection[#this] : &:r1502_7 +# 1502| v1502_9(void) = NoOp : +# 1502| v1502_10(void) = ReturnIndirection[#this] : &:r1502_7, m1502_8 +# 1502| v1502_11(void) = ReturnVoid : +# 1502| v1502_12(void) = AliasedUse : m1502_3 +# 1502| v1502_13(void) = ExitFunction : -# 1506| void Inheritance_Test_A::Inheritance_Test_A() -# 1506| Block 0 -# 1506| v1506_1(void) = EnterFunction : -# 1506| m1506_2(unknown) = AliasedDefinition : -# 1506| m1506_3(unknown) = InitializeNonLocal : -# 1506| m1506_4(unknown) = Chi : total:m1506_2, partial:m1506_3 -# 1506| r1506_5(glval) = VariableAddress[#this] : -# 1506| m1506_6(glval) = InitializeParameter[#this] : &:r1506_5 -# 1506| r1506_7(glval) = Load[#this] : &:r1506_5, m1506_6 -# 1506| m1506_8(Inheritance_Test_A) = InitializeIndirection[#this] : &:r1506_7 -# 1506| r1506_9(glval) = FieldAddress[x] : r1506_7 -# 1506| r1506_10(int) = Constant[42] : -# 1506| m1506_11(int) = Store[?] : &:r1506_9, r1506_10 -# 1506| m1506_12(unknown) = Chi : total:m1506_8, partial:m1506_11 -# 1507| r1507_1(int) = Constant[3] : -# 1507| r1507_2(glval) = VariableAddress[#this] : -# 1507| r1507_3(Inheritance_Test_A *) = Load[#this] : &:r1507_2, m1506_6 -# 1507| r1507_4(glval) = FieldAddress[y] : r1507_3 -# 1507| m1507_5(int) = Store[?] : &:r1507_4, r1507_1 -# 1507| m1507_6(unknown) = Chi : total:m1506_12, partial:m1507_5 -# 1508| v1508_1(void) = NoOp : -# 1506| v1506_13(void) = ReturnIndirection[#this] : &:r1506_7, m1507_6 -# 1506| v1506_14(void) = ReturnVoid : -# 1506| v1506_15(void) = AliasedUse : m1506_3 -# 1506| v1506_16(void) = ExitFunction : +# 1508| void Inheritance_Test_A::Inheritance_Test_A() +# 1508| Block 0 +# 1508| v1508_1(void) = EnterFunction : +# 1508| m1508_2(unknown) = AliasedDefinition : +# 1508| m1508_3(unknown) = InitializeNonLocal : +# 1508| m1508_4(unknown) = Chi : total:m1508_2, partial:m1508_3 +# 1508| r1508_5(glval) = VariableAddress[#this] : +# 1508| m1508_6(glval) = InitializeParameter[#this] : &:r1508_5 +# 1508| r1508_7(glval) = Load[#this] : &:r1508_5, m1508_6 +# 1508| m1508_8(Inheritance_Test_A) = InitializeIndirection[#this] : &:r1508_7 +# 1508| r1508_9(glval) = FieldAddress[x] : r1508_7 +# 1508| r1508_10(int) = Constant[42] : +# 1508| m1508_11(int) = Store[?] : &:r1508_9, r1508_10 +# 1508| m1508_12(unknown) = Chi : total:m1508_8, partial:m1508_11 +# 1509| r1509_1(int) = Constant[3] : +# 1509| r1509_2(glval) = VariableAddress[#this] : +# 1509| r1509_3(Inheritance_Test_A *) = Load[#this] : &:r1509_2, m1508_6 +# 1509| r1509_4(glval) = FieldAddress[y] : r1509_3 +# 1509| m1509_5(int) = Store[?] : &:r1509_4, r1509_1 +# 1509| m1509_6(unknown) = Chi : total:m1508_12, partial:m1509_5 +# 1510| v1510_1(void) = NoOp : +# 1508| v1508_13(void) = ReturnIndirection[#this] : &:r1508_7, m1509_6 +# 1508| v1508_14(void) = ReturnVoid : +# 1508| v1508_15(void) = AliasedUse : m1508_3 +# 1508| v1508_16(void) = ExitFunction : -# 1511| void array_structured_binding() -# 1511| Block 0 -# 1511| v1511_1(void) = EnterFunction : -# 1511| m1511_2(unknown) = AliasedDefinition : -# 1511| m1511_3(unknown) = InitializeNonLocal : -# 1511| m1511_4(unknown) = Chi : total:m1511_2, partial:m1511_3 -# 1512| r1512_1(glval) = VariableAddress[xs] : -# 1512| m1512_2(int[2]) = Uninitialized[xs] : &:r1512_1 -# 1512| r1512_3(int) = Constant[0] : -# 1512| r1512_4(glval) = PointerAdd[4] : r1512_1, r1512_3 -# 1512| r1512_5(int) = Constant[1] : -# 1512| m1512_6(int) = Store[?] : &:r1512_4, r1512_5 -# 1512| m1512_7(int[2]) = Chi : total:m1512_2, partial:m1512_6 -# 1512| r1512_8(int) = Constant[1] : -# 1512| r1512_9(glval) = PointerAdd[4] : r1512_1, r1512_8 -# 1512| r1512_10(int) = Constant[2] : -# 1512| m1512_11(int) = Store[?] : &:r1512_9, r1512_10 -# 1512| m1512_12(int[2]) = Chi : total:m1512_7, partial:m1512_11 -# 1515| r1515_1(glval) = VariableAddress[(unnamed local variable)] : -# 1515| r1515_2(glval) = VariableAddress[xs] : -# 1515| r1515_3(int(&)[2]) = CopyValue : r1515_2 -# 1515| m1515_4(int(&)[2]) = Store[(unnamed local variable)] : &:r1515_1, r1515_3 -# 1515| r1515_5(glval) = VariableAddress[x0] : +# 1513| void array_structured_binding() +# 1513| Block 0 +# 1513| v1513_1(void) = EnterFunction : +# 1513| m1513_2(unknown) = AliasedDefinition : +# 1513| m1513_3(unknown) = InitializeNonLocal : +# 1513| m1513_4(unknown) = Chi : total:m1513_2, partial:m1513_3 +# 1514| r1514_1(glval) = VariableAddress[xs] : +# 1514| m1514_2(int[2]) = Uninitialized[xs] : &:r1514_1 +# 1514| r1514_3(int) = Constant[0] : +# 1514| r1514_4(glval) = PointerAdd[4] : r1514_1, r1514_3 +# 1514| r1514_5(int) = Constant[1] : +# 1514| m1514_6(int) = Store[?] : &:r1514_4, r1514_5 +# 1514| m1514_7(int[2]) = Chi : total:m1514_2, partial:m1514_6 +# 1514| r1514_8(int) = Constant[1] : +# 1514| r1514_9(glval) = PointerAdd[4] : r1514_1, r1514_8 +# 1514| r1514_10(int) = Constant[2] : +# 1514| m1514_11(int) = Store[?] : &:r1514_9, r1514_10 +# 1514| m1514_12(int[2]) = Chi : total:m1514_7, partial:m1514_11 +# 1517| r1517_1(glval) = VariableAddress[(unnamed local variable)] : +# 1517| r1517_2(glval) = VariableAddress[xs] : +# 1517| r1517_3(int(&)[2]) = CopyValue : r1517_2 +# 1517| m1517_4(int(&)[2]) = Store[(unnamed local variable)] : &:r1517_1, r1517_3 +# 1517| r1517_5(glval) = VariableAddress[x0] : #-----| r0_1(glval) = VariableAddress[(unnamed local variable)] : -#-----| r0_2(int(&)[2]) = Load[(unnamed local variable)] : &:r0_1, m1515_4 +#-----| r0_2(int(&)[2]) = Load[(unnamed local variable)] : &:r0_1, m1517_4 #-----| r0_3(glval) = CopyValue : r0_2 #-----| r0_4(int *) = Convert : r0_3 #-----| r0_5(unsigned long) = Constant[0] : #-----| r0_6(glval) = PointerAdd[4] : r0_4, r0_5 -#-----| m0_7(int &) = Store[x0] : &:r1515_5, r0_6 -# 1515| r1515_6(glval) = VariableAddress[x1] : +#-----| m0_7(int &) = Store[x0] : &:r1517_5, r0_6 +# 1517| r1517_6(glval) = VariableAddress[x1] : #-----| r0_8(glval) = VariableAddress[(unnamed local variable)] : -#-----| r0_9(int(&)[2]) = Load[(unnamed local variable)] : &:r0_8, m1515_4 +#-----| r0_9(int(&)[2]) = Load[(unnamed local variable)] : &:r0_8, m1517_4 #-----| r0_10(glval) = CopyValue : r0_9 #-----| r0_11(int *) = Convert : r0_10 #-----| r0_12(unsigned long) = Constant[1] : #-----| r0_13(glval) = PointerAdd[4] : r0_11, r0_12 -#-----| m0_14(int &) = Store[x1] : &:r1515_6, r0_13 -# 1516| r1516_1(int) = Constant[3] : -# 1516| r1516_2(glval) = VariableAddress[x1] : -# 1516| r1516_3(int &) = Load[x1] : &:r1516_2, m0_14 -# 1516| m1516_4(int) = Store[?] : &:r1516_3, r1516_1 -# 1516| m1516_5(int[2]) = Chi : total:m1512_12, partial:m1516_4 -# 1517| r1517_1(glval) = VariableAddress[rx1] : -# 1517| r1517_2(glval) = VariableAddress[x1] : -# 1517| r1517_3(int &) = Load[x1] : &:r1517_2, m0_14 -# 1517| r1517_4(int &) = CopyValue : r1517_3 -# 1517| m1517_5(int &) = Store[rx1] : &:r1517_1, r1517_4 -# 1518| r1518_1(glval) = VariableAddress[x] : +#-----| m0_14(int &) = Store[x1] : &:r1517_6, r0_13 +# 1518| r1518_1(int) = Constant[3] : # 1518| r1518_2(glval) = VariableAddress[x1] : # 1518| r1518_3(int &) = Load[x1] : &:r1518_2, m0_14 -# 1518| r1518_4(int) = Load[?] : &:r1518_3, m1516_4 -# 1518| m1518_5(int) = Store[x] : &:r1518_1, r1518_4 -# 1522| r1522_1(glval) = VariableAddress[unnamed_local_variable] : -# 1522| r1522_2(glval) = VariableAddress[xs] : -# 1522| r1522_3(int(&)[2]) = CopyValue : r1522_2 -# 1522| m1522_4(int(&)[2]) = Store[unnamed_local_variable] : &:r1522_1, r1522_3 -# 1523| r1523_1(glval) = VariableAddress[x0] : -# 1523| r1523_2(glval) = VariableAddress[unnamed_local_variable] : -# 1523| r1523_3(int(&)[2]) = Load[unnamed_local_variable] : &:r1523_2, m1522_4 -# 1523| r1523_4(glval) = CopyValue : r1523_3 -# 1523| r1523_5(int *) = Convert : r1523_4 -# 1523| r1523_6(int) = Constant[0] : -# 1523| r1523_7(glval) = PointerAdd[4] : r1523_5, r1523_6 -# 1523| r1523_8(int &) = CopyValue : r1523_7 -# 1523| m1523_9(int &) = Store[x0] : &:r1523_1, r1523_8 -# 1524| r1524_1(glval) = VariableAddress[x1] : -# 1524| r1524_2(glval) = VariableAddress[unnamed_local_variable] : -# 1524| r1524_3(int(&)[2]) = Load[unnamed_local_variable] : &:r1524_2, m1522_4 -# 1524| r1524_4(glval) = CopyValue : r1524_3 -# 1524| r1524_5(int *) = Convert : r1524_4 -# 1524| r1524_6(int) = Constant[1] : -# 1524| r1524_7(glval) = PointerAdd[4] : r1524_5, r1524_6 -# 1524| r1524_8(int &) = CopyValue : r1524_7 -# 1524| m1524_9(int &) = Store[x1] : &:r1524_1, r1524_8 -# 1525| r1525_1(int) = Constant[3] : -# 1525| r1525_2(glval) = VariableAddress[x1] : -# 1525| r1525_3(int &) = Load[x1] : &:r1525_2, m1524_9 -# 1525| r1525_4(glval) = CopyValue : r1525_3 -# 1525| m1525_5(int) = Store[?] : &:r1525_4, r1525_1 -# 1525| m1525_6(int[2]) = Chi : total:m1516_5, partial:m1525_5 -# 1526| r1526_1(glval) = VariableAddress[rx1] : -# 1526| r1526_2(glval) = VariableAddress[x1] : -# 1526| r1526_3(int &) = Load[x1] : &:r1526_2, m1524_9 -# 1526| r1526_4(glval) = CopyValue : r1526_3 -# 1526| r1526_5(int &) = CopyValue : r1526_4 -# 1526| m1526_6(int &) = Store[rx1] : &:r1526_1, r1526_5 -# 1527| r1527_1(glval) = VariableAddress[x] : +# 1518| m1518_4(int) = Store[?] : &:r1518_3, r1518_1 +# 1518| m1518_5(int[2]) = Chi : total:m1514_12, partial:m1518_4 +# 1519| r1519_1(glval) = VariableAddress[rx1] : +# 1519| r1519_2(glval) = VariableAddress[x1] : +# 1519| r1519_3(int &) = Load[x1] : &:r1519_2, m0_14 +# 1519| r1519_4(int &) = CopyValue : r1519_3 +# 1519| m1519_5(int &) = Store[rx1] : &:r1519_1, r1519_4 +# 1520| r1520_1(glval) = VariableAddress[x] : +# 1520| r1520_2(glval) = VariableAddress[x1] : +# 1520| r1520_3(int &) = Load[x1] : &:r1520_2, m0_14 +# 1520| r1520_4(int) = Load[?] : &:r1520_3, m1518_4 +# 1520| m1520_5(int) = Store[x] : &:r1520_1, r1520_4 +# 1524| r1524_1(glval) = VariableAddress[unnamed_local_variable] : +# 1524| r1524_2(glval) = VariableAddress[xs] : +# 1524| r1524_3(int(&)[2]) = CopyValue : r1524_2 +# 1524| m1524_4(int(&)[2]) = Store[unnamed_local_variable] : &:r1524_1, r1524_3 +# 1525| r1525_1(glval) = VariableAddress[x0] : +# 1525| r1525_2(glval) = VariableAddress[unnamed_local_variable] : +# 1525| r1525_3(int(&)[2]) = Load[unnamed_local_variable] : &:r1525_2, m1524_4 +# 1525| r1525_4(glval) = CopyValue : r1525_3 +# 1525| r1525_5(int *) = Convert : r1525_4 +# 1525| r1525_6(int) = Constant[0] : +# 1525| r1525_7(glval) = PointerAdd[4] : r1525_5, r1525_6 +# 1525| r1525_8(int &) = CopyValue : r1525_7 +# 1525| m1525_9(int &) = Store[x0] : &:r1525_1, r1525_8 +# 1526| r1526_1(glval) = VariableAddress[x1] : +# 1526| r1526_2(glval) = VariableAddress[unnamed_local_variable] : +# 1526| r1526_3(int(&)[2]) = Load[unnamed_local_variable] : &:r1526_2, m1524_4 +# 1526| r1526_4(glval) = CopyValue : r1526_3 +# 1526| r1526_5(int *) = Convert : r1526_4 +# 1526| r1526_6(int) = Constant[1] : +# 1526| r1526_7(glval) = PointerAdd[4] : r1526_5, r1526_6 +# 1526| r1526_8(int &) = CopyValue : r1526_7 +# 1526| m1526_9(int &) = Store[x1] : &:r1526_1, r1526_8 +# 1527| r1527_1(int) = Constant[3] : # 1527| r1527_2(glval) = VariableAddress[x1] : -# 1527| r1527_3(int &) = Load[x1] : &:r1527_2, m1524_9 -# 1527| r1527_4(int) = Load[?] : &:r1527_3, m1525_5 -# 1527| m1527_5(int) = Store[x] : &:r1527_1, r1527_4 -# 1529| v1529_1(void) = NoOp : -# 1511| v1511_5(void) = ReturnVoid : -# 1511| v1511_6(void) = AliasedUse : m1511_3 -# 1511| v1511_7(void) = ExitFunction : +# 1527| r1527_3(int &) = Load[x1] : &:r1527_2, m1526_9 +# 1527| r1527_4(glval) = CopyValue : r1527_3 +# 1527| m1527_5(int) = Store[?] : &:r1527_4, r1527_1 +# 1527| m1527_6(int[2]) = Chi : total:m1518_5, partial:m1527_5 +# 1528| r1528_1(glval) = VariableAddress[rx1] : +# 1528| r1528_2(glval) = VariableAddress[x1] : +# 1528| r1528_3(int &) = Load[x1] : &:r1528_2, m1526_9 +# 1528| r1528_4(glval) = CopyValue : r1528_3 +# 1528| r1528_5(int &) = CopyValue : r1528_4 +# 1528| m1528_6(int &) = Store[rx1] : &:r1528_1, r1528_5 +# 1529| r1529_1(glval) = VariableAddress[x] : +# 1529| r1529_2(glval) = VariableAddress[x1] : +# 1529| r1529_3(int &) = Load[x1] : &:r1529_2, m1526_9 +# 1529| r1529_4(int) = Load[?] : &:r1529_3, m1527_5 +# 1529| m1529_5(int) = Store[x] : &:r1529_1, r1529_4 +# 1531| v1531_1(void) = NoOp : +# 1513| v1513_5(void) = ReturnVoid : +# 1513| v1513_6(void) = AliasedUse : m1513_3 +# 1513| v1513_7(void) = ExitFunction : -# 1531| void StructuredBindingDataMemberMemberStruct::StructuredBindingDataMemberMemberStruct() -# 1531| Block 0 -# 1531| v1531_1(void) = EnterFunction : -# 1531| m1531_2(unknown) = AliasedDefinition : -# 1531| m1531_3(unknown) = InitializeNonLocal : -# 1531| m1531_4(unknown) = Chi : total:m1531_2, partial:m1531_3 -# 1531| r1531_5(glval) = VariableAddress[#this] : -# 1531| m1531_6(glval) = InitializeParameter[#this] : &:r1531_5 -# 1531| r1531_7(glval) = Load[#this] : &:r1531_5, m1531_6 -# 1531| m1531_8(StructuredBindingDataMemberMemberStruct) = InitializeIndirection[#this] : &:r1531_7 -# 1531| v1531_9(void) = NoOp : -# 1531| v1531_10(void) = ReturnIndirection[#this] : &:r1531_7, m1531_8 -# 1531| v1531_11(void) = ReturnVoid : -# 1531| v1531_12(void) = AliasedUse : m1531_3 -# 1531| v1531_13(void) = ExitFunction : +# 1533| void StructuredBindingDataMemberMemberStruct::StructuredBindingDataMemberMemberStruct() +# 1533| Block 0 +# 1533| v1533_1(void) = EnterFunction : +# 1533| m1533_2(unknown) = AliasedDefinition : +# 1533| m1533_3(unknown) = InitializeNonLocal : +# 1533| m1533_4(unknown) = Chi : total:m1533_2, partial:m1533_3 +# 1533| r1533_5(glval) = VariableAddress[#this] : +# 1533| m1533_6(glval) = InitializeParameter[#this] : &:r1533_5 +# 1533| r1533_7(glval) = Load[#this] : &:r1533_5, m1533_6 +# 1533| m1533_8(StructuredBindingDataMemberMemberStruct) = InitializeIndirection[#this] : &:r1533_7 +# 1533| v1533_9(void) = NoOp : +# 1533| v1533_10(void) = ReturnIndirection[#this] : &:r1533_7, m1533_8 +# 1533| v1533_11(void) = ReturnVoid : +# 1533| v1533_12(void) = AliasedUse : m1533_3 +# 1533| v1533_13(void) = ExitFunction : -# 1535| void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() -# 1535| Block 0 -# 1535| v1535_1(void) = EnterFunction : -# 1535| m1535_2(unknown) = AliasedDefinition : -# 1535| m1535_3(unknown) = InitializeNonLocal : -# 1535| m1535_4(unknown) = Chi : total:m1535_2, partial:m1535_3 -# 1535| r1535_5(glval) = VariableAddress[#this] : -# 1535| m1535_6(glval) = InitializeParameter[#this] : &:r1535_5 -# 1535| r1535_7(glval) = Load[#this] : &:r1535_5, m1535_6 -# 1535| m1535_8(StructuredBindingDataMemberStruct) = InitializeIndirection[#this] : &:r1535_7 -# 1535| v1535_9(void) = NoOp : -# 1535| v1535_10(void) = ReturnIndirection[#this] : &:r1535_7, m1535_8 -# 1535| v1535_11(void) = ReturnVoid : -# 1535| v1535_12(void) = AliasedUse : m1535_3 -# 1535| v1535_13(void) = ExitFunction : +# 1537| void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() +# 1537| Block 0 +# 1537| v1537_1(void) = EnterFunction : +# 1537| m1537_2(unknown) = AliasedDefinition : +# 1537| m1537_3(unknown) = InitializeNonLocal : +# 1537| m1537_4(unknown) = Chi : total:m1537_2, partial:m1537_3 +# 1537| r1537_5(glval) = VariableAddress[#this] : +# 1537| m1537_6(glval) = InitializeParameter[#this] : &:r1537_5 +# 1537| r1537_7(glval) = Load[#this] : &:r1537_5, m1537_6 +# 1537| m1537_8(StructuredBindingDataMemberStruct) = InitializeIndirection[#this] : &:r1537_7 +# 1537| v1537_9(void) = NoOp : +# 1537| v1537_10(void) = ReturnIndirection[#this] : &:r1537_7, m1537_8 +# 1537| v1537_11(void) = ReturnVoid : +# 1537| v1537_12(void) = AliasedUse : m1537_3 +# 1537| v1537_13(void) = ExitFunction : -# 1535| void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct(StructuredBindingDataMemberStruct const&) -# 1535| Block 0 -# 1535| v1535_1(void) = EnterFunction : -# 1535| m1535_2(unknown) = AliasedDefinition : -# 1535| m1535_3(unknown) = InitializeNonLocal : -# 1535| m1535_4(unknown) = Chi : total:m1535_2, partial:m1535_3 -# 1535| r1535_5(glval) = VariableAddress[#this] : -# 1535| m1535_6(glval) = InitializeParameter[#this] : &:r1535_5 -# 1535| r1535_7(glval) = Load[#this] : &:r1535_5, m1535_6 -# 1535| m1535_8(StructuredBindingDataMemberStruct) = InitializeIndirection[#this] : &:r1535_7 +# 1537| void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct(StructuredBindingDataMemberStruct const&) +# 1537| Block 0 +# 1537| v1537_1(void) = EnterFunction : +# 1537| m1537_2(unknown) = AliasedDefinition : +# 1537| m1537_3(unknown) = InitializeNonLocal : +# 1537| m1537_4(unknown) = Chi : total:m1537_2, partial:m1537_3 +# 1537| r1537_5(glval) = VariableAddress[#this] : +# 1537| m1537_6(glval) = InitializeParameter[#this] : &:r1537_5 +# 1537| r1537_7(glval) = Load[#this] : &:r1537_5, m1537_6 +# 1537| m1537_8(StructuredBindingDataMemberStruct) = InitializeIndirection[#this] : &:r1537_7 #-----| r0_1(glval) = VariableAddress[(unnamed parameter 0)] : #-----| m0_2(StructuredBindingDataMemberStruct &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r0_1, m0_2 #-----| m0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 1535| r1535_9(glval) = FieldAddress[i] : r1535_7 -# 1535| r1535_10(glval) = VariableAddress[(unnamed parameter 0)] : -# 1535| r1535_11(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1535_10, m0_2 -# 1535| r1535_12(glval) = CopyValue : r1535_11 -# 1535| r1535_13(glval) = FieldAddress[i] : r1535_12 -# 1535| r1535_14(int) = Load[?] : &:r1535_13, ~m0_4 -# 1535| m1535_15(int) = Store[?] : &:r1535_9, r1535_14 -# 1535| m1535_16(unknown) = Chi : total:m1535_8, partial:m1535_15 -# 1535| r1535_17(glval) = FieldAddress[d] : r1535_7 -# 1535| r1535_18(glval) = VariableAddress[(unnamed parameter 0)] : -# 1535| r1535_19(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1535_18, m0_2 -# 1535| r1535_20(glval) = CopyValue : r1535_19 -# 1535| r1535_21(glval) = FieldAddress[d] : r1535_20 -# 1535| r1535_22(double) = Load[?] : &:r1535_21, ~m0_4 -# 1535| m1535_23(double) = Store[?] : &:r1535_17, r1535_22 -# 1535| m1535_24(unknown) = Chi : total:m1535_16, partial:m1535_23 -# 1535| r1535_25(glval) = FieldAddress[b] : r1535_7 -# 1535| r1535_26(glval) = VariableAddress[(unnamed parameter 0)] : -# 1535| r1535_27(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1535_26, m0_2 -# 1535| r1535_28(glval) = CopyValue : r1535_27 -# 1535| r1535_29(glval) = FieldAddress[b] : r1535_28 -# 1535| r1535_30(unsigned int) = Load[?] : &:r1535_29, ~m0_4 -# 1535| m1535_31(unsigned int) = Store[?] : &:r1535_25, r1535_30 -# 1535| m1535_32(unknown) = Chi : total:m1535_24, partial:m1535_31 -# 1535| r1535_33(glval) = FieldAddress[r] : r1535_7 -# 1535| r1535_34(glval) = VariableAddress[(unnamed parameter 0)] : -# 1535| r1535_35(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1535_34, m0_2 -# 1535| r1535_36(glval) = CopyValue : r1535_35 -# 1535| r1535_37(glval) = FieldAddress[r] : r1535_36 -# 1535| r1535_38(int &) = Load[?] : &:r1535_37, ~m0_4 -# 1535| m1535_39(int &) = Store[?] : &:r1535_33, r1535_38 -# 1535| m1535_40(unknown) = Chi : total:m1535_32, partial:m1535_39 -# 1535| r1535_41(glval) = FieldAddress[p] : r1535_7 -# 1535| r1535_42(glval) = VariableAddress[(unnamed parameter 0)] : -# 1535| r1535_43(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1535_42, m0_2 -# 1535| r1535_44(glval) = CopyValue : r1535_43 -# 1535| r1535_45(glval) = FieldAddress[p] : r1535_44 -# 1535| r1535_46(int *) = Load[?] : &:r1535_45, ~m0_4 -# 1535| m1535_47(int *) = Store[?] : &:r1535_41, r1535_46 -# 1535| m1535_48(unknown) = Chi : total:m1535_40, partial:m1535_47 -# 1535| r1535_49(glval) = FieldAddress[xs] : r1535_7 -# 1535| r1535_50(glval) = VariableAddress[(unnamed parameter 0)] : -# 1535| r1535_51(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1535_50, m0_2 -# 1535| r1535_52(glval) = CopyValue : r1535_51 -# 1535| r1535_53(glval) = FieldAddress[xs] : r1535_52 -# 1535| r1535_54(int[2]) = Load[?] : &:r1535_53, ~m0_4 -# 1535| m1535_55(int[2]) = Store[?] : &:r1535_49, r1535_54 -# 1535| m1535_56(unknown) = Chi : total:m1535_48, partial:m1535_55 -# 1535| r1535_57(glval) = FieldAddress[r_alt] : r1535_7 -# 1535| r1535_58(glval) = VariableAddress[(unnamed parameter 0)] : -# 1535| r1535_59(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1535_58, m0_2 -# 1535| r1535_60(glval) = CopyValue : r1535_59 -# 1535| r1535_61(glval) = FieldAddress[r_alt] : r1535_60 -# 1535| r1535_62(int &) = Load[?] : &:r1535_61, ~m0_4 -# 1535| m1535_63(int &) = Store[?] : &:r1535_57, r1535_62 -# 1535| m1535_64(unknown) = Chi : total:m1535_56, partial:m1535_63 -# 1535| r1535_65(glval) = FieldAddress[m] : r1535_7 -# 1535| r1535_66(glval) = VariableAddress[(unnamed parameter 0)] : -# 1535| r1535_67(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1535_66, m0_2 -# 1535| r1535_68(glval) = CopyValue : r1535_67 -# 1535| r1535_69(glval) = FieldAddress[m] : r1535_68 -# 1535| r1535_70(StructuredBindingDataMemberMemberStruct) = Load[?] : &:r1535_69, ~m0_4 -# 1535| m1535_71(StructuredBindingDataMemberMemberStruct) = Store[?] : &:r1535_65, r1535_70 -# 1535| m1535_72(unknown) = Chi : total:m1535_64, partial:m1535_71 -# 1535| v1535_73(void) = NoOp : -# 1535| v1535_74(void) = ReturnIndirection[#this] : &:r1535_7, m1535_72 +# 1537| r1537_9(glval) = FieldAddress[i] : r1537_7 +# 1537| r1537_10(glval) = VariableAddress[(unnamed parameter 0)] : +# 1537| r1537_11(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1537_10, m0_2 +# 1537| r1537_12(glval) = CopyValue : r1537_11 +# 1537| r1537_13(glval) = FieldAddress[i] : r1537_12 +# 1537| r1537_14(int) = Load[?] : &:r1537_13, ~m0_4 +# 1537| m1537_15(int) = Store[?] : &:r1537_9, r1537_14 +# 1537| m1537_16(unknown) = Chi : total:m1537_8, partial:m1537_15 +# 1537| r1537_17(glval) = FieldAddress[d] : r1537_7 +# 1537| r1537_18(glval) = VariableAddress[(unnamed parameter 0)] : +# 1537| r1537_19(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1537_18, m0_2 +# 1537| r1537_20(glval) = CopyValue : r1537_19 +# 1537| r1537_21(glval) = FieldAddress[d] : r1537_20 +# 1537| r1537_22(double) = Load[?] : &:r1537_21, ~m0_4 +# 1537| m1537_23(double) = Store[?] : &:r1537_17, r1537_22 +# 1537| m1537_24(unknown) = Chi : total:m1537_16, partial:m1537_23 +# 1537| r1537_25(glval) = FieldAddress[b] : r1537_7 +# 1537| r1537_26(glval) = VariableAddress[(unnamed parameter 0)] : +# 1537| r1537_27(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1537_26, m0_2 +# 1537| r1537_28(glval) = CopyValue : r1537_27 +# 1537| r1537_29(glval) = FieldAddress[b] : r1537_28 +# 1537| r1537_30(unsigned int) = Load[?] : &:r1537_29, ~m0_4 +# 1537| m1537_31(unsigned int) = Store[?] : &:r1537_25, r1537_30 +# 1537| m1537_32(unknown) = Chi : total:m1537_24, partial:m1537_31 +# 1537| r1537_33(glval) = FieldAddress[r] : r1537_7 +# 1537| r1537_34(glval) = VariableAddress[(unnamed parameter 0)] : +# 1537| r1537_35(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1537_34, m0_2 +# 1537| r1537_36(glval) = CopyValue : r1537_35 +# 1537| r1537_37(glval) = FieldAddress[r] : r1537_36 +# 1537| r1537_38(int &) = Load[?] : &:r1537_37, ~m0_4 +# 1537| m1537_39(int &) = Store[?] : &:r1537_33, r1537_38 +# 1537| m1537_40(unknown) = Chi : total:m1537_32, partial:m1537_39 +# 1537| r1537_41(glval) = FieldAddress[p] : r1537_7 +# 1537| r1537_42(glval) = VariableAddress[(unnamed parameter 0)] : +# 1537| r1537_43(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1537_42, m0_2 +# 1537| r1537_44(glval) = CopyValue : r1537_43 +# 1537| r1537_45(glval) = FieldAddress[p] : r1537_44 +# 1537| r1537_46(int *) = Load[?] : &:r1537_45, ~m0_4 +# 1537| m1537_47(int *) = Store[?] : &:r1537_41, r1537_46 +# 1537| m1537_48(unknown) = Chi : total:m1537_40, partial:m1537_47 +# 1537| r1537_49(glval) = FieldAddress[xs] : r1537_7 +# 1537| r1537_50(glval) = VariableAddress[(unnamed parameter 0)] : +# 1537| r1537_51(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1537_50, m0_2 +# 1537| r1537_52(glval) = CopyValue : r1537_51 +# 1537| r1537_53(glval) = FieldAddress[xs] : r1537_52 +# 1537| r1537_54(int[2]) = Load[?] : &:r1537_53, ~m0_4 +# 1537| m1537_55(int[2]) = Store[?] : &:r1537_49, r1537_54 +# 1537| m1537_56(unknown) = Chi : total:m1537_48, partial:m1537_55 +# 1537| r1537_57(glval) = FieldAddress[r_alt] : r1537_7 +# 1537| r1537_58(glval) = VariableAddress[(unnamed parameter 0)] : +# 1537| r1537_59(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1537_58, m0_2 +# 1537| r1537_60(glval) = CopyValue : r1537_59 +# 1537| r1537_61(glval) = FieldAddress[r_alt] : r1537_60 +# 1537| r1537_62(int &) = Load[?] : &:r1537_61, ~m0_4 +# 1537| m1537_63(int &) = Store[?] : &:r1537_57, r1537_62 +# 1537| m1537_64(unknown) = Chi : total:m1537_56, partial:m1537_63 +# 1537| r1537_65(glval) = FieldAddress[m] : r1537_7 +# 1537| r1537_66(glval) = VariableAddress[(unnamed parameter 0)] : +# 1537| r1537_67(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1537_66, m0_2 +# 1537| r1537_68(glval) = CopyValue : r1537_67 +# 1537| r1537_69(glval) = FieldAddress[m] : r1537_68 +# 1537| r1537_70(StructuredBindingDataMemberMemberStruct) = Load[?] : &:r1537_69, ~m0_4 +# 1537| m1537_71(StructuredBindingDataMemberMemberStruct) = Store[?] : &:r1537_65, r1537_70 +# 1537| m1537_72(unknown) = Chi : total:m1537_64, partial:m1537_71 +# 1537| v1537_73(void) = NoOp : +# 1537| v1537_74(void) = ReturnIndirection[#this] : &:r1537_7, m1537_72 #-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, m0_4 -# 1535| v1535_75(void) = ReturnVoid : -# 1535| v1535_76(void) = AliasedUse : m1535_3 -# 1535| v1535_77(void) = ExitFunction : +# 1537| v1537_75(void) = ReturnVoid : +# 1537| v1537_76(void) = AliasedUse : m1537_3 +# 1537| v1537_77(void) = ExitFunction : -# 1548| void data_member_structured_binding() -# 1548| Block 0 -# 1548| v1548_1(void) = EnterFunction : -# 1548| m1548_2(unknown) = AliasedDefinition : -# 1548| m1548_3(unknown) = InitializeNonLocal : -# 1548| m1548_4(unknown) = Chi : total:m1548_2, partial:m1548_3 -# 1549| r1549_1(glval) = VariableAddress[s] : -# 1549| m1549_2(StructuredBindingDataMemberStruct) = Uninitialized[s] : &:r1549_1 -# 1549| r1549_3(glval) = FunctionAddress[StructuredBindingDataMemberStruct] : -# 1549| v1549_4(void) = Call[StructuredBindingDataMemberStruct] : func:r1549_3, this:r1549_1 -# 1549| m1549_5(unknown) = ^CallSideEffect : ~m1548_4 -# 1549| m1549_6(unknown) = Chi : total:m1548_4, partial:m1549_5 -# 1549| m1549_7(StructuredBindingDataMemberStruct) = ^IndirectMayWriteSideEffect[-1] : &:r1549_1 -# 1549| m1549_8(StructuredBindingDataMemberStruct) = Chi : total:m1549_2, partial:m1549_7 -# 1552| r1552_1(glval) = VariableAddress[(unnamed local variable)] : -# 1552| r1552_2(glval) = VariableAddress[s] : -# 1552| r1552_3(StructuredBindingDataMemberStruct) = Load[s] : &:r1552_2, m1549_8 -# 1552| m1552_4(StructuredBindingDataMemberStruct) = Store[(unnamed local variable)] : &:r1552_1, r1552_3 -# 1552| r1552_5(glval) = VariableAddress[i] : -# 1552| r1552_6(glval) = VariableAddress[(unnamed local variable)] : -# 1552| r1552_7(glval) = FieldAddress[i] : r1552_6 -# 1552| m1552_8(int &) = Store[i] : &:r1552_5, r1552_7 -# 1552| r1552_9(glval) = VariableAddress[d] : -# 1552| r1552_10(glval) = VariableAddress[(unnamed local variable)] : -# 1552| r1552_11(glval) = FieldAddress[d] : r1552_10 -# 1552| m1552_12(double &) = Store[d] : &:r1552_9, r1552_11 -# 1552| r1552_13(glval) = VariableAddress[b] : -# 1552| r1552_14(glval) = VariableAddress[(unnamed local variable)] : -# 1552| r1552_15(glval) = FieldAddress[b] : r1552_14 -# 1552| m1552_16(unsigned int &) = Store[b] : &:r1552_13, r1552_15 -# 1552| r1552_17(glval) = VariableAddress[r] : -# 1552| r1552_18(glval) = VariableAddress[(unnamed local variable)] : -# 1552| r1552_19(glval) = FieldAddress[r] : r1552_18 -# 1552| r1552_20(int &) = Load[?] : &:r1552_19, ~m1552_4 -# 1552| r1552_21(glval) = CopyValue : r1552_20 -# 1552| m1552_22(int &) = Store[r] : &:r1552_17, r1552_21 -# 1552| r1552_23(glval) = VariableAddress[p] : -# 1552| r1552_24(glval) = VariableAddress[(unnamed local variable)] : -# 1552| r1552_25(glval) = FieldAddress[p] : r1552_24 -# 1552| m1552_26(int *&) = Store[p] : &:r1552_23, r1552_25 -# 1552| r1552_27(glval) = VariableAddress[xs] : -# 1552| r1552_28(glval) = VariableAddress[(unnamed local variable)] : -# 1552| r1552_29(glval) = FieldAddress[xs] : r1552_28 -# 1552| m1552_30(int(&)[2]) = Store[xs] : &:r1552_27, r1552_29 -# 1552| r1552_31(glval) = VariableAddress[r_alt] : -# 1552| r1552_32(glval) = VariableAddress[(unnamed local variable)] : -# 1552| r1552_33(glval) = FieldAddress[r_alt] : r1552_32 -# 1552| r1552_34(int &) = Load[?] : &:r1552_33, ~m1552_4 -# 1552| r1552_35(glval) = CopyValue : r1552_34 -# 1552| m1552_36(int &) = Store[r_alt] : &:r1552_31, r1552_35 -# 1552| r1552_37(glval) = VariableAddress[m] : -# 1552| r1552_38(glval) = VariableAddress[(unnamed local variable)] : -# 1552| r1552_39(glval) = FieldAddress[m] : r1552_38 -# 1552| m1552_40(StructuredBindingDataMemberMemberStruct &) = Store[m] : &:r1552_37, r1552_39 -# 1553| r1553_1(double) = Constant[4.0] : -# 1553| r1553_2(glval) = VariableAddress[d] : -# 1553| r1553_3(double &) = Load[d] : &:r1553_2, m1552_12 -# 1553| m1553_4(double) = Store[?] : &:r1553_3, r1553_1 -# 1553| m1553_5(StructuredBindingDataMemberStruct) = Chi : total:m1552_4, partial:m1553_4 -# 1554| r1554_1(glval) = VariableAddress[rd] : -# 1554| r1554_2(glval) = VariableAddress[d] : -# 1554| r1554_3(double &) = Load[d] : &:r1554_2, m1552_12 -# 1554| r1554_4(double &) = CopyValue : r1554_3 -# 1554| m1554_5(double &) = Store[rd] : &:r1554_1, r1554_4 -# 1555| r1555_1(glval) = VariableAddress[v] : -# 1555| r1555_2(glval) = VariableAddress[i] : -# 1555| r1555_3(int &) = Load[i] : &:r1555_2, m1552_8 -# 1555| r1555_4(int) = Load[?] : &:r1555_3, ~m1552_4 -# 1555| m1555_5(int) = Store[v] : &:r1555_1, r1555_4 -# 1556| r1556_1(int) = Constant[5] : -# 1556| r1556_2(glval) = VariableAddress[r] : -# 1556| r1556_3(int &) = Load[r] : &:r1556_2, m1552_22 -# 1556| m1556_4(int) = Store[?] : &:r1556_3, r1556_1 -# 1556| m1556_5(unknown) = Chi : total:m1549_6, partial:m1556_4 -# 1557| r1557_1(int) = Constant[6] : -# 1557| r1557_2(glval) = VariableAddress[p] : -# 1557| r1557_3(int *&) = Load[p] : &:r1557_2, m1552_26 -# 1557| r1557_4(int *) = Load[?] : &:r1557_3, ~m1552_4 -# 1557| r1557_5(glval) = CopyValue : r1557_4 -# 1557| m1557_6(int) = Store[?] : &:r1557_5, r1557_1 -# 1557| m1557_7(unknown) = Chi : total:m1556_5, partial:m1557_6 -# 1558| r1558_1(glval) = VariableAddress[rr] : +# 1550| void data_member_structured_binding() +# 1550| Block 0 +# 1550| v1550_1(void) = EnterFunction : +# 1550| m1550_2(unknown) = AliasedDefinition : +# 1550| m1550_3(unknown) = InitializeNonLocal : +# 1550| m1550_4(unknown) = Chi : total:m1550_2, partial:m1550_3 +# 1551| r1551_1(glval) = VariableAddress[s] : +# 1551| m1551_2(StructuredBindingDataMemberStruct) = Uninitialized[s] : &:r1551_1 +# 1551| r1551_3(glval) = FunctionAddress[StructuredBindingDataMemberStruct] : +# 1551| v1551_4(void) = Call[StructuredBindingDataMemberStruct] : func:r1551_3, this:r1551_1 +# 1551| m1551_5(unknown) = ^CallSideEffect : ~m1550_4 +# 1551| m1551_6(unknown) = Chi : total:m1550_4, partial:m1551_5 +# 1551| m1551_7(StructuredBindingDataMemberStruct) = ^IndirectMayWriteSideEffect[-1] : &:r1551_1 +# 1551| m1551_8(StructuredBindingDataMemberStruct) = Chi : total:m1551_2, partial:m1551_7 +# 1554| r1554_1(glval) = VariableAddress[(unnamed local variable)] : +# 1554| r1554_2(glval) = VariableAddress[s] : +# 1554| r1554_3(StructuredBindingDataMemberStruct) = Load[s] : &:r1554_2, m1551_8 +# 1554| m1554_4(StructuredBindingDataMemberStruct) = Store[(unnamed local variable)] : &:r1554_1, r1554_3 +# 1554| r1554_5(glval) = VariableAddress[i] : +# 1554| r1554_6(glval) = VariableAddress[(unnamed local variable)] : +# 1554| r1554_7(glval) = FieldAddress[i] : r1554_6 +# 1554| m1554_8(int &) = Store[i] : &:r1554_5, r1554_7 +# 1554| r1554_9(glval) = VariableAddress[d] : +# 1554| r1554_10(glval) = VariableAddress[(unnamed local variable)] : +# 1554| r1554_11(glval) = FieldAddress[d] : r1554_10 +# 1554| m1554_12(double &) = Store[d] : &:r1554_9, r1554_11 +# 1554| r1554_13(glval) = VariableAddress[b] : +# 1554| r1554_14(glval) = VariableAddress[(unnamed local variable)] : +# 1554| r1554_15(glval) = FieldAddress[b] : r1554_14 +# 1554| m1554_16(unsigned int &) = Store[b] : &:r1554_13, r1554_15 +# 1554| r1554_17(glval) = VariableAddress[r] : +# 1554| r1554_18(glval) = VariableAddress[(unnamed local variable)] : +# 1554| r1554_19(glval) = FieldAddress[r] : r1554_18 +# 1554| r1554_20(int &) = Load[?] : &:r1554_19, ~m1554_4 +# 1554| r1554_21(glval) = CopyValue : r1554_20 +# 1554| m1554_22(int &) = Store[r] : &:r1554_17, r1554_21 +# 1554| r1554_23(glval) = VariableAddress[p] : +# 1554| r1554_24(glval) = VariableAddress[(unnamed local variable)] : +# 1554| r1554_25(glval) = FieldAddress[p] : r1554_24 +# 1554| m1554_26(int *&) = Store[p] : &:r1554_23, r1554_25 +# 1554| r1554_27(glval) = VariableAddress[xs] : +# 1554| r1554_28(glval) = VariableAddress[(unnamed local variable)] : +# 1554| r1554_29(glval) = FieldAddress[xs] : r1554_28 +# 1554| m1554_30(int(&)[2]) = Store[xs] : &:r1554_27, r1554_29 +# 1554| r1554_31(glval) = VariableAddress[r_alt] : +# 1554| r1554_32(glval) = VariableAddress[(unnamed local variable)] : +# 1554| r1554_33(glval) = FieldAddress[r_alt] : r1554_32 +# 1554| r1554_34(int &) = Load[?] : &:r1554_33, ~m1554_4 +# 1554| r1554_35(glval) = CopyValue : r1554_34 +# 1554| m1554_36(int &) = Store[r_alt] : &:r1554_31, r1554_35 +# 1554| r1554_37(glval) = VariableAddress[m] : +# 1554| r1554_38(glval) = VariableAddress[(unnamed local variable)] : +# 1554| r1554_39(glval) = FieldAddress[m] : r1554_38 +# 1554| m1554_40(StructuredBindingDataMemberMemberStruct &) = Store[m] : &:r1554_37, r1554_39 +# 1555| r1555_1(double) = Constant[4.0] : +# 1555| r1555_2(glval) = VariableAddress[d] : +# 1555| r1555_3(double &) = Load[d] : &:r1555_2, m1554_12 +# 1555| m1555_4(double) = Store[?] : &:r1555_3, r1555_1 +# 1555| m1555_5(StructuredBindingDataMemberStruct) = Chi : total:m1554_4, partial:m1555_4 +# 1556| r1556_1(glval) = VariableAddress[rd] : +# 1556| r1556_2(glval) = VariableAddress[d] : +# 1556| r1556_3(double &) = Load[d] : &:r1556_2, m1554_12 +# 1556| r1556_4(double &) = CopyValue : r1556_3 +# 1556| m1556_5(double &) = Store[rd] : &:r1556_1, r1556_4 +# 1557| r1557_1(glval) = VariableAddress[v] : +# 1557| r1557_2(glval) = VariableAddress[i] : +# 1557| r1557_3(int &) = Load[i] : &:r1557_2, m1554_8 +# 1557| r1557_4(int) = Load[?] : &:r1557_3, ~m1554_4 +# 1557| m1557_5(int) = Store[v] : &:r1557_1, r1557_4 +# 1558| r1558_1(int) = Constant[5] : # 1558| r1558_2(glval) = VariableAddress[r] : -# 1558| r1558_3(int &) = Load[r] : &:r1558_2, m1552_22 -# 1558| r1558_4(int &) = CopyValue : r1558_3 -# 1558| m1558_5(int &) = Store[rr] : &:r1558_1, r1558_4 -# 1559| r1559_1(glval) = VariableAddress[pr] : -# 1559| r1559_2(glval) = VariableAddress[r] : -# 1559| r1559_3(int &) = Load[r] : &:r1559_2, m1552_22 -# 1559| r1559_4(int *) = CopyValue : r1559_3 -# 1559| m1559_5(int *) = Store[pr] : &:r1559_1, r1559_4 -# 1560| r1560_1(glval) = VariableAddress[w] : +# 1558| r1558_3(int &) = Load[r] : &:r1558_2, m1554_22 +# 1558| m1558_4(int) = Store[?] : &:r1558_3, r1558_1 +# 1558| m1558_5(unknown) = Chi : total:m1551_6, partial:m1558_4 +# 1559| r1559_1(int) = Constant[6] : +# 1559| r1559_2(glval) = VariableAddress[p] : +# 1559| r1559_3(int *&) = Load[p] : &:r1559_2, m1554_26 +# 1559| r1559_4(int *) = Load[?] : &:r1559_3, ~m1554_4 +# 1559| r1559_5(glval) = CopyValue : r1559_4 +# 1559| m1559_6(int) = Store[?] : &:r1559_5, r1559_1 +# 1559| m1559_7(unknown) = Chi : total:m1558_5, partial:m1559_6 +# 1560| r1560_1(glval) = VariableAddress[rr] : # 1560| r1560_2(glval) = VariableAddress[r] : -# 1560| r1560_3(int &) = Load[r] : &:r1560_2, m1552_22 -# 1560| r1560_4(int) = Load[?] : &:r1560_3, ~m1557_7 -# 1560| m1560_5(int) = Store[w] : &:r1560_1, r1560_4 -# 1564| r1564_1(glval) = VariableAddress[unnamed_local_variable] : -# 1564| r1564_2(glval) = VariableAddress[s] : -# 1564| r1564_3(StructuredBindingDataMemberStruct) = Load[s] : &:r1564_2, m1549_8 -# 1564| m1564_4(StructuredBindingDataMemberStruct) = Store[unnamed_local_variable] : &:r1564_1, r1564_3 -# 1565| r1565_1(glval) = VariableAddress[i] : -# 1565| r1565_2(glval) = VariableAddress[unnamed_local_variable] : -# 1565| r1565_3(glval) = FieldAddress[i] : r1565_2 -# 1565| r1565_4(int &) = CopyValue : r1565_3 -# 1565| m1565_5(int &) = Store[i] : &:r1565_1, r1565_4 -# 1566| r1566_1(glval) = VariableAddress[d] : -# 1566| r1566_2(glval) = VariableAddress[unnamed_local_variable] : -# 1566| r1566_3(glval) = FieldAddress[d] : r1566_2 -# 1566| r1566_4(double &) = CopyValue : r1566_3 -# 1566| m1566_5(double &) = Store[d] : &:r1566_1, r1566_4 -# 1568| r1568_1(glval) = VariableAddress[r] : +# 1560| r1560_3(int &) = Load[r] : &:r1560_2, m1554_22 +# 1560| r1560_4(int &) = CopyValue : r1560_3 +# 1560| m1560_5(int &) = Store[rr] : &:r1560_1, r1560_4 +# 1561| r1561_1(glval) = VariableAddress[pr] : +# 1561| r1561_2(glval) = VariableAddress[r] : +# 1561| r1561_3(int &) = Load[r] : &:r1561_2, m1554_22 +# 1561| r1561_4(int *) = CopyValue : r1561_3 +# 1561| m1561_5(int *) = Store[pr] : &:r1561_1, r1561_4 +# 1562| r1562_1(glval) = VariableAddress[w] : +# 1562| r1562_2(glval) = VariableAddress[r] : +# 1562| r1562_3(int &) = Load[r] : &:r1562_2, m1554_22 +# 1562| r1562_4(int) = Load[?] : &:r1562_3, ~m1559_7 +# 1562| m1562_5(int) = Store[w] : &:r1562_1, r1562_4 +# 1566| r1566_1(glval) = VariableAddress[unnamed_local_variable] : +# 1566| r1566_2(glval) = VariableAddress[s] : +# 1566| r1566_3(StructuredBindingDataMemberStruct) = Load[s] : &:r1566_2, m1551_8 +# 1566| m1566_4(StructuredBindingDataMemberStruct) = Store[unnamed_local_variable] : &:r1566_1, r1566_3 +# 1567| r1567_1(glval) = VariableAddress[i] : +# 1567| r1567_2(glval) = VariableAddress[unnamed_local_variable] : +# 1567| r1567_3(glval) = FieldAddress[i] : r1567_2 +# 1567| r1567_4(int &) = CopyValue : r1567_3 +# 1567| m1567_5(int &) = Store[i] : &:r1567_1, r1567_4 +# 1568| r1568_1(glval) = VariableAddress[d] : # 1568| r1568_2(glval) = VariableAddress[unnamed_local_variable] : -# 1568| r1568_3(glval) = FieldAddress[r] : r1568_2 -# 1568| r1568_4(int &) = Load[?] : &:r1568_3, ~m1564_4 -# 1568| r1568_5(glval) = CopyValue : r1568_4 -# 1568| r1568_6(int &) = CopyValue : r1568_5 -# 1568| m1568_7(int &) = Store[r] : &:r1568_1, r1568_6 -# 1569| r1569_1(glval) = VariableAddress[p] : -# 1569| r1569_2(glval) = VariableAddress[unnamed_local_variable] : -# 1569| r1569_3(glval) = FieldAddress[p] : r1569_2 -# 1569| r1569_4(int *&) = CopyValue : r1569_3 -# 1569| m1569_5(int *&) = Store[p] : &:r1569_1, r1569_4 -# 1570| r1570_1(double) = Constant[4.0] : -# 1570| r1570_2(glval) = VariableAddress[d] : -# 1570| r1570_3(double &) = Load[d] : &:r1570_2, m1566_5 -# 1570| r1570_4(glval) = CopyValue : r1570_3 -# 1570| m1570_5(double) = Store[?] : &:r1570_4, r1570_1 -# 1570| m1570_6(StructuredBindingDataMemberStruct) = Chi : total:m1564_4, partial:m1570_5 -# 1571| r1571_1(glval) = VariableAddress[rd] : -# 1571| r1571_2(glval) = VariableAddress[d] : -# 1571| r1571_3(double &) = Load[d] : &:r1571_2, m1566_5 -# 1571| r1571_4(glval) = CopyValue : r1571_3 -# 1571| r1571_5(double &) = CopyValue : r1571_4 -# 1571| m1571_6(double &) = Store[rd] : &:r1571_1, r1571_5 -# 1572| r1572_1(glval) = VariableAddress[v] : -# 1572| r1572_2(glval) = VariableAddress[i] : -# 1572| r1572_3(int &) = Load[i] : &:r1572_2, m1565_5 -# 1572| r1572_4(int) = Load[?] : &:r1572_3, ~m1564_4 -# 1572| m1572_5(int) = Store[v] : &:r1572_1, r1572_4 -# 1573| r1573_1(int) = Constant[5] : -# 1573| r1573_2(glval) = VariableAddress[r] : -# 1573| r1573_3(int &) = Load[r] : &:r1573_2, m1568_7 -# 1573| r1573_4(glval) = CopyValue : r1573_3 -# 1573| m1573_5(int) = Store[?] : &:r1573_4, r1573_1 -# 1573| m1573_6(unknown) = Chi : total:m1557_7, partial:m1573_5 -# 1574| r1574_1(int) = Constant[6] : -# 1574| r1574_2(glval) = VariableAddress[p] : -# 1574| r1574_3(int *&) = Load[p] : &:r1574_2, m1569_5 -# 1574| r1574_4(int *) = Load[?] : &:r1574_3, ~m1564_4 -# 1574| r1574_5(glval) = CopyValue : r1574_4 -# 1574| m1574_6(int) = Store[?] : &:r1574_5, r1574_1 -# 1574| m1574_7(unknown) = Chi : total:m1573_6, partial:m1574_6 -# 1575| r1575_1(glval) = VariableAddress[rr] : +# 1568| r1568_3(glval) = FieldAddress[d] : r1568_2 +# 1568| r1568_4(double &) = CopyValue : r1568_3 +# 1568| m1568_5(double &) = Store[d] : &:r1568_1, r1568_4 +# 1570| r1570_1(glval) = VariableAddress[r] : +# 1570| r1570_2(glval) = VariableAddress[unnamed_local_variable] : +# 1570| r1570_3(glval) = FieldAddress[r] : r1570_2 +# 1570| r1570_4(int &) = Load[?] : &:r1570_3, ~m1566_4 +# 1570| r1570_5(glval) = CopyValue : r1570_4 +# 1570| r1570_6(int &) = CopyValue : r1570_5 +# 1570| m1570_7(int &) = Store[r] : &:r1570_1, r1570_6 +# 1571| r1571_1(glval) = VariableAddress[p] : +# 1571| r1571_2(glval) = VariableAddress[unnamed_local_variable] : +# 1571| r1571_3(glval) = FieldAddress[p] : r1571_2 +# 1571| r1571_4(int *&) = CopyValue : r1571_3 +# 1571| m1571_5(int *&) = Store[p] : &:r1571_1, r1571_4 +# 1572| r1572_1(double) = Constant[4.0] : +# 1572| r1572_2(glval) = VariableAddress[d] : +# 1572| r1572_3(double &) = Load[d] : &:r1572_2, m1568_5 +# 1572| r1572_4(glval) = CopyValue : r1572_3 +# 1572| m1572_5(double) = Store[?] : &:r1572_4, r1572_1 +# 1572| m1572_6(StructuredBindingDataMemberStruct) = Chi : total:m1566_4, partial:m1572_5 +# 1573| r1573_1(glval) = VariableAddress[rd] : +# 1573| r1573_2(glval) = VariableAddress[d] : +# 1573| r1573_3(double &) = Load[d] : &:r1573_2, m1568_5 +# 1573| r1573_4(glval) = CopyValue : r1573_3 +# 1573| r1573_5(double &) = CopyValue : r1573_4 +# 1573| m1573_6(double &) = Store[rd] : &:r1573_1, r1573_5 +# 1574| r1574_1(glval) = VariableAddress[v] : +# 1574| r1574_2(glval) = VariableAddress[i] : +# 1574| r1574_3(int &) = Load[i] : &:r1574_2, m1567_5 +# 1574| r1574_4(int) = Load[?] : &:r1574_3, ~m1566_4 +# 1574| m1574_5(int) = Store[v] : &:r1574_1, r1574_4 +# 1575| r1575_1(int) = Constant[5] : # 1575| r1575_2(glval) = VariableAddress[r] : -# 1575| r1575_3(int &) = Load[r] : &:r1575_2, m1568_7 +# 1575| r1575_3(int &) = Load[r] : &:r1575_2, m1570_7 # 1575| r1575_4(glval) = CopyValue : r1575_3 -# 1575| r1575_5(int &) = CopyValue : r1575_4 -# 1575| m1575_6(int &) = Store[rr] : &:r1575_1, r1575_5 -# 1576| r1576_1(glval) = VariableAddress[pr] : -# 1576| r1576_2(glval) = VariableAddress[r] : -# 1576| r1576_3(int &) = Load[r] : &:r1576_2, m1568_7 -# 1576| r1576_4(glval) = CopyValue : r1576_3 -# 1576| r1576_5(int *) = CopyValue : r1576_4 -# 1576| m1576_6(int *) = Store[pr] : &:r1576_1, r1576_5 -# 1577| r1577_1(glval) = VariableAddress[w] : +# 1575| m1575_5(int) = Store[?] : &:r1575_4, r1575_1 +# 1575| m1575_6(unknown) = Chi : total:m1559_7, partial:m1575_5 +# 1576| r1576_1(int) = Constant[6] : +# 1576| r1576_2(glval) = VariableAddress[p] : +# 1576| r1576_3(int *&) = Load[p] : &:r1576_2, m1571_5 +# 1576| r1576_4(int *) = Load[?] : &:r1576_3, ~m1566_4 +# 1576| r1576_5(glval) = CopyValue : r1576_4 +# 1576| m1576_6(int) = Store[?] : &:r1576_5, r1576_1 +# 1576| m1576_7(unknown) = Chi : total:m1575_6, partial:m1576_6 +# 1577| r1577_1(glval) = VariableAddress[rr] : # 1577| r1577_2(glval) = VariableAddress[r] : -# 1577| r1577_3(int &) = Load[r] : &:r1577_2, m1568_7 -# 1577| r1577_4(int) = Load[?] : &:r1577_3, ~m1574_7 -# 1577| m1577_5(int) = Store[w] : &:r1577_1, r1577_4 -# 1579| v1579_1(void) = NoOp : -# 1548| v1548_5(void) = ReturnVoid : -# 1548| v1548_6(void) = AliasedUse : ~m1574_7 -# 1548| v1548_7(void) = ExitFunction : +# 1577| r1577_3(int &) = Load[r] : &:r1577_2, m1570_7 +# 1577| r1577_4(glval) = CopyValue : r1577_3 +# 1577| r1577_5(int &) = CopyValue : r1577_4 +# 1577| m1577_6(int &) = Store[rr] : &:r1577_1, r1577_5 +# 1578| r1578_1(glval) = VariableAddress[pr] : +# 1578| r1578_2(glval) = VariableAddress[r] : +# 1578| r1578_3(int &) = Load[r] : &:r1578_2, m1570_7 +# 1578| r1578_4(glval) = CopyValue : r1578_3 +# 1578| r1578_5(int *) = CopyValue : r1578_4 +# 1578| m1578_6(int *) = Store[pr] : &:r1578_1, r1578_5 +# 1579| r1579_1(glval) = VariableAddress[w] : +# 1579| r1579_2(glval) = VariableAddress[r] : +# 1579| r1579_3(int &) = Load[r] : &:r1579_2, m1570_7 +# 1579| r1579_4(int) = Load[?] : &:r1579_3, ~m1576_7 +# 1579| m1579_5(int) = Store[w] : &:r1579_1, r1579_4 +# 1581| v1581_1(void) = NoOp : +# 1550| v1550_5(void) = ReturnVoid : +# 1550| v1550_6(void) = AliasedUse : ~m1576_7 +# 1550| v1550_7(void) = ExitFunction : -# 1588| void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet() -# 1588| Block 0 -# 1588| v1588_1(void) = EnterFunction : -# 1588| m1588_2(unknown) = AliasedDefinition : -# 1588| m1588_3(unknown) = InitializeNonLocal : -# 1588| m1588_4(unknown) = Chi : total:m1588_2, partial:m1588_3 -# 1588| r1588_5(glval) = VariableAddress[#this] : -# 1588| m1588_6(glval) = InitializeParameter[#this] : &:r1588_5 -# 1588| r1588_7(glval) = Load[#this] : &:r1588_5, m1588_6 -# 1588| m1588_8(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1588_7 -# 1588| v1588_9(void) = NoOp : -# 1588| v1588_10(void) = ReturnIndirection[#this] : &:r1588_7, m1588_8 -# 1588| v1588_11(void) = ReturnVoid : -# 1588| v1588_12(void) = AliasedUse : m1588_3 -# 1588| v1588_13(void) = ExitFunction : +# 1590| void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet() +# 1590| Block 0 +# 1590| v1590_1(void) = EnterFunction : +# 1590| m1590_2(unknown) = AliasedDefinition : +# 1590| m1590_3(unknown) = InitializeNonLocal : +# 1590| m1590_4(unknown) = Chi : total:m1590_2, partial:m1590_3 +# 1590| r1590_5(glval) = VariableAddress[#this] : +# 1590| m1590_6(glval) = InitializeParameter[#this] : &:r1590_5 +# 1590| r1590_7(glval) = Load[#this] : &:r1590_5, m1590_6 +# 1590| m1590_8(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1590_7 +# 1590| v1590_9(void) = NoOp : +# 1590| v1590_10(void) = ReturnIndirection[#this] : &:r1590_7, m1590_8 +# 1590| v1590_11(void) = ReturnVoid : +# 1590| v1590_12(void) = AliasedUse : m1590_3 +# 1590| v1590_13(void) = ExitFunction : -# 1588| void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet(StructuredBindingTupleRefGet const&) -# 1588| Block 0 -# 1588| v1588_1(void) = EnterFunction : -# 1588| m1588_2(unknown) = AliasedDefinition : -# 1588| m1588_3(unknown) = InitializeNonLocal : -# 1588| m1588_4(unknown) = Chi : total:m1588_2, partial:m1588_3 -# 1588| r1588_5(glval) = VariableAddress[#this] : -# 1588| m1588_6(glval) = InitializeParameter[#this] : &:r1588_5 -# 1588| r1588_7(glval) = Load[#this] : &:r1588_5, m1588_6 -# 1588| m1588_8(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1588_7 +# 1590| void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet(StructuredBindingTupleRefGet const&) +# 1590| Block 0 +# 1590| v1590_1(void) = EnterFunction : +# 1590| m1590_2(unknown) = AliasedDefinition : +# 1590| m1590_3(unknown) = InitializeNonLocal : +# 1590| m1590_4(unknown) = Chi : total:m1590_2, partial:m1590_3 +# 1590| r1590_5(glval) = VariableAddress[#this] : +# 1590| m1590_6(glval) = InitializeParameter[#this] : &:r1590_5 +# 1590| r1590_7(glval) = Load[#this] : &:r1590_5, m1590_6 +# 1590| m1590_8(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1590_7 #-----| r0_1(glval) = VariableAddress[(unnamed parameter 0)] : #-----| m0_2(StructuredBindingTupleRefGet &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(StructuredBindingTupleRefGet &) = Load[(unnamed parameter 0)] : &:r0_1, m0_2 #-----| m0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 1588| r1588_9(glval) = FieldAddress[i] : r1588_7 -# 1588| r1588_10(glval) = VariableAddress[(unnamed parameter 0)] : -# 1588| r1588_11(StructuredBindingTupleRefGet &) = Load[(unnamed parameter 0)] : &:r1588_10, m0_2 -# 1588| r1588_12(glval) = CopyValue : r1588_11 -# 1588| r1588_13(glval) = FieldAddress[i] : r1588_12 -# 1588| r1588_14(int) = Load[?] : &:r1588_13, ~m0_4 -# 1588| m1588_15(int) = Store[?] : &:r1588_9, r1588_14 -# 1588| m1588_16(unknown) = Chi : total:m1588_8, partial:m1588_15 -# 1588| r1588_17(glval) = FieldAddress[d] : r1588_7 -# 1588| r1588_18(glval) = VariableAddress[(unnamed parameter 0)] : -# 1588| r1588_19(StructuredBindingTupleRefGet &) = Load[(unnamed parameter 0)] : &:r1588_18, m0_2 -# 1588| r1588_20(glval) = CopyValue : r1588_19 -# 1588| r1588_21(glval) = FieldAddress[d] : r1588_20 -# 1588| r1588_22(double) = Load[?] : &:r1588_21, ~m0_4 -# 1588| m1588_23(double) = Store[?] : &:r1588_17, r1588_22 -# 1588| m1588_24(unknown) = Chi : total:m1588_16, partial:m1588_23 -# 1588| r1588_25(glval) = FieldAddress[r] : r1588_7 -# 1588| r1588_26(glval) = VariableAddress[(unnamed parameter 0)] : -# 1588| r1588_27(StructuredBindingTupleRefGet &) = Load[(unnamed parameter 0)] : &:r1588_26, m0_2 -# 1588| r1588_28(glval) = CopyValue : r1588_27 -# 1588| r1588_29(glval) = FieldAddress[r] : r1588_28 -# 1588| r1588_30(int &) = Load[?] : &:r1588_29, ~m0_4 -# 1588| m1588_31(int &) = Store[?] : &:r1588_25, r1588_30 -# 1588| m1588_32(unknown) = Chi : total:m1588_24, partial:m1588_31 -# 1588| v1588_33(void) = NoOp : -# 1588| v1588_34(void) = ReturnIndirection[#this] : &:r1588_7, m1588_32 +# 1590| r1590_9(glval) = FieldAddress[i] : r1590_7 +# 1590| r1590_10(glval) = VariableAddress[(unnamed parameter 0)] : +# 1590| r1590_11(StructuredBindingTupleRefGet &) = Load[(unnamed parameter 0)] : &:r1590_10, m0_2 +# 1590| r1590_12(glval) = CopyValue : r1590_11 +# 1590| r1590_13(glval) = FieldAddress[i] : r1590_12 +# 1590| r1590_14(int) = Load[?] : &:r1590_13, ~m0_4 +# 1590| m1590_15(int) = Store[?] : &:r1590_9, r1590_14 +# 1590| m1590_16(unknown) = Chi : total:m1590_8, partial:m1590_15 +# 1590| r1590_17(glval) = FieldAddress[d] : r1590_7 +# 1590| r1590_18(glval) = VariableAddress[(unnamed parameter 0)] : +# 1590| r1590_19(StructuredBindingTupleRefGet &) = Load[(unnamed parameter 0)] : &:r1590_18, m0_2 +# 1590| r1590_20(glval) = CopyValue : r1590_19 +# 1590| r1590_21(glval) = FieldAddress[d] : r1590_20 +# 1590| r1590_22(double) = Load[?] : &:r1590_21, ~m0_4 +# 1590| m1590_23(double) = Store[?] : &:r1590_17, r1590_22 +# 1590| m1590_24(unknown) = Chi : total:m1590_16, partial:m1590_23 +# 1590| r1590_25(glval) = FieldAddress[r] : r1590_7 +# 1590| r1590_26(glval) = VariableAddress[(unnamed parameter 0)] : +# 1590| r1590_27(StructuredBindingTupleRefGet &) = Load[(unnamed parameter 0)] : &:r1590_26, m0_2 +# 1590| r1590_28(glval) = CopyValue : r1590_27 +# 1590| r1590_29(glval) = FieldAddress[r] : r1590_28 +# 1590| r1590_30(int &) = Load[?] : &:r1590_29, ~m0_4 +# 1590| m1590_31(int &) = Store[?] : &:r1590_25, r1590_30 +# 1590| m1590_32(unknown) = Chi : total:m1590_24, partial:m1590_31 +# 1590| v1590_33(void) = NoOp : +# 1590| v1590_34(void) = ReturnIndirection[#this] : &:r1590_7, m1590_32 #-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, m0_4 -# 1588| v1588_35(void) = ReturnVoid : -# 1588| v1588_36(void) = AliasedUse : m1588_3 -# 1588| v1588_37(void) = ExitFunction : +# 1590| v1590_35(void) = ReturnVoid : +# 1590| v1590_36(void) = AliasedUse : m1590_3 +# 1590| v1590_37(void) = ExitFunction : -# 1616| std::tuple_element::type& StructuredBindingTupleRefGet::get() -# 1616| Block 0 -# 1616| v1616_1(void) = EnterFunction : -# 1616| m1616_2(unknown) = AliasedDefinition : -# 1616| m1616_3(unknown) = InitializeNonLocal : -# 1616| m1616_4(unknown) = Chi : total:m1616_2, partial:m1616_3 -# 1616| r1616_5(glval) = VariableAddress[#this] : -# 1616| m1616_6(glval) = InitializeParameter[#this] : &:r1616_5 -# 1616| r1616_7(glval) = Load[#this] : &:r1616_5, m1616_6 -# 1616| m1616_8(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1616_7 -# 1617| r1617_1(glval) = VariableAddress[#return] : -# 1617| r1617_2(glval) = VariableAddress[#this] : -# 1617| r1617_3(StructuredBindingTupleRefGet *) = Load[#this] : &:r1617_2, m1616_6 -# 1617| r1617_4(glval) = FieldAddress[i] : r1617_3 -#-----| r0_1(int &) = CopyValue : r1617_4 -#-----| m0_2(int &) = Store[#return] : &:r1617_1, r0_1 -# 1616| v1616_9(void) = ReturnIndirection[#this] : &:r1616_7, m1616_8 -# 1616| r1616_10(glval) = VariableAddress[#return] : -# 1616| v1616_11(void) = ReturnValue : &:r1616_10, m0_2 -# 1616| v1616_12(void) = AliasedUse : m1616_3 -# 1616| v1616_13(void) = ExitFunction : +# 1618| std::tuple_element::type& StructuredBindingTupleRefGet::get() +# 1618| Block 0 +# 1618| v1618_1(void) = EnterFunction : +# 1618| m1618_2(unknown) = AliasedDefinition : +# 1618| m1618_3(unknown) = InitializeNonLocal : +# 1618| m1618_4(unknown) = Chi : total:m1618_2, partial:m1618_3 +# 1618| r1618_5(glval) = VariableAddress[#this] : +# 1618| m1618_6(glval) = InitializeParameter[#this] : &:r1618_5 +# 1618| r1618_7(glval) = Load[#this] : &:r1618_5, m1618_6 +# 1618| m1618_8(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1618_7 +# 1619| r1619_1(glval) = VariableAddress[#return] : +# 1619| r1619_2(glval) = VariableAddress[#this] : +# 1619| r1619_3(StructuredBindingTupleRefGet *) = Load[#this] : &:r1619_2, m1618_6 +# 1619| r1619_4(glval) = FieldAddress[i] : r1619_3 +#-----| r0_1(int &) = CopyValue : r1619_4 +#-----| m0_2(int &) = Store[#return] : &:r1619_1, r0_1 +# 1618| v1618_9(void) = ReturnIndirection[#this] : &:r1618_7, m1618_8 +# 1618| r1618_10(glval) = VariableAddress[#return] : +# 1618| v1618_11(void) = ReturnValue : &:r1618_10, m0_2 +# 1618| v1618_12(void) = AliasedUse : m1618_3 +# 1618| v1618_13(void) = ExitFunction : -# 1620| std::tuple_element::type& StructuredBindingTupleRefGet::get() -# 1620| Block 0 -# 1620| v1620_1(void) = EnterFunction : -# 1620| m1620_2(unknown) = AliasedDefinition : -# 1620| m1620_3(unknown) = InitializeNonLocal : -# 1620| m1620_4(unknown) = Chi : total:m1620_2, partial:m1620_3 -# 1620| r1620_5(glval) = VariableAddress[#this] : -# 1620| m1620_6(glval) = InitializeParameter[#this] : &:r1620_5 -# 1620| r1620_7(glval) = Load[#this] : &:r1620_5, m1620_6 -# 1620| m1620_8(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1620_7 -# 1621| r1621_1(glval) = VariableAddress[#return] : -# 1621| r1621_2(glval) = VariableAddress[#this] : -# 1621| r1621_3(StructuredBindingTupleRefGet *) = Load[#this] : &:r1621_2, m1620_6 -# 1621| r1621_4(glval) = FieldAddress[d] : r1621_3 -#-----| r0_1(double &) = CopyValue : r1621_4 -#-----| m0_2(double &) = Store[#return] : &:r1621_1, r0_1 -# 1620| v1620_9(void) = ReturnIndirection[#this] : &:r1620_7, m1620_8 -# 1620| r1620_10(glval) = VariableAddress[#return] : -# 1620| v1620_11(void) = ReturnValue : &:r1620_10, m0_2 -# 1620| v1620_12(void) = AliasedUse : m1620_3 -# 1620| v1620_13(void) = ExitFunction : +# 1622| std::tuple_element::type& StructuredBindingTupleRefGet::get() +# 1622| Block 0 +# 1622| v1622_1(void) = EnterFunction : +# 1622| m1622_2(unknown) = AliasedDefinition : +# 1622| m1622_3(unknown) = InitializeNonLocal : +# 1622| m1622_4(unknown) = Chi : total:m1622_2, partial:m1622_3 +# 1622| r1622_5(glval) = VariableAddress[#this] : +# 1622| m1622_6(glval) = InitializeParameter[#this] : &:r1622_5 +# 1622| r1622_7(glval) = Load[#this] : &:r1622_5, m1622_6 +# 1622| m1622_8(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1622_7 +# 1623| r1623_1(glval) = VariableAddress[#return] : +# 1623| r1623_2(glval) = VariableAddress[#this] : +# 1623| r1623_3(StructuredBindingTupleRefGet *) = Load[#this] : &:r1623_2, m1622_6 +# 1623| r1623_4(glval) = FieldAddress[d] : r1623_3 +#-----| r0_1(double &) = CopyValue : r1623_4 +#-----| m0_2(double &) = Store[#return] : &:r1623_1, r0_1 +# 1622| v1622_9(void) = ReturnIndirection[#this] : &:r1622_7, m1622_8 +# 1622| r1622_10(glval) = VariableAddress[#return] : +# 1622| v1622_11(void) = ReturnValue : &:r1622_10, m0_2 +# 1622| v1622_12(void) = AliasedUse : m1622_3 +# 1622| v1622_13(void) = ExitFunction : -# 1624| std::tuple_element::type StructuredBindingTupleRefGet::get() -# 1624| Block 0 -# 1624| v1624_1(void) = EnterFunction : -# 1624| m1624_2(unknown) = AliasedDefinition : -# 1624| m1624_3(unknown) = InitializeNonLocal : -# 1624| m1624_4(unknown) = Chi : total:m1624_2, partial:m1624_3 -# 1624| r1624_5(glval) = VariableAddress[#this] : -# 1624| m1624_6(glval) = InitializeParameter[#this] : &:r1624_5 -# 1624| r1624_7(glval) = Load[#this] : &:r1624_5, m1624_6 -# 1624| m1624_8(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1624_7 -# 1625| r1625_1(glval) = VariableAddress[#return] : -# 1625| r1625_2(glval) = VariableAddress[#this] : -# 1625| r1625_3(StructuredBindingTupleRefGet *) = Load[#this] : &:r1625_2, m1624_6 -# 1625| r1625_4(glval) = FieldAddress[r] : r1625_3 -# 1625| r1625_5(int &) = Load[?] : &:r1625_4, ~m1624_8 -# 1625| r1625_6(glval) = CopyValue : r1625_5 -# 1625| r1625_7(int &) = CopyValue : r1625_6 -# 1625| m1625_8(int &) = Store[#return] : &:r1625_1, r1625_7 -# 1624| v1624_9(void) = ReturnIndirection[#this] : &:r1624_7, m1624_8 -# 1624| r1624_10(glval) = VariableAddress[#return] : -# 1624| v1624_11(void) = ReturnValue : &:r1624_10, m1625_8 -# 1624| v1624_12(void) = AliasedUse : m1624_3 -# 1624| v1624_13(void) = ExitFunction : +# 1626| std::tuple_element::type StructuredBindingTupleRefGet::get() +# 1626| Block 0 +# 1626| v1626_1(void) = EnterFunction : +# 1626| m1626_2(unknown) = AliasedDefinition : +# 1626| m1626_3(unknown) = InitializeNonLocal : +# 1626| m1626_4(unknown) = Chi : total:m1626_2, partial:m1626_3 +# 1626| r1626_5(glval) = VariableAddress[#this] : +# 1626| m1626_6(glval) = InitializeParameter[#this] : &:r1626_5 +# 1626| r1626_7(glval) = Load[#this] : &:r1626_5, m1626_6 +# 1626| m1626_8(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1626_7 +# 1627| r1627_1(glval) = VariableAddress[#return] : +# 1627| r1627_2(glval) = VariableAddress[#this] : +# 1627| r1627_3(StructuredBindingTupleRefGet *) = Load[#this] : &:r1627_2, m1626_6 +# 1627| r1627_4(glval) = FieldAddress[r] : r1627_3 +# 1627| r1627_5(int &) = Load[?] : &:r1627_4, ~m1626_8 +# 1627| r1627_6(glval) = CopyValue : r1627_5 +# 1627| r1627_7(int &) = CopyValue : r1627_6 +# 1627| m1627_8(int &) = Store[#return] : &:r1627_1, r1627_7 +# 1626| v1626_9(void) = ReturnIndirection[#this] : &:r1626_7, m1626_8 +# 1626| r1626_10(glval) = VariableAddress[#return] : +# 1626| v1626_11(void) = ReturnValue : &:r1626_10, m1627_8 +# 1626| v1626_12(void) = AliasedUse : m1626_3 +# 1626| v1626_13(void) = ExitFunction : -# 1628| void tuple_structured_binding_ref_get() -# 1628| Block 0 -# 1628| v1628_1(void) = EnterFunction : -# 1628| m1628_2(unknown) = AliasedDefinition : -# 1628| m1628_3(unknown) = InitializeNonLocal : -# 1628| m1628_4(unknown) = Chi : total:m1628_2, partial:m1628_3 -# 1629| r1629_1(glval) = VariableAddress[t] : -# 1629| m1629_2(StructuredBindingTupleRefGet) = Uninitialized[t] : &:r1629_1 -# 1629| r1629_3(glval) = FunctionAddress[StructuredBindingTupleRefGet] : -# 1629| v1629_4(void) = Call[StructuredBindingTupleRefGet] : func:r1629_3, this:r1629_1 -# 1629| m1629_5(unknown) = ^CallSideEffect : ~m1628_4 -# 1629| m1629_6(unknown) = Chi : total:m1628_4, partial:m1629_5 -# 1629| m1629_7(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1629_1 -# 1629| m1629_8(StructuredBindingTupleRefGet) = Chi : total:m1629_2, partial:m1629_7 -# 1632| r1632_1(glval) = VariableAddress[(unnamed local variable)] : -# 1632| r1632_2(glval) = VariableAddress[t] : -# 1632| r1632_3(StructuredBindingTupleRefGet) = Load[t] : &:r1632_2, m1629_8 -# 1632| m1632_4(StructuredBindingTupleRefGet) = Store[(unnamed local variable)] : &:r1632_1, r1632_3 -# 1632| r1632_5(glval) = VariableAddress[i] : -# 1632| r1632_6(glval) = VariableAddress[(unnamed local variable)] : -# 1632| r1632_7(glval) = FunctionAddress[get] : -# 1632| r1632_8(int &) = Call[get] : func:r1632_7, this:r1632_6 -# 1632| m1632_9(unknown) = ^CallSideEffect : ~m1629_6 -# 1632| m1632_10(unknown) = Chi : total:m1629_6, partial:m1632_9 -# 1632| v1632_11(void) = ^IndirectReadSideEffect[-1] : &:r1632_6, m1632_4 -# 1632| m1632_12(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1632_6 -# 1632| m1632_13(StructuredBindingTupleRefGet) = Chi : total:m1632_4, partial:m1632_12 -# 1632| r1632_14(glval) = CopyValue : r1632_8 -# 1632| r1632_15(int &) = CopyValue : r1632_14 -# 1632| m1632_16(int &) = Store[i] : &:r1632_5, r1632_15 -# 1632| r1632_17(glval) = VariableAddress[d] : -# 1632| r1632_18(glval) = VariableAddress[(unnamed local variable)] : -# 1632| r1632_19(glval) = FunctionAddress[get] : -# 1632| r1632_20(double &) = Call[get] : func:r1632_19, this:r1632_18 -# 1632| m1632_21(unknown) = ^CallSideEffect : ~m1632_10 -# 1632| m1632_22(unknown) = Chi : total:m1632_10, partial:m1632_21 -# 1632| v1632_23(void) = ^IndirectReadSideEffect[-1] : &:r1632_18, m1632_13 -# 1632| m1632_24(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1632_18 -# 1632| m1632_25(StructuredBindingTupleRefGet) = Chi : total:m1632_13, partial:m1632_24 -# 1632| r1632_26(glval) = CopyValue : r1632_20 -# 1632| r1632_27(double &) = CopyValue : r1632_26 -# 1632| m1632_28(double &) = Store[d] : &:r1632_17, r1632_27 -# 1632| r1632_29(glval) = VariableAddress[r] : -# 1632| r1632_30(glval) = VariableAddress[(unnamed local variable)] : -# 1632| r1632_31(glval) = FunctionAddress[get] : -# 1632| r1632_32(int &) = Call[get] : func:r1632_31, this:r1632_30 -# 1632| m1632_33(unknown) = ^CallSideEffect : ~m1632_22 -# 1632| m1632_34(unknown) = Chi : total:m1632_22, partial:m1632_33 -# 1632| v1632_35(void) = ^IndirectReadSideEffect[-1] : &:r1632_30, m1632_25 -# 1632| m1632_36(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1632_30 -# 1632| m1632_37(StructuredBindingTupleRefGet) = Chi : total:m1632_25, partial:m1632_36 -# 1632| r1632_38(glval) = CopyValue : r1632_32 -# 1632| r1632_39(int &) = CopyValue : r1632_38 -# 1632| m1632_40(int &) = Store[r] : &:r1632_29, r1632_39 -# 1633| r1633_1(double) = Constant[4.0] : -# 1633| r1633_2(glval) = VariableAddress[d] : -# 1633| r1633_3(double &) = Load[d] : &:r1633_2, m1632_28 -# 1633| r1633_4(glval) = CopyValue : r1633_3 -# 1633| m1633_5(double) = Store[?] : &:r1633_4, r1633_1 -# 1633| m1633_6(StructuredBindingTupleRefGet) = Chi : total:m1632_37, partial:m1633_5 -# 1634| r1634_1(glval) = VariableAddress[rd] : -# 1634| r1634_2(glval) = VariableAddress[d] : -# 1634| r1634_3(double &) = Load[d] : &:r1634_2, m1632_28 -# 1634| r1634_4(glval) = CopyValue : r1634_3 -# 1634| r1634_5(double &) = CopyValue : r1634_4 -# 1634| m1634_6(double &) = Store[rd] : &:r1634_1, r1634_5 -# 1635| r1635_1(glval) = VariableAddress[v] : -# 1635| r1635_2(glval) = VariableAddress[i] : -# 1635| r1635_3(int &) = Load[i] : &:r1635_2, m1632_16 -# 1635| r1635_4(int) = Load[?] : &:r1635_3, ~m1632_37 -# 1635| m1635_5(int) = Store[v] : &:r1635_1, r1635_4 -# 1636| r1636_1(int) = Constant[5] : -# 1636| r1636_2(glval) = VariableAddress[r] : -# 1636| r1636_3(int &) = Load[r] : &:r1636_2, m1632_40 -# 1636| r1636_4(glval) = CopyValue : r1636_3 -# 1636| m1636_5(int) = Store[?] : &:r1636_4, r1636_1 -# 1636| m1636_6(unknown) = Chi : total:m1632_34, partial:m1636_5 -# 1637| r1637_1(glval) = VariableAddress[rr] : -# 1637| r1637_2(glval) = VariableAddress[r] : -# 1637| r1637_3(int &) = Load[r] : &:r1637_2, m1632_40 -# 1637| r1637_4(glval) = CopyValue : r1637_3 -# 1637| r1637_5(int &) = CopyValue : r1637_4 -# 1637| m1637_6(int &) = Store[rr] : &:r1637_1, r1637_5 -# 1638| r1638_1(glval) = VariableAddress[w] : +# 1630| void tuple_structured_binding_ref_get() +# 1630| Block 0 +# 1630| v1630_1(void) = EnterFunction : +# 1630| m1630_2(unknown) = AliasedDefinition : +# 1630| m1630_3(unknown) = InitializeNonLocal : +# 1630| m1630_4(unknown) = Chi : total:m1630_2, partial:m1630_3 +# 1631| r1631_1(glval) = VariableAddress[t] : +# 1631| m1631_2(StructuredBindingTupleRefGet) = Uninitialized[t] : &:r1631_1 +# 1631| r1631_3(glval) = FunctionAddress[StructuredBindingTupleRefGet] : +# 1631| v1631_4(void) = Call[StructuredBindingTupleRefGet] : func:r1631_3, this:r1631_1 +# 1631| m1631_5(unknown) = ^CallSideEffect : ~m1630_4 +# 1631| m1631_6(unknown) = Chi : total:m1630_4, partial:m1631_5 +# 1631| m1631_7(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1631_1 +# 1631| m1631_8(StructuredBindingTupleRefGet) = Chi : total:m1631_2, partial:m1631_7 +# 1634| r1634_1(glval) = VariableAddress[(unnamed local variable)] : +# 1634| r1634_2(glval) = VariableAddress[t] : +# 1634| r1634_3(StructuredBindingTupleRefGet) = Load[t] : &:r1634_2, m1631_8 +# 1634| m1634_4(StructuredBindingTupleRefGet) = Store[(unnamed local variable)] : &:r1634_1, r1634_3 +# 1634| r1634_5(glval) = VariableAddress[i] : +# 1634| r1634_6(glval) = VariableAddress[(unnamed local variable)] : +# 1634| r1634_7(glval) = FunctionAddress[get] : +# 1634| r1634_8(int &) = Call[get] : func:r1634_7, this:r1634_6 +# 1634| m1634_9(unknown) = ^CallSideEffect : ~m1631_6 +# 1634| m1634_10(unknown) = Chi : total:m1631_6, partial:m1634_9 +# 1634| v1634_11(void) = ^IndirectReadSideEffect[-1] : &:r1634_6, m1634_4 +# 1634| m1634_12(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1634_6 +# 1634| m1634_13(StructuredBindingTupleRefGet) = Chi : total:m1634_4, partial:m1634_12 +# 1634| r1634_14(glval) = CopyValue : r1634_8 +# 1634| r1634_15(int &) = CopyValue : r1634_14 +# 1634| m1634_16(int &) = Store[i] : &:r1634_5, r1634_15 +# 1634| r1634_17(glval) = VariableAddress[d] : +# 1634| r1634_18(glval) = VariableAddress[(unnamed local variable)] : +# 1634| r1634_19(glval) = FunctionAddress[get] : +# 1634| r1634_20(double &) = Call[get] : func:r1634_19, this:r1634_18 +# 1634| m1634_21(unknown) = ^CallSideEffect : ~m1634_10 +# 1634| m1634_22(unknown) = Chi : total:m1634_10, partial:m1634_21 +# 1634| v1634_23(void) = ^IndirectReadSideEffect[-1] : &:r1634_18, m1634_13 +# 1634| m1634_24(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1634_18 +# 1634| m1634_25(StructuredBindingTupleRefGet) = Chi : total:m1634_13, partial:m1634_24 +# 1634| r1634_26(glval) = CopyValue : r1634_20 +# 1634| r1634_27(double &) = CopyValue : r1634_26 +# 1634| m1634_28(double &) = Store[d] : &:r1634_17, r1634_27 +# 1634| r1634_29(glval) = VariableAddress[r] : +# 1634| r1634_30(glval) = VariableAddress[(unnamed local variable)] : +# 1634| r1634_31(glval) = FunctionAddress[get] : +# 1634| r1634_32(int &) = Call[get] : func:r1634_31, this:r1634_30 +# 1634| m1634_33(unknown) = ^CallSideEffect : ~m1634_22 +# 1634| m1634_34(unknown) = Chi : total:m1634_22, partial:m1634_33 +# 1634| v1634_35(void) = ^IndirectReadSideEffect[-1] : &:r1634_30, m1634_25 +# 1634| m1634_36(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1634_30 +# 1634| m1634_37(StructuredBindingTupleRefGet) = Chi : total:m1634_25, partial:m1634_36 +# 1634| r1634_38(glval) = CopyValue : r1634_32 +# 1634| r1634_39(int &) = CopyValue : r1634_38 +# 1634| m1634_40(int &) = Store[r] : &:r1634_29, r1634_39 +# 1635| r1635_1(double) = Constant[4.0] : +# 1635| r1635_2(glval) = VariableAddress[d] : +# 1635| r1635_3(double &) = Load[d] : &:r1635_2, m1634_28 +# 1635| r1635_4(glval) = CopyValue : r1635_3 +# 1635| m1635_5(double) = Store[?] : &:r1635_4, r1635_1 +# 1635| m1635_6(StructuredBindingTupleRefGet) = Chi : total:m1634_37, partial:m1635_5 +# 1636| r1636_1(glval) = VariableAddress[rd] : +# 1636| r1636_2(glval) = VariableAddress[d] : +# 1636| r1636_3(double &) = Load[d] : &:r1636_2, m1634_28 +# 1636| r1636_4(glval) = CopyValue : r1636_3 +# 1636| r1636_5(double &) = CopyValue : r1636_4 +# 1636| m1636_6(double &) = Store[rd] : &:r1636_1, r1636_5 +# 1637| r1637_1(glval) = VariableAddress[v] : +# 1637| r1637_2(glval) = VariableAddress[i] : +# 1637| r1637_3(int &) = Load[i] : &:r1637_2, m1634_16 +# 1637| r1637_4(int) = Load[?] : &:r1637_3, ~m1634_37 +# 1637| m1637_5(int) = Store[v] : &:r1637_1, r1637_4 +# 1638| r1638_1(int) = Constant[5] : # 1638| r1638_2(glval) = VariableAddress[r] : -# 1638| r1638_3(int &) = Load[r] : &:r1638_2, m1632_40 -# 1638| r1638_4(int) = Load[?] : &:r1638_3, ~m1636_6 -# 1638| m1638_5(int) = Store[w] : &:r1638_1, r1638_4 -# 1642| r1642_1(glval) = VariableAddress[unnamed_local_variable] : -# 1642| r1642_2(glval) = VariableAddress[t] : -# 1642| r1642_3(StructuredBindingTupleRefGet) = Load[t] : &:r1642_2, m1629_8 -# 1642| m1642_4(StructuredBindingTupleRefGet) = Store[unnamed_local_variable] : &:r1642_1, r1642_3 -# 1643| r1643_1(glval) = VariableAddress[i] : -# 1643| r1643_2(glval) = VariableAddress[unnamed_local_variable] : -# 1643| r1643_3(glval) = FunctionAddress[get] : -# 1643| r1643_4(int &) = Call[get] : func:r1643_3, this:r1643_2 -# 1643| m1643_5(unknown) = ^CallSideEffect : ~m1636_6 -# 1643| m1643_6(unknown) = Chi : total:m1636_6, partial:m1643_5 -# 1643| v1643_7(void) = ^IndirectReadSideEffect[-1] : &:r1643_2, m1642_4 -# 1643| m1643_8(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1643_2 -# 1643| m1643_9(StructuredBindingTupleRefGet) = Chi : total:m1642_4, partial:m1643_8 -# 1643| r1643_10(glval) = CopyValue : r1643_4 -# 1643| r1643_11(int &) = CopyValue : r1643_10 -# 1643| m1643_12(int &) = Store[i] : &:r1643_1, r1643_11 -# 1644| r1644_1(glval) = VariableAddress[d] : -# 1644| r1644_2(glval) = VariableAddress[unnamed_local_variable] : -# 1644| r1644_3(glval) = FunctionAddress[get] : -# 1644| r1644_4(double &) = Call[get] : func:r1644_3, this:r1644_2 -# 1644| m1644_5(unknown) = ^CallSideEffect : ~m1643_6 -# 1644| m1644_6(unknown) = Chi : total:m1643_6, partial:m1644_5 -# 1644| v1644_7(void) = ^IndirectReadSideEffect[-1] : &:r1644_2, m1643_9 -# 1644| m1644_8(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1644_2 -# 1644| m1644_9(StructuredBindingTupleRefGet) = Chi : total:m1643_9, partial:m1644_8 -# 1644| r1644_10(glval) = CopyValue : r1644_4 -# 1644| r1644_11(double &) = CopyValue : r1644_10 -# 1644| m1644_12(double &) = Store[d] : &:r1644_1, r1644_11 -# 1645| r1645_1(glval) = VariableAddress[r] : +# 1638| r1638_3(int &) = Load[r] : &:r1638_2, m1634_40 +# 1638| r1638_4(glval) = CopyValue : r1638_3 +# 1638| m1638_5(int) = Store[?] : &:r1638_4, r1638_1 +# 1638| m1638_6(unknown) = Chi : total:m1634_34, partial:m1638_5 +# 1639| r1639_1(glval) = VariableAddress[rr] : +# 1639| r1639_2(glval) = VariableAddress[r] : +# 1639| r1639_3(int &) = Load[r] : &:r1639_2, m1634_40 +# 1639| r1639_4(glval) = CopyValue : r1639_3 +# 1639| r1639_5(int &) = CopyValue : r1639_4 +# 1639| m1639_6(int &) = Store[rr] : &:r1639_1, r1639_5 +# 1640| r1640_1(glval) = VariableAddress[w] : +# 1640| r1640_2(glval) = VariableAddress[r] : +# 1640| r1640_3(int &) = Load[r] : &:r1640_2, m1634_40 +# 1640| r1640_4(int) = Load[?] : &:r1640_3, ~m1638_6 +# 1640| m1640_5(int) = Store[w] : &:r1640_1, r1640_4 +# 1644| r1644_1(glval) = VariableAddress[unnamed_local_variable] : +# 1644| r1644_2(glval) = VariableAddress[t] : +# 1644| r1644_3(StructuredBindingTupleRefGet) = Load[t] : &:r1644_2, m1631_8 +# 1644| m1644_4(StructuredBindingTupleRefGet) = Store[unnamed_local_variable] : &:r1644_1, r1644_3 +# 1645| r1645_1(glval) = VariableAddress[i] : # 1645| r1645_2(glval) = VariableAddress[unnamed_local_variable] : # 1645| r1645_3(glval) = FunctionAddress[get] : # 1645| r1645_4(int &) = Call[get] : func:r1645_3, this:r1645_2 -# 1645| m1645_5(unknown) = ^CallSideEffect : ~m1644_6 -# 1645| m1645_6(unknown) = Chi : total:m1644_6, partial:m1645_5 -# 1645| v1645_7(void) = ^IndirectReadSideEffect[-1] : &:r1645_2, m1644_9 +# 1645| m1645_5(unknown) = ^CallSideEffect : ~m1638_6 +# 1645| m1645_6(unknown) = Chi : total:m1638_6, partial:m1645_5 +# 1645| v1645_7(void) = ^IndirectReadSideEffect[-1] : &:r1645_2, m1644_4 # 1645| m1645_8(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1645_2 -# 1645| m1645_9(StructuredBindingTupleRefGet) = Chi : total:m1644_9, partial:m1645_8 +# 1645| m1645_9(StructuredBindingTupleRefGet) = Chi : total:m1644_4, partial:m1645_8 # 1645| r1645_10(glval) = CopyValue : r1645_4 # 1645| r1645_11(int &) = CopyValue : r1645_10 -# 1645| m1645_12(int &) = Store[r] : &:r1645_1, r1645_11 -# 1646| r1646_1(double) = Constant[4.0] : -# 1646| r1646_2(glval) = VariableAddress[d] : -# 1646| r1646_3(double &) = Load[d] : &:r1646_2, m1644_12 -# 1646| r1646_4(glval) = CopyValue : r1646_3 -# 1646| m1646_5(double) = Store[?] : &:r1646_4, r1646_1 -# 1646| m1646_6(StructuredBindingTupleRefGet) = Chi : total:m1645_9, partial:m1646_5 -# 1647| r1647_1(glval) = VariableAddress[rd] : -# 1647| r1647_2(glval) = VariableAddress[d] : -# 1647| r1647_3(double &) = Load[d] : &:r1647_2, m1644_12 -# 1647| r1647_4(glval) = CopyValue : r1647_3 -# 1647| r1647_5(double &) = CopyValue : r1647_4 -# 1647| m1647_6(double &) = Store[rd] : &:r1647_1, r1647_5 -# 1648| r1648_1(glval) = VariableAddress[v] : -# 1648| r1648_2(glval) = VariableAddress[i] : -# 1648| r1648_3(int &) = Load[i] : &:r1648_2, m1643_12 -# 1648| r1648_4(int) = Load[?] : &:r1648_3, ~m1645_9 -# 1648| m1648_5(int) = Store[v] : &:r1648_1, r1648_4 -# 1649| r1649_1(int) = Constant[5] : -# 1649| r1649_2(glval) = VariableAddress[r] : -# 1649| r1649_3(int &) = Load[r] : &:r1649_2, m1645_12 -# 1649| r1649_4(glval) = CopyValue : r1649_3 -# 1649| m1649_5(int) = Store[?] : &:r1649_4, r1649_1 -# 1649| m1649_6(unknown) = Chi : total:m1645_6, partial:m1649_5 -# 1650| r1650_1(glval) = VariableAddress[rr] : -# 1650| r1650_2(glval) = VariableAddress[r] : -# 1650| r1650_3(int &) = Load[r] : &:r1650_2, m1645_12 -# 1650| r1650_4(glval) = CopyValue : r1650_3 -# 1650| r1650_5(int &) = CopyValue : r1650_4 -# 1650| m1650_6(int &) = Store[rr] : &:r1650_1, r1650_5 -# 1651| r1651_1(glval) = VariableAddress[w] : +# 1645| m1645_12(int &) = Store[i] : &:r1645_1, r1645_11 +# 1646| r1646_1(glval) = VariableAddress[d] : +# 1646| r1646_2(glval) = VariableAddress[unnamed_local_variable] : +# 1646| r1646_3(glval) = FunctionAddress[get] : +# 1646| r1646_4(double &) = Call[get] : func:r1646_3, this:r1646_2 +# 1646| m1646_5(unknown) = ^CallSideEffect : ~m1645_6 +# 1646| m1646_6(unknown) = Chi : total:m1645_6, partial:m1646_5 +# 1646| v1646_7(void) = ^IndirectReadSideEffect[-1] : &:r1646_2, m1645_9 +# 1646| m1646_8(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1646_2 +# 1646| m1646_9(StructuredBindingTupleRefGet) = Chi : total:m1645_9, partial:m1646_8 +# 1646| r1646_10(glval) = CopyValue : r1646_4 +# 1646| r1646_11(double &) = CopyValue : r1646_10 +# 1646| m1646_12(double &) = Store[d] : &:r1646_1, r1646_11 +# 1647| r1647_1(glval) = VariableAddress[r] : +# 1647| r1647_2(glval) = VariableAddress[unnamed_local_variable] : +# 1647| r1647_3(glval) = FunctionAddress[get] : +# 1647| r1647_4(int &) = Call[get] : func:r1647_3, this:r1647_2 +# 1647| m1647_5(unknown) = ^CallSideEffect : ~m1646_6 +# 1647| m1647_6(unknown) = Chi : total:m1646_6, partial:m1647_5 +# 1647| v1647_7(void) = ^IndirectReadSideEffect[-1] : &:r1647_2, m1646_9 +# 1647| m1647_8(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1647_2 +# 1647| m1647_9(StructuredBindingTupleRefGet) = Chi : total:m1646_9, partial:m1647_8 +# 1647| r1647_10(glval) = CopyValue : r1647_4 +# 1647| r1647_11(int &) = CopyValue : r1647_10 +# 1647| m1647_12(int &) = Store[r] : &:r1647_1, r1647_11 +# 1648| r1648_1(double) = Constant[4.0] : +# 1648| r1648_2(glval) = VariableAddress[d] : +# 1648| r1648_3(double &) = Load[d] : &:r1648_2, m1646_12 +# 1648| r1648_4(glval) = CopyValue : r1648_3 +# 1648| m1648_5(double) = Store[?] : &:r1648_4, r1648_1 +# 1648| m1648_6(StructuredBindingTupleRefGet) = Chi : total:m1647_9, partial:m1648_5 +# 1649| r1649_1(glval) = VariableAddress[rd] : +# 1649| r1649_2(glval) = VariableAddress[d] : +# 1649| r1649_3(double &) = Load[d] : &:r1649_2, m1646_12 +# 1649| r1649_4(glval) = CopyValue : r1649_3 +# 1649| r1649_5(double &) = CopyValue : r1649_4 +# 1649| m1649_6(double &) = Store[rd] : &:r1649_1, r1649_5 +# 1650| r1650_1(glval) = VariableAddress[v] : +# 1650| r1650_2(glval) = VariableAddress[i] : +# 1650| r1650_3(int &) = Load[i] : &:r1650_2, m1645_12 +# 1650| r1650_4(int) = Load[?] : &:r1650_3, ~m1647_9 +# 1650| m1650_5(int) = Store[v] : &:r1650_1, r1650_4 +# 1651| r1651_1(int) = Constant[5] : # 1651| r1651_2(glval) = VariableAddress[r] : -# 1651| r1651_3(int &) = Load[r] : &:r1651_2, m1645_12 -# 1651| r1651_4(int) = Load[?] : &:r1651_3, ~m1649_6 -# 1651| m1651_5(int) = Store[w] : &:r1651_1, r1651_4 -# 1653| v1653_1(void) = NoOp : -# 1628| v1628_5(void) = ReturnVoid : -# 1628| v1628_6(void) = AliasedUse : ~m1649_6 -# 1628| v1628_7(void) = ExitFunction : +# 1651| r1651_3(int &) = Load[r] : &:r1651_2, m1647_12 +# 1651| r1651_4(glval) = CopyValue : r1651_3 +# 1651| m1651_5(int) = Store[?] : &:r1651_4, r1651_1 +# 1651| m1651_6(unknown) = Chi : total:m1647_6, partial:m1651_5 +# 1652| r1652_1(glval) = VariableAddress[rr] : +# 1652| r1652_2(glval) = VariableAddress[r] : +# 1652| r1652_3(int &) = Load[r] : &:r1652_2, m1647_12 +# 1652| r1652_4(glval) = CopyValue : r1652_3 +# 1652| r1652_5(int &) = CopyValue : r1652_4 +# 1652| m1652_6(int &) = Store[rr] : &:r1652_1, r1652_5 +# 1653| r1653_1(glval) = VariableAddress[w] : +# 1653| r1653_2(glval) = VariableAddress[r] : +# 1653| r1653_3(int &) = Load[r] : &:r1653_2, m1647_12 +# 1653| r1653_4(int) = Load[?] : &:r1653_3, ~m1651_6 +# 1653| m1653_5(int) = Store[w] : &:r1653_1, r1653_4 +# 1655| v1655_1(void) = NoOp : +# 1630| v1630_5(void) = ReturnVoid : +# 1630| v1630_6(void) = AliasedUse : ~m1651_6 +# 1630| v1630_7(void) = ExitFunction : -# 1655| void StructuredBindingTupleNoRefGet::StructuredBindingTupleNoRefGet() -# 1655| Block 0 -# 1655| v1655_1(void) = EnterFunction : -# 1655| m1655_2(unknown) = AliasedDefinition : -# 1655| m1655_3(unknown) = InitializeNonLocal : -# 1655| m1655_4(unknown) = Chi : total:m1655_2, partial:m1655_3 -# 1655| r1655_5(glval) = VariableAddress[#this] : -# 1655| m1655_6(glval) = InitializeParameter[#this] : &:r1655_5 -# 1655| r1655_7(glval) = Load[#this] : &:r1655_5, m1655_6 -# 1655| m1655_8(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1655_7 -# 1655| v1655_9(void) = NoOp : -# 1655| v1655_10(void) = ReturnIndirection[#this] : &:r1655_7, m1655_8 -# 1655| v1655_11(void) = ReturnVoid : -# 1655| v1655_12(void) = AliasedUse : m1655_3 -# 1655| v1655_13(void) = ExitFunction : +# 1657| void StructuredBindingTupleNoRefGet::StructuredBindingTupleNoRefGet() +# 1657| Block 0 +# 1657| v1657_1(void) = EnterFunction : +# 1657| m1657_2(unknown) = AliasedDefinition : +# 1657| m1657_3(unknown) = InitializeNonLocal : +# 1657| m1657_4(unknown) = Chi : total:m1657_2, partial:m1657_3 +# 1657| r1657_5(glval) = VariableAddress[#this] : +# 1657| m1657_6(glval) = InitializeParameter[#this] : &:r1657_5 +# 1657| r1657_7(glval) = Load[#this] : &:r1657_5, m1657_6 +# 1657| m1657_8(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1657_7 +# 1657| v1657_9(void) = NoOp : +# 1657| v1657_10(void) = ReturnIndirection[#this] : &:r1657_7, m1657_8 +# 1657| v1657_11(void) = ReturnVoid : +# 1657| v1657_12(void) = AliasedUse : m1657_3 +# 1657| v1657_13(void) = ExitFunction : -# 1682| std::tuple_element::type StructuredBindingTupleNoRefGet::get() -# 1682| Block 0 -# 1682| v1682_1(void) = EnterFunction : -# 1682| m1682_2(unknown) = AliasedDefinition : -# 1682| m1682_3(unknown) = InitializeNonLocal : -# 1682| m1682_4(unknown) = Chi : total:m1682_2, partial:m1682_3 -# 1682| r1682_5(glval) = VariableAddress[#this] : -# 1682| m1682_6(glval) = InitializeParameter[#this] : &:r1682_5 -# 1682| r1682_7(glval) = Load[#this] : &:r1682_5, m1682_6 -# 1682| m1682_8(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1682_7 -# 1683| r1683_1(glval) = VariableAddress[#return] : -# 1683| r1683_2(glval) = VariableAddress[#this] : -# 1683| r1683_3(StructuredBindingTupleNoRefGet *) = Load[#this] : &:r1683_2, m1682_6 -# 1683| r1683_4(glval) = FieldAddress[i] : r1683_3 -# 1683| r1683_5(int) = Load[?] : &:r1683_4, ~m1682_8 -# 1683| m1683_6(int) = Store[#return] : &:r1683_1, r1683_5 -# 1682| v1682_9(void) = ReturnIndirection[#this] : &:r1682_7, m1682_8 -# 1682| r1682_10(glval) = VariableAddress[#return] : -# 1682| v1682_11(void) = ReturnValue : &:r1682_10, m1683_6 -# 1682| v1682_12(void) = AliasedUse : m1682_3 -# 1682| v1682_13(void) = ExitFunction : +# 1684| std::tuple_element::type StructuredBindingTupleNoRefGet::get() +# 1684| Block 0 +# 1684| v1684_1(void) = EnterFunction : +# 1684| m1684_2(unknown) = AliasedDefinition : +# 1684| m1684_3(unknown) = InitializeNonLocal : +# 1684| m1684_4(unknown) = Chi : total:m1684_2, partial:m1684_3 +# 1684| r1684_5(glval) = VariableAddress[#this] : +# 1684| m1684_6(glval) = InitializeParameter[#this] : &:r1684_5 +# 1684| r1684_7(glval) = Load[#this] : &:r1684_5, m1684_6 +# 1684| m1684_8(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1684_7 +# 1685| r1685_1(glval) = VariableAddress[#return] : +# 1685| r1685_2(glval) = VariableAddress[#this] : +# 1685| r1685_3(StructuredBindingTupleNoRefGet *) = Load[#this] : &:r1685_2, m1684_6 +# 1685| r1685_4(glval) = FieldAddress[i] : r1685_3 +# 1685| r1685_5(int) = Load[?] : &:r1685_4, ~m1684_8 +# 1685| m1685_6(int) = Store[#return] : &:r1685_1, r1685_5 +# 1684| v1684_9(void) = ReturnIndirection[#this] : &:r1684_7, m1684_8 +# 1684| r1684_10(glval) = VariableAddress[#return] : +# 1684| v1684_11(void) = ReturnValue : &:r1684_10, m1685_6 +# 1684| v1684_12(void) = AliasedUse : m1684_3 +# 1684| v1684_13(void) = ExitFunction : -# 1686| std::tuple_element::type StructuredBindingTupleNoRefGet::get() -# 1686| Block 0 -# 1686| v1686_1(void) = EnterFunction : -# 1686| m1686_2(unknown) = AliasedDefinition : -# 1686| m1686_3(unknown) = InitializeNonLocal : -# 1686| m1686_4(unknown) = Chi : total:m1686_2, partial:m1686_3 -# 1686| r1686_5(glval) = VariableAddress[#this] : -# 1686| m1686_6(glval) = InitializeParameter[#this] : &:r1686_5 -# 1686| r1686_7(glval) = Load[#this] : &:r1686_5, m1686_6 -# 1686| m1686_8(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1686_7 -# 1687| r1687_1(glval) = VariableAddress[#return] : -# 1687| r1687_2(glval) = VariableAddress[#this] : -# 1687| r1687_3(StructuredBindingTupleNoRefGet *) = Load[#this] : &:r1687_2, m1686_6 -# 1687| r1687_4(glval) = FieldAddress[r] : r1687_3 -# 1687| r1687_5(int &) = Load[?] : &:r1687_4, ~m1686_8 -# 1687| r1687_6(glval) = CopyValue : r1687_5 -# 1687| r1687_7(int &) = CopyValue : r1687_6 -# 1687| m1687_8(int &) = Store[#return] : &:r1687_1, r1687_7 -# 1686| v1686_9(void) = ReturnIndirection[#this] : &:r1686_7, m1686_8 -# 1686| r1686_10(glval) = VariableAddress[#return] : -# 1686| v1686_11(void) = ReturnValue : &:r1686_10, m1687_8 -# 1686| v1686_12(void) = AliasedUse : m1686_3 -# 1686| v1686_13(void) = ExitFunction : +# 1688| std::tuple_element::type StructuredBindingTupleNoRefGet::get() +# 1688| Block 0 +# 1688| v1688_1(void) = EnterFunction : +# 1688| m1688_2(unknown) = AliasedDefinition : +# 1688| m1688_3(unknown) = InitializeNonLocal : +# 1688| m1688_4(unknown) = Chi : total:m1688_2, partial:m1688_3 +# 1688| r1688_5(glval) = VariableAddress[#this] : +# 1688| m1688_6(glval) = InitializeParameter[#this] : &:r1688_5 +# 1688| r1688_7(glval) = Load[#this] : &:r1688_5, m1688_6 +# 1688| m1688_8(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1688_7 +# 1689| r1689_1(glval) = VariableAddress[#return] : +# 1689| r1689_2(glval) = VariableAddress[#this] : +# 1689| r1689_3(StructuredBindingTupleNoRefGet *) = Load[#this] : &:r1689_2, m1688_6 +# 1689| r1689_4(glval) = FieldAddress[r] : r1689_3 +# 1689| r1689_5(int &) = Load[?] : &:r1689_4, ~m1688_8 +# 1689| r1689_6(glval) = CopyValue : r1689_5 +# 1689| r1689_7(int &) = CopyValue : r1689_6 +# 1689| m1689_8(int &) = Store[#return] : &:r1689_1, r1689_7 +# 1688| v1688_9(void) = ReturnIndirection[#this] : &:r1688_7, m1688_8 +# 1688| r1688_10(glval) = VariableAddress[#return] : +# 1688| v1688_11(void) = ReturnValue : &:r1688_10, m1689_8 +# 1688| v1688_12(void) = AliasedUse : m1688_3 +# 1688| v1688_13(void) = ExitFunction : -# 1690| std::tuple_element::type StructuredBindingTupleNoRefGet::get() -# 1690| Block 0 -# 1690| v1690_1(void) = EnterFunction : -# 1690| m1690_2(unknown) = AliasedDefinition : -# 1690| m1690_3(unknown) = InitializeNonLocal : -# 1690| m1690_4(unknown) = Chi : total:m1690_2, partial:m1690_3 -# 1690| r1690_5(glval) = VariableAddress[#this] : -# 1690| m1690_6(glval) = InitializeParameter[#this] : &:r1690_5 -# 1690| r1690_7(glval) = Load[#this] : &:r1690_5, m1690_6 -# 1690| m1690_8(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1690_7 -# 1691| r1691_1(glval) = VariableAddress[#return] : -# 1691| r1691_2(glval) = VariableAddress[#temp1691:12] : -# 1691| r1691_3(int) = Constant[5] : -# 1691| m1691_4(int) = Store[#temp1691:12] : &:r1691_2, r1691_3 -# 1691| r1691_5(int &) = CopyValue : r1691_2 -# 1691| m1691_6(int &&) = Store[#return] : &:r1691_1, r1691_5 -# 1690| v1690_9(void) = ReturnIndirection[#this] : &:r1690_7, m1690_8 -# 1690| r1690_10(glval) = VariableAddress[#return] : -# 1690| v1690_11(void) = ReturnValue : &:r1690_10, m1691_6 -# 1690| v1690_12(void) = AliasedUse : m1690_3 -# 1690| v1690_13(void) = ExitFunction : +# 1692| std::tuple_element::type StructuredBindingTupleNoRefGet::get() +# 1692| Block 0 +# 1692| v1692_1(void) = EnterFunction : +# 1692| m1692_2(unknown) = AliasedDefinition : +# 1692| m1692_3(unknown) = InitializeNonLocal : +# 1692| m1692_4(unknown) = Chi : total:m1692_2, partial:m1692_3 +# 1692| r1692_5(glval) = VariableAddress[#this] : +# 1692| m1692_6(glval) = InitializeParameter[#this] : &:r1692_5 +# 1692| r1692_7(glval) = Load[#this] : &:r1692_5, m1692_6 +# 1692| m1692_8(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1692_7 +# 1693| r1693_1(glval) = VariableAddress[#return] : +# 1693| r1693_2(glval) = VariableAddress[#temp1693:12] : +# 1693| r1693_3(int) = Constant[5] : +# 1693| m1693_4(int) = Store[#temp1693:12] : &:r1693_2, r1693_3 +# 1693| r1693_5(int &) = CopyValue : r1693_2 +# 1693| m1693_6(int &&) = Store[#return] : &:r1693_1, r1693_5 +# 1692| v1692_9(void) = ReturnIndirection[#this] : &:r1692_7, m1692_8 +# 1692| r1692_10(glval) = VariableAddress[#return] : +# 1692| v1692_11(void) = ReturnValue : &:r1692_10, m1693_6 +# 1692| v1692_12(void) = AliasedUse : m1692_3 +# 1692| v1692_13(void) = ExitFunction : -# 1694| void tuple_structured_binding_no_ref_get() -# 1694| Block 0 -# 1694| v1694_1(void) = EnterFunction : -# 1694| m1694_2(unknown) = AliasedDefinition : -# 1694| m1694_3(unknown) = InitializeNonLocal : -# 1694| m1694_4(unknown) = Chi : total:m1694_2, partial:m1694_3 -# 1695| r1695_1(glval) = VariableAddress[t] : -# 1695| m1695_2(StructuredBindingTupleNoRefGet) = Uninitialized[t] : &:r1695_1 -# 1695| r1695_3(glval) = FunctionAddress[StructuredBindingTupleNoRefGet] : -# 1695| v1695_4(void) = Call[StructuredBindingTupleNoRefGet] : func:r1695_3, this:r1695_1 -# 1695| m1695_5(unknown) = ^CallSideEffect : ~m1694_4 -# 1695| m1695_6(unknown) = Chi : total:m1694_4, partial:m1695_5 -# 1695| m1695_7(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1695_1 -# 1695| m1695_8(StructuredBindingTupleNoRefGet) = Chi : total:m1695_2, partial:m1695_7 -# 1698| r1698_1(glval) = VariableAddress[(unnamed local variable)] : -# 1698| r1698_2(glval) = VariableAddress[t] : -# 1698| r1698_3(StructuredBindingTupleNoRefGet &) = CopyValue : r1698_2 -# 1698| m1698_4(StructuredBindingTupleNoRefGet &) = Store[(unnamed local variable)] : &:r1698_1, r1698_3 -# 1698| r1698_5(glval) = VariableAddress[i] : -# 1698| r1698_6(glval) = VariableAddress[#temp1698:16] : -# 1698| r1698_7(glval) = VariableAddress[(unnamed local variable)] : -# 1698| r1698_8(StructuredBindingTupleNoRefGet &) = Load[(unnamed local variable)] : &:r1698_7, m1698_4 -# 1698| r1698_9(glval) = CopyValue : r1698_8 -# 1698| r1698_10(glval) = FunctionAddress[get] : -# 1698| r1698_11(int) = Call[get] : func:r1698_10, this:r1698_9 -# 1698| m1698_12(unknown) = ^CallSideEffect : ~m1695_6 -# 1698| m1698_13(unknown) = Chi : total:m1695_6, partial:m1698_12 -# 1698| v1698_14(void) = ^IndirectReadSideEffect[-1] : &:r1698_9, m1695_8 -# 1698| m1698_15(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1698_9 -# 1698| m1698_16(StructuredBindingTupleNoRefGet) = Chi : total:m1695_8, partial:m1698_15 -# 1698| m1698_17(int) = Store[#temp1698:16] : &:r1698_6, r1698_11 -# 1698| r1698_18(int &) = CopyValue : r1698_6 -# 1698| m1698_19(int &&) = Store[i] : &:r1698_5, r1698_18 -# 1698| r1698_20(glval) = VariableAddress[r] : -# 1698| r1698_21(glval) = VariableAddress[(unnamed local variable)] : -# 1698| r1698_22(StructuredBindingTupleNoRefGet &) = Load[(unnamed local variable)] : &:r1698_21, m1698_4 -# 1698| r1698_23(glval) = CopyValue : r1698_22 -# 1698| r1698_24(glval) = FunctionAddress[get] : -# 1698| r1698_25(int &) = Call[get] : func:r1698_24, this:r1698_23 -# 1698| m1698_26(unknown) = ^CallSideEffect : ~m1698_13 -# 1698| m1698_27(unknown) = Chi : total:m1698_13, partial:m1698_26 -# 1698| v1698_28(void) = ^IndirectReadSideEffect[-1] : &:r1698_23, m1698_16 -# 1698| m1698_29(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1698_23 -# 1698| m1698_30(StructuredBindingTupleNoRefGet) = Chi : total:m1698_16, partial:m1698_29 -# 1698| r1698_31(glval) = CopyValue : r1698_25 -# 1698| r1698_32(int &) = CopyValue : r1698_31 -# 1698| m1698_33(int &) = Store[r] : &:r1698_20, r1698_32 -# 1698| r1698_34(glval) = VariableAddress[rv] : -# 1698| r1698_35(glval) = VariableAddress[(unnamed local variable)] : -# 1698| r1698_36(StructuredBindingTupleNoRefGet &) = Load[(unnamed local variable)] : &:r1698_35, m1698_4 -# 1698| r1698_37(glval) = CopyValue : r1698_36 -# 1698| r1698_38(glval) = FunctionAddress[get] : -# 1698| r1698_39(int &&) = Call[get] : func:r1698_38, this:r1698_37 -# 1698| m1698_40(unknown) = ^CallSideEffect : ~m1698_27 -# 1698| m1698_41(unknown) = Chi : total:m1698_27, partial:m1698_40 -# 1698| v1698_42(void) = ^IndirectReadSideEffect[-1] : &:r1698_37, m1698_30 -# 1698| m1698_43(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1698_37 -# 1698| m1698_44(StructuredBindingTupleNoRefGet) = Chi : total:m1698_30, partial:m1698_43 -# 1698| r1698_45(glval) = CopyValue : r1698_39 -# 1698| r1698_46(int &) = CopyValue : r1698_45 -# 1698| m1698_47(int &&) = Store[rv] : &:r1698_34, r1698_46 -# 1699| r1699_1(int) = Constant[4] : -# 1699| r1699_2(glval) = VariableAddress[i] : -# 1699| r1699_3(int &&) = Load[i] : &:r1699_2, m1698_19 -# 1699| r1699_4(glval) = CopyValue : r1699_3 -# 1699| m1699_5(int) = Store[?] : &:r1699_4, r1699_1 -# 1700| r1700_1(glval) = VariableAddress[ri] : -# 1700| r1700_2(glval) = VariableAddress[i] : -# 1700| r1700_3(int &&) = Load[i] : &:r1700_2, m1698_19 -# 1700| r1700_4(glval) = CopyValue : r1700_3 -# 1700| r1700_5(int &) = CopyValue : r1700_4 -# 1700| m1700_6(int &) = Store[ri] : &:r1700_1, r1700_5 -# 1701| r1701_1(glval) = VariableAddress[v] : +# 1696| void tuple_structured_binding_no_ref_get() +# 1696| Block 0 +# 1696| v1696_1(void) = EnterFunction : +# 1696| m1696_2(unknown) = AliasedDefinition : +# 1696| m1696_3(unknown) = InitializeNonLocal : +# 1696| m1696_4(unknown) = Chi : total:m1696_2, partial:m1696_3 +# 1697| r1697_1(glval) = VariableAddress[t] : +# 1697| m1697_2(StructuredBindingTupleNoRefGet) = Uninitialized[t] : &:r1697_1 +# 1697| r1697_3(glval) = FunctionAddress[StructuredBindingTupleNoRefGet] : +# 1697| v1697_4(void) = Call[StructuredBindingTupleNoRefGet] : func:r1697_3, this:r1697_1 +# 1697| m1697_5(unknown) = ^CallSideEffect : ~m1696_4 +# 1697| m1697_6(unknown) = Chi : total:m1696_4, partial:m1697_5 +# 1697| m1697_7(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1697_1 +# 1697| m1697_8(StructuredBindingTupleNoRefGet) = Chi : total:m1697_2, partial:m1697_7 +# 1700| r1700_1(glval) = VariableAddress[(unnamed local variable)] : +# 1700| r1700_2(glval) = VariableAddress[t] : +# 1700| r1700_3(StructuredBindingTupleNoRefGet &) = CopyValue : r1700_2 +# 1700| m1700_4(StructuredBindingTupleNoRefGet &) = Store[(unnamed local variable)] : &:r1700_1, r1700_3 +# 1700| r1700_5(glval) = VariableAddress[i] : +# 1700| r1700_6(glval) = VariableAddress[#temp1700:16] : +# 1700| r1700_7(glval) = VariableAddress[(unnamed local variable)] : +# 1700| r1700_8(StructuredBindingTupleNoRefGet &) = Load[(unnamed local variable)] : &:r1700_7, m1700_4 +# 1700| r1700_9(glval) = CopyValue : r1700_8 +# 1700| r1700_10(glval) = FunctionAddress[get] : +# 1700| r1700_11(int) = Call[get] : func:r1700_10, this:r1700_9 +# 1700| m1700_12(unknown) = ^CallSideEffect : ~m1697_6 +# 1700| m1700_13(unknown) = Chi : total:m1697_6, partial:m1700_12 +# 1700| v1700_14(void) = ^IndirectReadSideEffect[-1] : &:r1700_9, m1697_8 +# 1700| m1700_15(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1700_9 +# 1700| m1700_16(StructuredBindingTupleNoRefGet) = Chi : total:m1697_8, partial:m1700_15 +# 1700| m1700_17(int) = Store[#temp1700:16] : &:r1700_6, r1700_11 +# 1700| r1700_18(int &) = CopyValue : r1700_6 +# 1700| m1700_19(int &&) = Store[i] : &:r1700_5, r1700_18 +# 1700| r1700_20(glval) = VariableAddress[r] : +# 1700| r1700_21(glval) = VariableAddress[(unnamed local variable)] : +# 1700| r1700_22(StructuredBindingTupleNoRefGet &) = Load[(unnamed local variable)] : &:r1700_21, m1700_4 +# 1700| r1700_23(glval) = CopyValue : r1700_22 +# 1700| r1700_24(glval) = FunctionAddress[get] : +# 1700| r1700_25(int &) = Call[get] : func:r1700_24, this:r1700_23 +# 1700| m1700_26(unknown) = ^CallSideEffect : ~m1700_13 +# 1700| m1700_27(unknown) = Chi : total:m1700_13, partial:m1700_26 +# 1700| v1700_28(void) = ^IndirectReadSideEffect[-1] : &:r1700_23, m1700_16 +# 1700| m1700_29(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1700_23 +# 1700| m1700_30(StructuredBindingTupleNoRefGet) = Chi : total:m1700_16, partial:m1700_29 +# 1700| r1700_31(glval) = CopyValue : r1700_25 +# 1700| r1700_32(int &) = CopyValue : r1700_31 +# 1700| m1700_33(int &) = Store[r] : &:r1700_20, r1700_32 +# 1700| r1700_34(glval) = VariableAddress[rv] : +# 1700| r1700_35(glval) = VariableAddress[(unnamed local variable)] : +# 1700| r1700_36(StructuredBindingTupleNoRefGet &) = Load[(unnamed local variable)] : &:r1700_35, m1700_4 +# 1700| r1700_37(glval) = CopyValue : r1700_36 +# 1700| r1700_38(glval) = FunctionAddress[get] : +# 1700| r1700_39(int &&) = Call[get] : func:r1700_38, this:r1700_37 +# 1700| m1700_40(unknown) = ^CallSideEffect : ~m1700_27 +# 1700| m1700_41(unknown) = Chi : total:m1700_27, partial:m1700_40 +# 1700| v1700_42(void) = ^IndirectReadSideEffect[-1] : &:r1700_37, m1700_30 +# 1700| m1700_43(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1700_37 +# 1700| m1700_44(StructuredBindingTupleNoRefGet) = Chi : total:m1700_30, partial:m1700_43 +# 1700| r1700_45(glval) = CopyValue : r1700_39 +# 1700| r1700_46(int &) = CopyValue : r1700_45 +# 1700| m1700_47(int &&) = Store[rv] : &:r1700_34, r1700_46 +# 1701| r1701_1(int) = Constant[4] : # 1701| r1701_2(glval) = VariableAddress[i] : -# 1701| r1701_3(int &&) = Load[i] : &:r1701_2, m1698_19 -# 1701| r1701_4(int) = Load[?] : &:r1701_3, m1699_5 -# 1701| m1701_5(int) = Store[v] : &:r1701_1, r1701_4 -# 1702| r1702_1(int) = Constant[5] : -# 1702| r1702_2(glval) = VariableAddress[r] : -# 1702| r1702_3(int &) = Load[r] : &:r1702_2, m1698_33 +# 1701| r1701_3(int &&) = Load[i] : &:r1701_2, m1700_19 +# 1701| r1701_4(glval) = CopyValue : r1701_3 +# 1701| m1701_5(int) = Store[?] : &:r1701_4, r1701_1 +# 1702| r1702_1(glval) = VariableAddress[ri] : +# 1702| r1702_2(glval) = VariableAddress[i] : +# 1702| r1702_3(int &&) = Load[i] : &:r1702_2, m1700_19 # 1702| r1702_4(glval) = CopyValue : r1702_3 -# 1702| m1702_5(int) = Store[?] : &:r1702_4, r1702_1 -# 1702| m1702_6(unknown) = Chi : total:m1698_41, partial:m1702_5 -# 1703| r1703_1(glval) = VariableAddress[rr] : -# 1703| r1703_2(glval) = VariableAddress[r] : -# 1703| r1703_3(int &) = Load[r] : &:r1703_2, m1698_33 -# 1703| r1703_4(glval) = CopyValue : r1703_3 -# 1703| r1703_5(int &) = CopyValue : r1703_4 -# 1703| m1703_6(int &) = Store[rr] : &:r1703_1, r1703_5 -# 1704| r1704_1(glval) = VariableAddress[w] : +# 1702| r1702_5(int &) = CopyValue : r1702_4 +# 1702| m1702_6(int &) = Store[ri] : &:r1702_1, r1702_5 +# 1703| r1703_1(glval) = VariableAddress[v] : +# 1703| r1703_2(glval) = VariableAddress[i] : +# 1703| r1703_3(int &&) = Load[i] : &:r1703_2, m1700_19 +# 1703| r1703_4(int) = Load[?] : &:r1703_3, m1701_5 +# 1703| m1703_5(int) = Store[v] : &:r1703_1, r1703_4 +# 1704| r1704_1(int) = Constant[5] : # 1704| r1704_2(glval) = VariableAddress[r] : -# 1704| r1704_3(int &) = Load[r] : &:r1704_2, m1698_33 -# 1704| r1704_4(int) = Load[?] : &:r1704_3, ~m1702_6 -# 1704| m1704_5(int) = Store[w] : &:r1704_1, r1704_4 -# 1708| r1708_1(glval) = VariableAddress[unnamed_local_variable] : -# 1708| r1708_2(glval) = VariableAddress[t] : -# 1708| r1708_3(StructuredBindingTupleNoRefGet &) = CopyValue : r1708_2 -# 1708| m1708_4(StructuredBindingTupleNoRefGet &) = Store[unnamed_local_variable] : &:r1708_1, r1708_3 -# 1709| r1709_1(glval) = VariableAddress[i] : -# 1709| r1709_2(glval) = VariableAddress[#temp1709:20] : -# 1709| r1709_3(glval) = VariableAddress[unnamed_local_variable] : -# 1709| r1709_4(StructuredBindingTupleNoRefGet &) = Load[unnamed_local_variable] : &:r1709_3, m1708_4 -# 1709| r1709_5(glval) = CopyValue : r1709_4 -# 1709| r1709_6(glval) = FunctionAddress[get] : -# 1709| r1709_7(int) = Call[get] : func:r1709_6, this:r1709_5 -# 1709| m1709_8(unknown) = ^CallSideEffect : ~m1702_6 -# 1709| m1709_9(unknown) = Chi : total:m1702_6, partial:m1709_8 -# 1709| v1709_10(void) = ^IndirectReadSideEffect[-1] : &:r1709_5, m1698_44 -# 1709| m1709_11(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1709_5 -# 1709| m1709_12(StructuredBindingTupleNoRefGet) = Chi : total:m1698_44, partial:m1709_11 -# 1709| m1709_13(int) = Store[#temp1709:20] : &:r1709_2, r1709_7 -# 1709| r1709_14(int &) = CopyValue : r1709_2 -# 1709| m1709_15(int &&) = Store[i] : &:r1709_1, r1709_14 -# 1710| r1710_1(glval) = VariableAddress[r] : -# 1710| r1710_2(glval) = VariableAddress[unnamed_local_variable] : -# 1710| r1710_3(StructuredBindingTupleNoRefGet &) = Load[unnamed_local_variable] : &:r1710_2, m1708_4 -# 1710| r1710_4(glval) = CopyValue : r1710_3 -# 1710| r1710_5(glval) = FunctionAddress[get] : -# 1710| r1710_6(int &) = Call[get] : func:r1710_5, this:r1710_4 -# 1710| m1710_7(unknown) = ^CallSideEffect : ~m1709_9 -# 1710| m1710_8(unknown) = Chi : total:m1709_9, partial:m1710_7 -# 1710| v1710_9(void) = ^IndirectReadSideEffect[-1] : &:r1710_4, m1709_12 -# 1710| m1710_10(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1710_4 -# 1710| m1710_11(StructuredBindingTupleNoRefGet) = Chi : total:m1709_12, partial:m1710_10 -# 1710| r1710_12(glval) = CopyValue : r1710_6 -# 1710| r1710_13(int &) = CopyValue : r1710_12 -# 1710| m1710_14(int &) = Store[r] : &:r1710_1, r1710_13 -# 1711| r1711_1(glval) = VariableAddress[rv] : -# 1711| r1711_2(glval) = VariableAddress[unnamed_local_variable] : -# 1711| r1711_3(StructuredBindingTupleNoRefGet &) = Load[unnamed_local_variable] : &:r1711_2, m1708_4 -# 1711| r1711_4(glval) = CopyValue : r1711_3 -# 1711| r1711_5(glval) = FunctionAddress[get] : -# 1711| r1711_6(int &&) = Call[get] : func:r1711_5, this:r1711_4 -# 1711| m1711_7(unknown) = ^CallSideEffect : ~m1710_8 -# 1711| m1711_8(unknown) = Chi : total:m1710_8, partial:m1711_7 -# 1711| v1711_9(void) = ^IndirectReadSideEffect[-1] : &:r1711_4, m1710_11 -# 1711| m1711_10(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1711_4 -# 1711| m1711_11(StructuredBindingTupleNoRefGet) = Chi : total:m1710_11, partial:m1711_10 -# 1711| r1711_12(glval) = CopyValue : r1711_6 -# 1711| r1711_13(int &) = CopyValue : r1711_12 -# 1711| m1711_14(int &&) = Store[rv] : &:r1711_1, r1711_13 -# 1712| r1712_1(int) = Constant[4] : -# 1712| r1712_2(glval) = VariableAddress[i] : -# 1712| r1712_3(int &&) = Load[i] : &:r1712_2, m1709_15 -# 1712| r1712_4(glval) = CopyValue : r1712_3 -# 1712| m1712_5(int) = Store[?] : &:r1712_4, r1712_1 -# 1713| r1713_1(glval) = VariableAddress[ri] : -# 1713| r1713_2(glval) = VariableAddress[i] : -# 1713| r1713_3(int &&) = Load[i] : &:r1713_2, m1709_15 -# 1713| r1713_4(glval) = CopyValue : r1713_3 -# 1713| r1713_5(int &) = CopyValue : r1713_4 -# 1713| m1713_6(int &) = Store[ri] : &:r1713_1, r1713_5 -# 1714| r1714_1(glval) = VariableAddress[v] : +# 1704| r1704_3(int &) = Load[r] : &:r1704_2, m1700_33 +# 1704| r1704_4(glval) = CopyValue : r1704_3 +# 1704| m1704_5(int) = Store[?] : &:r1704_4, r1704_1 +# 1704| m1704_6(unknown) = Chi : total:m1700_41, partial:m1704_5 +# 1705| r1705_1(glval) = VariableAddress[rr] : +# 1705| r1705_2(glval) = VariableAddress[r] : +# 1705| r1705_3(int &) = Load[r] : &:r1705_2, m1700_33 +# 1705| r1705_4(glval) = CopyValue : r1705_3 +# 1705| r1705_5(int &) = CopyValue : r1705_4 +# 1705| m1705_6(int &) = Store[rr] : &:r1705_1, r1705_5 +# 1706| r1706_1(glval) = VariableAddress[w] : +# 1706| r1706_2(glval) = VariableAddress[r] : +# 1706| r1706_3(int &) = Load[r] : &:r1706_2, m1700_33 +# 1706| r1706_4(int) = Load[?] : &:r1706_3, ~m1704_6 +# 1706| m1706_5(int) = Store[w] : &:r1706_1, r1706_4 +# 1710| r1710_1(glval) = VariableAddress[unnamed_local_variable] : +# 1710| r1710_2(glval) = VariableAddress[t] : +# 1710| r1710_3(StructuredBindingTupleNoRefGet &) = CopyValue : r1710_2 +# 1710| m1710_4(StructuredBindingTupleNoRefGet &) = Store[unnamed_local_variable] : &:r1710_1, r1710_3 +# 1711| r1711_1(glval) = VariableAddress[i] : +# 1711| r1711_2(glval) = VariableAddress[#temp1711:20] : +# 1711| r1711_3(glval) = VariableAddress[unnamed_local_variable] : +# 1711| r1711_4(StructuredBindingTupleNoRefGet &) = Load[unnamed_local_variable] : &:r1711_3, m1710_4 +# 1711| r1711_5(glval) = CopyValue : r1711_4 +# 1711| r1711_6(glval) = FunctionAddress[get] : +# 1711| r1711_7(int) = Call[get] : func:r1711_6, this:r1711_5 +# 1711| m1711_8(unknown) = ^CallSideEffect : ~m1704_6 +# 1711| m1711_9(unknown) = Chi : total:m1704_6, partial:m1711_8 +# 1711| v1711_10(void) = ^IndirectReadSideEffect[-1] : &:r1711_5, m1700_44 +# 1711| m1711_11(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1711_5 +# 1711| m1711_12(StructuredBindingTupleNoRefGet) = Chi : total:m1700_44, partial:m1711_11 +# 1711| m1711_13(int) = Store[#temp1711:20] : &:r1711_2, r1711_7 +# 1711| r1711_14(int &) = CopyValue : r1711_2 +# 1711| m1711_15(int &&) = Store[i] : &:r1711_1, r1711_14 +# 1712| r1712_1(glval) = VariableAddress[r] : +# 1712| r1712_2(glval) = VariableAddress[unnamed_local_variable] : +# 1712| r1712_3(StructuredBindingTupleNoRefGet &) = Load[unnamed_local_variable] : &:r1712_2, m1710_4 +# 1712| r1712_4(glval) = CopyValue : r1712_3 +# 1712| r1712_5(glval) = FunctionAddress[get] : +# 1712| r1712_6(int &) = Call[get] : func:r1712_5, this:r1712_4 +# 1712| m1712_7(unknown) = ^CallSideEffect : ~m1711_9 +# 1712| m1712_8(unknown) = Chi : total:m1711_9, partial:m1712_7 +# 1712| v1712_9(void) = ^IndirectReadSideEffect[-1] : &:r1712_4, m1711_12 +# 1712| m1712_10(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1712_4 +# 1712| m1712_11(StructuredBindingTupleNoRefGet) = Chi : total:m1711_12, partial:m1712_10 +# 1712| r1712_12(glval) = CopyValue : r1712_6 +# 1712| r1712_13(int &) = CopyValue : r1712_12 +# 1712| m1712_14(int &) = Store[r] : &:r1712_1, r1712_13 +# 1713| r1713_1(glval) = VariableAddress[rv] : +# 1713| r1713_2(glval) = VariableAddress[unnamed_local_variable] : +# 1713| r1713_3(StructuredBindingTupleNoRefGet &) = Load[unnamed_local_variable] : &:r1713_2, m1710_4 +# 1713| r1713_4(glval) = CopyValue : r1713_3 +# 1713| r1713_5(glval) = FunctionAddress[get] : +# 1713| r1713_6(int &&) = Call[get] : func:r1713_5, this:r1713_4 +# 1713| m1713_7(unknown) = ^CallSideEffect : ~m1712_8 +# 1713| m1713_8(unknown) = Chi : total:m1712_8, partial:m1713_7 +# 1713| v1713_9(void) = ^IndirectReadSideEffect[-1] : &:r1713_4, m1712_11 +# 1713| m1713_10(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1713_4 +# 1713| m1713_11(StructuredBindingTupleNoRefGet) = Chi : total:m1712_11, partial:m1713_10 +# 1713| r1713_12(glval) = CopyValue : r1713_6 +# 1713| r1713_13(int &) = CopyValue : r1713_12 +# 1713| m1713_14(int &&) = Store[rv] : &:r1713_1, r1713_13 +# 1714| r1714_1(int) = Constant[4] : # 1714| r1714_2(glval) = VariableAddress[i] : -# 1714| r1714_3(int &&) = Load[i] : &:r1714_2, m1709_15 -# 1714| r1714_4(int) = Load[?] : &:r1714_3, m1712_5 -# 1714| m1714_5(int) = Store[v] : &:r1714_1, r1714_4 -# 1715| r1715_1(int) = Constant[5] : -# 1715| r1715_2(glval) = VariableAddress[r] : -# 1715| r1715_3(int &) = Load[r] : &:r1715_2, m1710_14 +# 1714| r1714_3(int &&) = Load[i] : &:r1714_2, m1711_15 +# 1714| r1714_4(glval) = CopyValue : r1714_3 +# 1714| m1714_5(int) = Store[?] : &:r1714_4, r1714_1 +# 1715| r1715_1(glval) = VariableAddress[ri] : +# 1715| r1715_2(glval) = VariableAddress[i] : +# 1715| r1715_3(int &&) = Load[i] : &:r1715_2, m1711_15 # 1715| r1715_4(glval) = CopyValue : r1715_3 -# 1715| m1715_5(int) = Store[?] : &:r1715_4, r1715_1 -# 1715| m1715_6(unknown) = Chi : total:m1711_8, partial:m1715_5 -# 1716| r1716_1(glval) = VariableAddress[rr] : -# 1716| r1716_2(glval) = VariableAddress[r] : -# 1716| r1716_3(int &) = Load[r] : &:r1716_2, m1710_14 -# 1716| r1716_4(glval) = CopyValue : r1716_3 -# 1716| r1716_5(int &) = CopyValue : r1716_4 -# 1716| m1716_6(int &) = Store[rr] : &:r1716_1, r1716_5 -# 1717| r1717_1(glval) = VariableAddress[w] : +# 1715| r1715_5(int &) = CopyValue : r1715_4 +# 1715| m1715_6(int &) = Store[ri] : &:r1715_1, r1715_5 +# 1716| r1716_1(glval) = VariableAddress[v] : +# 1716| r1716_2(glval) = VariableAddress[i] : +# 1716| r1716_3(int &&) = Load[i] : &:r1716_2, m1711_15 +# 1716| r1716_4(int) = Load[?] : &:r1716_3, m1714_5 +# 1716| m1716_5(int) = Store[v] : &:r1716_1, r1716_4 +# 1717| r1717_1(int) = Constant[5] : # 1717| r1717_2(glval) = VariableAddress[r] : -# 1717| r1717_3(int &) = Load[r] : &:r1717_2, m1710_14 -# 1717| r1717_4(int) = Load[?] : &:r1717_3, ~m1715_6 -# 1717| m1717_5(int) = Store[w] : &:r1717_1, r1717_4 -# 1719| v1719_1(void) = NoOp : -# 1694| v1694_5(void) = ReturnVoid : -# 1694| v1694_6(void) = AliasedUse : ~m1715_6 -# 1694| v1694_7(void) = ExitFunction : +# 1717| r1717_3(int &) = Load[r] : &:r1717_2, m1712_14 +# 1717| r1717_4(glval) = CopyValue : r1717_3 +# 1717| m1717_5(int) = Store[?] : &:r1717_4, r1717_1 +# 1717| m1717_6(unknown) = Chi : total:m1713_8, partial:m1717_5 +# 1718| r1718_1(glval) = VariableAddress[rr] : +# 1718| r1718_2(glval) = VariableAddress[r] : +# 1718| r1718_3(int &) = Load[r] : &:r1718_2, m1712_14 +# 1718| r1718_4(glval) = CopyValue : r1718_3 +# 1718| r1718_5(int &) = CopyValue : r1718_4 +# 1718| m1718_6(int &) = Store[rr] : &:r1718_1, r1718_5 +# 1719| r1719_1(glval) = VariableAddress[w] : +# 1719| r1719_2(glval) = VariableAddress[r] : +# 1719| r1719_3(int &) = Load[r] : &:r1719_2, m1712_14 +# 1719| r1719_4(int) = Load[?] : &:r1719_3, ~m1717_6 +# 1719| m1719_5(int) = Store[w] : &:r1719_1, r1719_4 +# 1721| v1721_1(void) = NoOp : +# 1696| v1696_5(void) = ReturnVoid : +# 1696| v1696_6(void) = AliasedUse : ~m1717_6 +# 1696| v1696_7(void) = ExitFunction : -# 1721| void array_structured_binding_non_ref_init() -# 1721| Block 0 -# 1721| v1721_1(void) = EnterFunction : -# 1721| m1721_2(unknown) = AliasedDefinition : -# 1721| m1721_3(unknown) = InitializeNonLocal : -# 1721| m1721_4(unknown) = Chi : total:m1721_2, partial:m1721_3 -# 1722| r1722_1(glval) = VariableAddress[xs] : -# 1722| m1722_2(int[2]) = Uninitialized[xs] : &:r1722_1 -# 1722| r1722_3(int) = Constant[0] : -# 1722| r1722_4(glval) = PointerAdd[4] : r1722_1, r1722_3 -# 1722| r1722_5(int) = Constant[1] : -# 1722| m1722_6(int) = Store[?] : &:r1722_4, r1722_5 -# 1722| m1722_7(int[2]) = Chi : total:m1722_2, partial:m1722_6 -# 1722| r1722_8(int) = Constant[1] : -# 1722| r1722_9(glval) = PointerAdd[4] : r1722_1, r1722_8 -# 1722| r1722_10(int) = Constant[2] : -# 1722| m1722_11(int) = Store[?] : &:r1722_9, r1722_10 -# 1722| m1722_12(int[2]) = Chi : total:m1722_7, partial:m1722_11 -# 1723| r1723_1(glval) = VariableAddress[(unnamed local variable)] : -# 1723| r1723_2(glval) = VariableAddress[xs] : -# 1723| r1723_3(int[2]) = Load[xs] : &:r1723_2, m1722_12 -# 1723| m1723_4(int[2]) = Store[(unnamed local variable)] : &:r1723_1, r1723_3 -# 1723| r1723_5(glval) = VariableAddress[x0] : +# 1723| void array_structured_binding_non_ref_init() +# 1723| Block 0 +# 1723| v1723_1(void) = EnterFunction : +# 1723| m1723_2(unknown) = AliasedDefinition : +# 1723| m1723_3(unknown) = InitializeNonLocal : +# 1723| m1723_4(unknown) = Chi : total:m1723_2, partial:m1723_3 +# 1724| r1724_1(glval) = VariableAddress[xs] : +# 1724| m1724_2(int[2]) = Uninitialized[xs] : &:r1724_1 +# 1724| r1724_3(int) = Constant[0] : +# 1724| r1724_4(glval) = PointerAdd[4] : r1724_1, r1724_3 +# 1724| r1724_5(int) = Constant[1] : +# 1724| m1724_6(int) = Store[?] : &:r1724_4, r1724_5 +# 1724| m1724_7(int[2]) = Chi : total:m1724_2, partial:m1724_6 +# 1724| r1724_8(int) = Constant[1] : +# 1724| r1724_9(glval) = PointerAdd[4] : r1724_1, r1724_8 +# 1724| r1724_10(int) = Constant[2] : +# 1724| m1724_11(int) = Store[?] : &:r1724_9, r1724_10 +# 1724| m1724_12(int[2]) = Chi : total:m1724_7, partial:m1724_11 +# 1725| r1725_1(glval) = VariableAddress[(unnamed local variable)] : +# 1725| r1725_2(glval) = VariableAddress[xs] : +# 1725| r1725_3(int[2]) = Load[xs] : &:r1725_2, m1724_12 +# 1725| m1725_4(int[2]) = Store[(unnamed local variable)] : &:r1725_1, r1725_3 +# 1725| r1725_5(glval) = VariableAddress[x0] : #-----| r0_1(glval) = VariableAddress[(unnamed local variable)] : #-----| r0_2(int *) = Convert : r0_1 #-----| r0_3(unsigned long) = Constant[0] : #-----| r0_4(glval) = PointerAdd[4] : r0_2, r0_3 -#-----| m0_5(int &) = Store[x0] : &:r1723_5, r0_4 -# 1723| r1723_6(glval) = VariableAddress[x1] : +#-----| m0_5(int &) = Store[x0] : &:r1725_5, r0_4 +# 1725| r1725_6(glval) = VariableAddress[x1] : #-----| r0_6(glval) = VariableAddress[(unnamed local variable)] : #-----| r0_7(int *) = Convert : r0_6 #-----| r0_8(unsigned long) = Constant[1] : #-----| r0_9(glval) = PointerAdd[4] : r0_7, r0_8 -#-----| m0_10(int &) = Store[x1] : &:r1723_6, r0_9 -# 1724| v1724_1(void) = NoOp : -# 1721| v1721_5(void) = ReturnVoid : -# 1721| v1721_6(void) = AliasedUse : m1721_3 -# 1721| v1721_7(void) = ExitFunction : +#-----| m0_10(int &) = Store[x1] : &:r1725_6, r0_9 +# 1726| v1726_1(void) = NoOp : +# 1723| v1723_5(void) = ReturnVoid : +# 1723| v1723_6(void) = AliasedUse : m1723_3 +# 1723| v1723_7(void) = ExitFunction : -# 1729| void CapturedLambdaMyObj::CapturedLambdaMyObj() -# 1729| Block 0 -# 1729| v1729_1(void) = EnterFunction : -# 1729| m1729_2(unknown) = AliasedDefinition : -# 1729| m1729_3(unknown) = InitializeNonLocal : -# 1729| m1729_4(unknown) = Chi : total:m1729_2, partial:m1729_3 -# 1729| r1729_5(glval) = VariableAddress[#this] : -# 1729| m1729_6(glval) = InitializeParameter[#this] : &:r1729_5 -# 1729| r1729_7(glval) = Load[#this] : &:r1729_5, m1729_6 -# 1729| m1729_8(CapturedLambdaMyObj) = InitializeIndirection[#this] : &:r1729_7 -# 1729| v1729_9(void) = NoOp : -# 1729| v1729_10(void) = ReturnIndirection[#this] : &:r1729_7, m1729_8 -# 1729| v1729_11(void) = ReturnVoid : -# 1729| v1729_12(void) = AliasedUse : m1729_3 -# 1729| v1729_13(void) = ExitFunction : +# 1731| void CapturedLambdaMyObj::CapturedLambdaMyObj() +# 1731| Block 0 +# 1731| v1731_1(void) = EnterFunction : +# 1731| m1731_2(unknown) = AliasedDefinition : +# 1731| m1731_3(unknown) = InitializeNonLocal : +# 1731| m1731_4(unknown) = Chi : total:m1731_2, partial:m1731_3 +# 1731| r1731_5(glval) = VariableAddress[#this] : +# 1731| m1731_6(glval) = InitializeParameter[#this] : &:r1731_5 +# 1731| r1731_7(glval) = Load[#this] : &:r1731_5, m1731_6 +# 1731| m1731_8(CapturedLambdaMyObj) = InitializeIndirection[#this] : &:r1731_7 +# 1731| v1731_9(void) = NoOp : +# 1731| v1731_10(void) = ReturnIndirection[#this] : &:r1731_7, m1731_8 +# 1731| v1731_11(void) = ReturnVoid : +# 1731| v1731_12(void) = AliasedUse : m1731_3 +# 1731| v1731_13(void) = ExitFunction : -# 1732| void captured_lambda(int, int&, int&&) -# 1732| Block 0 -# 1732| v1732_1(void) = EnterFunction : -# 1732| m1732_2(unknown) = AliasedDefinition : -# 1732| m1732_3(unknown) = InitializeNonLocal : -# 1732| m1732_4(unknown) = Chi : total:m1732_2, partial:m1732_3 -# 1732| r1732_5(glval) = VariableAddress[x] : -# 1732| m1732_6(int) = InitializeParameter[x] : &:r1732_5 -# 1732| r1732_7(glval) = VariableAddress[y] : -# 1732| m1732_8(int &) = InitializeParameter[y] : &:r1732_7 -# 1732| r1732_9(int &) = Load[y] : &:r1732_7, m1732_8 -# 1732| m1732_10(unknown) = InitializeIndirection[y] : &:r1732_9 -# 1732| r1732_11(glval) = VariableAddress[z] : -# 1732| m1732_12(int &&) = InitializeParameter[z] : &:r1732_11 -# 1732| r1732_13(int &&) = Load[z] : &:r1732_11, m1732_12 -# 1732| m1732_14(unknown) = InitializeIndirection[z] : &:r1732_13 -# 1734| r1734_1(glval) = VariableAddress[obj1] : -# 1734| r1734_2(glval) = VariableAddress[#temp1734:24] : -# 1734| m1734_3(CapturedLambdaMyObj) = Uninitialized[#temp1734:24] : &:r1734_2 -# 1734| r1734_4(glval) = FunctionAddress[CapturedLambdaMyObj] : -# 1734| v1734_5(void) = Call[CapturedLambdaMyObj] : func:r1734_4, this:r1734_2 -# 1734| m1734_6(unknown) = ^CallSideEffect : ~m1732_4 -# 1734| m1734_7(unknown) = Chi : total:m1732_4, partial:m1734_6 -# 1734| m1734_8(CapturedLambdaMyObj) = ^IndirectMayWriteSideEffect[-1] : &:r1734_2 -# 1734| m1734_9(CapturedLambdaMyObj) = Chi : total:m1734_3, partial:m1734_8 -# 1734| r1734_10(glval) = Convert : r1734_2 -# 1734| r1734_11(CapturedLambdaMyObj &) = CopyValue : r1734_10 -# 1734| m1734_12(CapturedLambdaMyObj &) = Store[obj1] : &:r1734_1, r1734_11 -# 1735| r1735_1(glval) = VariableAddress[obj2] : -# 1735| m1735_2(CapturedLambdaMyObj) = Uninitialized[obj2] : &:r1735_1 -# 1735| r1735_3(glval) = FunctionAddress[CapturedLambdaMyObj] : -# 1735| v1735_4(void) = Call[CapturedLambdaMyObj] : func:r1735_3, this:r1735_1 -# 1735| m1735_5(unknown) = ^CallSideEffect : ~m1734_7 -# 1735| m1735_6(unknown) = Chi : total:m1734_7, partial:m1735_5 -# 1735| m1735_7(CapturedLambdaMyObj) = ^IndirectMayWriteSideEffect[-1] : &:r1735_1 -# 1735| m1735_8(CapturedLambdaMyObj) = Chi : total:m1735_2, partial:m1735_7 -# 1737| r1737_1(glval) = VariableAddress[lambda_outer] : -# 1737| r1737_2(glval) = VariableAddress[#temp1737:24] : -# 1737| m1737_3(decltype([...](...){...})) = Uninitialized[#temp1737:24] : &:r1737_2 -# 1737| r1737_4(glval) = FieldAddress[obj1] : r1737_2 -# 1737| r1737_5(glval) = VariableAddress[obj1] : -# 1737| r1737_6(CapturedLambdaMyObj &) = Load[obj1] : &:r1737_5, m1734_12 -#-----| r0_1(CapturedLambdaMyObj) = Load[?] : &:r1737_6, m1734_9 -#-----| m0_2(CapturedLambdaMyObj) = Store[?] : &:r1737_4, r0_1 -#-----| m0_3(decltype([...](...){...})) = Chi : total:m1737_3, partial:m0_2 -# 1737| r1737_7(glval) = FieldAddress[obj2] : r1737_2 -# 1737| r1737_8(glval) = VariableAddress[obj2] : -# 1737| r1737_9(CapturedLambdaMyObj) = Load[obj2] : &:r1737_8, m1735_8 -# 1737| m1737_10(CapturedLambdaMyObj) = Store[?] : &:r1737_7, r1737_9 -# 1737| m1737_11(decltype([...](...){...})) = Chi : total:m0_3, partial:m1737_10 -# 1737| r1737_12(glval) = FieldAddress[x] : r1737_2 -# 1737| r1737_13(glval) = VariableAddress[x] : -# 1737| r1737_14(int) = Load[x] : &:r1737_13, m1732_6 -# 1737| m1737_15(int) = Store[?] : &:r1737_12, r1737_14 -# 1737| m1737_16(decltype([...](...){...})) = Chi : total:m1737_11, partial:m1737_15 -# 1737| r1737_17(glval) = FieldAddress[y] : r1737_2 -# 1737| r1737_18(glval) = VariableAddress[y] : -# 1737| r1737_19(int &) = Load[y] : &:r1737_18, m1732_8 -# 1739| r1739_1(int) = Load[?] : &:r1737_19, ~m1732_10 -# 1739| m1739_2(int) = Store[?] : &:r1737_17, r1739_1 -# 1739| m1739_3(decltype([...](...){...})) = Chi : total:m1737_16, partial:m1739_2 -# 1737| r1737_20(glval) = FieldAddress[z] : r1737_2 -# 1737| r1737_21(glval) = VariableAddress[z] : -# 1737| r1737_22(int &&) = Load[z] : &:r1737_21, m1732_12 -# 1739| r1739_4(int) = Load[?] : &:r1737_22, ~m1732_14 -# 1739| m1739_5(int) = Store[?] : &:r1737_20, r1739_4 -# 1739| m1739_6(decltype([...](...){...})) = Chi : total:m1739_3, partial:m1739_5 -# 1737| r1737_23(decltype([...](...){...})) = Load[#temp1737:24] : &:r1737_2, m1739_6 -# 1737| m1737_24(decltype([...](...){...})) = Store[lambda_outer] : &:r1737_1, r1737_23 -# 1740| v1740_1(void) = NoOp : -# 1732| v1732_15(void) = ReturnIndirection[y] : &:r1732_9, m1732_10 -# 1732| v1732_16(void) = ReturnIndirection[z] : &:r1732_13, m1732_14 -# 1732| v1732_17(void) = ReturnVoid : -# 1732| v1732_18(void) = AliasedUse : ~m1735_6 -# 1732| v1732_19(void) = ExitFunction : +# 1734| void captured_lambda(int, int&, int&&) +# 1734| Block 0 +# 1734| v1734_1(void) = EnterFunction : +# 1734| m1734_2(unknown) = AliasedDefinition : +# 1734| m1734_3(unknown) = InitializeNonLocal : +# 1734| m1734_4(unknown) = Chi : total:m1734_2, partial:m1734_3 +# 1734| r1734_5(glval) = VariableAddress[x] : +# 1734| m1734_6(int) = InitializeParameter[x] : &:r1734_5 +# 1734| r1734_7(glval) = VariableAddress[y] : +# 1734| m1734_8(int &) = InitializeParameter[y] : &:r1734_7 +# 1734| r1734_9(int &) = Load[y] : &:r1734_7, m1734_8 +# 1734| m1734_10(unknown) = InitializeIndirection[y] : &:r1734_9 +# 1734| r1734_11(glval) = VariableAddress[z] : +# 1734| m1734_12(int &&) = InitializeParameter[z] : &:r1734_11 +# 1734| r1734_13(int &&) = Load[z] : &:r1734_11, m1734_12 +# 1734| m1734_14(unknown) = InitializeIndirection[z] : &:r1734_13 +# 1736| r1736_1(glval) = VariableAddress[obj1] : +# 1736| r1736_2(glval) = VariableAddress[#temp1736:24] : +# 1736| m1736_3(CapturedLambdaMyObj) = Uninitialized[#temp1736:24] : &:r1736_2 +# 1736| r1736_4(glval) = FunctionAddress[CapturedLambdaMyObj] : +# 1736| v1736_5(void) = Call[CapturedLambdaMyObj] : func:r1736_4, this:r1736_2 +# 1736| m1736_6(unknown) = ^CallSideEffect : ~m1734_4 +# 1736| m1736_7(unknown) = Chi : total:m1734_4, partial:m1736_6 +# 1736| m1736_8(CapturedLambdaMyObj) = ^IndirectMayWriteSideEffect[-1] : &:r1736_2 +# 1736| m1736_9(CapturedLambdaMyObj) = Chi : total:m1736_3, partial:m1736_8 +# 1736| r1736_10(glval) = Convert : r1736_2 +# 1736| r1736_11(CapturedLambdaMyObj &) = CopyValue : r1736_10 +# 1736| m1736_12(CapturedLambdaMyObj &) = Store[obj1] : &:r1736_1, r1736_11 +# 1737| r1737_1(glval) = VariableAddress[obj2] : +# 1737| m1737_2(CapturedLambdaMyObj) = Uninitialized[obj2] : &:r1737_1 +# 1737| r1737_3(glval) = FunctionAddress[CapturedLambdaMyObj] : +# 1737| v1737_4(void) = Call[CapturedLambdaMyObj] : func:r1737_3, this:r1737_1 +# 1737| m1737_5(unknown) = ^CallSideEffect : ~m1736_7 +# 1737| m1737_6(unknown) = Chi : total:m1736_7, partial:m1737_5 +# 1737| m1737_7(CapturedLambdaMyObj) = ^IndirectMayWriteSideEffect[-1] : &:r1737_1 +# 1737| m1737_8(CapturedLambdaMyObj) = Chi : total:m1737_2, partial:m1737_7 +# 1739| r1739_1(glval) = VariableAddress[lambda_outer] : +# 1739| r1739_2(glval) = VariableAddress[#temp1739:24] : +# 1739| m1739_3(decltype([...](...){...})) = Uninitialized[#temp1739:24] : &:r1739_2 +# 1739| r1739_4(glval) = FieldAddress[obj1] : r1739_2 +# 1739| r1739_5(glval) = VariableAddress[obj1] : +# 1739| r1739_6(CapturedLambdaMyObj &) = Load[obj1] : &:r1739_5, m1736_12 +#-----| r0_1(CapturedLambdaMyObj) = Load[?] : &:r1739_6, m1736_9 +#-----| m0_2(CapturedLambdaMyObj) = Store[?] : &:r1739_4, r0_1 +#-----| m0_3(decltype([...](...){...})) = Chi : total:m1739_3, partial:m0_2 +# 1739| r1739_7(glval) = FieldAddress[obj2] : r1739_2 +# 1739| r1739_8(glval) = VariableAddress[obj2] : +# 1739| r1739_9(CapturedLambdaMyObj) = Load[obj2] : &:r1739_8, m1737_8 +# 1739| m1739_10(CapturedLambdaMyObj) = Store[?] : &:r1739_7, r1739_9 +# 1739| m1739_11(decltype([...](...){...})) = Chi : total:m0_3, partial:m1739_10 +# 1739| r1739_12(glval) = FieldAddress[x] : r1739_2 +# 1739| r1739_13(glval) = VariableAddress[x] : +# 1739| r1739_14(int) = Load[x] : &:r1739_13, m1734_6 +# 1739| m1739_15(int) = Store[?] : &:r1739_12, r1739_14 +# 1739| m1739_16(decltype([...](...){...})) = Chi : total:m1739_11, partial:m1739_15 +# 1739| r1739_17(glval) = FieldAddress[y] : r1739_2 +# 1739| r1739_18(glval) = VariableAddress[y] : +# 1739| r1739_19(int &) = Load[y] : &:r1739_18, m1734_8 +# 1741| r1741_1(int) = Load[?] : &:r1739_19, ~m1734_10 +# 1741| m1741_2(int) = Store[?] : &:r1739_17, r1741_1 +# 1741| m1741_3(decltype([...](...){...})) = Chi : total:m1739_16, partial:m1741_2 +# 1739| r1739_20(glval) = FieldAddress[z] : r1739_2 +# 1739| r1739_21(glval) = VariableAddress[z] : +# 1739| r1739_22(int &&) = Load[z] : &:r1739_21, m1734_12 +# 1741| r1741_4(int) = Load[?] : &:r1739_22, ~m1734_14 +# 1741| m1741_5(int) = Store[?] : &:r1739_20, r1741_4 +# 1741| m1741_6(decltype([...](...){...})) = Chi : total:m1741_3, partial:m1741_5 +# 1739| r1739_23(decltype([...](...){...})) = Load[#temp1739:24] : &:r1739_2, m1741_6 +# 1739| m1739_24(decltype([...](...){...})) = Store[lambda_outer] : &:r1739_1, r1739_23 +# 1742| v1742_1(void) = NoOp : +# 1734| v1734_15(void) = ReturnIndirection[y] : &:r1734_9, m1734_10 +# 1734| v1734_16(void) = ReturnIndirection[z] : &:r1734_13, m1734_14 +# 1734| v1734_17(void) = ReturnVoid : +# 1734| v1734_18(void) = AliasedUse : ~m1737_6 +# 1734| v1734_19(void) = ExitFunction : -# 1737| void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1737, col. 25)::operator()() const -# 1737| Block 0 -# 1737| v1737_1(void) = EnterFunction : -# 1737| m1737_2(unknown) = AliasedDefinition : -# 1737| m1737_3(unknown) = InitializeNonLocal : -# 1737| m1737_4(unknown) = Chi : total:m1737_2, partial:m1737_3 -# 1737| r1737_5(glval) = VariableAddress[#this] : -# 1737| m1737_6(glval) = InitializeParameter[#this] : &:r1737_5 -# 1737| r1737_7(glval) = Load[#this] : &:r1737_5, m1737_6 -# 1737| m1737_8(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1737_7 -# 1738| r1738_1(glval) = VariableAddress[lambda_inner] : -# 1738| r1738_2(glval) = VariableAddress[#temp1738:28] : -# 1738| m1738_3(decltype([...](...){...})) = Uninitialized[#temp1738:28] : &:r1738_2 -# 1738| r1738_4(glval) = FieldAddress[obj1] : r1738_2 -# 1738| r1738_5(glval) = VariableAddress[#this] : -# 1738| r1738_6(lambda [] type at line 1738, col. 29 *) = Load[#this] : &:r1738_5, m1737_6 -# 1738| r1738_7(glval) = FieldAddress[obj1] : r1738_6 -# 1738| r1738_8(CapturedLambdaMyObj) = Load[?] : &:r1738_7, ~m1737_8 -# 1738| m1738_9(CapturedLambdaMyObj) = Store[?] : &:r1738_4, r1738_8 -# 1738| m1738_10(decltype([...](...){...})) = Chi : total:m1738_3, partial:m1738_9 -# 1738| r1738_11(glval) = FieldAddress[obj2] : r1738_2 -# 1738| r1738_12(glval) = VariableAddress[#this] : -# 1738| r1738_13(lambda [] type at line 1738, col. 29 *) = Load[#this] : &:r1738_12, m1737_6 -# 1738| r1738_14(glval) = FieldAddress[obj2] : r1738_13 -# 1738| r1738_15(CapturedLambdaMyObj) = Load[?] : &:r1738_14, ~m1737_8 -# 1738| m1738_16(CapturedLambdaMyObj) = Store[?] : &:r1738_11, r1738_15 -# 1738| m1738_17(decltype([...](...){...})) = Chi : total:m1738_10, partial:m1738_16 -# 1738| r1738_18(glval) = FieldAddress[x] : r1738_2 -# 1738| r1738_19(glval) = VariableAddress[#this] : -# 1738| r1738_20(lambda [] type at line 1737, col. 25 *) = Load[#this] : &:r1738_19, m1737_6 -# 1738| r1738_21(glval) = FieldAddress[x] : r1738_20 -# 1738| r1738_22(int) = Load[?] : &:r1738_21, ~m1737_8 -# 1738| m1738_23(int) = Store[?] : &:r1738_18, r1738_22 -# 1738| m1738_24(decltype([...](...){...})) = Chi : total:m1738_17, partial:m1738_23 -# 1738| r1738_25(glval) = FieldAddress[y] : r1738_2 -# 1738| r1738_26(glval) = VariableAddress[#this] : -# 1738| r1738_27(lambda [] type at line 1737, col. 25 *) = Load[#this] : &:r1738_26, m1737_6 -# 1738| r1738_28(glval) = FieldAddress[y] : r1738_27 -# 1738| r1738_29(int) = Load[?] : &:r1738_28, ~m1737_8 -# 1738| m1738_30(int) = Store[?] : &:r1738_25, r1738_29 -# 1738| m1738_31(decltype([...](...){...})) = Chi : total:m1738_24, partial:m1738_30 -# 1738| r1738_32(glval) = FieldAddress[z] : r1738_2 -# 1738| r1738_33(glval) = VariableAddress[#this] : -# 1738| r1738_34(lambda [] type at line 1737, col. 25 *) = Load[#this] : &:r1738_33, m1737_6 -# 1738| r1738_35(glval) = FieldAddress[z] : r1738_34 -# 1738| r1738_36(int) = Load[?] : &:r1738_35, ~m1737_8 -# 1738| m1738_37(int) = Store[?] : &:r1738_32, r1738_36 -# 1738| m1738_38(decltype([...](...){...})) = Chi : total:m1738_31, partial:m1738_37 -# 1738| r1738_39(decltype([...](...){...})) = Load[#temp1738:28] : &:r1738_2, m1738_38 -# 1738| m1738_40(decltype([...](...){...})) = Store[lambda_inner] : &:r1738_1, r1738_39 -# 1739| v1739_1(void) = NoOp : -# 1737| v1737_9(void) = ReturnIndirection[#this] : &:r1737_7, m1737_8 -# 1737| v1737_10(void) = ReturnVoid : -# 1737| v1737_11(void) = AliasedUse : m1737_3 -# 1737| v1737_12(void) = ExitFunction : +# 1739| void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1739, col. 25)::operator()() const +# 1739| Block 0 +# 1739| v1739_1(void) = EnterFunction : +# 1739| m1739_2(unknown) = AliasedDefinition : +# 1739| m1739_3(unknown) = InitializeNonLocal : +# 1739| m1739_4(unknown) = Chi : total:m1739_2, partial:m1739_3 +# 1739| r1739_5(glval) = VariableAddress[#this] : +# 1739| m1739_6(glval) = InitializeParameter[#this] : &:r1739_5 +# 1739| r1739_7(glval) = Load[#this] : &:r1739_5, m1739_6 +# 1739| m1739_8(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1739_7 +# 1740| r1740_1(glval) = VariableAddress[lambda_inner] : +# 1740| r1740_2(glval) = VariableAddress[#temp1740:28] : +# 1740| m1740_3(decltype([...](...){...})) = Uninitialized[#temp1740:28] : &:r1740_2 +# 1740| r1740_4(glval) = FieldAddress[obj1] : r1740_2 +# 1740| r1740_5(glval) = VariableAddress[#this] : +# 1740| r1740_6(lambda [] type at line 1740, col. 29 *) = Load[#this] : &:r1740_5, m1739_6 +# 1740| r1740_7(glval) = FieldAddress[obj1] : r1740_6 +# 1740| r1740_8(CapturedLambdaMyObj) = Load[?] : &:r1740_7, ~m1739_8 +# 1740| m1740_9(CapturedLambdaMyObj) = Store[?] : &:r1740_4, r1740_8 +# 1740| m1740_10(decltype([...](...){...})) = Chi : total:m1740_3, partial:m1740_9 +# 1740| r1740_11(glval) = FieldAddress[obj2] : r1740_2 +# 1740| r1740_12(glval) = VariableAddress[#this] : +# 1740| r1740_13(lambda [] type at line 1740, col. 29 *) = Load[#this] : &:r1740_12, m1739_6 +# 1740| r1740_14(glval) = FieldAddress[obj2] : r1740_13 +# 1740| r1740_15(CapturedLambdaMyObj) = Load[?] : &:r1740_14, ~m1739_8 +# 1740| m1740_16(CapturedLambdaMyObj) = Store[?] : &:r1740_11, r1740_15 +# 1740| m1740_17(decltype([...](...){...})) = Chi : total:m1740_10, partial:m1740_16 +# 1740| r1740_18(glval) = FieldAddress[x] : r1740_2 +# 1740| r1740_19(glval) = VariableAddress[#this] : +# 1740| r1740_20(lambda [] type at line 1739, col. 25 *) = Load[#this] : &:r1740_19, m1739_6 +# 1740| r1740_21(glval) = FieldAddress[x] : r1740_20 +# 1740| r1740_22(int) = Load[?] : &:r1740_21, ~m1739_8 +# 1740| m1740_23(int) = Store[?] : &:r1740_18, r1740_22 +# 1740| m1740_24(decltype([...](...){...})) = Chi : total:m1740_17, partial:m1740_23 +# 1740| r1740_25(glval) = FieldAddress[y] : r1740_2 +# 1740| r1740_26(glval) = VariableAddress[#this] : +# 1740| r1740_27(lambda [] type at line 1739, col. 25 *) = Load[#this] : &:r1740_26, m1739_6 +# 1740| r1740_28(glval) = FieldAddress[y] : r1740_27 +# 1740| r1740_29(int) = Load[?] : &:r1740_28, ~m1739_8 +# 1740| m1740_30(int) = Store[?] : &:r1740_25, r1740_29 +# 1740| m1740_31(decltype([...](...){...})) = Chi : total:m1740_24, partial:m1740_30 +# 1740| r1740_32(glval) = FieldAddress[z] : r1740_2 +# 1740| r1740_33(glval) = VariableAddress[#this] : +# 1740| r1740_34(lambda [] type at line 1739, col. 25 *) = Load[#this] : &:r1740_33, m1739_6 +# 1740| r1740_35(glval) = FieldAddress[z] : r1740_34 +# 1740| r1740_36(int) = Load[?] : &:r1740_35, ~m1739_8 +# 1740| m1740_37(int) = Store[?] : &:r1740_32, r1740_36 +# 1740| m1740_38(decltype([...](...){...})) = Chi : total:m1740_31, partial:m1740_37 +# 1740| r1740_39(decltype([...](...){...})) = Load[#temp1740:28] : &:r1740_2, m1740_38 +# 1740| m1740_40(decltype([...](...){...})) = Store[lambda_inner] : &:r1740_1, r1740_39 +# 1741| v1741_1(void) = NoOp : +# 1739| v1739_9(void) = ReturnIndirection[#this] : &:r1739_7, m1739_8 +# 1739| v1739_10(void) = ReturnVoid : +# 1739| v1739_11(void) = AliasedUse : m1739_3 +# 1739| v1739_12(void) = ExitFunction : -# 1738| void (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1737, col. 25)::operator()() const)::(lambda [] type at line 1738, col. 29)::operator()() const -# 1738| Block 0 -# 1738| v1738_1(void) = EnterFunction : -# 1738| m1738_2(unknown) = AliasedDefinition : -# 1738| m1738_3(unknown) = InitializeNonLocal : -# 1738| m1738_4(unknown) = Chi : total:m1738_2, partial:m1738_3 -# 1738| r1738_5(glval) = VariableAddress[#this] : -# 1738| m1738_6(glval) = InitializeParameter[#this] : &:r1738_5 -# 1738| r1738_7(glval) = Load[#this] : &:r1738_5, m1738_6 -# 1738| m1738_8(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1738_7 -# 1738| v1738_9(void) = NoOp : -# 1738| v1738_10(void) = NoOp : -# 1738| v1738_11(void) = ReturnIndirection[#this] : &:r1738_7, m1738_8 -# 1738| v1738_12(void) = ReturnVoid : -# 1738| v1738_13(void) = AliasedUse : m1738_3 -# 1738| v1738_14(void) = ExitFunction : +# 1740| void (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1739, col. 25)::operator()() const)::(lambda [] type at line 1740, col. 29)::operator()() const +# 1740| Block 0 +# 1740| v1740_1(void) = EnterFunction : +# 1740| m1740_2(unknown) = AliasedDefinition : +# 1740| m1740_3(unknown) = InitializeNonLocal : +# 1740| m1740_4(unknown) = Chi : total:m1740_2, partial:m1740_3 +# 1740| r1740_5(glval) = VariableAddress[#this] : +# 1740| m1740_6(glval) = InitializeParameter[#this] : &:r1740_5 +# 1740| r1740_7(glval) = Load[#this] : &:r1740_5, m1740_6 +# 1740| m1740_8(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1740_7 +# 1740| v1740_9(void) = NoOp : +# 1740| v1740_10(void) = NoOp : +# 1740| v1740_11(void) = ReturnIndirection[#this] : &:r1740_7, m1740_8 +# 1740| v1740_12(void) = ReturnVoid : +# 1740| v1740_13(void) = AliasedUse : m1740_3 +# 1740| v1740_14(void) = ExitFunction : -# 1742| int goto_on_same_line() -# 1742| Block 0 -# 1742| v1742_1(void) = EnterFunction : -# 1742| m1742_2(unknown) = AliasedDefinition : -# 1742| m1742_3(unknown) = InitializeNonLocal : -# 1742| m1742_4(unknown) = Chi : total:m1742_2, partial:m1742_3 -# 1743| r1743_1(glval) = VariableAddress[x] : -# 1743| r1743_2(int) = Constant[42] : -# 1743| m1743_3(int) = Store[x] : &:r1743_1, r1743_2 -# 1744| v1744_1(void) = NoOp : -# 1744| v1744_2(void) = NoOp : -# 1745| r1745_1(glval) = VariableAddress[#return] : -# 1745| r1745_2(glval) = VariableAddress[x] : -# 1745| r1745_3(int) = Load[x] : &:r1745_2, m1743_3 -# 1745| m1745_4(int) = Store[#return] : &:r1745_1, r1745_3 -# 1742| r1742_5(glval) = VariableAddress[#return] : -# 1742| v1742_6(void) = ReturnValue : &:r1742_5, m1745_4 -# 1742| v1742_7(void) = AliasedUse : m1742_3 -# 1742| v1742_8(void) = ExitFunction : +# 1744| int goto_on_same_line() +# 1744| Block 0 +# 1744| v1744_1(void) = EnterFunction : +# 1744| m1744_2(unknown) = AliasedDefinition : +# 1744| m1744_3(unknown) = InitializeNonLocal : +# 1744| m1744_4(unknown) = Chi : total:m1744_2, partial:m1744_3 +# 1745| r1745_1(glval) = VariableAddress[x] : +# 1745| r1745_2(int) = Constant[42] : +# 1745| m1745_3(int) = Store[x] : &:r1745_1, r1745_2 +# 1746| v1746_1(void) = NoOp : +# 1746| v1746_2(void) = NoOp : +# 1747| r1747_1(glval) = VariableAddress[#return] : +# 1747| r1747_2(glval) = VariableAddress[x] : +# 1747| r1747_3(int) = Load[x] : &:r1747_2, m1745_3 +# 1747| m1747_4(int) = Store[#return] : &:r1747_1, r1747_3 +# 1744| r1744_5(glval) = VariableAddress[#return] : +# 1744| v1744_6(void) = ReturnValue : &:r1744_5, m1747_4 +# 1744| v1744_7(void) = AliasedUse : m1744_3 +# 1744| v1744_8(void) = ExitFunction : -# 1750| void TrivialLambdaClass::m() const -# 1750| Block 0 -# 1750| v1750_1(void) = EnterFunction : -# 1750| m1750_2(unknown) = AliasedDefinition : -# 1750| m1750_3(unknown) = InitializeNonLocal : -# 1750| m1750_4(unknown) = Chi : total:m1750_2, partial:m1750_3 -# 1750| r1750_5(glval) = VariableAddress[#this] : -# 1750| m1750_6(glval) = InitializeParameter[#this] : &:r1750_5 -# 1750| r1750_7(glval) = Load[#this] : &:r1750_5, m1750_6 -# 1750| m1750_8(TrivialLambdaClass) = InitializeIndirection[#this] : &:r1750_7 -# 1751| r1751_1(glval) = VariableAddress[l_m_outer] : -# 1751| r1751_2(glval) = VariableAddress[#temp1751:25] : -# 1751| m1751_3(decltype([...](...){...})) = Uninitialized[#temp1751:25] : &:r1751_2 -# 1751| r1751_4(glval) = FieldAddress[(captured this)] : r1751_2 -# 1751| r1751_5(glval) = VariableAddress[#this] : -# 1751| r1751_6(TrivialLambdaClass *) = Load[#this] : &:r1751_5, m1750_6 -# 1751| r1751_7(TrivialLambdaClass) = Load[?] : &:r1751_6, ~m1750_8 -# 1751| m1751_8(TrivialLambdaClass) = Store[?] : &:r1751_4, r1751_7 -# 1751| r1751_9(decltype([...](...){...})) = Load[#temp1751:25] : &:r1751_2, ~m1751_8 -# 1751| m1751_10(decltype([...](...){...})) = Store[l_m_outer] : &:r1751_1, r1751_9 -# 1758| v1758_1(void) = NoOp : -# 1750| v1750_9(void) = ReturnIndirection[#this] : &:r1750_7, m1750_8 -# 1750| v1750_10(void) = ReturnVoid : -# 1750| v1750_11(void) = AliasedUse : m1750_3 -# 1750| v1750_12(void) = ExitFunction : +# 1752| void TrivialLambdaClass::m() const +# 1752| Block 0 +# 1752| v1752_1(void) = EnterFunction : +# 1752| m1752_2(unknown) = AliasedDefinition : +# 1752| m1752_3(unknown) = InitializeNonLocal : +# 1752| m1752_4(unknown) = Chi : total:m1752_2, partial:m1752_3 +# 1752| r1752_5(glval) = VariableAddress[#this] : +# 1752| m1752_6(glval) = InitializeParameter[#this] : &:r1752_5 +# 1752| r1752_7(glval) = Load[#this] : &:r1752_5, m1752_6 +# 1752| m1752_8(TrivialLambdaClass) = InitializeIndirection[#this] : &:r1752_7 +# 1753| r1753_1(glval) = VariableAddress[l_m_outer] : +# 1753| r1753_2(glval) = VariableAddress[#temp1753:25] : +# 1753| m1753_3(decltype([...](...){...})) = Uninitialized[#temp1753:25] : &:r1753_2 +# 1753| r1753_4(glval) = FieldAddress[(captured this)] : r1753_2 +# 1753| r1753_5(glval) = VariableAddress[#this] : +# 1753| r1753_6(TrivialLambdaClass *) = Load[#this] : &:r1753_5, m1752_6 +# 1753| r1753_7(TrivialLambdaClass) = Load[?] : &:r1753_6, ~m1752_8 +# 1753| m1753_8(TrivialLambdaClass) = Store[?] : &:r1753_4, r1753_7 +# 1753| r1753_9(decltype([...](...){...})) = Load[#temp1753:25] : &:r1753_2, ~m1753_8 +# 1753| m1753_10(decltype([...](...){...})) = Store[l_m_outer] : &:r1753_1, r1753_9 +# 1760| v1760_1(void) = NoOp : +# 1752| v1752_9(void) = ReturnIndirection[#this] : &:r1752_7, m1752_8 +# 1752| v1752_10(void) = ReturnVoid : +# 1752| v1752_11(void) = AliasedUse : m1752_3 +# 1752| v1752_12(void) = ExitFunction : -# 1751| void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1751, col. 26)::operator()() const -# 1751| Block 0 -# 1751| v1751_1(void) = EnterFunction : -# 1751| m1751_2(unknown) = AliasedDefinition : -# 1751| m1751_3(unknown) = InitializeNonLocal : -# 1751| m1751_4(unknown) = Chi : total:m1751_2, partial:m1751_3 -# 1751| r1751_5(glval) = VariableAddress[#this] : -# 1751| m1751_6(glval) = InitializeParameter[#this] : &:r1751_5 -# 1751| r1751_7(glval) = Load[#this] : &:r1751_5, m1751_6 -# 1751| m1751_8(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1751_7 -# 1752| r1752_1(glval) = VariableAddress[#this] : -# 1752| r1752_2(lambda [] type at line 1751, col. 26 *) = Load[#this] : &:r1752_1, m1751_6 -# 1752| r1752_3(glval) = FieldAddress[(captured this)] : r1752_2 -# 1752| r1752_4(TrivialLambdaClass *) = CopyValue : r1752_3 -# 1752| r1752_5(glval) = FunctionAddress[m] : -# 1752| v1752_6(void) = Call[m] : func:r1752_5, this:r1752_4 -# 1752| m1752_7(unknown) = ^CallSideEffect : ~m1751_4 -# 1752| m1752_8(unknown) = Chi : total:m1751_4, partial:m1752_7 -# 1752| v1752_9(void) = ^IndirectReadSideEffect[-1] : &:r1752_4, ~m1751_8 -# 1754| r1754_1(glval) = VariableAddress[l_m_inner] : -# 1754| r1754_2(glval) = VariableAddress[#temp1754:29] : -# 1754| m1754_3(decltype([...](...){...})) = Uninitialized[#temp1754:29] : &:r1754_2 -# 1754| r1754_4(glval) = FieldAddress[(captured this)] : r1754_2 -# 1754| r1754_5(glval) = VariableAddress[#this] : -# 1754| r1754_6(lambda [] type at line 1754, col. 30 *) = Load[#this] : &:r1754_5, m1751_6 -# 1754| r1754_7(glval) = FieldAddress[(captured this)] : r1754_6 -# 1754| r1754_8(TrivialLambdaClass) = Load[?] : &:r1754_7, ~m1751_8 -# 1754| m1754_9(TrivialLambdaClass) = Store[?] : &:r1754_4, r1754_8 -# 1754| r1754_10(decltype([...](...){...})) = Load[#temp1754:29] : &:r1754_2, ~m1754_9 -# 1754| m1754_11(decltype([...](...){...})) = Store[l_m_inner] : &:r1754_1, r1754_10 -# 1757| v1757_1(void) = NoOp : -# 1751| v1751_9(void) = ReturnIndirection[#this] : &:r1751_7, m1751_8 -# 1751| v1751_10(void) = ReturnVoid : -# 1751| v1751_11(void) = AliasedUse : ~m1752_8 -# 1751| v1751_12(void) = ExitFunction : +# 1753| void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1753, col. 26)::operator()() const +# 1753| Block 0 +# 1753| v1753_1(void) = EnterFunction : +# 1753| m1753_2(unknown) = AliasedDefinition : +# 1753| m1753_3(unknown) = InitializeNonLocal : +# 1753| m1753_4(unknown) = Chi : total:m1753_2, partial:m1753_3 +# 1753| r1753_5(glval) = VariableAddress[#this] : +# 1753| m1753_6(glval) = InitializeParameter[#this] : &:r1753_5 +# 1753| r1753_7(glval) = Load[#this] : &:r1753_5, m1753_6 +# 1753| m1753_8(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1753_7 +# 1754| r1754_1(glval) = VariableAddress[#this] : +# 1754| r1754_2(lambda [] type at line 1753, col. 26 *) = Load[#this] : &:r1754_1, m1753_6 +# 1754| r1754_3(glval) = FieldAddress[(captured this)] : r1754_2 +# 1754| r1754_4(TrivialLambdaClass *) = CopyValue : r1754_3 +# 1754| r1754_5(glval) = FunctionAddress[m] : +# 1754| v1754_6(void) = Call[m] : func:r1754_5, this:r1754_4 +# 1754| m1754_7(unknown) = ^CallSideEffect : ~m1753_4 +# 1754| m1754_8(unknown) = Chi : total:m1753_4, partial:m1754_7 +# 1754| v1754_9(void) = ^IndirectReadSideEffect[-1] : &:r1754_4, ~m1753_8 +# 1756| r1756_1(glval) = VariableAddress[l_m_inner] : +# 1756| r1756_2(glval) = VariableAddress[#temp1756:29] : +# 1756| m1756_3(decltype([...](...){...})) = Uninitialized[#temp1756:29] : &:r1756_2 +# 1756| r1756_4(glval) = FieldAddress[(captured this)] : r1756_2 +# 1756| r1756_5(glval) = VariableAddress[#this] : +# 1756| r1756_6(lambda [] type at line 1756, col. 30 *) = Load[#this] : &:r1756_5, m1753_6 +# 1756| r1756_7(glval) = FieldAddress[(captured this)] : r1756_6 +# 1756| r1756_8(TrivialLambdaClass) = Load[?] : &:r1756_7, ~m1753_8 +# 1756| m1756_9(TrivialLambdaClass) = Store[?] : &:r1756_4, r1756_8 +# 1756| r1756_10(decltype([...](...){...})) = Load[#temp1756:29] : &:r1756_2, ~m1756_9 +# 1756| m1756_11(decltype([...](...){...})) = Store[l_m_inner] : &:r1756_1, r1756_10 +# 1759| v1759_1(void) = NoOp : +# 1753| v1753_9(void) = ReturnIndirection[#this] : &:r1753_7, m1753_8 +# 1753| v1753_10(void) = ReturnVoid : +# 1753| v1753_11(void) = AliasedUse : ~m1754_8 +# 1753| v1753_12(void) = ExitFunction : -# 1754| void (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1751, col. 26)::operator()() const)::(lambda [] type at line 1754, col. 30)::operator()() const -# 1754| Block 0 -# 1754| v1754_1(void) = EnterFunction : -# 1754| m1754_2(unknown) = AliasedDefinition : -# 1754| m1754_3(unknown) = InitializeNonLocal : -# 1754| m1754_4(unknown) = Chi : total:m1754_2, partial:m1754_3 -# 1754| r1754_5(glval) = VariableAddress[#this] : -# 1754| m1754_6(glval) = InitializeParameter[#this] : &:r1754_5 -# 1754| r1754_7(glval) = Load[#this] : &:r1754_5, m1754_6 -# 1754| m1754_8(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1754_7 -# 1755| r1755_1(glval) = VariableAddress[#this] : -# 1755| r1755_2(lambda [] type at line 1754, col. 30 *) = Load[#this] : &:r1755_1, m1754_6 -# 1755| r1755_3(glval) = FieldAddress[(captured this)] : r1755_2 -# 1755| r1755_4(TrivialLambdaClass *) = CopyValue : r1755_3 -# 1755| r1755_5(glval) = FunctionAddress[m] : -# 1755| v1755_6(void) = Call[m] : func:r1755_5, this:r1755_4 -# 1755| m1755_7(unknown) = ^CallSideEffect : ~m1754_4 -# 1755| m1755_8(unknown) = Chi : total:m1754_4, partial:m1755_7 -# 1755| v1755_9(void) = ^IndirectReadSideEffect[-1] : &:r1755_4, ~m1754_8 -# 1756| v1756_1(void) = NoOp : -# 1754| v1754_9(void) = ReturnIndirection[#this] : &:r1754_7, m1754_8 -# 1754| v1754_10(void) = ReturnVoid : -# 1754| v1754_11(void) = AliasedUse : ~m1755_8 -# 1754| v1754_12(void) = ExitFunction : +# 1756| void (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1753, col. 26)::operator()() const)::(lambda [] type at line 1756, col. 30)::operator()() const +# 1756| Block 0 +# 1756| v1756_1(void) = EnterFunction : +# 1756| m1756_2(unknown) = AliasedDefinition : +# 1756| m1756_3(unknown) = InitializeNonLocal : +# 1756| m1756_4(unknown) = Chi : total:m1756_2, partial:m1756_3 +# 1756| r1756_5(glval) = VariableAddress[#this] : +# 1756| m1756_6(glval) = InitializeParameter[#this] : &:r1756_5 +# 1756| r1756_7(glval) = Load[#this] : &:r1756_5, m1756_6 +# 1756| m1756_8(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1756_7 +# 1757| r1757_1(glval) = VariableAddress[#this] : +# 1757| r1757_2(lambda [] type at line 1756, col. 30 *) = Load[#this] : &:r1757_1, m1756_6 +# 1757| r1757_3(glval) = FieldAddress[(captured this)] : r1757_2 +# 1757| r1757_4(TrivialLambdaClass *) = CopyValue : r1757_3 +# 1757| r1757_5(glval) = FunctionAddress[m] : +# 1757| v1757_6(void) = Call[m] : func:r1757_5, this:r1757_4 +# 1757| m1757_7(unknown) = ^CallSideEffect : ~m1756_4 +# 1757| m1757_8(unknown) = Chi : total:m1756_4, partial:m1757_7 +# 1757| v1757_9(void) = ^IndirectReadSideEffect[-1] : &:r1757_4, ~m1756_8 +# 1758| v1758_1(void) = NoOp : +# 1756| v1756_9(void) = ReturnIndirection[#this] : &:r1756_7, m1756_8 +# 1756| v1756_10(void) = ReturnVoid : +# 1756| v1756_11(void) = AliasedUse : ~m1757_8 +# 1756| v1756_12(void) = ExitFunction : -# 1761| void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&) -# 1761| Block 0 -# 1761| v1761_1(void) = EnterFunction : -# 1761| m1761_2(unknown) = AliasedDefinition : -# 1761| m1761_3(unknown) = InitializeNonLocal : -# 1761| m1761_4(unknown) = Chi : total:m1761_2, partial:m1761_3 -# 1761| r1761_5(glval) = VariableAddress[p1] : -# 1761| m1761_6(TrivialLambdaClass) = InitializeParameter[p1] : &:r1761_5 -# 1761| r1761_7(glval) = VariableAddress[p2] : -# 1761| m1761_8(TrivialLambdaClass &) = InitializeParameter[p2] : &:r1761_7 -# 1761| r1761_9(TrivialLambdaClass &) = Load[p2] : &:r1761_7, m1761_8 -# 1761| m1761_10(unknown) = InitializeIndirection[p2] : &:r1761_9 -# 1761| r1761_11(glval) = VariableAddress[p3] : -# 1761| m1761_12(TrivialLambdaClass &&) = InitializeParameter[p3] : &:r1761_11 -# 1761| r1761_13(TrivialLambdaClass &&) = Load[p3] : &:r1761_11, m1761_12 -# 1761| m1761_14(unknown) = InitializeIndirection[p3] : &:r1761_13 -# 1762| r1762_1(glval) = VariableAddress[l1] : -# 1762| m1762_2(TrivialLambdaClass) = Uninitialized[l1] : &:r1762_1 -# 1763| r1763_1(glval) = VariableAddress[l2] : -# 1763| r1763_2(glval) = VariableAddress[#temp1763:36] : -# 1763| r1763_3(TrivialLambdaClass) = Constant[0] : -# 1763| m1763_4(TrivialLambdaClass) = Store[#temp1763:36] : &:r1763_2, r1763_3 -# 1763| r1763_5(glval) = Convert : r1763_2 -# 1763| r1763_6(TrivialLambdaClass &) = CopyValue : r1763_5 -# 1763| m1763_7(TrivialLambdaClass &) = Store[l2] : &:r1763_1, r1763_6 -# 1765| r1765_1(glval) = VariableAddress[l_outer1] : -# 1765| r1765_2(glval) = VariableAddress[#temp1765:20] : -# 1765| m1765_3(decltype([...](...){...})) = Uninitialized[#temp1765:20] : &:r1765_2 -# 1765| r1765_4(glval) = FieldAddress[p1] : r1765_2 -# 1765| r1765_5(glval) = VariableAddress[p1] : -# 1765| r1765_6(TrivialLambdaClass) = Load[p1] : &:r1765_5, m1761_6 -# 1765| m1765_7(TrivialLambdaClass) = Store[?] : &:r1765_4, r1765_6 -# 1765| m1765_8(decltype([...](...){...})) = Chi : total:m1765_3, partial:m1765_7 -# 1765| r1765_9(glval) = FieldAddress[p2] : r1765_2 -# 1765| r1765_10(glval) = VariableAddress[p2] : -# 1765| r1765_11(TrivialLambdaClass &) = Load[p2] : &:r1765_10, m1761_8 -#-----| r0_1(TrivialLambdaClass) = Load[?] : &:r1765_11, ~m1761_10 -#-----| m0_2(TrivialLambdaClass) = Store[?] : &:r1765_9, r0_1 -#-----| m0_3(decltype([...](...){...})) = Chi : total:m1765_8, partial:m0_2 -# 1765| r1765_12(glval) = FieldAddress[p3] : r1765_2 -# 1765| r1765_13(glval) = VariableAddress[p3] : -# 1765| r1765_14(TrivialLambdaClass &&) = Load[p3] : &:r1765_13, m1761_12 -#-----| r0_4(TrivialLambdaClass) = Load[?] : &:r1765_14, ~m1761_14 -#-----| m0_5(TrivialLambdaClass) = Store[?] : &:r1765_12, r0_4 +# 1763| void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&) +# 1763| Block 0 +# 1763| v1763_1(void) = EnterFunction : +# 1763| m1763_2(unknown) = AliasedDefinition : +# 1763| m1763_3(unknown) = InitializeNonLocal : +# 1763| m1763_4(unknown) = Chi : total:m1763_2, partial:m1763_3 +# 1763| r1763_5(glval) = VariableAddress[p1] : +# 1763| m1763_6(TrivialLambdaClass) = InitializeParameter[p1] : &:r1763_5 +# 1763| r1763_7(glval) = VariableAddress[p2] : +# 1763| m1763_8(TrivialLambdaClass &) = InitializeParameter[p2] : &:r1763_7 +# 1763| r1763_9(TrivialLambdaClass &) = Load[p2] : &:r1763_7, m1763_8 +# 1763| m1763_10(unknown) = InitializeIndirection[p2] : &:r1763_9 +# 1763| r1763_11(glval) = VariableAddress[p3] : +# 1763| m1763_12(TrivialLambdaClass &&) = InitializeParameter[p3] : &:r1763_11 +# 1763| r1763_13(TrivialLambdaClass &&) = Load[p3] : &:r1763_11, m1763_12 +# 1763| m1763_14(unknown) = InitializeIndirection[p3] : &:r1763_13 +# 1764| r1764_1(glval) = VariableAddress[l1] : +# 1764| m1764_2(TrivialLambdaClass) = Uninitialized[l1] : &:r1764_1 +# 1765| r1765_1(glval) = VariableAddress[l2] : +# 1765| r1765_2(glval) = VariableAddress[#temp1765:36] : +# 1765| r1765_3(TrivialLambdaClass) = Constant[0] : +# 1765| m1765_4(TrivialLambdaClass) = Store[#temp1765:36] : &:r1765_2, r1765_3 +# 1765| r1765_5(glval) = Convert : r1765_2 +# 1765| r1765_6(TrivialLambdaClass &) = CopyValue : r1765_5 +# 1765| m1765_7(TrivialLambdaClass &) = Store[l2] : &:r1765_1, r1765_6 +# 1767| r1767_1(glval) = VariableAddress[l_outer1] : +# 1767| r1767_2(glval) = VariableAddress[#temp1767:20] : +# 1767| m1767_3(decltype([...](...){...})) = Uninitialized[#temp1767:20] : &:r1767_2 +# 1767| r1767_4(glval) = FieldAddress[p1] : r1767_2 +# 1767| r1767_5(glval) = VariableAddress[p1] : +# 1767| r1767_6(TrivialLambdaClass) = Load[p1] : &:r1767_5, m1763_6 +# 1767| m1767_7(TrivialLambdaClass) = Store[?] : &:r1767_4, r1767_6 +# 1767| m1767_8(decltype([...](...){...})) = Chi : total:m1767_3, partial:m1767_7 +# 1767| r1767_9(glval) = FieldAddress[p2] : r1767_2 +# 1767| r1767_10(glval) = VariableAddress[p2] : +# 1767| r1767_11(TrivialLambdaClass &) = Load[p2] : &:r1767_10, m1763_8 +#-----| r0_1(TrivialLambdaClass) = Load[?] : &:r1767_11, ~m1763_10 +#-----| m0_2(TrivialLambdaClass) = Store[?] : &:r1767_9, r0_1 +#-----| m0_3(decltype([...](...){...})) = Chi : total:m1767_8, partial:m0_2 +# 1767| r1767_12(glval) = FieldAddress[p3] : r1767_2 +# 1767| r1767_13(glval) = VariableAddress[p3] : +# 1767| r1767_14(TrivialLambdaClass &&) = Load[p3] : &:r1767_13, m1763_12 +#-----| r0_4(TrivialLambdaClass) = Load[?] : &:r1767_14, ~m1763_14 +#-----| m0_5(TrivialLambdaClass) = Store[?] : &:r1767_12, r0_4 #-----| m0_6(decltype([...](...){...})) = Chi : total:m0_3, partial:m0_5 -# 1765| r1765_15(glval) = FieldAddress[l1] : r1765_2 -# 1765| r1765_16(glval) = VariableAddress[l1] : -# 1765| r1765_17(TrivialLambdaClass) = Load[l1] : &:r1765_16, m1762_2 -# 1765| m1765_18(TrivialLambdaClass) = Store[?] : &:r1765_15, r1765_17 -# 1765| m1765_19(decltype([...](...){...})) = Chi : total:m0_6, partial:m1765_18 -# 1765| r1765_20(glval) = FieldAddress[l2] : r1765_2 -# 1765| r1765_21(glval) = VariableAddress[l2] : -# 1765| r1765_22(TrivialLambdaClass &) = Load[l2] : &:r1765_21, m1763_7 -#-----| r0_7(TrivialLambdaClass) = Load[?] : &:r1765_22, m1763_4 -#-----| m0_8(TrivialLambdaClass) = Store[?] : &:r1765_20, r0_7 -#-----| m0_9(decltype([...](...){...})) = Chi : total:m1765_19, partial:m0_8 -# 1765| r1765_23(decltype([...](...){...})) = Load[#temp1765:20] : &:r1765_2, m0_9 -# 1765| m1765_24(decltype([...](...){...})) = Store[l_outer1] : &:r1765_1, r1765_23 -# 1768| v1768_1(void) = NoOp : -# 1761| v1761_15(void) = ReturnIndirection[p2] : &:r1761_9, m1761_10 -# 1761| v1761_16(void) = ReturnIndirection[p3] : &:r1761_13, m1761_14 -# 1761| v1761_17(void) = ReturnVoid : -# 1761| v1761_18(void) = AliasedUse : m1761_3 -# 1761| v1761_19(void) = ExitFunction : +# 1767| r1767_15(glval) = FieldAddress[l1] : r1767_2 +# 1767| r1767_16(glval) = VariableAddress[l1] : +# 1767| r1767_17(TrivialLambdaClass) = Load[l1] : &:r1767_16, m1764_2 +# 1767| m1767_18(TrivialLambdaClass) = Store[?] : &:r1767_15, r1767_17 +# 1767| m1767_19(decltype([...](...){...})) = Chi : total:m0_6, partial:m1767_18 +# 1767| r1767_20(glval) = FieldAddress[l2] : r1767_2 +# 1767| r1767_21(glval) = VariableAddress[l2] : +# 1767| r1767_22(TrivialLambdaClass &) = Load[l2] : &:r1767_21, m1765_7 +#-----| r0_7(TrivialLambdaClass) = Load[?] : &:r1767_22, m1765_4 +#-----| m0_8(TrivialLambdaClass) = Store[?] : &:r1767_20, r0_7 +#-----| m0_9(decltype([...](...){...})) = Chi : total:m1767_19, partial:m0_8 +# 1767| r1767_23(decltype([...](...){...})) = Load[#temp1767:20] : &:r1767_2, m0_9 +# 1767| m1767_24(decltype([...](...){...})) = Store[l_outer1] : &:r1767_1, r1767_23 +# 1770| v1770_1(void) = NoOp : +# 1763| v1763_15(void) = ReturnIndirection[p2] : &:r1763_9, m1763_10 +# 1763| v1763_16(void) = ReturnIndirection[p3] : &:r1763_13, m1763_14 +# 1763| v1763_17(void) = ReturnVoid : +# 1763| v1763_18(void) = AliasedUse : m1763_3 +# 1763| v1763_19(void) = ExitFunction : -# 1765| void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1765, col. 21)::operator()() const -# 1765| Block 0 -# 1765| v1765_1(void) = EnterFunction : -# 1765| m1765_2(unknown) = AliasedDefinition : -# 1765| m1765_3(unknown) = InitializeNonLocal : -# 1765| m1765_4(unknown) = Chi : total:m1765_2, partial:m1765_3 -# 1765| r1765_5(glval) = VariableAddress[#this] : -# 1765| m1765_6(glval) = InitializeParameter[#this] : &:r1765_5 -# 1765| r1765_7(glval) = Load[#this] : &:r1765_5, m1765_6 -# 1765| m1765_8(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1765_7 -# 1766| r1766_1(glval) = VariableAddress[l_inner1] : -# 1766| r1766_2(glval) = VariableAddress[#temp1766:24] : -# 1766| m1766_3(decltype([...](...){...})) = Uninitialized[#temp1766:24] : &:r1766_2 -# 1766| r1766_4(glval) = FieldAddress[p1] : r1766_2 -# 1766| r1766_5(glval) = VariableAddress[#this] : -# 1766| r1766_6(lambda [] type at line 1766, col. 25 *) = Load[#this] : &:r1766_5, m1765_6 -# 1766| r1766_7(glval) = FieldAddress[p1] : r1766_6 -# 1766| r1766_8(TrivialLambdaClass) = Load[?] : &:r1766_7, ~m1765_8 -# 1766| m1766_9(TrivialLambdaClass) = Store[?] : &:r1766_4, r1766_8 -# 1766| r1766_10(decltype([...](...){...})) = Load[#temp1766:24] : &:r1766_2, ~m1766_9 -# 1766| m1766_11(decltype([...](...){...})) = Store[l_inner1] : &:r1766_1, r1766_10 -# 1767| v1767_1(void) = NoOp : -# 1765| v1765_9(void) = ReturnIndirection[#this] : &:r1765_7, m1765_8 -# 1765| v1765_10(void) = ReturnVoid : -# 1765| v1765_11(void) = AliasedUse : m1765_3 -# 1765| v1765_12(void) = ExitFunction : +# 1767| void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1767, col. 21)::operator()() const +# 1767| Block 0 +# 1767| v1767_1(void) = EnterFunction : +# 1767| m1767_2(unknown) = AliasedDefinition : +# 1767| m1767_3(unknown) = InitializeNonLocal : +# 1767| m1767_4(unknown) = Chi : total:m1767_2, partial:m1767_3 +# 1767| r1767_5(glval) = VariableAddress[#this] : +# 1767| m1767_6(glval) = InitializeParameter[#this] : &:r1767_5 +# 1767| r1767_7(glval) = Load[#this] : &:r1767_5, m1767_6 +# 1767| m1767_8(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1767_7 +# 1768| r1768_1(glval) = VariableAddress[l_inner1] : +# 1768| r1768_2(glval) = VariableAddress[#temp1768:24] : +# 1768| m1768_3(decltype([...](...){...})) = Uninitialized[#temp1768:24] : &:r1768_2 +# 1768| r1768_4(glval) = FieldAddress[p1] : r1768_2 +# 1768| r1768_5(glval) = VariableAddress[#this] : +# 1768| r1768_6(lambda [] type at line 1768, col. 25 *) = Load[#this] : &:r1768_5, m1767_6 +# 1768| r1768_7(glval) = FieldAddress[p1] : r1768_6 +# 1768| r1768_8(TrivialLambdaClass) = Load[?] : &:r1768_7, ~m1767_8 +# 1768| m1768_9(TrivialLambdaClass) = Store[?] : &:r1768_4, r1768_8 +# 1768| r1768_10(decltype([...](...){...})) = Load[#temp1768:24] : &:r1768_2, ~m1768_9 +# 1768| m1768_11(decltype([...](...){...})) = Store[l_inner1] : &:r1768_1, r1768_10 +# 1769| v1769_1(void) = NoOp : +# 1767| v1767_9(void) = ReturnIndirection[#this] : &:r1767_7, m1767_8 +# 1767| v1767_10(void) = ReturnVoid : +# 1767| v1767_11(void) = AliasedUse : m1767_3 +# 1767| v1767_12(void) = ExitFunction : -# 1766| void (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1765, col. 21)::operator()() const)::(lambda [] type at line 1766, col. 25)::operator()() const -# 1766| Block 0 -# 1766| v1766_1(void) = EnterFunction : -# 1766| m1766_2(unknown) = AliasedDefinition : -# 1766| m1766_3(unknown) = InitializeNonLocal : -# 1766| m1766_4(unknown) = Chi : total:m1766_2, partial:m1766_3 -# 1766| r1766_5(glval) = VariableAddress[#this] : -# 1766| m1766_6(glval) = InitializeParameter[#this] : &:r1766_5 -# 1766| r1766_7(glval) = Load[#this] : &:r1766_5, m1766_6 -# 1766| m1766_8(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1766_7 -# 1766| v1766_9(void) = NoOp : -# 1766| v1766_10(void) = ReturnIndirection[#this] : &:r1766_7, m1766_8 -# 1766| v1766_11(void) = ReturnVoid : -# 1766| v1766_12(void) = AliasedUse : m1766_3 -# 1766| v1766_13(void) = ExitFunction : +# 1768| void (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1767, col. 21)::operator()() const)::(lambda [] type at line 1768, col. 25)::operator()() const +# 1768| Block 0 +# 1768| v1768_1(void) = EnterFunction : +# 1768| m1768_2(unknown) = AliasedDefinition : +# 1768| m1768_3(unknown) = InitializeNonLocal : +# 1768| m1768_4(unknown) = Chi : total:m1768_2, partial:m1768_3 +# 1768| r1768_5(glval) = VariableAddress[#this] : +# 1768| m1768_6(glval) = InitializeParameter[#this] : &:r1768_5 +# 1768| r1768_7(glval) = Load[#this] : &:r1768_5, m1768_6 +# 1768| m1768_8(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1768_7 +# 1768| v1768_9(void) = NoOp : +# 1768| v1768_10(void) = ReturnIndirection[#this] : &:r1768_7, m1768_8 +# 1768| v1768_11(void) = ReturnVoid : +# 1768| v1768_12(void) = AliasedUse : m1768_3 +# 1768| v1768_13(void) = ExitFunction : -# 1773| void CopyConstructorWithImplicitArgumentClass::CopyConstructorWithImplicitArgumentClass() -# 1773| Block 0 -# 1773| v1773_1(void) = EnterFunction : -# 1773| m1773_2(unknown) = AliasedDefinition : -# 1773| m1773_3(unknown) = InitializeNonLocal : -# 1773| m1773_4(unknown) = Chi : total:m1773_2, partial:m1773_3 -# 1773| r1773_5(glval) = VariableAddress[#this] : -# 1773| m1773_6(glval) = InitializeParameter[#this] : &:r1773_5 -# 1773| r1773_7(glval) = Load[#this] : &:r1773_5, m1773_6 -# 1773| m1773_8(CopyConstructorWithImplicitArgumentClass) = InitializeIndirection[#this] : &:r1773_7 -# 1773| v1773_9(void) = NoOp : -# 1773| v1773_10(void) = ReturnIndirection[#this] : &:r1773_7, m1773_8 -# 1773| v1773_11(void) = ReturnVoid : -# 1773| v1773_12(void) = AliasedUse : m1773_3 -# 1773| v1773_13(void) = ExitFunction : +# 1775| void CopyConstructorWithImplicitArgumentClass::CopyConstructorWithImplicitArgumentClass() +# 1775| Block 0 +# 1775| v1775_1(void) = EnterFunction : +# 1775| m1775_2(unknown) = AliasedDefinition : +# 1775| m1775_3(unknown) = InitializeNonLocal : +# 1775| m1775_4(unknown) = Chi : total:m1775_2, partial:m1775_3 +# 1775| r1775_5(glval) = VariableAddress[#this] : +# 1775| m1775_6(glval) = InitializeParameter[#this] : &:r1775_5 +# 1775| r1775_7(glval) = Load[#this] : &:r1775_5, m1775_6 +# 1775| m1775_8(CopyConstructorWithImplicitArgumentClass) = InitializeIndirection[#this] : &:r1775_7 +# 1775| v1775_9(void) = NoOp : +# 1775| v1775_10(void) = ReturnIndirection[#this] : &:r1775_7, m1775_8 +# 1775| v1775_11(void) = ReturnVoid : +# 1775| v1775_12(void) = AliasedUse : m1775_3 +# 1775| v1775_13(void) = ExitFunction : -# 1774| void CopyConstructorWithImplicitArgumentClass::CopyConstructorWithImplicitArgumentClass(CopyConstructorWithImplicitArgumentClass const&) -# 1774| Block 0 -# 1774| v1774_1(void) = EnterFunction : -# 1774| m1774_2(unknown) = AliasedDefinition : -# 1774| m1774_3(unknown) = InitializeNonLocal : -# 1774| m1774_4(unknown) = Chi : total:m1774_2, partial:m1774_3 -# 1774| r1774_5(glval) = VariableAddress[#this] : -# 1774| m1774_6(glval) = InitializeParameter[#this] : &:r1774_5 -# 1774| r1774_7(glval) = Load[#this] : &:r1774_5, m1774_6 -# 1774| m1774_8(CopyConstructorWithImplicitArgumentClass) = InitializeIndirection[#this] : &:r1774_7 -# 1774| r1774_9(glval) = VariableAddress[c] : -# 1774| m1774_10(CopyConstructorWithImplicitArgumentClass &) = InitializeParameter[c] : &:r1774_9 -# 1774| r1774_11(CopyConstructorWithImplicitArgumentClass &) = Load[c] : &:r1774_9, m1774_10 -# 1774| m1774_12(unknown) = InitializeIndirection[c] : &:r1774_11 -# 1775| r1775_1(glval) = VariableAddress[c] : -# 1775| r1775_2(CopyConstructorWithImplicitArgumentClass &) = Load[c] : &:r1775_1, m1774_10 -# 1775| r1775_3(glval) = CopyValue : r1775_2 -# 1775| r1775_4(glval) = FieldAddress[x] : r1775_3 -# 1775| r1775_5(int) = Load[?] : &:r1775_4, ~m1774_12 -# 1775| r1775_6(glval) = VariableAddress[#this] : -# 1775| r1775_7(CopyConstructorWithImplicitArgumentClass *) = Load[#this] : &:r1775_6, m1774_6 -# 1775| r1775_8(glval) = FieldAddress[x] : r1775_7 -# 1775| m1775_9(int) = Store[?] : &:r1775_8, r1775_5 -# 1775| m1775_10(unknown) = Chi : total:m1774_8, partial:m1775_9 -# 1776| v1776_1(void) = NoOp : -# 1774| v1774_13(void) = ReturnIndirection[#this] : &:r1774_7, m1775_10 -# 1774| v1774_14(void) = ReturnIndirection[c] : &:r1774_11, m1774_12 -# 1774| v1774_15(void) = ReturnVoid : -# 1774| v1774_16(void) = AliasedUse : m1774_3 -# 1774| v1774_17(void) = ExitFunction : +# 1776| void CopyConstructorWithImplicitArgumentClass::CopyConstructorWithImplicitArgumentClass(CopyConstructorWithImplicitArgumentClass const&) +# 1776| Block 0 +# 1776| v1776_1(void) = EnterFunction : +# 1776| m1776_2(unknown) = AliasedDefinition : +# 1776| m1776_3(unknown) = InitializeNonLocal : +# 1776| m1776_4(unknown) = Chi : total:m1776_2, partial:m1776_3 +# 1776| r1776_5(glval) = VariableAddress[#this] : +# 1776| m1776_6(glval) = InitializeParameter[#this] : &:r1776_5 +# 1776| r1776_7(glval) = Load[#this] : &:r1776_5, m1776_6 +# 1776| m1776_8(CopyConstructorWithImplicitArgumentClass) = InitializeIndirection[#this] : &:r1776_7 +# 1776| r1776_9(glval) = VariableAddress[c] : +# 1776| m1776_10(CopyConstructorWithImplicitArgumentClass &) = InitializeParameter[c] : &:r1776_9 +# 1776| r1776_11(CopyConstructorWithImplicitArgumentClass &) = Load[c] : &:r1776_9, m1776_10 +# 1776| m1776_12(unknown) = InitializeIndirection[c] : &:r1776_11 +# 1777| r1777_1(glval) = VariableAddress[c] : +# 1777| r1777_2(CopyConstructorWithImplicitArgumentClass &) = Load[c] : &:r1777_1, m1776_10 +# 1777| r1777_3(glval) = CopyValue : r1777_2 +# 1777| r1777_4(glval) = FieldAddress[x] : r1777_3 +# 1777| r1777_5(int) = Load[?] : &:r1777_4, ~m1776_12 +# 1777| r1777_6(glval) = VariableAddress[#this] : +# 1777| r1777_7(CopyConstructorWithImplicitArgumentClass *) = Load[#this] : &:r1777_6, m1776_6 +# 1777| r1777_8(glval) = FieldAddress[x] : r1777_7 +# 1777| m1777_9(int) = Store[?] : &:r1777_8, r1777_5 +# 1777| m1777_10(unknown) = Chi : total:m1776_8, partial:m1777_9 +# 1778| v1778_1(void) = NoOp : +# 1776| v1776_13(void) = ReturnIndirection[#this] : &:r1776_7, m1777_10 +# 1776| v1776_14(void) = ReturnIndirection[c] : &:r1776_11, m1776_12 +# 1776| v1776_15(void) = ReturnVoid : +# 1776| v1776_16(void) = AliasedUse : m1776_3 +# 1776| v1776_17(void) = ExitFunction : -# 1782| void CopyConstructorWithBitwiseCopyClass::CopyConstructorWithBitwiseCopyClass() -# 1782| Block 0 -# 1782| v1782_1(void) = EnterFunction : -# 1782| m1782_2(unknown) = AliasedDefinition : -# 1782| m1782_3(unknown) = InitializeNonLocal : -# 1782| m1782_4(unknown) = Chi : total:m1782_2, partial:m1782_3 -# 1782| r1782_5(glval) = VariableAddress[#this] : -# 1782| m1782_6(glval) = InitializeParameter[#this] : &:r1782_5 -# 1782| r1782_7(glval) = Load[#this] : &:r1782_5, m1782_6 -# 1782| m1782_8(CopyConstructorWithBitwiseCopyClass) = InitializeIndirection[#this] : &:r1782_7 -# 1782| v1782_9(void) = NoOp : -# 1782| v1782_10(void) = ReturnIndirection[#this] : &:r1782_7, m1782_8 -# 1782| v1782_11(void) = ReturnVoid : -# 1782| v1782_12(void) = AliasedUse : m1782_3 -# 1782| v1782_13(void) = ExitFunction : +# 1784| void CopyConstructorWithBitwiseCopyClass::CopyConstructorWithBitwiseCopyClass() +# 1784| Block 0 +# 1784| v1784_1(void) = EnterFunction : +# 1784| m1784_2(unknown) = AliasedDefinition : +# 1784| m1784_3(unknown) = InitializeNonLocal : +# 1784| m1784_4(unknown) = Chi : total:m1784_2, partial:m1784_3 +# 1784| r1784_5(glval) = VariableAddress[#this] : +# 1784| m1784_6(glval) = InitializeParameter[#this] : &:r1784_5 +# 1784| r1784_7(glval) = Load[#this] : &:r1784_5, m1784_6 +# 1784| m1784_8(CopyConstructorWithBitwiseCopyClass) = InitializeIndirection[#this] : &:r1784_7 +# 1784| v1784_9(void) = NoOp : +# 1784| v1784_10(void) = ReturnIndirection[#this] : &:r1784_7, m1784_8 +# 1784| v1784_11(void) = ReturnVoid : +# 1784| v1784_12(void) = AliasedUse : m1784_3 +# 1784| v1784_13(void) = ExitFunction : -# 1785| void CopyConstructorTestNonVirtualClass::CopyConstructorTestNonVirtualClass(CopyConstructorTestNonVirtualClass const&) -# 1785| Block 0 -# 1785| v1785_1(void) = EnterFunction : -# 1785| m1785_2(unknown) = AliasedDefinition : -# 1785| m1785_3(unknown) = InitializeNonLocal : -# 1785| m1785_4(unknown) = Chi : total:m1785_2, partial:m1785_3 -# 1785| r1785_5(glval) = VariableAddress[#this] : -# 1785| m1785_6(glval) = InitializeParameter[#this] : &:r1785_5 -# 1785| r1785_7(glval) = Load[#this] : &:r1785_5, m1785_6 -# 1785| m1785_8(CopyConstructorTestNonVirtualClass) = InitializeIndirection[#this] : &:r1785_7 +# 1787| void CopyConstructorTestNonVirtualClass::CopyConstructorTestNonVirtualClass(CopyConstructorTestNonVirtualClass const&) +# 1787| Block 0 +# 1787| v1787_1(void) = EnterFunction : +# 1787| m1787_2(unknown) = AliasedDefinition : +# 1787| m1787_3(unknown) = InitializeNonLocal : +# 1787| m1787_4(unknown) = Chi : total:m1787_2, partial:m1787_3 +# 1787| r1787_5(glval) = VariableAddress[#this] : +# 1787| m1787_6(glval) = InitializeParameter[#this] : &:r1787_5 +# 1787| r1787_7(glval) = Load[#this] : &:r1787_5, m1787_6 +# 1787| m1787_8(CopyConstructorTestNonVirtualClass) = InitializeIndirection[#this] : &:r1787_7 #-----| r0_1(glval) = VariableAddress[(unnamed parameter 0)] : #-----| m0_2(CopyConstructorTestNonVirtualClass &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(CopyConstructorTestNonVirtualClass &) = Load[(unnamed parameter 0)] : &:r0_1, m0_2 #-----| m0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 1785| r1785_9(glval) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithImplicitArgumentClass] : r1785_7 -# 1785| r1785_10(glval) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : -# 1785| r1785_11(glval) = VariableAddress[(unnamed parameter 0)] : -# 1785| r1785_12(CopyConstructorTestNonVirtualClass &) = Load[(unnamed parameter 0)] : &:r1785_11, m0_2 -# 1785| r1785_13(glval) = CopyValue : r1785_12 -# 1785| r1785_14(glval) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithImplicitArgumentClass] : r1785_13 -# 1785| r1785_15(CopyConstructorWithImplicitArgumentClass &) = CopyValue : r1785_14 -# 1785| v1785_16(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1785_10, this:r1785_9, 0:r1785_15 -# 1785| m1785_17(unknown) = ^CallSideEffect : ~m1785_4 -# 1785| m1785_18(unknown) = Chi : total:m1785_4, partial:m1785_17 -# 1785| v1785_19(void) = ^BufferReadSideEffect[0] : &:r1785_15, ~m0_4 -# 1785| m1785_20(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1785_9 -# 1785| m1785_21(unknown) = Chi : total:m1785_8, partial:m1785_20 -# 1785| v1785_22(void) = NoOp : -# 1785| v1785_23(void) = ReturnIndirection[#this] : &:r1785_7, m1785_21 +# 1787| r1787_9(glval) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithImplicitArgumentClass] : r1787_7 +# 1787| r1787_10(glval) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : +# 1787| r1787_11(glval) = VariableAddress[(unnamed parameter 0)] : +# 1787| r1787_12(CopyConstructorTestNonVirtualClass &) = Load[(unnamed parameter 0)] : &:r1787_11, m0_2 +# 1787| r1787_13(glval) = CopyValue : r1787_12 +# 1787| r1787_14(glval) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithImplicitArgumentClass] : r1787_13 +# 1787| r1787_15(CopyConstructorWithImplicitArgumentClass &) = CopyValue : r1787_14 +# 1787| v1787_16(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1787_10, this:r1787_9, 0:r1787_15 +# 1787| m1787_17(unknown) = ^CallSideEffect : ~m1787_4 +# 1787| m1787_18(unknown) = Chi : total:m1787_4, partial:m1787_17 +# 1787| v1787_19(void) = ^BufferReadSideEffect[0] : &:r1787_15, ~m0_4 +# 1787| m1787_20(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1787_9 +# 1787| m1787_21(unknown) = Chi : total:m1787_8, partial:m1787_20 +# 1787| v1787_22(void) = NoOp : +# 1787| v1787_23(void) = ReturnIndirection[#this] : &:r1787_7, m1787_21 #-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, m0_4 -# 1785| v1785_24(void) = ReturnVoid : -# 1785| v1785_25(void) = AliasedUse : ~m1785_18 -# 1785| v1785_26(void) = ExitFunction : +# 1787| v1787_24(void) = ReturnVoid : +# 1787| v1787_25(void) = AliasedUse : ~m1787_18 +# 1787| v1787_26(void) = ExitFunction : -# 1789| void CopyConstructorTestNonVirtualClass::CopyConstructorTestNonVirtualClass() -# 1789| Block 0 -# 1789| v1789_1(void) = EnterFunction : -# 1789| m1789_2(unknown) = AliasedDefinition : -# 1789| m1789_3(unknown) = InitializeNonLocal : -# 1789| m1789_4(unknown) = Chi : total:m1789_2, partial:m1789_3 -# 1789| r1789_5(glval) = VariableAddress[#this] : -# 1789| m1789_6(glval) = InitializeParameter[#this] : &:r1789_5 -# 1789| r1789_7(glval) = Load[#this] : &:r1789_5, m1789_6 -# 1789| m1789_8(CopyConstructorTestNonVirtualClass) = InitializeIndirection[#this] : &:r1789_7 -# 1789| r1789_9(glval) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithImplicitArgumentClass] : r1789_7 -# 1789| r1789_10(glval) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : -# 1789| v1789_11(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1789_10, this:r1789_9 -# 1789| m1789_12(unknown) = ^CallSideEffect : ~m1789_4 -# 1789| m1789_13(unknown) = Chi : total:m1789_4, partial:m1789_12 -# 1789| m1789_14(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1789_9 -# 1789| m1789_15(unknown) = Chi : total:m1789_8, partial:m1789_14 -# 1789| r1789_16(glval) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithBitwiseCopyClass] : r1789_7 -# 1789| r1789_17(glval) = FunctionAddress[CopyConstructorWithBitwiseCopyClass] : -# 1789| v1789_18(void) = Call[CopyConstructorWithBitwiseCopyClass] : func:r1789_17, this:r1789_16 -# 1789| m1789_19(unknown) = ^CallSideEffect : ~m1789_13 -# 1789| m1789_20(unknown) = Chi : total:m1789_13, partial:m1789_19 -# 1789| m1789_21(CopyConstructorWithBitwiseCopyClass) = ^IndirectMayWriteSideEffect[-1] : &:r1789_16 -# 1789| m1789_22(unknown) = Chi : total:m1789_15, partial:m1789_21 -# 1789| v1789_23(void) = NoOp : -# 1789| v1789_24(void) = ReturnIndirection[#this] : &:r1789_7, m1789_22 -# 1789| v1789_25(void) = ReturnVoid : -# 1789| v1789_26(void) = AliasedUse : ~m1789_20 -# 1789| v1789_27(void) = ExitFunction : +# 1791| void CopyConstructorTestNonVirtualClass::CopyConstructorTestNonVirtualClass() +# 1791| Block 0 +# 1791| v1791_1(void) = EnterFunction : +# 1791| m1791_2(unknown) = AliasedDefinition : +# 1791| m1791_3(unknown) = InitializeNonLocal : +# 1791| m1791_4(unknown) = Chi : total:m1791_2, partial:m1791_3 +# 1791| r1791_5(glval) = VariableAddress[#this] : +# 1791| m1791_6(glval) = InitializeParameter[#this] : &:r1791_5 +# 1791| r1791_7(glval) = Load[#this] : &:r1791_5, m1791_6 +# 1791| m1791_8(CopyConstructorTestNonVirtualClass) = InitializeIndirection[#this] : &:r1791_7 +# 1791| r1791_9(glval) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithImplicitArgumentClass] : r1791_7 +# 1791| r1791_10(glval) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : +# 1791| v1791_11(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1791_10, this:r1791_9 +# 1791| m1791_12(unknown) = ^CallSideEffect : ~m1791_4 +# 1791| m1791_13(unknown) = Chi : total:m1791_4, partial:m1791_12 +# 1791| m1791_14(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1791_9 +# 1791| m1791_15(unknown) = Chi : total:m1791_8, partial:m1791_14 +# 1791| r1791_16(glval) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithBitwiseCopyClass] : r1791_7 +# 1791| r1791_17(glval) = FunctionAddress[CopyConstructorWithBitwiseCopyClass] : +# 1791| v1791_18(void) = Call[CopyConstructorWithBitwiseCopyClass] : func:r1791_17, this:r1791_16 +# 1791| m1791_19(unknown) = ^CallSideEffect : ~m1791_13 +# 1791| m1791_20(unknown) = Chi : total:m1791_13, partial:m1791_19 +# 1791| m1791_21(CopyConstructorWithBitwiseCopyClass) = ^IndirectMayWriteSideEffect[-1] : &:r1791_16 +# 1791| m1791_22(unknown) = Chi : total:m1791_15, partial:m1791_21 +# 1791| v1791_23(void) = NoOp : +# 1791| v1791_24(void) = ReturnIndirection[#this] : &:r1791_7, m1791_22 +# 1791| v1791_25(void) = ReturnVoid : +# 1791| v1791_26(void) = AliasedUse : ~m1791_20 +# 1791| v1791_27(void) = ExitFunction : -# 1792| void CopyConstructorTestVirtualClass::CopyConstructorTestVirtualClass(CopyConstructorTestVirtualClass const&) -# 1792| Block 0 -# 1792| v1792_1(void) = EnterFunction : -# 1792| m1792_2(unknown) = AliasedDefinition : -# 1792| m1792_3(unknown) = InitializeNonLocal : -# 1792| m1792_4(unknown) = Chi : total:m1792_2, partial:m1792_3 -# 1792| r1792_5(glval) = VariableAddress[#this] : -# 1792| m1792_6(glval) = InitializeParameter[#this] : &:r1792_5 -# 1792| r1792_7(glval) = Load[#this] : &:r1792_5, m1792_6 -# 1792| m1792_8(CopyConstructorTestVirtualClass) = InitializeIndirection[#this] : &:r1792_7 -# 1792| m1792_9(unknown) = Chi : total:m1792_4, partial:m1792_8 +# 1794| void CopyConstructorTestVirtualClass::CopyConstructorTestVirtualClass(CopyConstructorTestVirtualClass const&) +# 1794| Block 0 +# 1794| v1794_1(void) = EnterFunction : +# 1794| m1794_2(unknown) = AliasedDefinition : +# 1794| m1794_3(unknown) = InitializeNonLocal : +# 1794| m1794_4(unknown) = Chi : total:m1794_2, partial:m1794_3 +# 1794| r1794_5(glval) = VariableAddress[#this] : +# 1794| m1794_6(glval) = InitializeParameter[#this] : &:r1794_5 +# 1794| r1794_7(glval) = Load[#this] : &:r1794_5, m1794_6 +# 1794| m1794_8(CopyConstructorTestVirtualClass) = InitializeIndirection[#this] : &:r1794_7 +# 1794| m1794_9(unknown) = Chi : total:m1794_4, partial:m1794_8 #-----| r0_1(glval) = VariableAddress[(unnamed parameter 0)] : #-----| m0_2(CopyConstructorTestVirtualClass &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(CopyConstructorTestVirtualClass &) = Load[(unnamed parameter 0)] : &:r0_1, m0_2 #-----| m0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 1792| r1792_10(glval) = ConvertToNonVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithImplicitArgumentClass] : r1792_7 -# 1792| r1792_11(glval) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : -# 1792| r1792_12(glval) = VariableAddress[(unnamed parameter 0)] : -# 1792| r1792_13(CopyConstructorTestVirtualClass &) = Load[(unnamed parameter 0)] : &:r1792_12, m0_2 -# 1792| r1792_14(glval) = CopyValue : r1792_13 -# 1792| r1792_15(glval) = ConvertToVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithImplicitArgumentClass] : r1792_14 -# 1792| r1792_16(CopyConstructorWithImplicitArgumentClass &) = CopyValue : r1792_15 -# 1792| v1792_17(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1792_11, this:r1792_10, 0:r1792_16 -# 1792| m1792_18(unknown) = ^CallSideEffect : ~m1792_9 -# 1792| m1792_19(unknown) = Chi : total:m1792_9, partial:m1792_18 -# 1792| v1792_20(void) = ^BufferReadSideEffect[0] : &:r1792_16, ~m0_4 -# 1792| m1792_21(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1792_10 -# 1792| m1792_22(unknown) = Chi : total:m1792_19, partial:m1792_21 -# 1792| v1792_23(void) = NoOp : -# 1792| v1792_24(void) = ReturnIndirection[#this] : &:r1792_7, ~m1792_22 +# 1794| r1794_10(glval) = ConvertToNonVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithImplicitArgumentClass] : r1794_7 +# 1794| r1794_11(glval) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : +# 1794| r1794_12(glval) = VariableAddress[(unnamed parameter 0)] : +# 1794| r1794_13(CopyConstructorTestVirtualClass &) = Load[(unnamed parameter 0)] : &:r1794_12, m0_2 +# 1794| r1794_14(glval) = CopyValue : r1794_13 +# 1794| r1794_15(glval) = ConvertToVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithImplicitArgumentClass] : r1794_14 +# 1794| r1794_16(CopyConstructorWithImplicitArgumentClass &) = CopyValue : r1794_15 +# 1794| v1794_17(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1794_11, this:r1794_10, 0:r1794_16 +# 1794| m1794_18(unknown) = ^CallSideEffect : ~m1794_9 +# 1794| m1794_19(unknown) = Chi : total:m1794_9, partial:m1794_18 +# 1794| v1794_20(void) = ^BufferReadSideEffect[0] : &:r1794_16, ~m0_4 +# 1794| m1794_21(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1794_10 +# 1794| m1794_22(unknown) = Chi : total:m1794_19, partial:m1794_21 +# 1794| v1794_23(void) = NoOp : +# 1794| v1794_24(void) = ReturnIndirection[#this] : &:r1794_7, ~m1794_22 #-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, m0_4 -# 1792| v1792_25(void) = ReturnVoid : -# 1792| v1792_26(void) = AliasedUse : ~m1792_22 -# 1792| v1792_27(void) = ExitFunction : +# 1794| v1794_25(void) = ReturnVoid : +# 1794| v1794_26(void) = AliasedUse : ~m1794_22 +# 1794| v1794_27(void) = ExitFunction : -# 1796| void CopyConstructorTestVirtualClass::CopyConstructorTestVirtualClass() -# 1796| Block 0 -# 1796| v1796_1(void) = EnterFunction : -# 1796| m1796_2(unknown) = AliasedDefinition : -# 1796| m1796_3(unknown) = InitializeNonLocal : -# 1796| m1796_4(unknown) = Chi : total:m1796_2, partial:m1796_3 -# 1796| r1796_5(glval) = VariableAddress[#this] : -# 1796| m1796_6(glval) = InitializeParameter[#this] : &:r1796_5 -# 1796| r1796_7(glval) = Load[#this] : &:r1796_5, m1796_6 -# 1796| m1796_8(CopyConstructorTestVirtualClass) = InitializeIndirection[#this] : &:r1796_7 -# 1796| m1796_9(unknown) = Chi : total:m1796_4, partial:m1796_8 -# 1796| r1796_10(glval) = ConvertToNonVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithImplicitArgumentClass] : r1796_7 -# 1796| r1796_11(glval) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : -# 1796| v1796_12(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1796_11, this:r1796_10 -# 1796| m1796_13(unknown) = ^CallSideEffect : ~m1796_9 -# 1796| m1796_14(unknown) = Chi : total:m1796_9, partial:m1796_13 -# 1796| m1796_15(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1796_10 -# 1796| m1796_16(unknown) = Chi : total:m1796_14, partial:m1796_15 -# 1796| r1796_17(glval) = ConvertToNonVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithBitwiseCopyClass] : r1796_7 -# 1796| r1796_18(glval) = FunctionAddress[CopyConstructorWithBitwiseCopyClass] : -# 1796| v1796_19(void) = Call[CopyConstructorWithBitwiseCopyClass] : func:r1796_18, this:r1796_17 -# 1796| m1796_20(unknown) = ^CallSideEffect : ~m1796_16 -# 1796| m1796_21(unknown) = Chi : total:m1796_16, partial:m1796_20 -# 1796| m1796_22(CopyConstructorWithBitwiseCopyClass) = ^IndirectMayWriteSideEffect[-1] : &:r1796_17 -# 1796| m1796_23(unknown) = Chi : total:m1796_21, partial:m1796_22 -# 1796| v1796_24(void) = NoOp : -# 1796| v1796_25(void) = ReturnIndirection[#this] : &:r1796_7, ~m1796_23 -# 1796| v1796_26(void) = ReturnVoid : -# 1796| v1796_27(void) = AliasedUse : ~m1796_23 -# 1796| v1796_28(void) = ExitFunction : +# 1798| void CopyConstructorTestVirtualClass::CopyConstructorTestVirtualClass() +# 1798| Block 0 +# 1798| v1798_1(void) = EnterFunction : +# 1798| m1798_2(unknown) = AliasedDefinition : +# 1798| m1798_3(unknown) = InitializeNonLocal : +# 1798| m1798_4(unknown) = Chi : total:m1798_2, partial:m1798_3 +# 1798| r1798_5(glval) = VariableAddress[#this] : +# 1798| m1798_6(glval) = InitializeParameter[#this] : &:r1798_5 +# 1798| r1798_7(glval) = Load[#this] : &:r1798_5, m1798_6 +# 1798| m1798_8(CopyConstructorTestVirtualClass) = InitializeIndirection[#this] : &:r1798_7 +# 1798| m1798_9(unknown) = Chi : total:m1798_4, partial:m1798_8 +# 1798| r1798_10(glval) = ConvertToNonVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithImplicitArgumentClass] : r1798_7 +# 1798| r1798_11(glval) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : +# 1798| v1798_12(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1798_11, this:r1798_10 +# 1798| m1798_13(unknown) = ^CallSideEffect : ~m1798_9 +# 1798| m1798_14(unknown) = Chi : total:m1798_9, partial:m1798_13 +# 1798| m1798_15(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1798_10 +# 1798| m1798_16(unknown) = Chi : total:m1798_14, partial:m1798_15 +# 1798| r1798_17(glval) = ConvertToNonVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithBitwiseCopyClass] : r1798_7 +# 1798| r1798_18(glval) = FunctionAddress[CopyConstructorWithBitwiseCopyClass] : +# 1798| v1798_19(void) = Call[CopyConstructorWithBitwiseCopyClass] : func:r1798_18, this:r1798_17 +# 1798| m1798_20(unknown) = ^CallSideEffect : ~m1798_16 +# 1798| m1798_21(unknown) = Chi : total:m1798_16, partial:m1798_20 +# 1798| m1798_22(CopyConstructorWithBitwiseCopyClass) = ^IndirectMayWriteSideEffect[-1] : &:r1798_17 +# 1798| m1798_23(unknown) = Chi : total:m1798_21, partial:m1798_22 +# 1798| v1798_24(void) = NoOp : +# 1798| v1798_25(void) = ReturnIndirection[#this] : &:r1798_7, ~m1798_23 +# 1798| v1798_26(void) = ReturnVoid : +# 1798| v1798_27(void) = AliasedUse : ~m1798_23 +# 1798| v1798_28(void) = ExitFunction : -# 1799| int implicit_copy_constructor_test(CopyConstructorTestNonVirtualClass const&, CopyConstructorTestVirtualClass const&) -# 1799| Block 0 -# 1799| v1799_1(void) = EnterFunction : -# 1799| m1799_2(unknown) = AliasedDefinition : -# 1799| m1799_3(unknown) = InitializeNonLocal : -# 1799| m1799_4(unknown) = Chi : total:m1799_2, partial:m1799_3 -# 1800| r1800_1(glval) = VariableAddress[x] : -# 1800| m1800_2(CopyConstructorTestNonVirtualClass &) = InitializeParameter[x] : &:r1800_1 -# 1800| r1800_3(CopyConstructorTestNonVirtualClass &) = Load[x] : &:r1800_1, m1800_2 -# 1800| m1800_4(unknown) = InitializeIndirection[x] : &:r1800_3 -# 1801| r1801_1(glval) = VariableAddress[y] : -# 1801| m1801_2(CopyConstructorTestVirtualClass &) = InitializeParameter[y] : &:r1801_1 -# 1801| r1801_3(CopyConstructorTestVirtualClass &) = Load[y] : &:r1801_1, m1801_2 -# 1801| m1801_4(unknown) = InitializeIndirection[y] : &:r1801_3 -# 1802| r1802_1(glval) = VariableAddress[cx] : -# 1802| m1802_2(CopyConstructorTestNonVirtualClass) = Uninitialized[cx] : &:r1802_1 -# 1802| r1802_3(glval) = FunctionAddress[CopyConstructorTestNonVirtualClass] : -# 1802| r1802_4(glval) = VariableAddress[x] : -# 1802| r1802_5(CopyConstructorTestNonVirtualClass &) = Load[x] : &:r1802_4, m1800_2 -# 1802| r1802_6(glval) = CopyValue : r1802_5 -# 1802| r1802_7(CopyConstructorTestNonVirtualClass &) = CopyValue : r1802_6 -# 1802| v1802_8(void) = Call[CopyConstructorTestNonVirtualClass] : func:r1802_3, this:r1802_1, 0:r1802_7 -# 1802| m1802_9(unknown) = ^CallSideEffect : ~m1799_4 -# 1802| m1802_10(unknown) = Chi : total:m1799_4, partial:m1802_9 -# 1802| v1802_11(void) = ^BufferReadSideEffect[0] : &:r1802_7, ~m1800_4 -# 1802| m1802_12(CopyConstructorTestNonVirtualClass) = ^IndirectMayWriteSideEffect[-1] : &:r1802_1 -# 1802| m1802_13(CopyConstructorTestNonVirtualClass) = Chi : total:m1802_2, partial:m1802_12 -# 1803| r1803_1(glval) = VariableAddress[cy] : -# 1803| m1803_2(CopyConstructorTestVirtualClass) = Uninitialized[cy] : &:r1803_1 -# 1803| m1803_3(unknown) = Chi : total:m1802_10, partial:m1803_2 -# 1803| r1803_4(glval) = FunctionAddress[CopyConstructorTestVirtualClass] : -# 1803| r1803_5(glval) = VariableAddress[y] : -# 1803| r1803_6(CopyConstructorTestVirtualClass &) = Load[y] : &:r1803_5, m1801_2 -# 1803| r1803_7(glval) = CopyValue : r1803_6 -# 1803| r1803_8(CopyConstructorTestVirtualClass &) = CopyValue : r1803_7 -# 1803| v1803_9(void) = Call[CopyConstructorTestVirtualClass] : func:r1803_4, this:r1803_1, 0:r1803_8 -# 1803| m1803_10(unknown) = ^CallSideEffect : ~m1803_3 -# 1803| m1803_11(unknown) = Chi : total:m1803_3, partial:m1803_10 -# 1803| v1803_12(void) = ^BufferReadSideEffect[0] : &:r1803_8, ~m1801_4 -# 1803| m1803_13(CopyConstructorTestVirtualClass) = ^IndirectMayWriteSideEffect[-1] : &:r1803_1 -# 1803| m1803_14(unknown) = Chi : total:m1803_11, partial:m1803_13 -# 1804| r1804_1(glval) = VariableAddress[#return] : -# 1804| m1804_2(int) = Uninitialized[#return] : &:r1804_1 -# 1800| v1800_5(void) = ReturnIndirection[x] : &:r1800_3, m1800_4 -# 1801| v1801_5(void) = ReturnIndirection[y] : &:r1801_3, m1801_4 -# 1799| r1799_5(glval) = VariableAddress[#return] : -# 1799| v1799_6(void) = ReturnValue : &:r1799_5, m1804_2 -# 1799| v1799_7(void) = AliasedUse : ~m1803_11 -# 1799| v1799_8(void) = ExitFunction : +# 1801| int implicit_copy_constructor_test(CopyConstructorTestNonVirtualClass const&, CopyConstructorTestVirtualClass const&) +# 1801| Block 0 +# 1801| v1801_1(void) = EnterFunction : +# 1801| m1801_2(unknown) = AliasedDefinition : +# 1801| m1801_3(unknown) = InitializeNonLocal : +# 1801| m1801_4(unknown) = Chi : total:m1801_2, partial:m1801_3 +# 1802| r1802_1(glval) = VariableAddress[x] : +# 1802| m1802_2(CopyConstructorTestNonVirtualClass &) = InitializeParameter[x] : &:r1802_1 +# 1802| r1802_3(CopyConstructorTestNonVirtualClass &) = Load[x] : &:r1802_1, m1802_2 +# 1802| m1802_4(unknown) = InitializeIndirection[x] : &:r1802_3 +# 1803| r1803_1(glval) = VariableAddress[y] : +# 1803| m1803_2(CopyConstructorTestVirtualClass &) = InitializeParameter[y] : &:r1803_1 +# 1803| r1803_3(CopyConstructorTestVirtualClass &) = Load[y] : &:r1803_1, m1803_2 +# 1803| m1803_4(unknown) = InitializeIndirection[y] : &:r1803_3 +# 1804| r1804_1(glval) = VariableAddress[cx] : +# 1804| m1804_2(CopyConstructorTestNonVirtualClass) = Uninitialized[cx] : &:r1804_1 +# 1804| r1804_3(glval) = FunctionAddress[CopyConstructorTestNonVirtualClass] : +# 1804| r1804_4(glval) = VariableAddress[x] : +# 1804| r1804_5(CopyConstructorTestNonVirtualClass &) = Load[x] : &:r1804_4, m1802_2 +# 1804| r1804_6(glval) = CopyValue : r1804_5 +# 1804| r1804_7(CopyConstructorTestNonVirtualClass &) = CopyValue : r1804_6 +# 1804| v1804_8(void) = Call[CopyConstructorTestNonVirtualClass] : func:r1804_3, this:r1804_1, 0:r1804_7 +# 1804| m1804_9(unknown) = ^CallSideEffect : ~m1801_4 +# 1804| m1804_10(unknown) = Chi : total:m1801_4, partial:m1804_9 +# 1804| v1804_11(void) = ^BufferReadSideEffect[0] : &:r1804_7, ~m1802_4 +# 1804| m1804_12(CopyConstructorTestNonVirtualClass) = ^IndirectMayWriteSideEffect[-1] : &:r1804_1 +# 1804| m1804_13(CopyConstructorTestNonVirtualClass) = Chi : total:m1804_2, partial:m1804_12 +# 1805| r1805_1(glval) = VariableAddress[cy] : +# 1805| m1805_2(CopyConstructorTestVirtualClass) = Uninitialized[cy] : &:r1805_1 +# 1805| m1805_3(unknown) = Chi : total:m1804_10, partial:m1805_2 +# 1805| r1805_4(glval) = FunctionAddress[CopyConstructorTestVirtualClass] : +# 1805| r1805_5(glval) = VariableAddress[y] : +# 1805| r1805_6(CopyConstructorTestVirtualClass &) = Load[y] : &:r1805_5, m1803_2 +# 1805| r1805_7(glval) = CopyValue : r1805_6 +# 1805| r1805_8(CopyConstructorTestVirtualClass &) = CopyValue : r1805_7 +# 1805| v1805_9(void) = Call[CopyConstructorTestVirtualClass] : func:r1805_4, this:r1805_1, 0:r1805_8 +# 1805| m1805_10(unknown) = ^CallSideEffect : ~m1805_3 +# 1805| m1805_11(unknown) = Chi : total:m1805_3, partial:m1805_10 +# 1805| v1805_12(void) = ^BufferReadSideEffect[0] : &:r1805_8, ~m1803_4 +# 1805| m1805_13(CopyConstructorTestVirtualClass) = ^IndirectMayWriteSideEffect[-1] : &:r1805_1 +# 1805| m1805_14(unknown) = Chi : total:m1805_11, partial:m1805_13 +# 1806| r1806_1(glval) = VariableAddress[#return] : +# 1806| m1806_2(int) = Uninitialized[#return] : &:r1806_1 +# 1802| v1802_5(void) = ReturnIndirection[x] : &:r1802_3, m1802_4 +# 1803| v1803_5(void) = ReturnIndirection[y] : &:r1803_3, m1803_4 +# 1801| r1801_5(glval) = VariableAddress[#return] : +# 1801| v1801_6(void) = ReturnValue : &:r1801_5, m1806_2 +# 1801| v1801_7(void) = AliasedUse : ~m1805_11 +# 1801| v1801_8(void) = ExitFunction : -# 1806| void if_initialization(int) -# 1806| Block 0 -# 1806| v1806_1(void) = EnterFunction : -# 1806| m1806_2(unknown) = AliasedDefinition : -# 1806| m1806_3(unknown) = InitializeNonLocal : -# 1806| m1806_4(unknown) = Chi : total:m1806_2, partial:m1806_3 -# 1806| r1806_5(glval) = VariableAddress[x] : -# 1806| m1806_6(int) = InitializeParameter[x] : &:r1806_5 -# 1807| r1807_1(glval) = VariableAddress[y] : -# 1807| r1807_2(glval) = VariableAddress[x] : -# 1807| r1807_3(int) = Load[x] : &:r1807_2, m1806_6 -# 1807| m1807_4(int) = Store[y] : &:r1807_1, r1807_3 -# 1807| r1807_5(glval) = VariableAddress[x] : -# 1807| r1807_6(int) = Load[x] : &:r1807_5, m1806_6 -# 1807| r1807_7(int) = Constant[1] : -# 1807| r1807_8(int) = Add : r1807_6, r1807_7 -# 1807| r1807_9(int) = Constant[0] : -# 1807| r1807_10(bool) = CompareNE : r1807_8, r1807_9 -# 1807| v1807_11(void) = ConditionalBranch : r1807_10 +# 1808| void if_initialization(int) +# 1808| Block 0 +# 1808| v1808_1(void) = EnterFunction : +# 1808| m1808_2(unknown) = AliasedDefinition : +# 1808| m1808_3(unknown) = InitializeNonLocal : +# 1808| m1808_4(unknown) = Chi : total:m1808_2, partial:m1808_3 +# 1808| r1808_5(glval) = VariableAddress[x] : +# 1808| m1808_6(int) = InitializeParameter[x] : &:r1808_5 +# 1809| r1809_1(glval) = VariableAddress[y] : +# 1809| r1809_2(glval) = VariableAddress[x] : +# 1809| r1809_3(int) = Load[x] : &:r1809_2, m1808_6 +# 1809| m1809_4(int) = Store[y] : &:r1809_1, r1809_3 +# 1809| r1809_5(glval) = VariableAddress[x] : +# 1809| r1809_6(int) = Load[x] : &:r1809_5, m1808_6 +# 1809| r1809_7(int) = Constant[1] : +# 1809| r1809_8(int) = Add : r1809_6, r1809_7 +# 1809| r1809_9(int) = Constant[0] : +# 1809| r1809_10(bool) = CompareNE : r1809_8, r1809_9 +# 1809| v1809_11(void) = ConditionalBranch : r1809_10 #-----| False -> Block 2 #-----| True -> Block 1 -# 1808| Block 1 -# 1808| r1808_1(glval) = VariableAddress[x] : -# 1808| r1808_2(int) = Load[x] : &:r1808_1, m1806_6 -# 1808| r1808_3(glval) = VariableAddress[y] : -# 1808| r1808_4(int) = Load[y] : &:r1808_3, m1807_4 -# 1808| r1808_5(int) = Add : r1808_2, r1808_4 -# 1808| r1808_6(glval) = VariableAddress[x] : -# 1808| m1808_7(int) = Store[x] : &:r1808_6, r1808_5 +# 1810| Block 1 +# 1810| r1810_1(glval) = VariableAddress[x] : +# 1810| r1810_2(int) = Load[x] : &:r1810_1, m1808_6 +# 1810| r1810_3(glval) = VariableAddress[y] : +# 1810| r1810_4(int) = Load[y] : &:r1810_3, m1809_4 +# 1810| r1810_5(int) = Add : r1810_2, r1810_4 +# 1810| r1810_6(glval) = VariableAddress[x] : +# 1810| m1810_7(int) = Store[x] : &:r1810_6, r1810_5 #-----| Goto -> Block 2 -# 1811| Block 2 -# 1811| m1811_1(int) = Phi : from 0:m1806_6, from 1:m1808_7 -# 1811| r1811_2(glval) = VariableAddress[w] : -# 1811| m1811_3(int) = Uninitialized[w] : &:r1811_2 -# 1812| r1812_1(glval) = VariableAddress[x] : -# 1812| r1812_2(int) = Load[x] : &:r1812_1, m1811_1 -# 1812| r1812_3(glval) = VariableAddress[w] : -# 1812| m1812_4(int) = Store[w] : &:r1812_3, r1812_2 -# 1812| r1812_5(glval) = VariableAddress[x] : -# 1812| r1812_6(int) = Load[x] : &:r1812_5, m1811_1 -# 1812| r1812_7(int) = Constant[1] : -# 1812| r1812_8(int) = Add : r1812_6, r1812_7 -# 1812| r1812_9(int) = Constant[0] : -# 1812| r1812_10(bool) = CompareNE : r1812_8, r1812_9 -# 1812| v1812_11(void) = ConditionalBranch : r1812_10 +# 1813| Block 2 +# 1813| m1813_1(int) = Phi : from 0:m1808_6, from 1:m1810_7 +# 1813| r1813_2(glval) = VariableAddress[w] : +# 1813| m1813_3(int) = Uninitialized[w] : &:r1813_2 +# 1814| r1814_1(glval) = VariableAddress[x] : +# 1814| r1814_2(int) = Load[x] : &:r1814_1, m1813_1 +# 1814| r1814_3(glval) = VariableAddress[w] : +# 1814| m1814_4(int) = Store[w] : &:r1814_3, r1814_2 +# 1814| r1814_5(glval) = VariableAddress[x] : +# 1814| r1814_6(int) = Load[x] : &:r1814_5, m1813_1 +# 1814| r1814_7(int) = Constant[1] : +# 1814| r1814_8(int) = Add : r1814_6, r1814_7 +# 1814| r1814_9(int) = Constant[0] : +# 1814| r1814_10(bool) = CompareNE : r1814_8, r1814_9 +# 1814| v1814_11(void) = ConditionalBranch : r1814_10 #-----| False -> Block 4 #-----| True -> Block 3 -# 1813| Block 3 -# 1813| r1813_1(glval) = VariableAddress[x] : -# 1813| r1813_2(int) = Load[x] : &:r1813_1, m1811_1 -# 1813| r1813_3(glval) = VariableAddress[w] : -# 1813| r1813_4(int) = Load[w] : &:r1813_3, m1812_4 -# 1813| r1813_5(int) = Add : r1813_2, r1813_4 -# 1813| r1813_6(glval) = VariableAddress[x] : -# 1813| m1813_7(int) = Store[x] : &:r1813_6, r1813_5 +# 1815| Block 3 +# 1815| r1815_1(glval) = VariableAddress[x] : +# 1815| r1815_2(int) = Load[x] : &:r1815_1, m1813_1 +# 1815| r1815_3(glval) = VariableAddress[w] : +# 1815| r1815_4(int) = Load[w] : &:r1815_3, m1814_4 +# 1815| r1815_5(int) = Add : r1815_2, r1815_4 +# 1815| r1815_6(glval) = VariableAddress[x] : +# 1815| m1815_7(int) = Store[x] : &:r1815_6, r1815_5 #-----| Goto -> Block 4 -# 1816| Block 4 -# 1816| m1816_1(int) = Phi : from 2:m1811_1, from 3:m1813_7 -# 1816| r1816_2(glval) = VariableAddress[x] : -# 1816| r1816_3(int) = Load[x] : &:r1816_2, m1816_1 -# 1816| r1816_4(glval) = VariableAddress[w] : -# 1816| m1816_5(int) = Store[w] : &:r1816_4, r1816_3 -# 1816| r1816_6(glval) = VariableAddress[w2] : -# 1816| r1816_7(glval) = VariableAddress[w] : -# 1816| r1816_8(int) = Load[w] : &:r1816_7, m1816_5 -# 1816| m1816_9(int) = Store[w2] : &:r1816_6, r1816_8 -# 1816| r1816_10(glval) = VariableAddress[w2] : -# 1816| r1816_11(int) = Load[w2] : &:r1816_10, m1816_9 -# 1816| r1816_12(int) = Constant[0] : -# 1816| r1816_13(bool) = CompareNE : r1816_11, r1816_12 -# 1816| r1816_14(bool) = CopyValue : r1816_13 -# 1816| v1816_15(void) = ConditionalBranch : r1816_14 +# 1818| Block 4 +# 1818| m1818_1(int) = Phi : from 2:m1813_1, from 3:m1815_7 +# 1818| r1818_2(glval) = VariableAddress[x] : +# 1818| r1818_3(int) = Load[x] : &:r1818_2, m1818_1 +# 1818| r1818_4(glval) = VariableAddress[w] : +# 1818| m1818_5(int) = Store[w] : &:r1818_4, r1818_3 +# 1818| r1818_6(glval) = VariableAddress[w2] : +# 1818| r1818_7(glval) = VariableAddress[w] : +# 1818| r1818_8(int) = Load[w] : &:r1818_7, m1818_5 +# 1818| m1818_9(int) = Store[w2] : &:r1818_6, r1818_8 +# 1818| r1818_10(glval) = VariableAddress[w2] : +# 1818| r1818_11(int) = Load[w2] : &:r1818_10, m1818_9 +# 1818| r1818_12(int) = Constant[0] : +# 1818| r1818_13(bool) = CompareNE : r1818_11, r1818_12 +# 1818| r1818_14(bool) = CopyValue : r1818_13 +# 1818| v1818_15(void) = ConditionalBranch : r1818_14 #-----| False -> Block 6 #-----| True -> Block 5 -# 1817| Block 5 -# 1817| r1817_1(glval) = VariableAddress[x] : -# 1817| r1817_2(int) = Load[x] : &:r1817_1, m1816_1 -# 1817| r1817_3(glval) = VariableAddress[w] : -# 1817| r1817_4(int) = Load[w] : &:r1817_3, m1816_5 -# 1817| r1817_5(int) = Add : r1817_2, r1817_4 -# 1817| r1817_6(glval) = VariableAddress[x] : -# 1817| m1817_7(int) = Store[x] : &:r1817_6, r1817_5 +# 1819| Block 5 +# 1819| r1819_1(glval) = VariableAddress[x] : +# 1819| r1819_2(int) = Load[x] : &:r1819_1, m1818_1 +# 1819| r1819_3(glval) = VariableAddress[w] : +# 1819| r1819_4(int) = Load[w] : &:r1819_3, m1818_5 +# 1819| r1819_5(int) = Add : r1819_2, r1819_4 +# 1819| r1819_6(glval) = VariableAddress[x] : +# 1819| m1819_7(int) = Store[x] : &:r1819_6, r1819_5 #-----| Goto -> Block 6 -# 1820| Block 6 -# 1820| m1820_1(int) = Phi : from 4:m1816_1, from 5:m1817_7 -# 1820| r1820_2(glval) = VariableAddress[v] : -# 1820| r1820_3(glval) = VariableAddress[x] : -# 1820| r1820_4(int) = Load[x] : &:r1820_3, m1820_1 -# 1820| m1820_5(int) = Store[v] : &:r1820_2, r1820_4 -# 1820| r1820_6(glval) = VariableAddress[v2] : -# 1820| r1820_7(glval) = VariableAddress[v] : -# 1820| r1820_8(int) = Load[v] : &:r1820_7, m1820_5 -# 1820| m1820_9(int) = Store[v2] : &:r1820_6, r1820_8 -# 1820| r1820_10(glval) = VariableAddress[v2] : -# 1820| r1820_11(int) = Load[v2] : &:r1820_10, m1820_9 -# 1820| r1820_12(int) = Constant[0] : -# 1820| r1820_13(bool) = CompareNE : r1820_11, r1820_12 -# 1820| r1820_14(bool) = CopyValue : r1820_13 -# 1820| v1820_15(void) = ConditionalBranch : r1820_14 +# 1822| Block 6 +# 1822| m1822_1(int) = Phi : from 4:m1818_1, from 5:m1819_7 +# 1822| r1822_2(glval) = VariableAddress[v] : +# 1822| r1822_3(glval) = VariableAddress[x] : +# 1822| r1822_4(int) = Load[x] : &:r1822_3, m1822_1 +# 1822| m1822_5(int) = Store[v] : &:r1822_2, r1822_4 +# 1822| r1822_6(glval) = VariableAddress[v2] : +# 1822| r1822_7(glval) = VariableAddress[v] : +# 1822| r1822_8(int) = Load[v] : &:r1822_7, m1822_5 +# 1822| m1822_9(int) = Store[v2] : &:r1822_6, r1822_8 +# 1822| r1822_10(glval) = VariableAddress[v2] : +# 1822| r1822_11(int) = Load[v2] : &:r1822_10, m1822_9 +# 1822| r1822_12(int) = Constant[0] : +# 1822| r1822_13(bool) = CompareNE : r1822_11, r1822_12 +# 1822| r1822_14(bool) = CopyValue : r1822_13 +# 1822| v1822_15(void) = ConditionalBranch : r1822_14 #-----| False -> Block 8 #-----| True -> Block 7 -# 1821| Block 7 -# 1821| r1821_1(glval) = VariableAddress[x] : -# 1821| r1821_2(int) = Load[x] : &:r1821_1, m1820_1 -# 1821| r1821_3(glval) = VariableAddress[v] : -# 1821| r1821_4(int) = Load[v] : &:r1821_3, m1820_5 -# 1821| r1821_5(int) = Add : r1821_2, r1821_4 -# 1821| r1821_6(glval) = VariableAddress[x] : -# 1821| m1821_7(int) = Store[x] : &:r1821_6, r1821_5 +# 1823| Block 7 +# 1823| r1823_1(glval) = VariableAddress[x] : +# 1823| r1823_2(int) = Load[x] : &:r1823_1, m1822_1 +# 1823| r1823_3(glval) = VariableAddress[v] : +# 1823| r1823_4(int) = Load[v] : &:r1823_3, m1822_5 +# 1823| r1823_5(int) = Add : r1823_2, r1823_4 +# 1823| r1823_6(glval) = VariableAddress[x] : +# 1823| m1823_7(int) = Store[x] : &:r1823_6, r1823_5 #-----| Goto -> Block 8 -# 1824| Block 8 -# 1824| m1824_1(int) = Phi : from 6:m1820_1, from 7:m1821_7 -# 1824| r1824_2(glval) = VariableAddress[z] : -# 1824| r1824_3(glval) = VariableAddress[x] : -# 1824| r1824_4(int) = Load[x] : &:r1824_3, m1824_1 -# 1824| m1824_5(int) = Store[z] : &:r1824_2, r1824_4 -# 1825| r1825_1(glval) = VariableAddress[z] : -# 1825| r1825_2(int) = Load[z] : &:r1825_1, m1824_5 -# 1825| r1825_3(int) = Constant[0] : -# 1825| r1825_4(bool) = CompareNE : r1825_2, r1825_3 -# 1825| v1825_5(void) = ConditionalBranch : r1825_4 +# 1826| Block 8 +# 1826| m1826_1(int) = Phi : from 6:m1822_1, from 7:m1823_7 +# 1826| r1826_2(glval) = VariableAddress[z] : +# 1826| r1826_3(glval) = VariableAddress[x] : +# 1826| r1826_4(int) = Load[x] : &:r1826_3, m1826_1 +# 1826| m1826_5(int) = Store[z] : &:r1826_2, r1826_4 +# 1827| r1827_1(glval) = VariableAddress[z] : +# 1827| r1827_2(int) = Load[z] : &:r1827_1, m1826_5 +# 1827| r1827_3(int) = Constant[0] : +# 1827| r1827_4(bool) = CompareNE : r1827_2, r1827_3 +# 1827| v1827_5(void) = ConditionalBranch : r1827_4 #-----| False -> Block 10 #-----| True -> Block 9 -# 1826| Block 9 -# 1826| r1826_1(glval) = VariableAddress[x] : -# 1826| r1826_2(int) = Load[x] : &:r1826_1, m1824_1 -# 1826| r1826_3(glval) = VariableAddress[z] : -# 1826| r1826_4(int) = Load[z] : &:r1826_3, m1824_5 -# 1826| r1826_5(int) = Add : r1826_2, r1826_4 -# 1826| r1826_6(glval) = VariableAddress[x] : -# 1826| m1826_7(int) = Store[x] : &:r1826_6, r1826_5 +# 1828| Block 9 +# 1828| r1828_1(glval) = VariableAddress[x] : +# 1828| r1828_2(int) = Load[x] : &:r1828_1, m1826_1 +# 1828| r1828_3(glval) = VariableAddress[z] : +# 1828| r1828_4(int) = Load[z] : &:r1828_3, m1826_5 +# 1828| r1828_5(int) = Add : r1828_2, r1828_4 +# 1828| r1828_6(glval) = VariableAddress[x] : +# 1828| m1828_7(int) = Store[x] : &:r1828_6, r1828_5 #-----| Goto -> Block 10 -# 1829| Block 10 -# 1829| m1829_1(int) = Phi : from 8:m1824_1, from 9:m1826_7 -# 1829| r1829_2(glval) = VariableAddress[z2] : -# 1829| r1829_3(glval) = VariableAddress[z] : -# 1829| r1829_4(int) = Load[z] : &:r1829_3, m1824_5 -# 1829| m1829_5(int) = Store[z2] : &:r1829_2, r1829_4 -# 1829| r1829_6(glval) = VariableAddress[z2] : -# 1829| r1829_7(int) = Load[z2] : &:r1829_6, m1829_5 -# 1829| r1829_8(int) = Constant[0] : -# 1829| r1829_9(bool) = CompareNE : r1829_7, r1829_8 -# 1829| r1829_10(bool) = CopyValue : r1829_9 -# 1829| v1829_11(void) = ConditionalBranch : r1829_10 +# 1831| Block 10 +# 1831| m1831_1(int) = Phi : from 8:m1826_1, from 9:m1828_7 +# 1831| r1831_2(glval) = VariableAddress[z2] : +# 1831| r1831_3(glval) = VariableAddress[z] : +# 1831| r1831_4(int) = Load[z] : &:r1831_3, m1826_5 +# 1831| m1831_5(int) = Store[z2] : &:r1831_2, r1831_4 +# 1831| r1831_6(glval) = VariableAddress[z2] : +# 1831| r1831_7(int) = Load[z2] : &:r1831_6, m1831_5 +# 1831| r1831_8(int) = Constant[0] : +# 1831| r1831_9(bool) = CompareNE : r1831_7, r1831_8 +# 1831| r1831_10(bool) = CopyValue : r1831_9 +# 1831| v1831_11(void) = ConditionalBranch : r1831_10 #-----| False -> Block 12 #-----| True -> Block 11 -# 1830| Block 11 -# 1830| r1830_1(glval) = VariableAddress[z2] : -# 1830| r1830_2(int) = Load[z2] : &:r1830_1, m1829_5 -# 1830| r1830_3(glval) = VariableAddress[x] : -# 1830| r1830_4(int) = Load[x] : &:r1830_3, m1829_1 -# 1830| r1830_5(int) = Add : r1830_4, r1830_2 -# 1830| m1830_6(int) = Store[x] : &:r1830_3, r1830_5 +# 1832| Block 11 +# 1832| r1832_1(glval) = VariableAddress[z2] : +# 1832| r1832_2(int) = Load[z2] : &:r1832_1, m1831_5 +# 1832| r1832_3(glval) = VariableAddress[x] : +# 1832| r1832_4(int) = Load[x] : &:r1832_3, m1831_1 +# 1832| r1832_5(int) = Add : r1832_4, r1832_2 +# 1832| m1832_6(int) = Store[x] : &:r1832_3, r1832_5 #-----| Goto -> Block 12 -# 1832| Block 12 -# 1832| v1832_1(void) = NoOp : -# 1806| v1806_7(void) = ReturnVoid : -# 1806| v1806_8(void) = AliasedUse : m1806_3 -# 1806| v1806_9(void) = ExitFunction : +# 1834| Block 12 +# 1834| v1834_1(void) = NoOp : +# 1808| v1808_7(void) = ReturnVoid : +# 1808| v1808_8(void) = AliasedUse : m1808_3 +# 1808| v1808_9(void) = ExitFunction : -# 1834| void switch_initialization(int) -# 1834| Block 0 -# 1834| v1834_1(void) = EnterFunction : -# 1834| m1834_2(unknown) = AliasedDefinition : -# 1834| m1834_3(unknown) = InitializeNonLocal : -# 1834| m1834_4(unknown) = Chi : total:m1834_2, partial:m1834_3 -# 1834| r1834_5(glval) = VariableAddress[x] : -# 1834| m1834_6(int) = InitializeParameter[x] : &:r1834_5 -# 1835| r1835_1(glval) = VariableAddress[y] : -# 1835| r1835_2(glval) = VariableAddress[x] : -# 1835| r1835_3(int) = Load[x] : &:r1835_2, m1834_6 -# 1835| m1835_4(int) = Store[y] : &:r1835_1, r1835_3 -# 1835| r1835_5(glval) = VariableAddress[x] : -# 1835| r1835_6(int) = Load[x] : &:r1835_5, m1834_6 -# 1835| r1835_7(int) = Constant[1] : -# 1835| r1835_8(int) = Add : r1835_6, r1835_7 -# 1835| v1835_9(void) = Switch : r1835_8 +# 1836| void switch_initialization(int) +# 1836| Block 0 +# 1836| v1836_1(void) = EnterFunction : +# 1836| m1836_2(unknown) = AliasedDefinition : +# 1836| m1836_3(unknown) = InitializeNonLocal : +# 1836| m1836_4(unknown) = Chi : total:m1836_2, partial:m1836_3 +# 1836| r1836_5(glval) = VariableAddress[x] : +# 1836| m1836_6(int) = InitializeParameter[x] : &:r1836_5 +# 1837| r1837_1(glval) = VariableAddress[y] : +# 1837| r1837_2(glval) = VariableAddress[x] : +# 1837| r1837_3(int) = Load[x] : &:r1837_2, m1836_6 +# 1837| m1837_4(int) = Store[y] : &:r1837_1, r1837_3 +# 1837| r1837_5(glval) = VariableAddress[x] : +# 1837| r1837_6(int) = Load[x] : &:r1837_5, m1836_6 +# 1837| r1837_7(int) = Constant[1] : +# 1837| r1837_8(int) = Add : r1837_6, r1837_7 +# 1837| v1837_9(void) = Switch : r1837_8 #-----| Default -> Block 1 -# 1836| Block 1 -# 1836| v1836_1(void) = NoOp : -# 1837| r1837_1(glval) = VariableAddress[x] : -# 1837| r1837_2(int) = Load[x] : &:r1837_1, m1834_6 -# 1837| r1837_3(glval) = VariableAddress[y] : -# 1837| r1837_4(int) = Load[y] : &:r1837_3, m1835_4 -# 1837| r1837_5(int) = Add : r1837_2, r1837_4 -# 1837| r1837_6(glval) = VariableAddress[x] : -# 1837| m1837_7(int) = Store[x] : &:r1837_6, r1837_5 -# 1840| r1840_1(glval) = VariableAddress[w] : -# 1840| m1840_2(int) = Uninitialized[w] : &:r1840_1 -# 1841| r1841_1(glval) = VariableAddress[x] : -# 1841| r1841_2(int) = Load[x] : &:r1841_1, m1837_7 -# 1841| r1841_3(glval) = VariableAddress[w] : -# 1841| m1841_4(int) = Store[w] : &:r1841_3, r1841_2 -# 1841| r1841_5(glval) = VariableAddress[x] : -# 1841| r1841_6(int) = Load[x] : &:r1841_5, m1837_7 -# 1841| r1841_7(int) = Constant[1] : -# 1841| r1841_8(int) = Add : r1841_6, r1841_7 -# 1841| v1841_9(void) = Switch : r1841_8 +# 1838| Block 1 +# 1838| v1838_1(void) = NoOp : +# 1839| r1839_1(glval) = VariableAddress[x] : +# 1839| r1839_2(int) = Load[x] : &:r1839_1, m1836_6 +# 1839| r1839_3(glval) = VariableAddress[y] : +# 1839| r1839_4(int) = Load[y] : &:r1839_3, m1837_4 +# 1839| r1839_5(int) = Add : r1839_2, r1839_4 +# 1839| r1839_6(glval) = VariableAddress[x] : +# 1839| m1839_7(int) = Store[x] : &:r1839_6, r1839_5 +# 1842| r1842_1(glval) = VariableAddress[w] : +# 1842| m1842_2(int) = Uninitialized[w] : &:r1842_1 +# 1843| r1843_1(glval) = VariableAddress[x] : +# 1843| r1843_2(int) = Load[x] : &:r1843_1, m1839_7 +# 1843| r1843_3(glval) = VariableAddress[w] : +# 1843| m1843_4(int) = Store[w] : &:r1843_3, r1843_2 +# 1843| r1843_5(glval) = VariableAddress[x] : +# 1843| r1843_6(int) = Load[x] : &:r1843_5, m1839_7 +# 1843| r1843_7(int) = Constant[1] : +# 1843| r1843_8(int) = Add : r1843_6, r1843_7 +# 1843| v1843_9(void) = Switch : r1843_8 #-----| Default -> Block 2 -# 1842| Block 2 -# 1842| v1842_1(void) = NoOp : -# 1843| r1843_1(glval) = VariableAddress[x] : -# 1843| r1843_2(int) = Load[x] : &:r1843_1, m1837_7 -# 1843| r1843_3(glval) = VariableAddress[w] : -# 1843| r1843_4(int) = Load[w] : &:r1843_3, m1841_4 -# 1843| r1843_5(int) = Add : r1843_2, r1843_4 -# 1843| r1843_6(glval) = VariableAddress[x] : -# 1843| m1843_7(int) = Store[x] : &:r1843_6, r1843_5 -# 1846| r1846_1(glval) = VariableAddress[x] : -# 1846| r1846_2(int) = Load[x] : &:r1846_1, m1843_7 -# 1846| r1846_3(glval) = VariableAddress[w] : -# 1846| m1846_4(int) = Store[w] : &:r1846_3, r1846_2 -# 1846| r1846_5(glval) = VariableAddress[w2] : -# 1846| r1846_6(glval) = VariableAddress[w] : -# 1846| r1846_7(int) = Load[w] : &:r1846_6, m1846_4 -# 1846| m1846_8(int) = Store[w2] : &:r1846_5, r1846_7 -# 1846| r1846_9(glval) = VariableAddress[w2] : -# 1846| r1846_10(int) = Load[w2] : &:r1846_9, m1846_8 -# 1846| r1846_11(int) = CopyValue : r1846_10 -# 1846| v1846_12(void) = Switch : r1846_11 +# 1844| Block 2 +# 1844| v1844_1(void) = NoOp : +# 1845| r1845_1(glval) = VariableAddress[x] : +# 1845| r1845_2(int) = Load[x] : &:r1845_1, m1839_7 +# 1845| r1845_3(glval) = VariableAddress[w] : +# 1845| r1845_4(int) = Load[w] : &:r1845_3, m1843_4 +# 1845| r1845_5(int) = Add : r1845_2, r1845_4 +# 1845| r1845_6(glval) = VariableAddress[x] : +# 1845| m1845_7(int) = Store[x] : &:r1845_6, r1845_5 +# 1848| r1848_1(glval) = VariableAddress[x] : +# 1848| r1848_2(int) = Load[x] : &:r1848_1, m1845_7 +# 1848| r1848_3(glval) = VariableAddress[w] : +# 1848| m1848_4(int) = Store[w] : &:r1848_3, r1848_2 +# 1848| r1848_5(glval) = VariableAddress[w2] : +# 1848| r1848_6(glval) = VariableAddress[w] : +# 1848| r1848_7(int) = Load[w] : &:r1848_6, m1848_4 +# 1848| m1848_8(int) = Store[w2] : &:r1848_5, r1848_7 +# 1848| r1848_9(glval) = VariableAddress[w2] : +# 1848| r1848_10(int) = Load[w2] : &:r1848_9, m1848_8 +# 1848| r1848_11(int) = CopyValue : r1848_10 +# 1848| v1848_12(void) = Switch : r1848_11 #-----| Default -> Block 3 -# 1847| Block 3 -# 1847| v1847_1(void) = NoOp : -# 1848| r1848_1(glval) = VariableAddress[x] : -# 1848| r1848_2(int) = Load[x] : &:r1848_1, m1843_7 -# 1848| r1848_3(glval) = VariableAddress[w] : -# 1848| r1848_4(int) = Load[w] : &:r1848_3, m1846_4 -# 1848| r1848_5(int) = Add : r1848_2, r1848_4 -# 1848| r1848_6(glval) = VariableAddress[x] : -# 1848| m1848_7(int) = Store[x] : &:r1848_6, r1848_5 -# 1851| r1851_1(glval) = VariableAddress[v] : -# 1851| r1851_2(glval) = VariableAddress[x] : -# 1851| r1851_3(int) = Load[x] : &:r1851_2, m1848_7 -# 1851| m1851_4(int) = Store[v] : &:r1851_1, r1851_3 -# 1851| r1851_5(glval) = VariableAddress[v2] : -# 1851| r1851_6(glval) = VariableAddress[v] : -# 1851| r1851_7(int) = Load[v] : &:r1851_6, m1851_4 -# 1851| m1851_8(int) = Store[v2] : &:r1851_5, r1851_7 -# 1851| r1851_9(glval) = VariableAddress[v2] : -# 1851| r1851_10(int) = Load[v2] : &:r1851_9, m1851_8 -# 1851| r1851_11(int) = CopyValue : r1851_10 -# 1851| v1851_12(void) = Switch : r1851_11 +# 1849| Block 3 +# 1849| v1849_1(void) = NoOp : +# 1850| r1850_1(glval) = VariableAddress[x] : +# 1850| r1850_2(int) = Load[x] : &:r1850_1, m1845_7 +# 1850| r1850_3(glval) = VariableAddress[w] : +# 1850| r1850_4(int) = Load[w] : &:r1850_3, m1848_4 +# 1850| r1850_5(int) = Add : r1850_2, r1850_4 +# 1850| r1850_6(glval) = VariableAddress[x] : +# 1850| m1850_7(int) = Store[x] : &:r1850_6, r1850_5 +# 1853| r1853_1(glval) = VariableAddress[v] : +# 1853| r1853_2(glval) = VariableAddress[x] : +# 1853| r1853_3(int) = Load[x] : &:r1853_2, m1850_7 +# 1853| m1853_4(int) = Store[v] : &:r1853_1, r1853_3 +# 1853| r1853_5(glval) = VariableAddress[v2] : +# 1853| r1853_6(glval) = VariableAddress[v] : +# 1853| r1853_7(int) = Load[v] : &:r1853_6, m1853_4 +# 1853| m1853_8(int) = Store[v2] : &:r1853_5, r1853_7 +# 1853| r1853_9(glval) = VariableAddress[v2] : +# 1853| r1853_10(int) = Load[v2] : &:r1853_9, m1853_8 +# 1853| r1853_11(int) = CopyValue : r1853_10 +# 1853| v1853_12(void) = Switch : r1853_11 #-----| Default -> Block 4 -# 1852| Block 4 -# 1852| v1852_1(void) = NoOp : -# 1853| r1853_1(glval) = VariableAddress[x] : -# 1853| r1853_2(int) = Load[x] : &:r1853_1, m1848_7 -# 1853| r1853_3(glval) = VariableAddress[v] : -# 1853| r1853_4(int) = Load[v] : &:r1853_3, m1851_4 -# 1853| r1853_5(int) = Add : r1853_2, r1853_4 -# 1853| r1853_6(glval) = VariableAddress[x] : -# 1853| m1853_7(int) = Store[x] : &:r1853_6, r1853_5 -# 1856| r1856_1(glval) = VariableAddress[z] : -# 1856| r1856_2(glval) = VariableAddress[x] : -# 1856| r1856_3(int) = Load[x] : &:r1856_2, m1853_7 -# 1856| m1856_4(int) = Store[z] : &:r1856_1, r1856_3 -# 1857| r1857_1(glval) = VariableAddress[z] : -# 1857| r1857_2(int) = Load[z] : &:r1857_1, m1856_4 -# 1857| v1857_3(void) = Switch : r1857_2 +# 1854| Block 4 +# 1854| v1854_1(void) = NoOp : +# 1855| r1855_1(glval) = VariableAddress[x] : +# 1855| r1855_2(int) = Load[x] : &:r1855_1, m1850_7 +# 1855| r1855_3(glval) = VariableAddress[v] : +# 1855| r1855_4(int) = Load[v] : &:r1855_3, m1853_4 +# 1855| r1855_5(int) = Add : r1855_2, r1855_4 +# 1855| r1855_6(glval) = VariableAddress[x] : +# 1855| m1855_7(int) = Store[x] : &:r1855_6, r1855_5 +# 1858| r1858_1(glval) = VariableAddress[z] : +# 1858| r1858_2(glval) = VariableAddress[x] : +# 1858| r1858_3(int) = Load[x] : &:r1858_2, m1855_7 +# 1858| m1858_4(int) = Store[z] : &:r1858_1, r1858_3 +# 1859| r1859_1(glval) = VariableAddress[z] : +# 1859| r1859_2(int) = Load[z] : &:r1859_1, m1858_4 +# 1859| v1859_3(void) = Switch : r1859_2 #-----| Default -> Block 5 -# 1858| Block 5 -# 1858| v1858_1(void) = NoOp : -# 1859| r1859_1(glval) = VariableAddress[x] : -# 1859| r1859_2(int) = Load[x] : &:r1859_1, m1853_7 -# 1859| r1859_3(glval) = VariableAddress[z] : -# 1859| r1859_4(int) = Load[z] : &:r1859_3, m1856_4 -# 1859| r1859_5(int) = Add : r1859_2, r1859_4 -# 1859| r1859_6(glval) = VariableAddress[x] : -# 1859| m1859_7(int) = Store[x] : &:r1859_6, r1859_5 -# 1862| r1862_1(glval) = VariableAddress[z2] : -# 1862| r1862_2(glval) = VariableAddress[z] : -# 1862| r1862_3(int) = Load[z] : &:r1862_2, m1856_4 -# 1862| m1862_4(int) = Store[z2] : &:r1862_1, r1862_3 -# 1862| r1862_5(glval) = VariableAddress[z2] : -# 1862| r1862_6(int) = Load[z2] : &:r1862_5, m1862_4 -# 1862| r1862_7(int) = CopyValue : r1862_6 -# 1862| v1862_8(void) = Switch : r1862_7 +# 1860| Block 5 +# 1860| v1860_1(void) = NoOp : +# 1861| r1861_1(glval) = VariableAddress[x] : +# 1861| r1861_2(int) = Load[x] : &:r1861_1, m1855_7 +# 1861| r1861_3(glval) = VariableAddress[z] : +# 1861| r1861_4(int) = Load[z] : &:r1861_3, m1858_4 +# 1861| r1861_5(int) = Add : r1861_2, r1861_4 +# 1861| r1861_6(glval) = VariableAddress[x] : +# 1861| m1861_7(int) = Store[x] : &:r1861_6, r1861_5 +# 1864| r1864_1(glval) = VariableAddress[z2] : +# 1864| r1864_2(glval) = VariableAddress[z] : +# 1864| r1864_3(int) = Load[z] : &:r1864_2, m1858_4 +# 1864| m1864_4(int) = Store[z2] : &:r1864_1, r1864_3 +# 1864| r1864_5(glval) = VariableAddress[z2] : +# 1864| r1864_6(int) = Load[z2] : &:r1864_5, m1864_4 +# 1864| r1864_7(int) = CopyValue : r1864_6 +# 1864| v1864_8(void) = Switch : r1864_7 #-----| Default -> Block 6 -# 1863| Block 6 -# 1863| v1863_1(void) = NoOp : -# 1864| r1864_1(glval) = VariableAddress[z2] : -# 1864| r1864_2(int) = Load[z2] : &:r1864_1, m1862_4 -# 1864| r1864_3(glval) = VariableAddress[x] : -# 1864| r1864_4(int) = Load[x] : &:r1864_3, m1859_7 -# 1864| r1864_5(int) = Add : r1864_4, r1864_2 -# 1864| m1864_6(int) = Store[x] : &:r1864_3, r1864_5 -# 1866| v1866_1(void) = NoOp : -# 1834| v1834_7(void) = ReturnVoid : -# 1834| v1834_8(void) = AliasedUse : m1834_3 -# 1834| v1834_9(void) = ExitFunction : +# 1865| Block 6 +# 1865| v1865_1(void) = NoOp : +# 1866| r1866_1(glval) = VariableAddress[z2] : +# 1866| r1866_2(int) = Load[z2] : &:r1866_1, m1864_4 +# 1866| r1866_3(glval) = VariableAddress[x] : +# 1866| r1866_4(int) = Load[x] : &:r1866_3, m1861_7 +# 1866| r1866_5(int) = Add : r1866_4, r1866_2 +# 1866| m1866_6(int) = Store[x] : &:r1866_3, r1866_5 +# 1868| v1868_1(void) = NoOp : +# 1836| v1836_7(void) = ReturnVoid : +# 1836| v1836_8(void) = AliasedUse : m1836_3 +# 1836| v1836_9(void) = ExitFunction : -# 1870| int global_2 -# 1870| Block 0 -# 1870| v1870_1(void) = EnterFunction : -# 1870| m1870_2(unknown) = AliasedDefinition : -# 1870| r1870_3(glval) = VariableAddress[global_2] : -# 1870| r1870_4(int) = Constant[1] : -# 1870| m1870_5(int) = Store[global_2] : &:r1870_3, r1870_4 -# 1870| m1870_6(unknown) = Chi : total:m1870_2, partial:m1870_5 -# 1870| v1870_7(void) = ReturnVoid : -# 1870| v1870_8(void) = AliasedUse : ~m1870_6 -# 1870| v1870_9(void) = ExitFunction : +# 1872| int global_2 +# 1872| Block 0 +# 1872| v1872_1(void) = EnterFunction : +# 1872| m1872_2(unknown) = AliasedDefinition : +# 1872| r1872_3(glval) = VariableAddress[global_2] : +# 1872| r1872_4(int) = Constant[1] : +# 1872| m1872_5(int) = Store[global_2] : &:r1872_3, r1872_4 +# 1872| m1872_6(unknown) = Chi : total:m1872_2, partial:m1872_5 +# 1872| v1872_7(void) = ReturnVoid : +# 1872| v1872_8(void) = AliasedUse : ~m1872_6 +# 1872| v1872_9(void) = ExitFunction : -# 1874| constructor_only global_4 -# 1874| Block 0 -# 1874| v1874_1(void) = EnterFunction : -# 1874| m1874_2(unknown) = AliasedDefinition : -# 1874| r1874_3(glval) = VariableAddress[global_4] : -# 1874| r1874_4(glval) = FunctionAddress[constructor_only] : -# 1874| r1874_5(int) = Constant[1] : -# 1874| v1874_6(void) = Call[constructor_only] : func:r1874_4, this:r1874_3, 0:r1874_5 -# 1874| m1874_7(unknown) = ^CallSideEffect : ~m1874_2 -# 1874| m1874_8(unknown) = Chi : total:m1874_2, partial:m1874_7 -# 1874| m1874_9(constructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1874_3 -# 1874| m1874_10(unknown) = Chi : total:m1874_8, partial:m1874_9 -# 1874| v1874_11(void) = ReturnVoid : -# 1874| v1874_12(void) = AliasedUse : ~m1874_10 -# 1874| v1874_13(void) = ExitFunction : - -# 1876| constructor_only global_5 +# 1876| constructor_only global_4 # 1876| Block 0 # 1876| v1876_1(void) = EnterFunction : # 1876| m1876_2(unknown) = AliasedDefinition : -# 1876| r1876_3(glval) = VariableAddress[global_5] : +# 1876| r1876_3(glval) = VariableAddress[global_4] : # 1876| r1876_4(glval) = FunctionAddress[constructor_only] : -# 1876| r1876_5(int) = Constant[2] : +# 1876| r1876_5(int) = Constant[1] : # 1876| v1876_6(void) = Call[constructor_only] : func:r1876_4, this:r1876_3, 0:r1876_5 # 1876| m1876_7(unknown) = ^CallSideEffect : ~m1876_2 # 1876| m1876_8(unknown) = Chi : total:m1876_2, partial:m1876_7 @@ -14154,49 +14138,65 @@ ir.cpp: # 1876| v1876_12(void) = AliasedUse : ~m1876_10 # 1876| v1876_13(void) = ExitFunction : -# 1878| char* global_string +# 1878| constructor_only global_5 # 1878| Block 0 -# 1878| v1878_1(void) = EnterFunction : -# 1878| m1878_2(unknown) = AliasedDefinition : -# 1878| r1878_3(glval) = VariableAddress[global_string] : -# 1878| r1878_4(glval) = StringConstant["global string"] : -# 1878| r1878_5(char *) = Convert : r1878_4 -# 1878| r1878_6(char *) = Convert : r1878_5 -# 1878| m1878_7(char *) = Store[global_string] : &:r1878_3, r1878_6 -# 1878| m1878_8(unknown) = Chi : total:m1878_2, partial:m1878_7 -# 1878| v1878_9(void) = ReturnVoid : -# 1878| v1878_10(void) = AliasedUse : ~m1878_8 -# 1878| v1878_11(void) = ExitFunction : +# 1878| v1878_1(void) = EnterFunction : +# 1878| m1878_2(unknown) = AliasedDefinition : +# 1878| r1878_3(glval) = VariableAddress[global_5] : +# 1878| r1878_4(glval) = FunctionAddress[constructor_only] : +# 1878| r1878_5(int) = Constant[2] : +# 1878| v1878_6(void) = Call[constructor_only] : func:r1878_4, this:r1878_3, 0:r1878_5 +# 1878| m1878_7(unknown) = ^CallSideEffect : ~m1878_2 +# 1878| m1878_8(unknown) = Chi : total:m1878_2, partial:m1878_7 +# 1878| m1878_9(constructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1878_3 +# 1878| m1878_10(unknown) = Chi : total:m1878_8, partial:m1878_9 +# 1878| v1878_11(void) = ReturnVoid : +# 1878| v1878_12(void) = AliasedUse : ~m1878_10 +# 1878| v1878_13(void) = ExitFunction : -# 1880| int global_6 +# 1880| char* global_string # 1880| Block 0 -# 1880| v1880_1(void) = EnterFunction : -# 1880| m1880_2(unknown) = AliasedDefinition : -# 1880| r1880_3(glval) = VariableAddress[global_6] : -# 1880| r1880_4(glval) = VariableAddress[global_2] : -# 1880| r1880_5(int) = Load[global_2] : &:r1880_4, ~m1880_2 -# 1880| m1880_6(int) = Store[global_6] : &:r1880_3, r1880_5 -# 1880| m1880_7(unknown) = Chi : total:m1880_2, partial:m1880_6 -# 1880| v1880_8(void) = ReturnVoid : -# 1880| v1880_9(void) = AliasedUse : ~m1880_7 -# 1880| v1880_10(void) = ExitFunction : +# 1880| v1880_1(void) = EnterFunction : +# 1880| m1880_2(unknown) = AliasedDefinition : +# 1880| r1880_3(glval) = VariableAddress[global_string] : +# 1880| r1880_4(glval) = StringConstant["global string"] : +# 1880| r1880_5(char *) = Convert : r1880_4 +# 1880| r1880_6(char *) = Convert : r1880_5 +# 1880| m1880_7(char *) = Store[global_string] : &:r1880_3, r1880_6 +# 1880| m1880_8(unknown) = Chi : total:m1880_2, partial:m1880_7 +# 1880| v1880_9(void) = ReturnVoid : +# 1880| v1880_10(void) = AliasedUse : ~m1880_8 +# 1880| v1880_11(void) = ExitFunction : -# 1883| block_assignment::A& block_assignment::A::operator=(block_assignment::A&&) -# 1883| Block 0 -# 1883| v1883_1(void) = EnterFunction : -# 1883| m1883_2(unknown) = AliasedDefinition : -# 1883| m1883_3(unknown) = InitializeNonLocal : -# 1883| m1883_4(unknown) = Chi : total:m1883_2, partial:m1883_3 -# 1883| r1883_5(glval) = VariableAddress[#this] : -# 1883| m1883_6(glval) = InitializeParameter[#this] : &:r1883_5 -# 1883| r1883_7(glval) = Load[#this] : &:r1883_5, m1883_6 -# 1883| m1883_8(A) = InitializeIndirection[#this] : &:r1883_7 +# 1882| int global_6 +# 1882| Block 0 +# 1882| v1882_1(void) = EnterFunction : +# 1882| m1882_2(unknown) = AliasedDefinition : +# 1882| r1882_3(glval) = VariableAddress[global_6] : +# 1882| r1882_4(glval) = VariableAddress[global_2] : +# 1882| r1882_5(int) = Load[global_2] : &:r1882_4, ~m1882_2 +# 1882| m1882_6(int) = Store[global_6] : &:r1882_3, r1882_5 +# 1882| m1882_7(unknown) = Chi : total:m1882_2, partial:m1882_6 +# 1882| v1882_8(void) = ReturnVoid : +# 1882| v1882_9(void) = AliasedUse : ~m1882_7 +# 1882| v1882_10(void) = ExitFunction : + +# 1885| block_assignment::A& block_assignment::A::operator=(block_assignment::A&&) +# 1885| Block 0 +# 1885| v1885_1(void) = EnterFunction : +# 1885| m1885_2(unknown) = AliasedDefinition : +# 1885| m1885_3(unknown) = InitializeNonLocal : +# 1885| m1885_4(unknown) = Chi : total:m1885_2, partial:m1885_3 +# 1885| r1885_5(glval) = VariableAddress[#this] : +# 1885| m1885_6(glval) = InitializeParameter[#this] : &:r1885_5 +# 1885| r1885_7(glval) = Load[#this] : &:r1885_5, m1885_6 +# 1885| m1885_8(A) = InitializeIndirection[#this] : &:r1885_7 #-----| r0_1(glval) = VariableAddress[(unnamed parameter 0)] : #-----| m0_2(A &&) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(A &&) = Load[(unnamed parameter 0)] : &:r0_1, m0_2 #-----| m0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 #-----| r0_5(glval) = VariableAddress[#this] : -#-----| r0_6(A *) = Load[#this] : &:r0_5, m1883_6 +#-----| r0_6(A *) = Load[#this] : &:r0_5, m1885_6 #-----| r0_7(glval[1]>) = FieldAddress[e] : r0_6 #-----| r0_8(glval) = VariableAddress[(unnamed parameter 0)] : #-----| r0_9(A &&) = Load[(unnamed parameter 0)] : &:r0_8, m0_2 @@ -14204,3285 +14204,3265 @@ ir.cpp: #-----| r0_11(glval[1]>) = FieldAddress[e] : r0_10 #-----| r0_12(enum [1]) = Load[?] : &:r0_11, ~m0_4 #-----| m0_13(enum [1]) = Store[?] : &:r0_7, r0_12 -#-----| m0_14(unknown) = Chi : total:m1883_8, partial:m0_13 +#-----| m0_14(unknown) = Chi : total:m1885_8, partial:m0_13 #-----| r0_15(glval) = VariableAddress[#return] : #-----| r0_16(glval) = VariableAddress[#this] : -#-----| r0_17(A *) = Load[#this] : &:r0_16, m1883_6 +#-----| r0_17(A *) = Load[#this] : &:r0_16, m1885_6 #-----| r0_18(glval) = CopyValue : r0_17 #-----| r0_19(A &) = CopyValue : r0_18 #-----| m0_20(A &) = Store[#return] : &:r0_15, r0_19 -# 1883| v1883_9(void) = ReturnIndirection[#this] : &:r1883_7, m0_14 +# 1885| v1885_9(void) = ReturnIndirection[#this] : &:r1885_7, m0_14 #-----| v0_21(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, m0_4 -# 1883| r1883_10(glval) = VariableAddress[#return] : -# 1883| v1883_11(void) = ReturnValue : &:r1883_10, m0_20 -# 1883| v1883_12(void) = AliasedUse : m1883_3 -# 1883| v1883_13(void) = ExitFunction : +# 1885| r1885_10(glval) = VariableAddress[#return] : +# 1885| v1885_11(void) = ReturnValue : &:r1885_10, m0_20 +# 1885| v1885_12(void) = AliasedUse : m1885_3 +# 1885| v1885_13(void) = ExitFunction : -# 1888| block_assignment::B& block_assignment::B::operator=(block_assignment::B&&) -# 1888| Block 0 -# 1888| v1888_1(void) = EnterFunction : -# 1888| m1888_2(unknown) = AliasedDefinition : -# 1888| m1888_3(unknown) = InitializeNonLocal : -# 1888| m1888_4(unknown) = Chi : total:m1888_2, partial:m1888_3 -# 1888| r1888_5(glval) = VariableAddress[#this] : -# 1888| m1888_6(glval) = InitializeParameter[#this] : &:r1888_5 -# 1888| r1888_7(glval) = Load[#this] : &:r1888_5, m1888_6 -# 1888| m1888_8(B) = InitializeIndirection[#this] : &:r1888_7 +# 1890| block_assignment::B& block_assignment::B::operator=(block_assignment::B&&) +# 1890| Block 0 +# 1890| v1890_1(void) = EnterFunction : +# 1890| m1890_2(unknown) = AliasedDefinition : +# 1890| m1890_3(unknown) = InitializeNonLocal : +# 1890| m1890_4(unknown) = Chi : total:m1890_2, partial:m1890_3 +# 1890| r1890_5(glval) = VariableAddress[#this] : +# 1890| m1890_6(glval) = InitializeParameter[#this] : &:r1890_5 +# 1890| r1890_7(glval) = Load[#this] : &:r1890_5, m1890_6 +# 1890| m1890_8(B) = InitializeIndirection[#this] : &:r1890_7 #-----| r0_1(glval) = VariableAddress[(unnamed parameter 0)] : #-----| m0_2(B &&) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(B &&) = Load[(unnamed parameter 0)] : &:r0_1, m0_2 #-----| m0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 1888| r1888_9(glval) = VariableAddress[#this] : -# 1888| r1888_10(B *) = Load[#this] : &:r1888_9, m1888_6 -#-----| r0_5(A *) = ConvertToNonVirtualBase[B : A] : r1888_10 -# 1888| r1888_11(glval) = FunctionAddress[operator=] : -# 1888| r1888_12(glval) = VariableAddress[(unnamed parameter 0)] : -# 1888| r1888_13(B &&) = Load[(unnamed parameter 0)] : &:r1888_12, m0_2 -#-----| r0_6(glval) = CopyValue : r1888_13 -# 1888| r1888_14(B *) = CopyValue : r0_6 -#-----| r0_7(A *) = ConvertToNonVirtualBase[B : A] : r1888_14 -# 1888| r1888_15(glval) = CopyValue : r0_7 -#-----| r0_8(A &) = CopyValue : r1888_15 -# 1888| r1888_16(A &) = Call[operator=] : func:r1888_11, this:r0_5, 0:r0_8 -# 1888| m1888_17(unknown) = ^CallSideEffect : ~m1888_4 -# 1888| m1888_18(unknown) = Chi : total:m1888_4, partial:m1888_17 -#-----| v0_9(void) = ^IndirectReadSideEffect[-1] : &:r0_5, ~m1888_8 +# 1890| r1890_9(glval) = VariableAddress[#this] : +# 1890| r1890_10(B *) = Load[#this] : &:r1890_9, m1890_6 +#-----| r0_5(A *) = ConvertToNonVirtualBase[B : A] : r1890_10 +# 1890| r1890_11(glval) = FunctionAddress[operator=] : +# 1890| r1890_12(glval) = VariableAddress[(unnamed parameter 0)] : +# 1890| r1890_13(B &&) = Load[(unnamed parameter 0)] : &:r1890_12, m0_2 +#-----| r0_6(glval) = CopyValue : r1890_13 +# 1890| r1890_14(B *) = CopyValue : r0_6 +#-----| r0_7(A *) = ConvertToNonVirtualBase[B : A] : r1890_14 +# 1890| r1890_15(glval) = CopyValue : r0_7 +#-----| r0_8(A &) = CopyValue : r1890_15 +# 1890| r1890_16(A &) = Call[operator=] : func:r1890_11, this:r0_5, 0:r0_8 +# 1890| m1890_17(unknown) = ^CallSideEffect : ~m1890_4 +# 1890| m1890_18(unknown) = Chi : total:m1890_4, partial:m1890_17 +#-----| v0_9(void) = ^IndirectReadSideEffect[-1] : &:r0_5, ~m1890_8 #-----| v0_10(void) = ^BufferReadSideEffect[0] : &:r0_8, ~m0_4 #-----| m0_11(A) = ^IndirectMayWriteSideEffect[-1] : &:r0_5 -#-----| m0_12(unknown) = Chi : total:m1888_8, partial:m0_11 +#-----| m0_12(unknown) = Chi : total:m1890_8, partial:m0_11 #-----| m0_13(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_8 #-----| m0_14(unknown) = Chi : total:m0_4, partial:m0_13 -#-----| r0_15(glval) = CopyValue : r1888_16 +#-----| r0_15(glval) = CopyValue : r1890_16 #-----| r0_16(glval) = VariableAddress[#return] : #-----| r0_17(glval) = VariableAddress[#this] : -#-----| r0_18(B *) = Load[#this] : &:r0_17, m1888_6 +#-----| r0_18(B *) = Load[#this] : &:r0_17, m1890_6 #-----| r0_19(glval) = CopyValue : r0_18 #-----| r0_20(B &) = CopyValue : r0_19 #-----| m0_21(B &) = Store[#return] : &:r0_16, r0_20 -# 1888| v1888_19(void) = ReturnIndirection[#this] : &:r1888_7, m0_12 +# 1890| v1890_19(void) = ReturnIndirection[#this] : &:r1890_7, m0_12 #-----| v0_22(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, m0_14 -# 1888| r1888_20(glval) = VariableAddress[#return] : -# 1888| v1888_21(void) = ReturnValue : &:r1888_20, m0_21 -# 1888| v1888_22(void) = AliasedUse : ~m1888_18 -# 1888| v1888_23(void) = ExitFunction : +# 1890| r1890_20(glval) = VariableAddress[#return] : +# 1890| v1890_21(void) = ReturnValue : &:r1890_20, m0_21 +# 1890| v1890_22(void) = AliasedUse : ~m1890_18 +# 1890| v1890_23(void) = ExitFunction : -# 1892| void block_assignment::foo() -# 1892| Block 0 -# 1892| v1892_1(void) = EnterFunction : -# 1892| m1892_2(unknown) = AliasedDefinition : -# 1892| m1892_3(unknown) = InitializeNonLocal : -# 1892| m1892_4(unknown) = Chi : total:m1892_2, partial:m1892_3 -# 1893| r1893_1(glval) = VariableAddress[v] : -# 1893| m1893_2(B) = Uninitialized[v] : &:r1893_1 -# 1893| m1893_3(unknown) = Chi : total:m1892_4, partial:m1893_2 -# 1893| r1893_4(glval) = FunctionAddress[B] : -# 1893| r1893_5(A *) = Constant[0] : -# 1893| v1893_6(void) = Call[B] : func:r1893_4, this:r1893_1, 0:r1893_5 -# 1893| m1893_7(unknown) = ^CallSideEffect : ~m1893_3 -# 1893| m1893_8(unknown) = Chi : total:m1893_3, partial:m1893_7 -# 1893| v1893_9(void) = ^BufferReadSideEffect[0] : &:r1893_5, ~m1893_8 -# 1893| m1893_10(B) = ^IndirectMayWriteSideEffect[-1] : &:r1893_1 -# 1893| m1893_11(unknown) = Chi : total:m1893_8, partial:m1893_10 -# 1893| m1893_12(unknown) = ^BufferMayWriteSideEffect[0] : &:r1893_5 -# 1893| m1893_13(unknown) = Chi : total:m1893_11, partial:m1893_12 -# 1894| r1894_1(glval) = VariableAddress[v] : -# 1894| r1894_2(glval) = FunctionAddress[operator=] : -# 1894| r1894_3(glval) = VariableAddress[#temp1894:13] : -# 1894| m1894_4(B) = Uninitialized[#temp1894:13] : &:r1894_3 -# 1894| m1894_5(unknown) = Chi : total:m1893_13, partial:m1894_4 -# 1894| r1894_6(glval) = FunctionAddress[B] : -# 1894| r1894_7(A *) = Constant[0] : -# 1894| v1894_8(void) = Call[B] : func:r1894_6, this:r1894_3, 0:r1894_7 -# 1894| m1894_9(unknown) = ^CallSideEffect : ~m1894_5 -# 1894| m1894_10(unknown) = Chi : total:m1894_5, partial:m1894_9 -# 1894| v1894_11(void) = ^BufferReadSideEffect[0] : &:r1894_7, ~m1894_10 -# 1894| m1894_12(B) = ^IndirectMayWriteSideEffect[-1] : &:r1894_3 -# 1894| m1894_13(unknown) = Chi : total:m1894_10, partial:m1894_12 -# 1894| m1894_14(unknown) = ^BufferMayWriteSideEffect[0] : &:r1894_7 -# 1894| m1894_15(unknown) = Chi : total:m1894_13, partial:m1894_14 -# 1894| r1894_16(B &) = CopyValue : r1894_3 -# 1894| r1894_17(B &) = Call[operator=] : func:r1894_2, this:r1894_1, 0:r1894_16 -# 1894| m1894_18(unknown) = ^CallSideEffect : ~m1894_15 -# 1894| m1894_19(unknown) = Chi : total:m1894_15, partial:m1894_18 -# 1894| v1894_20(void) = ^IndirectReadSideEffect[-1] : &:r1894_1, ~m1894_19 -# 1894| v1894_21(void) = ^BufferReadSideEffect[0] : &:r1894_16, ~m1894_19 -# 1894| m1894_22(B) = ^IndirectMayWriteSideEffect[-1] : &:r1894_1 -# 1894| m1894_23(unknown) = Chi : total:m1894_19, partial:m1894_22 -# 1894| m1894_24(unknown) = ^BufferMayWriteSideEffect[0] : &:r1894_16 -# 1894| m1894_25(unknown) = Chi : total:m1894_23, partial:m1894_24 -# 1894| r1894_26(glval) = CopyValue : r1894_17 -# 1895| v1895_1(void) = NoOp : -# 1892| v1892_5(void) = ReturnVoid : -# 1892| v1892_6(void) = AliasedUse : ~m1894_19 -# 1892| v1892_7(void) = ExitFunction : +# 1894| void block_assignment::foo() +# 1894| Block 0 +# 1894| v1894_1(void) = EnterFunction : +# 1894| m1894_2(unknown) = AliasedDefinition : +# 1894| m1894_3(unknown) = InitializeNonLocal : +# 1894| m1894_4(unknown) = Chi : total:m1894_2, partial:m1894_3 +# 1895| r1895_1(glval) = VariableAddress[v] : +# 1895| m1895_2(B) = Uninitialized[v] : &:r1895_1 +# 1895| m1895_3(unknown) = Chi : total:m1894_4, partial:m1895_2 +# 1895| r1895_4(glval) = FunctionAddress[B] : +# 1895| r1895_5(A *) = Constant[0] : +# 1895| v1895_6(void) = Call[B] : func:r1895_4, this:r1895_1, 0:r1895_5 +# 1895| m1895_7(unknown) = ^CallSideEffect : ~m1895_3 +# 1895| m1895_8(unknown) = Chi : total:m1895_3, partial:m1895_7 +# 1895| v1895_9(void) = ^BufferReadSideEffect[0] : &:r1895_5, ~m1895_8 +# 1895| m1895_10(B) = ^IndirectMayWriteSideEffect[-1] : &:r1895_1 +# 1895| m1895_11(unknown) = Chi : total:m1895_8, partial:m1895_10 +# 1895| m1895_12(unknown) = ^BufferMayWriteSideEffect[0] : &:r1895_5 +# 1895| m1895_13(unknown) = Chi : total:m1895_11, partial:m1895_12 +# 1896| r1896_1(glval) = VariableAddress[v] : +# 1896| r1896_2(glval) = FunctionAddress[operator=] : +# 1896| r1896_3(glval) = VariableAddress[#temp1896:13] : +# 1896| m1896_4(B) = Uninitialized[#temp1896:13] : &:r1896_3 +# 1896| m1896_5(unknown) = Chi : total:m1895_13, partial:m1896_4 +# 1896| r1896_6(glval) = FunctionAddress[B] : +# 1896| r1896_7(A *) = Constant[0] : +# 1896| v1896_8(void) = Call[B] : func:r1896_6, this:r1896_3, 0:r1896_7 +# 1896| m1896_9(unknown) = ^CallSideEffect : ~m1896_5 +# 1896| m1896_10(unknown) = Chi : total:m1896_5, partial:m1896_9 +# 1896| v1896_11(void) = ^BufferReadSideEffect[0] : &:r1896_7, ~m1896_10 +# 1896| m1896_12(B) = ^IndirectMayWriteSideEffect[-1] : &:r1896_3 +# 1896| m1896_13(unknown) = Chi : total:m1896_10, partial:m1896_12 +# 1896| m1896_14(unknown) = ^BufferMayWriteSideEffect[0] : &:r1896_7 +# 1896| m1896_15(unknown) = Chi : total:m1896_13, partial:m1896_14 +# 1896| r1896_16(B &) = CopyValue : r1896_3 +# 1896| r1896_17(B &) = Call[operator=] : func:r1896_2, this:r1896_1, 0:r1896_16 +# 1896| m1896_18(unknown) = ^CallSideEffect : ~m1896_15 +# 1896| m1896_19(unknown) = Chi : total:m1896_15, partial:m1896_18 +# 1896| v1896_20(void) = ^IndirectReadSideEffect[-1] : &:r1896_1, ~m1896_19 +# 1896| v1896_21(void) = ^BufferReadSideEffect[0] : &:r1896_16, ~m1896_19 +# 1896| m1896_22(B) = ^IndirectMayWriteSideEffect[-1] : &:r1896_1 +# 1896| m1896_23(unknown) = Chi : total:m1896_19, partial:m1896_22 +# 1896| m1896_24(unknown) = ^BufferMayWriteSideEffect[0] : &:r1896_16 +# 1896| m1896_25(unknown) = Chi : total:m1896_23, partial:m1896_24 +# 1896| r1896_26(glval) = CopyValue : r1896_17 +# 1897| v1897_1(void) = NoOp : +# 1894| v1894_5(void) = ReturnVoid : +# 1894| v1894_6(void) = AliasedUse : ~m1896_19 +# 1894| v1894_7(void) = ExitFunction : -# 1898| void magicvars() -# 1898| Block 0 -# 1898| v1898_1(void) = EnterFunction : -# 1898| m1898_2(unknown) = AliasedDefinition : -# 1898| m1898_3(unknown) = InitializeNonLocal : -# 1898| m1898_4(unknown) = Chi : total:m1898_2, partial:m1898_3 -# 1899| r1899_1(glval) = VariableAddress[pf] : -# 1899| r1899_2(glval) = VariableAddress[__PRETTY_FUNCTION__] : -# 1899| r1899_3(char *) = Convert : r1899_2 -# 1899| m1899_4(char *) = Store[pf] : &:r1899_1, r1899_3 -# 1900| r1900_1(glval) = VariableAddress[strfunc] : -# 1900| r1900_2(glval) = VariableAddress[__func__] : -# 1900| r1900_3(char *) = Convert : r1900_2 -# 1900| m1900_4(char *) = Store[strfunc] : &:r1900_1, r1900_3 -# 1901| v1901_1(void) = NoOp : -# 1898| v1898_5(void) = ReturnVoid : -# 1898| v1898_6(void) = AliasedUse : m1898_3 -# 1898| v1898_7(void) = ExitFunction : - -# 1899| const char[17] __PRETTY_FUNCTION__ -# 1899| Block 0 -# 1899| v1899_1(void) = EnterFunction : -# 1899| m1899_2(unknown) = AliasedDefinition : -# 1899| r1899_3(glval) = VariableAddress[__PRETTY_FUNCTION__] : -# 1899| r1899_4(glval) = StringConstant[__PRETTY_FUNCTION__] : -# 1899| r1899_5(char[17]) = Load[?] : &:r1899_4, ~m? -# 1899| m1899_6(char[17]) = Store[__PRETTY_FUNCTION__] : &:r1899_3, r1899_5 -# 1899| m1899_7(unknown) = Chi : total:m1899_2, partial:m1899_6 -# 1899| v1899_8(void) = ReturnVoid : -# 1899| v1899_9(void) = AliasedUse : ~m1899_7 -# 1899| v1899_10(void) = ExitFunction : - -# 1900| const char[10] __func__ +# 1900| void magicvars() # 1900| Block 0 -# 1900| v1900_1(void) = EnterFunction : -# 1900| m1900_2(unknown) = AliasedDefinition : -# 1900| r1900_3(glval) = VariableAddress[__func__] : -# 1900| r1900_4(glval) = StringConstant[__func__] : -# 1900| r1900_5(char[10]) = Load[?] : &:r1900_4, ~m? -# 1900| m1900_6(char[10]) = Store[__func__] : &:r1900_3, r1900_5 -# 1900| m1900_7(unknown) = Chi : total:m1900_2, partial:m1900_6 -# 1900| v1900_8(void) = ReturnVoid : -# 1900| v1900_9(void) = AliasedUse : ~m1900_7 -# 1900| v1900_10(void) = ExitFunction : +# 1900| v1900_1(void) = EnterFunction : +# 1900| m1900_2(unknown) = AliasedDefinition : +# 1900| m1900_3(unknown) = InitializeNonLocal : +# 1900| m1900_4(unknown) = Chi : total:m1900_2, partial:m1900_3 +# 1901| r1901_1(glval) = VariableAddress[pf] : +# 1901| r1901_2(glval) = VariableAddress[__PRETTY_FUNCTION__] : +# 1901| r1901_3(char *) = Convert : r1901_2 +# 1901| m1901_4(char *) = Store[pf] : &:r1901_1, r1901_3 +# 1902| r1902_1(glval) = VariableAddress[strfunc] : +# 1902| r1902_2(glval) = VariableAddress[__func__] : +# 1902| r1902_3(char *) = Convert : r1902_2 +# 1902| m1902_4(char *) = Store[strfunc] : &:r1902_1, r1902_3 +# 1903| v1903_1(void) = NoOp : +# 1900| v1900_5(void) = ReturnVoid : +# 1900| v1900_6(void) = AliasedUse : m1900_3 +# 1900| v1900_7(void) = ExitFunction : -# 1911| void* missing_declaration_entries::Bar1::missing_type_decl_entry(missing_declaration_entries::Bar1::pointer) -# 1911| Block 0 -# 1911| v1911_1(void) = EnterFunction : -# 1911| m1911_2(unknown) = AliasedDefinition : -# 1911| m1911_3(unknown) = InitializeNonLocal : -# 1911| m1911_4(unknown) = Chi : total:m1911_2, partial:m1911_3 -# 1911| r1911_5(glval) = VariableAddress[#this] : -# 1911| m1911_6(glval>) = InitializeParameter[#this] : &:r1911_5 -# 1911| r1911_7(glval>) = Load[#this] : &:r1911_5, m1911_6 -# 1911| m1911_8(Bar1) = InitializeIndirection[#this] : &:r1911_7 -# 1911| r1911_9(glval) = VariableAddress[p] : -# 1911| m1911_10(S *) = InitializeParameter[p] : &:r1911_9 -# 1911| r1911_11(S *) = Load[p] : &:r1911_9, m1911_10 -# 1911| m1911_12(unknown) = InitializeIndirection[p] : &:r1911_11 -# 1913| r1913_1(glval) = VariableAddress[#return] : -# 1913| r1913_2(glval) = VariableAddress[p] : -# 1913| r1913_3(S *) = Load[p] : &:r1913_2, m1911_10 -# 1913| r1913_4(void *) = Convert : r1913_3 -# 1913| m1913_5(void *) = Store[#return] : &:r1913_1, r1913_4 -# 1911| v1911_13(void) = ReturnIndirection[#this] : &:r1911_7, m1911_8 -# 1911| v1911_14(void) = ReturnIndirection[p] : &:r1911_11, m1911_12 -# 1911| r1911_15(glval) = VariableAddress[#return] : -# 1911| v1911_16(void) = ReturnValue : &:r1911_15, m1913_5 -# 1911| v1911_17(void) = AliasedUse : m1911_3 -# 1911| v1911_18(void) = ExitFunction : +# 1901| const char[17] __PRETTY_FUNCTION__ +# 1901| Block 0 +# 1901| v1901_1(void) = EnterFunction : +# 1901| m1901_2(unknown) = AliasedDefinition : +# 1901| r1901_3(glval) = VariableAddress[__PRETTY_FUNCTION__] : +# 1901| r1901_4(glval) = StringConstant[__PRETTY_FUNCTION__] : +# 1901| r1901_5(char[17]) = Load[?] : &:r1901_4, ~m? +# 1901| m1901_6(char[17]) = Store[__PRETTY_FUNCTION__] : &:r1901_3, r1901_5 +# 1901| m1901_7(unknown) = Chi : total:m1901_2, partial:m1901_6 +# 1901| v1901_8(void) = ReturnVoid : +# 1901| v1901_9(void) = AliasedUse : ~m1901_7 +# 1901| v1901_10(void) = ExitFunction : -# 1917| void missing_declaration_entries::test1() -# 1917| Block 0 -# 1917| v1917_1(void) = EnterFunction : -# 1917| m1917_2(unknown) = AliasedDefinition : -# 1917| m1917_3(unknown) = InitializeNonLocal : -# 1917| m1917_4(unknown) = Chi : total:m1917_2, partial:m1917_3 -# 1918| r1918_1(glval>) = VariableAddress[b] : -# 1918| m1918_2(Bar1) = Uninitialized[b] : &:r1918_1 -# 1919| r1919_1(glval>) = VariableAddress[b] : -# 1919| r1919_2(glval) = FunctionAddress[missing_type_decl_entry] : -# 1919| r1919_3(S *) = Constant[0] : -# 1919| r1919_4(void *) = Call[missing_type_decl_entry] : func:r1919_2, this:r1919_1, 0:r1919_3 -# 1919| m1919_5(unknown) = ^CallSideEffect : ~m1917_4 -# 1919| m1919_6(unknown) = Chi : total:m1917_4, partial:m1919_5 -# 1919| v1919_7(void) = ^IndirectReadSideEffect[-1] : &:r1919_1, m1918_2 -# 1919| v1919_8(void) = ^BufferReadSideEffect[0] : &:r1919_3, ~m1919_6 -# 1919| m1919_9(Bar1) = ^IndirectMayWriteSideEffect[-1] : &:r1919_1 -# 1919| m1919_10(Bar1) = Chi : total:m1918_2, partial:m1919_9 -# 1919| m1919_11(unknown) = ^BufferMayWriteSideEffect[0] : &:r1919_3 -# 1919| m1919_12(unknown) = Chi : total:m1919_6, partial:m1919_11 -# 1920| v1920_1(void) = NoOp : -# 1917| v1917_5(void) = ReturnVoid : -# 1917| v1917_6(void) = AliasedUse : ~m1919_12 -# 1917| v1917_7(void) = ExitFunction : +# 1902| const char[10] __func__ +# 1902| Block 0 +# 1902| v1902_1(void) = EnterFunction : +# 1902| m1902_2(unknown) = AliasedDefinition : +# 1902| r1902_3(glval) = VariableAddress[__func__] : +# 1902| r1902_4(glval) = StringConstant[__func__] : +# 1902| r1902_5(char[10]) = Load[?] : &:r1902_4, ~m? +# 1902| m1902_6(char[10]) = Store[__func__] : &:r1902_3, r1902_5 +# 1902| m1902_7(unknown) = Chi : total:m1902_2, partial:m1902_6 +# 1902| v1902_8(void) = ReturnVoid : +# 1902| v1902_9(void) = AliasedUse : ~m1902_7 +# 1902| v1902_10(void) = ExitFunction : -# 1924| int missing_declaration_entries::Bar2::two_missing_variable_declaration_entries() -# 1924| Block 0 -# 1924| v1924_1(void) = EnterFunction : -# 1924| m1924_2(unknown) = AliasedDefinition : -# 1924| m1924_3(unknown) = InitializeNonLocal : -# 1924| m1924_4(unknown) = Chi : total:m1924_2, partial:m1924_3 -# 1924| r1924_5(glval) = VariableAddress[#this] : -# 1924| m1924_6(glval>) = InitializeParameter[#this] : &:r1924_5 -# 1924| r1924_7(glval>) = Load[#this] : &:r1924_5, m1924_6 -# 1924| m1924_8(Bar2) = InitializeIndirection[#this] : &:r1924_7 -# 1925| r1925_1(glval) = VariableAddress[x] : -# 1925| m1925_2(int[10]) = Uninitialized[x] : &:r1925_1 -# 1925| r1925_3(glval) = VariableAddress[y] : -# 1925| m1925_4(int[10]) = Uninitialized[y] : &:r1925_3 -# 1926| r1926_1(int) = Constant[10] : -# 1926| r1926_2(glval) = VariableAddress[x] : -# 1926| r1926_3(int *) = Convert : r1926_2 -# 1926| r1926_4(glval) = CopyValue : r1926_3 -# 1926| m1926_5(int) = Store[?] : &:r1926_4, r1926_1 -# 1926| m1926_6(int[10]) = Chi : total:m1925_2, partial:m1926_5 -# 1927| r1927_1(int) = Constant[10] : -# 1927| r1927_2(glval) = VariableAddress[y] : -# 1927| r1927_3(int *) = Convert : r1927_2 -# 1927| r1927_4(glval) = CopyValue : r1927_3 -# 1927| m1927_5(int) = Store[?] : &:r1927_4, r1927_1 -# 1927| m1927_6(int[10]) = Chi : total:m1925_4, partial:m1927_5 -# 1928| r1928_1(glval) = VariableAddress[#return] : +# 1913| void* missing_declaration_entries::Bar1::missing_type_decl_entry(missing_declaration_entries::Bar1::pointer) +# 1913| Block 0 +# 1913| v1913_1(void) = EnterFunction : +# 1913| m1913_2(unknown) = AliasedDefinition : +# 1913| m1913_3(unknown) = InitializeNonLocal : +# 1913| m1913_4(unknown) = Chi : total:m1913_2, partial:m1913_3 +# 1913| r1913_5(glval) = VariableAddress[#this] : +# 1913| m1913_6(glval>) = InitializeParameter[#this] : &:r1913_5 +# 1913| r1913_7(glval>) = Load[#this] : &:r1913_5, m1913_6 +# 1913| m1913_8(Bar1) = InitializeIndirection[#this] : &:r1913_7 +# 1913| r1913_9(glval) = VariableAddress[p] : +# 1913| m1913_10(S *) = InitializeParameter[p] : &:r1913_9 +# 1913| r1913_11(S *) = Load[p] : &:r1913_9, m1913_10 +# 1913| m1913_12(unknown) = InitializeIndirection[p] : &:r1913_11 +# 1915| r1915_1(glval) = VariableAddress[#return] : +# 1915| r1915_2(glval) = VariableAddress[p] : +# 1915| r1915_3(S *) = Load[p] : &:r1915_2, m1913_10 +# 1915| r1915_4(void *) = Convert : r1915_3 +# 1915| m1915_5(void *) = Store[#return] : &:r1915_1, r1915_4 +# 1913| v1913_13(void) = ReturnIndirection[#this] : &:r1913_7, m1913_8 +# 1913| v1913_14(void) = ReturnIndirection[p] : &:r1913_11, m1913_12 +# 1913| r1913_15(glval) = VariableAddress[#return] : +# 1913| v1913_16(void) = ReturnValue : &:r1913_15, m1915_5 +# 1913| v1913_17(void) = AliasedUse : m1913_3 +# 1913| v1913_18(void) = ExitFunction : + +# 1919| void missing_declaration_entries::test1() +# 1919| Block 0 +# 1919| v1919_1(void) = EnterFunction : +# 1919| m1919_2(unknown) = AliasedDefinition : +# 1919| m1919_3(unknown) = InitializeNonLocal : +# 1919| m1919_4(unknown) = Chi : total:m1919_2, partial:m1919_3 +# 1920| r1920_1(glval>) = VariableAddress[b] : +# 1920| m1920_2(Bar1) = Uninitialized[b] : &:r1920_1 +# 1921| r1921_1(glval>) = VariableAddress[b] : +# 1921| r1921_2(glval) = FunctionAddress[missing_type_decl_entry] : +# 1921| r1921_3(S *) = Constant[0] : +# 1921| r1921_4(void *) = Call[missing_type_decl_entry] : func:r1921_2, this:r1921_1, 0:r1921_3 +# 1921| m1921_5(unknown) = ^CallSideEffect : ~m1919_4 +# 1921| m1921_6(unknown) = Chi : total:m1919_4, partial:m1921_5 +# 1921| v1921_7(void) = ^IndirectReadSideEffect[-1] : &:r1921_1, m1920_2 +# 1921| v1921_8(void) = ^BufferReadSideEffect[0] : &:r1921_3, ~m1921_6 +# 1921| m1921_9(Bar1) = ^IndirectMayWriteSideEffect[-1] : &:r1921_1 +# 1921| m1921_10(Bar1) = Chi : total:m1920_2, partial:m1921_9 +# 1921| m1921_11(unknown) = ^BufferMayWriteSideEffect[0] : &:r1921_3 +# 1921| m1921_12(unknown) = Chi : total:m1921_6, partial:m1921_11 +# 1922| v1922_1(void) = NoOp : +# 1919| v1919_5(void) = ReturnVoid : +# 1919| v1919_6(void) = AliasedUse : ~m1921_12 +# 1919| v1919_7(void) = ExitFunction : + +# 1926| int missing_declaration_entries::Bar2::two_missing_variable_declaration_entries() +# 1926| Block 0 +# 1926| v1926_1(void) = EnterFunction : +# 1926| m1926_2(unknown) = AliasedDefinition : +# 1926| m1926_3(unknown) = InitializeNonLocal : +# 1926| m1926_4(unknown) = Chi : total:m1926_2, partial:m1926_3 +# 1926| r1926_5(glval) = VariableAddress[#this] : +# 1926| m1926_6(glval>) = InitializeParameter[#this] : &:r1926_5 +# 1926| r1926_7(glval>) = Load[#this] : &:r1926_5, m1926_6 +# 1926| m1926_8(Bar2) = InitializeIndirection[#this] : &:r1926_7 +# 1927| r1927_1(glval) = VariableAddress[x] : +# 1927| m1927_2(int[10]) = Uninitialized[x] : &:r1927_1 +# 1927| r1927_3(glval) = VariableAddress[y] : +# 1927| m1927_4(int[10]) = Uninitialized[y] : &:r1927_3 +# 1928| r1928_1(int) = Constant[10] : # 1928| r1928_2(glval) = VariableAddress[x] : # 1928| r1928_3(int *) = Convert : r1928_2 -# 1928| r1928_4(int) = Load[?] : &:r1928_3, m1926_5 -# 1928| r1928_5(glval) = VariableAddress[y] : -# 1928| r1928_6(int *) = Convert : r1928_5 -# 1928| r1928_7(int) = Load[?] : &:r1928_6, m1927_5 -# 1928| r1928_8(int) = Add : r1928_4, r1928_7 -# 1928| m1928_9(int) = Store[#return] : &:r1928_1, r1928_8 -# 1924| v1924_9(void) = ReturnIndirection[#this] : &:r1924_7, m1924_8 -# 1924| r1924_10(glval) = VariableAddress[#return] : -# 1924| v1924_11(void) = ReturnValue : &:r1924_10, m1928_9 -# 1924| v1924_12(void) = AliasedUse : m1924_3 -# 1924| v1924_13(void) = ExitFunction : +# 1928| r1928_4(glval) = CopyValue : r1928_3 +# 1928| m1928_5(int) = Store[?] : &:r1928_4, r1928_1 +# 1928| m1928_6(int[10]) = Chi : total:m1927_2, partial:m1928_5 +# 1929| r1929_1(int) = Constant[10] : +# 1929| r1929_2(glval) = VariableAddress[y] : +# 1929| r1929_3(int *) = Convert : r1929_2 +# 1929| r1929_4(glval) = CopyValue : r1929_3 +# 1929| m1929_5(int) = Store[?] : &:r1929_4, r1929_1 +# 1929| m1929_6(int[10]) = Chi : total:m1927_4, partial:m1929_5 +# 1930| r1930_1(glval) = VariableAddress[#return] : +# 1930| r1930_2(glval) = VariableAddress[x] : +# 1930| r1930_3(int *) = Convert : r1930_2 +# 1930| r1930_4(int) = Load[?] : &:r1930_3, m1928_5 +# 1930| r1930_5(glval) = VariableAddress[y] : +# 1930| r1930_6(int *) = Convert : r1930_5 +# 1930| r1930_7(int) = Load[?] : &:r1930_6, m1929_5 +# 1930| r1930_8(int) = Add : r1930_4, r1930_7 +# 1930| m1930_9(int) = Store[#return] : &:r1930_1, r1930_8 +# 1926| v1926_9(void) = ReturnIndirection[#this] : &:r1926_7, m1926_8 +# 1926| r1926_10(glval) = VariableAddress[#return] : +# 1926| v1926_11(void) = ReturnValue : &:r1926_10, m1930_9 +# 1926| v1926_12(void) = AliasedUse : m1926_3 +# 1926| v1926_13(void) = ExitFunction : -# 1932| void missing_declaration_entries::test2() -# 1932| Block 0 -# 1932| v1932_1(void) = EnterFunction : -# 1932| m1932_2(unknown) = AliasedDefinition : -# 1932| m1932_3(unknown) = InitializeNonLocal : -# 1932| m1932_4(unknown) = Chi : total:m1932_2, partial:m1932_3 -# 1933| r1933_1(glval>) = VariableAddress[b] : -# 1933| m1933_2(Bar2) = Uninitialized[b] : &:r1933_1 -# 1934| r1934_1(glval>) = VariableAddress[b] : -# 1934| r1934_2(glval) = FunctionAddress[two_missing_variable_declaration_entries] : -# 1934| r1934_3(int) = Call[two_missing_variable_declaration_entries] : func:r1934_2, this:r1934_1 -# 1934| m1934_4(unknown) = ^CallSideEffect : ~m1932_4 -# 1934| m1934_5(unknown) = Chi : total:m1932_4, partial:m1934_4 -# 1934| v1934_6(void) = ^IndirectReadSideEffect[-1] : &:r1934_1, m1933_2 -# 1934| m1934_7(Bar2) = ^IndirectMayWriteSideEffect[-1] : &:r1934_1 -# 1934| m1934_8(Bar2) = Chi : total:m1933_2, partial:m1934_7 -# 1935| v1935_1(void) = NoOp : -# 1932| v1932_5(void) = ReturnVoid : -# 1932| v1932_6(void) = AliasedUse : ~m1934_5 -# 1932| v1932_7(void) = ExitFunction : +# 1934| void missing_declaration_entries::test2() +# 1934| Block 0 +# 1934| v1934_1(void) = EnterFunction : +# 1934| m1934_2(unknown) = AliasedDefinition : +# 1934| m1934_3(unknown) = InitializeNonLocal : +# 1934| m1934_4(unknown) = Chi : total:m1934_2, partial:m1934_3 +# 1935| r1935_1(glval>) = VariableAddress[b] : +# 1935| m1935_2(Bar2) = Uninitialized[b] : &:r1935_1 +# 1936| r1936_1(glval>) = VariableAddress[b] : +# 1936| r1936_2(glval) = FunctionAddress[two_missing_variable_declaration_entries] : +# 1936| r1936_3(int) = Call[two_missing_variable_declaration_entries] : func:r1936_2, this:r1936_1 +# 1936| m1936_4(unknown) = ^CallSideEffect : ~m1934_4 +# 1936| m1936_5(unknown) = Chi : total:m1934_4, partial:m1936_4 +# 1936| v1936_6(void) = ^IndirectReadSideEffect[-1] : &:r1936_1, m1935_2 +# 1936| m1936_7(Bar2) = ^IndirectMayWriteSideEffect[-1] : &:r1936_1 +# 1936| m1936_8(Bar2) = Chi : total:m1935_2, partial:m1936_7 +# 1937| v1937_1(void) = NoOp : +# 1934| v1934_5(void) = ReturnVoid : +# 1934| v1934_6(void) = AliasedUse : ~m1936_5 +# 1934| v1934_7(void) = ExitFunction : -# 1939| int missing_declaration_entries::Bar3::two_more_missing_variable_declaration_entries() -# 1939| Block 0 -# 1939| v1939_1(void) = EnterFunction : -# 1939| m1939_2(unknown) = AliasedDefinition : -# 1939| m1939_3(unknown) = InitializeNonLocal : -# 1939| m1939_4(unknown) = Chi : total:m1939_2, partial:m1939_3 -# 1939| r1939_5(glval) = VariableAddress[#this] : -# 1939| m1939_6(glval>) = InitializeParameter[#this] : &:r1939_5 -# 1939| r1939_7(glval>) = Load[#this] : &:r1939_5, m1939_6 -# 1939| m1939_8(Bar3) = InitializeIndirection[#this] : &:r1939_7 -# 1942| r1942_1(glval) = VariableAddress[#return] : -# 1942| r1942_2(glval) = VariableAddress[g] : -# 1942| r1942_3(int) = Load[g] : &:r1942_2, ~m1939_3 -# 1942| m1942_4(int) = Store[#return] : &:r1942_1, r1942_3 -# 1939| v1939_9(void) = ReturnIndirection[#this] : &:r1939_7, m1939_8 -# 1939| r1939_10(glval) = VariableAddress[#return] : -# 1939| v1939_11(void) = ReturnValue : &:r1939_10, m1942_4 -# 1939| v1939_12(void) = AliasedUse : m1939_3 -# 1939| v1939_13(void) = ExitFunction : +# 1941| int missing_declaration_entries::Bar3::two_more_missing_variable_declaration_entries() +# 1941| Block 0 +# 1941| v1941_1(void) = EnterFunction : +# 1941| m1941_2(unknown) = AliasedDefinition : +# 1941| m1941_3(unknown) = InitializeNonLocal : +# 1941| m1941_4(unknown) = Chi : total:m1941_2, partial:m1941_3 +# 1941| r1941_5(glval) = VariableAddress[#this] : +# 1941| m1941_6(glval>) = InitializeParameter[#this] : &:r1941_5 +# 1941| r1941_7(glval>) = Load[#this] : &:r1941_5, m1941_6 +# 1941| m1941_8(Bar3) = InitializeIndirection[#this] : &:r1941_7 +# 1944| r1944_1(glval) = VariableAddress[#return] : +# 1944| r1944_2(glval) = VariableAddress[g] : +# 1944| r1944_3(int) = Load[g] : &:r1944_2, ~m1941_3 +# 1944| m1944_4(int) = Store[#return] : &:r1944_1, r1944_3 +# 1941| v1941_9(void) = ReturnIndirection[#this] : &:r1941_7, m1941_8 +# 1941| r1941_10(glval) = VariableAddress[#return] : +# 1941| v1941_11(void) = ReturnValue : &:r1941_10, m1944_4 +# 1941| v1941_12(void) = AliasedUse : m1941_3 +# 1941| v1941_13(void) = ExitFunction : -# 1946| void missing_declaration_entries::test3() -# 1946| Block 0 -# 1946| v1946_1(void) = EnterFunction : -# 1946| m1946_2(unknown) = AliasedDefinition : -# 1946| m1946_3(unknown) = InitializeNonLocal : -# 1946| m1946_4(unknown) = Chi : total:m1946_2, partial:m1946_3 -# 1947| r1947_1(glval>) = VariableAddress[b] : -# 1947| m1947_2(Bar3) = Uninitialized[b] : &:r1947_1 -# 1948| r1948_1(glval>) = VariableAddress[b] : -# 1948| r1948_2(glval) = FunctionAddress[two_more_missing_variable_declaration_entries] : -# 1948| r1948_3(int) = Call[two_more_missing_variable_declaration_entries] : func:r1948_2, this:r1948_1 -# 1948| m1948_4(unknown) = ^CallSideEffect : ~m1946_4 -# 1948| m1948_5(unknown) = Chi : total:m1946_4, partial:m1948_4 -# 1948| v1948_6(void) = ^IndirectReadSideEffect[-1] : &:r1948_1, m1947_2 -# 1948| m1948_7(Bar3) = ^IndirectMayWriteSideEffect[-1] : &:r1948_1 -# 1948| m1948_8(Bar3) = Chi : total:m1947_2, partial:m1948_7 -# 1949| v1949_1(void) = NoOp : -# 1946| v1946_5(void) = ReturnVoid : -# 1946| v1946_6(void) = AliasedUse : ~m1948_5 -# 1946| v1946_7(void) = ExitFunction : +# 1948| void missing_declaration_entries::test3() +# 1948| Block 0 +# 1948| v1948_1(void) = EnterFunction : +# 1948| m1948_2(unknown) = AliasedDefinition : +# 1948| m1948_3(unknown) = InitializeNonLocal : +# 1948| m1948_4(unknown) = Chi : total:m1948_2, partial:m1948_3 +# 1949| r1949_1(glval>) = VariableAddress[b] : +# 1949| m1949_2(Bar3) = Uninitialized[b] : &:r1949_1 +# 1950| r1950_1(glval>) = VariableAddress[b] : +# 1950| r1950_2(glval) = FunctionAddress[two_more_missing_variable_declaration_entries] : +# 1950| r1950_3(int) = Call[two_more_missing_variable_declaration_entries] : func:r1950_2, this:r1950_1 +# 1950| m1950_4(unknown) = ^CallSideEffect : ~m1948_4 +# 1950| m1950_5(unknown) = Chi : total:m1948_4, partial:m1950_4 +# 1950| v1950_6(void) = ^IndirectReadSideEffect[-1] : &:r1950_1, m1949_2 +# 1950| m1950_7(Bar3) = ^IndirectMayWriteSideEffect[-1] : &:r1950_1 +# 1950| m1950_8(Bar3) = Chi : total:m1949_2, partial:m1950_7 +# 1951| v1951_1(void) = NoOp : +# 1948| v1948_5(void) = ReturnVoid : +# 1948| v1948_6(void) = AliasedUse : ~m1950_5 +# 1948| v1948_7(void) = ExitFunction : -# 1952| char global_template -# 1952| Block 0 -# 1952| v1952_1(void) = EnterFunction : -# 1952| m1952_2(unknown) = AliasedDefinition : -# 1952| r1952_3(glval) = VariableAddress[global_template] : -# 1952| r1952_4(char) = Constant[42] : -# 1952| m1952_5(char) = Store[global_template] : &:r1952_3, r1952_4 -# 1952| m1952_6(unknown) = Chi : total:m1952_2, partial:m1952_5 -# 1952| v1952_7(void) = ReturnVoid : -# 1952| v1952_8(void) = AliasedUse : ~m1952_6 -# 1952| v1952_9(void) = ExitFunction : - -# 1952| int global_template -# 1952| Block 0 -# 1952| v1952_1(void) = EnterFunction : -# 1952| m1952_2(unknown) = AliasedDefinition : -# 1952| r1952_3(glval) = VariableAddress[global_template] : -# 1952| r1952_4(int) = Constant[42] : -# 1952| m1952_5(int) = Store[global_template] : &:r1952_3, r1952_4 -# 1952| m1952_6(unknown) = Chi : total:m1952_2, partial:m1952_5 -# 1952| v1952_7(void) = ReturnVoid : -# 1952| v1952_8(void) = AliasedUse : ~m1952_6 -# 1952| v1952_9(void) = ExitFunction : - -# 1954| int test_global_template_int() +# 1954| char global_template # 1954| Block 0 # 1954| v1954_1(void) = EnterFunction : # 1954| m1954_2(unknown) = AliasedDefinition : -# 1954| m1954_3(unknown) = InitializeNonLocal : -# 1954| m1954_4(unknown) = Chi : total:m1954_2, partial:m1954_3 -# 1955| r1955_1(glval) = VariableAddress[local_int] : -# 1955| r1955_2(glval) = VariableAddress[global_template] : -# 1955| r1955_3(int) = Load[global_template] : &:r1955_2, ~m1954_3 -# 1955| m1955_4(int) = Store[local_int] : &:r1955_1, r1955_3 -# 1956| r1956_1(glval) = VariableAddress[local_char] : -# 1956| r1956_2(glval) = VariableAddress[global_template] : -# 1956| r1956_3(char) = Load[global_template] : &:r1956_2, ~m1954_3 -# 1956| m1956_4(char) = Store[local_char] : &:r1956_1, r1956_3 -# 1957| r1957_1(glval) = VariableAddress[#return] : -# 1957| r1957_2(glval) = VariableAddress[local_int] : -# 1957| r1957_3(int) = Load[local_int] : &:r1957_2, m1955_4 -# 1957| r1957_4(glval) = VariableAddress[local_char] : -# 1957| r1957_5(char) = Load[local_char] : &:r1957_4, m1956_4 -# 1957| r1957_6(int) = Convert : r1957_5 -# 1957| r1957_7(int) = Add : r1957_3, r1957_6 -# 1957| m1957_8(int) = Store[#return] : &:r1957_1, r1957_7 -# 1954| r1954_5(glval) = VariableAddress[#return] : -# 1954| v1954_6(void) = ReturnValue : &:r1954_5, m1957_8 -# 1954| v1954_7(void) = AliasedUse : m1954_3 -# 1954| v1954_8(void) = ExitFunction : +# 1954| r1954_3(glval) = VariableAddress[global_template] : +# 1954| r1954_4(char) = Constant[42] : +# 1954| m1954_5(char) = Store[global_template] : &:r1954_3, r1954_4 +# 1954| m1954_6(unknown) = Chi : total:m1954_2, partial:m1954_5 +# 1954| v1954_7(void) = ReturnVoid : +# 1954| v1954_8(void) = AliasedUse : ~m1954_6 +# 1954| v1954_9(void) = ExitFunction : -# 1962| int noreturnTest(int) -# 1962| Block 0 -# 1962| v1962_1(void) = EnterFunction : -# 1962| m1962_2(unknown) = AliasedDefinition : -# 1962| m1962_3(unknown) = InitializeNonLocal : -# 1962| m1962_4(unknown) = Chi : total:m1962_2, partial:m1962_3 -# 1962| r1962_5(glval) = VariableAddress[x] : -# 1962| m1962_6(int) = InitializeParameter[x] : &:r1962_5 -# 1963| r1963_1(glval) = VariableAddress[x] : -# 1963| r1963_2(int) = Load[x] : &:r1963_1, m1962_6 -# 1963| r1963_3(int) = Constant[10] : -# 1963| r1963_4(bool) = CompareLT : r1963_2, r1963_3 -# 1963| v1963_5(void) = ConditionalBranch : r1963_4 +# 1954| int global_template +# 1954| Block 0 +# 1954| v1954_1(void) = EnterFunction : +# 1954| m1954_2(unknown) = AliasedDefinition : +# 1954| r1954_3(glval) = VariableAddress[global_template] : +# 1954| r1954_4(int) = Constant[42] : +# 1954| m1954_5(int) = Store[global_template] : &:r1954_3, r1954_4 +# 1954| m1954_6(unknown) = Chi : total:m1954_2, partial:m1954_5 +# 1954| v1954_7(void) = ReturnVoid : +# 1954| v1954_8(void) = AliasedUse : ~m1954_6 +# 1954| v1954_9(void) = ExitFunction : + +# 1956| int test_global_template_int() +# 1956| Block 0 +# 1956| v1956_1(void) = EnterFunction : +# 1956| m1956_2(unknown) = AliasedDefinition : +# 1956| m1956_3(unknown) = InitializeNonLocal : +# 1956| m1956_4(unknown) = Chi : total:m1956_2, partial:m1956_3 +# 1957| r1957_1(glval) = VariableAddress[local_int] : +# 1957| r1957_2(glval) = VariableAddress[global_template] : +# 1957| r1957_3(int) = Load[global_template] : &:r1957_2, ~m1956_3 +# 1957| m1957_4(int) = Store[local_int] : &:r1957_1, r1957_3 +# 1958| r1958_1(glval) = VariableAddress[local_char] : +# 1958| r1958_2(glval) = VariableAddress[global_template] : +# 1958| r1958_3(char) = Load[global_template] : &:r1958_2, ~m1956_3 +# 1958| m1958_4(char) = Store[local_char] : &:r1958_1, r1958_3 +# 1959| r1959_1(glval) = VariableAddress[#return] : +# 1959| r1959_2(glval) = VariableAddress[local_int] : +# 1959| r1959_3(int) = Load[local_int] : &:r1959_2, m1957_4 +# 1959| r1959_4(glval) = VariableAddress[local_char] : +# 1959| r1959_5(char) = Load[local_char] : &:r1959_4, m1958_4 +# 1959| r1959_6(int) = Convert : r1959_5 +# 1959| r1959_7(int) = Add : r1959_3, r1959_6 +# 1959| m1959_8(int) = Store[#return] : &:r1959_1, r1959_7 +# 1956| r1956_5(glval) = VariableAddress[#return] : +# 1956| v1956_6(void) = ReturnValue : &:r1956_5, m1959_8 +# 1956| v1956_7(void) = AliasedUse : m1956_3 +# 1956| v1956_8(void) = ExitFunction : + +# 1964| int noreturnTest(int) +# 1964| Block 0 +# 1964| v1964_1(void) = EnterFunction : +# 1964| m1964_2(unknown) = AliasedDefinition : +# 1964| m1964_3(unknown) = InitializeNonLocal : +# 1964| m1964_4(unknown) = Chi : total:m1964_2, partial:m1964_3 +# 1964| r1964_5(glval) = VariableAddress[x] : +# 1964| m1964_6(int) = InitializeParameter[x] : &:r1964_5 +# 1965| r1965_1(glval) = VariableAddress[x] : +# 1965| r1965_2(int) = Load[x] : &:r1965_1, m1964_6 +# 1965| r1965_3(int) = Constant[10] : +# 1965| r1965_4(bool) = CompareLT : r1965_2, r1965_3 +# 1965| v1965_5(void) = ConditionalBranch : r1965_4 #-----| False -> Block 2 #-----| True -> Block 1 -# 1964| Block 1 -# 1964| r1964_1(glval) = VariableAddress[#return] : -# 1964| r1964_2(glval) = VariableAddress[x] : -# 1964| r1964_3(int) = Load[x] : &:r1964_2, m1962_6 -# 1964| m1964_4(int) = Store[#return] : &:r1964_1, r1964_3 -# 1962| r1962_7(glval) = VariableAddress[#return] : -# 1962| v1962_8(void) = ReturnValue : &:r1962_7, m1964_4 -# 1962| v1962_9(void) = AliasedUse : m1962_3 -# 1962| v1962_10(void) = ExitFunction : +# 1966| Block 1 +# 1966| r1966_1(glval) = VariableAddress[#return] : +# 1966| r1966_2(glval) = VariableAddress[x] : +# 1966| r1966_3(int) = Load[x] : &:r1966_2, m1964_6 +# 1966| m1966_4(int) = Store[#return] : &:r1966_1, r1966_3 +# 1964| r1964_7(glval) = VariableAddress[#return] : +# 1964| v1964_8(void) = ReturnValue : &:r1964_7, m1966_4 +# 1964| v1964_9(void) = AliasedUse : m1964_3 +# 1964| v1964_10(void) = ExitFunction : -# 1966| Block 2 -# 1966| r1966_1(glval) = FunctionAddress[noreturnFunc] : -# 1966| v1966_2(void) = Call[noreturnFunc] : func:r1966_1 -# 1966| m1966_3(unknown) = ^CallSideEffect : ~m1962_4 -# 1966| m1966_4(unknown) = Chi : total:m1962_4, partial:m1966_3 -# 1962| v1962_11(void) = Unreached : +# 1968| Block 2 +# 1968| r1968_1(glval) = FunctionAddress[noreturnFunc] : +# 1968| v1968_2(void) = Call[noreturnFunc] : func:r1968_1 +# 1968| m1968_3(unknown) = ^CallSideEffect : ~m1964_4 +# 1968| m1968_4(unknown) = Chi : total:m1964_4, partial:m1968_3 +# 1964| v1964_11(void) = Unreached : -# 1970| int noreturnTest2(int) -# 1970| Block 0 -# 1970| v1970_1(void) = EnterFunction : -# 1970| m1970_2(unknown) = AliasedDefinition : -# 1970| m1970_3(unknown) = InitializeNonLocal : -# 1970| m1970_4(unknown) = Chi : total:m1970_2, partial:m1970_3 -# 1970| r1970_5(glval) = VariableAddress[x] : -# 1970| m1970_6(int) = InitializeParameter[x] : &:r1970_5 -# 1971| r1971_1(glval) = VariableAddress[x] : -# 1971| r1971_2(int) = Load[x] : &:r1971_1, m1970_6 -# 1971| r1971_3(int) = Constant[10] : -# 1971| r1971_4(bool) = CompareLT : r1971_2, r1971_3 -# 1971| v1971_5(void) = ConditionalBranch : r1971_4 +# 1972| int noreturnTest2(int) +# 1972| Block 0 +# 1972| v1972_1(void) = EnterFunction : +# 1972| m1972_2(unknown) = AliasedDefinition : +# 1972| m1972_3(unknown) = InitializeNonLocal : +# 1972| m1972_4(unknown) = Chi : total:m1972_2, partial:m1972_3 +# 1972| r1972_5(glval) = VariableAddress[x] : +# 1972| m1972_6(int) = InitializeParameter[x] : &:r1972_5 +# 1973| r1973_1(glval) = VariableAddress[x] : +# 1973| r1973_2(int) = Load[x] : &:r1973_1, m1972_6 +# 1973| r1973_3(int) = Constant[10] : +# 1973| r1973_4(bool) = CompareLT : r1973_2, r1973_3 +# 1973| v1973_5(void) = ConditionalBranch : r1973_4 #-----| False -> Block 2 #-----| True -> Block 1 -# 1972| Block 1 -# 1972| r1972_1(glval) = FunctionAddress[noreturnFunc] : -# 1972| v1972_2(void) = Call[noreturnFunc] : func:r1972_1 -# 1972| m1972_3(unknown) = ^CallSideEffect : ~m1970_4 -# 1972| m1972_4(unknown) = Chi : total:m1970_4, partial:m1972_3 -# 1970| v1970_7(void) = Unreached : +# 1974| Block 1 +# 1974| r1974_1(glval) = FunctionAddress[noreturnFunc] : +# 1974| v1974_2(void) = Call[noreturnFunc] : func:r1974_1 +# 1974| m1974_3(unknown) = ^CallSideEffect : ~m1972_4 +# 1974| m1974_4(unknown) = Chi : total:m1972_4, partial:m1974_3 +# 1972| v1972_7(void) = Unreached : -# 1974| Block 2 -# 1974| r1974_1(glval) = VariableAddress[#return] : -# 1974| r1974_2(glval) = VariableAddress[x] : -# 1974| r1974_3(int) = Load[x] : &:r1974_2, m1970_6 -# 1974| m1974_4(int) = Store[#return] : &:r1974_1, r1974_3 -# 1970| r1970_8(glval) = VariableAddress[#return] : -# 1970| v1970_9(void) = ReturnValue : &:r1970_8, m1974_4 -# 1970| v1970_10(void) = AliasedUse : m1970_3 -# 1970| v1970_11(void) = ExitFunction : +# 1976| Block 2 +# 1976| r1976_1(glval) = VariableAddress[#return] : +# 1976| r1976_2(glval) = VariableAddress[x] : +# 1976| r1976_3(int) = Load[x] : &:r1976_2, m1972_6 +# 1976| m1976_4(int) = Store[#return] : &:r1976_1, r1976_3 +# 1972| r1972_8(glval) = VariableAddress[#return] : +# 1972| v1972_9(void) = ReturnValue : &:r1972_8, m1976_4 +# 1972| v1972_10(void) = AliasedUse : m1972_3 +# 1972| v1972_11(void) = ExitFunction : -# 1977| int static_function(int) -# 1977| Block 0 -# 1977| v1977_1(void) = EnterFunction : -# 1977| m1977_2(unknown) = AliasedDefinition : -# 1977| m1977_3(unknown) = InitializeNonLocal : -# 1977| m1977_4(unknown) = Chi : total:m1977_2, partial:m1977_3 -# 1977| r1977_5(glval) = VariableAddress[x] : -# 1977| m1977_6(int) = InitializeParameter[x] : &:r1977_5 -# 1978| r1978_1(glval) = VariableAddress[#return] : -# 1978| r1978_2(glval) = VariableAddress[x] : -# 1978| r1978_3(int) = Load[x] : &:r1978_2, m1977_6 -# 1978| m1978_4(int) = Store[#return] : &:r1978_1, r1978_3 -# 1977| r1977_7(glval) = VariableAddress[#return] : -# 1977| v1977_8(void) = ReturnValue : &:r1977_7, m1978_4 -# 1977| v1977_9(void) = AliasedUse : m1977_3 -# 1977| v1977_10(void) = ExitFunction : +# 1979| int static_function(int) +# 1979| Block 0 +# 1979| v1979_1(void) = EnterFunction : +# 1979| m1979_2(unknown) = AliasedDefinition : +# 1979| m1979_3(unknown) = InitializeNonLocal : +# 1979| m1979_4(unknown) = Chi : total:m1979_2, partial:m1979_3 +# 1979| r1979_5(glval) = VariableAddress[x] : +# 1979| m1979_6(int) = InitializeParameter[x] : &:r1979_5 +# 1980| r1980_1(glval) = VariableAddress[#return] : +# 1980| r1980_2(glval) = VariableAddress[x] : +# 1980| r1980_3(int) = Load[x] : &:r1980_2, m1979_6 +# 1980| m1980_4(int) = Store[#return] : &:r1980_1, r1980_3 +# 1979| r1979_7(glval) = VariableAddress[#return] : +# 1979| v1979_8(void) = ReturnValue : &:r1979_7, m1980_4 +# 1979| v1979_9(void) = AliasedUse : m1979_3 +# 1979| v1979_10(void) = ExitFunction : -# 1981| void test_static_functions_with_assignments() -# 1981| Block 0 -# 1981| v1981_1(void) = EnterFunction : -# 1981| m1981_2(unknown) = AliasedDefinition : -# 1981| m1981_3(unknown) = InitializeNonLocal : -# 1981| m1981_4(unknown) = Chi : total:m1981_2, partial:m1981_3 -# 1982| r1982_1(glval) = VariableAddress[c] : -# 1982| m1982_2(C) = Uninitialized[c] : &:r1982_1 -# 1982| m1982_3(unknown) = Chi : total:m1981_4, partial:m1982_2 -# 1982| r1982_4(glval) = FunctionAddress[C] : -# 1982| v1982_5(void) = Call[C] : func:r1982_4, this:r1982_1 -# 1982| m1982_6(unknown) = ^CallSideEffect : ~m1982_3 -# 1982| m1982_7(unknown) = Chi : total:m1982_3, partial:m1982_6 -# 1982| m1982_8(C) = ^IndirectMayWriteSideEffect[-1] : &:r1982_1 -# 1982| m1982_9(unknown) = Chi : total:m1982_7, partial:m1982_8 -# 1983| r1983_1(glval) = VariableAddress[x] : -# 1983| m1983_2(int) = Uninitialized[x] : &:r1983_1 +# 1983| void test_static_functions_with_assignments() +# 1983| Block 0 +# 1983| v1983_1(void) = EnterFunction : +# 1983| m1983_2(unknown) = AliasedDefinition : +# 1983| m1983_3(unknown) = InitializeNonLocal : +# 1983| m1983_4(unknown) = Chi : total:m1983_2, partial:m1983_3 # 1984| r1984_1(glval) = VariableAddress[c] : -# 1984| r1984_2(glval) = FunctionAddress[StaticMemberFunction] : -# 1984| r1984_3(int) = Constant[10] : -# 1984| r1984_4(int) = Call[StaticMemberFunction] : func:r1984_2, 0:r1984_3 -# 1984| m1984_5(unknown) = ^CallSideEffect : ~m1982_9 -# 1984| m1984_6(unknown) = Chi : total:m1982_9, partial:m1984_5 -# 1984| r1984_7(glval) = VariableAddress[x] : -# 1984| m1984_8(int) = Store[x] : &:r1984_7, r1984_4 -# 1985| r1985_1(glval) = VariableAddress[y] : -# 1985| m1985_2(int) = Uninitialized[y] : &:r1985_1 -# 1986| r1986_1(glval) = FunctionAddress[StaticMemberFunction] : -# 1986| r1986_2(int) = Constant[10] : -# 1986| r1986_3(int) = Call[StaticMemberFunction] : func:r1986_1, 0:r1986_2 -# 1986| m1986_4(unknown) = ^CallSideEffect : ~m1984_6 -# 1986| m1986_5(unknown) = Chi : total:m1984_6, partial:m1986_4 -# 1986| r1986_6(glval) = VariableAddress[y] : -# 1986| m1986_7(int) = Store[y] : &:r1986_6, r1986_3 -# 1987| r1987_1(glval) = VariableAddress[z] : -# 1987| m1987_2(int) = Uninitialized[z] : &:r1987_1 -# 1988| r1988_1(glval) = FunctionAddress[static_function] : +# 1984| m1984_2(C) = Uninitialized[c] : &:r1984_1 +# 1984| m1984_3(unknown) = Chi : total:m1983_4, partial:m1984_2 +# 1984| r1984_4(glval) = FunctionAddress[C] : +# 1984| v1984_5(void) = Call[C] : func:r1984_4, this:r1984_1 +# 1984| m1984_6(unknown) = ^CallSideEffect : ~m1984_3 +# 1984| m1984_7(unknown) = Chi : total:m1984_3, partial:m1984_6 +# 1984| m1984_8(C) = ^IndirectMayWriteSideEffect[-1] : &:r1984_1 +# 1984| m1984_9(unknown) = Chi : total:m1984_7, partial:m1984_8 +# 1985| r1985_1(glval) = VariableAddress[x] : +# 1985| m1985_2(int) = Uninitialized[x] : &:r1985_1 +# 1986| r1986_1(glval) = VariableAddress[c] : +# 1986| r1986_2(glval) = FunctionAddress[StaticMemberFunction] : +# 1986| r1986_3(int) = Constant[10] : +# 1986| r1986_4(int) = Call[StaticMemberFunction] : func:r1986_2, 0:r1986_3 +# 1986| m1986_5(unknown) = ^CallSideEffect : ~m1984_9 +# 1986| m1986_6(unknown) = Chi : total:m1984_9, partial:m1986_5 +# 1986| r1986_7(glval) = VariableAddress[x] : +# 1986| m1986_8(int) = Store[x] : &:r1986_7, r1986_4 +# 1987| r1987_1(glval) = VariableAddress[y] : +# 1987| m1987_2(int) = Uninitialized[y] : &:r1987_1 +# 1988| r1988_1(glval) = FunctionAddress[StaticMemberFunction] : # 1988| r1988_2(int) = Constant[10] : -# 1988| r1988_3(int) = Call[static_function] : func:r1988_1, 0:r1988_2 -# 1988| m1988_4(unknown) = ^CallSideEffect : ~m1986_5 -# 1988| m1988_5(unknown) = Chi : total:m1986_5, partial:m1988_4 -# 1988| r1988_6(glval) = VariableAddress[z] : -# 1988| m1988_7(int) = Store[z] : &:r1988_6, r1988_3 -# 1989| v1989_1(void) = NoOp : -# 1989| r1989_2(glval) = VariableAddress[c] : -# 1989| r1989_3(glval) = FunctionAddress[~C] : -# 1989| v1989_4(void) = Call[~C] : func:r1989_3, this:r1989_2 -# 1989| m1989_5(unknown) = ^CallSideEffect : ~m1988_5 -# 1989| m1989_6(unknown) = Chi : total:m1988_5, partial:m1989_5 -# 1989| v1989_7(void) = ^IndirectReadSideEffect[-1] : &:r1989_2, ~m1989_6 -# 1989| m1989_8(C) = ^IndirectMayWriteSideEffect[-1] : &:r1989_2 -# 1989| m1989_9(unknown) = Chi : total:m1989_6, partial:m1989_8 -# 1981| v1981_5(void) = ReturnVoid : -# 1981| v1981_6(void) = AliasedUse : ~m1989_6 -# 1981| v1981_7(void) = ExitFunction : +# 1988| r1988_3(int) = Call[StaticMemberFunction] : func:r1988_1, 0:r1988_2 +# 1988| m1988_4(unknown) = ^CallSideEffect : ~m1986_6 +# 1988| m1988_5(unknown) = Chi : total:m1986_6, partial:m1988_4 +# 1988| r1988_6(glval) = VariableAddress[y] : +# 1988| m1988_7(int) = Store[y] : &:r1988_6, r1988_3 +# 1989| r1989_1(glval) = VariableAddress[z] : +# 1989| m1989_2(int) = Uninitialized[z] : &:r1989_1 +# 1990| r1990_1(glval) = FunctionAddress[static_function] : +# 1990| r1990_2(int) = Constant[10] : +# 1990| r1990_3(int) = Call[static_function] : func:r1990_1, 0:r1990_2 +# 1990| m1990_4(unknown) = ^CallSideEffect : ~m1988_5 +# 1990| m1990_5(unknown) = Chi : total:m1988_5, partial:m1990_4 +# 1990| r1990_6(glval) = VariableAddress[z] : +# 1990| m1990_7(int) = Store[z] : &:r1990_6, r1990_3 +# 1991| v1991_1(void) = NoOp : +# 1991| r1991_2(glval) = VariableAddress[c] : +# 1991| r1991_3(glval) = FunctionAddress[~C] : +# 1991| v1991_4(void) = Call[~C] : func:r1991_3, this:r1991_2 +# 1991| m1991_5(unknown) = ^CallSideEffect : ~m1990_5 +# 1991| m1991_6(unknown) = Chi : total:m1990_5, partial:m1991_5 +# 1991| v1991_7(void) = ^IndirectReadSideEffect[-1] : &:r1991_2, ~m1991_6 +# 1991| m1991_8(C) = ^IndirectMayWriteSideEffect[-1] : &:r1991_2 +# 1991| m1991_9(unknown) = Chi : total:m1991_6, partial:m1991_8 +# 1983| v1983_5(void) = ReturnVoid : +# 1983| v1983_6(void) = AliasedUse : ~m1991_6 +# 1983| v1983_7(void) = ExitFunction : -# 1991| void test_double_assign() -# 1991| Block 0 -# 1991| v1991_1(void) = EnterFunction : -# 1991| m1991_2(unknown) = AliasedDefinition : -# 1991| m1991_3(unknown) = InitializeNonLocal : -# 1991| m1991_4(unknown) = Chi : total:m1991_2, partial:m1991_3 -# 1992| r1992_1(glval) = VariableAddress[i] : -# 1992| m1992_2(int) = Uninitialized[i] : &:r1992_1 -# 1992| r1992_3(glval) = VariableAddress[j] : -# 1992| m1992_4(int) = Uninitialized[j] : &:r1992_3 -# 1993| r1993_1(int) = Constant[40] : -# 1993| r1993_2(glval) = VariableAddress[j] : -# 1993| m1993_3(int) = Store[j] : &:r1993_2, r1993_1 -# 1993| r1993_4(int) = Load[j] : &:r1993_2, m1993_3 -# 1993| r1993_5(glval) = VariableAddress[i] : -# 1993| m1993_6(int) = Store[i] : &:r1993_5, r1993_4 -# 1994| v1994_1(void) = NoOp : -# 1991| v1991_5(void) = ReturnVoid : -# 1991| v1991_6(void) = AliasedUse : m1991_3 -# 1991| v1991_7(void) = ExitFunction : +# 1993| void test_double_assign() +# 1993| Block 0 +# 1993| v1993_1(void) = EnterFunction : +# 1993| m1993_2(unknown) = AliasedDefinition : +# 1993| m1993_3(unknown) = InitializeNonLocal : +# 1993| m1993_4(unknown) = Chi : total:m1993_2, partial:m1993_3 +# 1994| r1994_1(glval) = VariableAddress[i] : +# 1994| m1994_2(int) = Uninitialized[i] : &:r1994_1 +# 1994| r1994_3(glval) = VariableAddress[j] : +# 1994| m1994_4(int) = Uninitialized[j] : &:r1994_3 +# 1995| r1995_1(int) = Constant[40] : +# 1995| r1995_2(glval) = VariableAddress[j] : +# 1995| m1995_3(int) = Store[j] : &:r1995_2, r1995_1 +# 1995| r1995_4(int) = Load[j] : &:r1995_2, m1995_3 +# 1995| r1995_5(glval) = VariableAddress[i] : +# 1995| m1995_6(int) = Store[i] : &:r1995_5, r1995_4 +# 1996| v1996_1(void) = NoOp : +# 1993| v1993_5(void) = ReturnVoid : +# 1993| v1993_6(void) = AliasedUse : m1993_3 +# 1993| v1993_7(void) = ExitFunction : -# 1996| void test_assign_with_assign_operation() -# 1996| Block 0 -# 1996| v1996_1(void) = EnterFunction : -# 1996| m1996_2(unknown) = AliasedDefinition : -# 1996| m1996_3(unknown) = InitializeNonLocal : -# 1996| m1996_4(unknown) = Chi : total:m1996_2, partial:m1996_3 -# 1997| r1997_1(glval) = VariableAddress[i] : -# 1997| m1997_2(int) = Uninitialized[i] : &:r1997_1 -# 1997| r1997_3(glval) = VariableAddress[j] : -# 1997| r1997_4(int) = Constant[0] : -# 1997| m1997_5(int) = Store[j] : &:r1997_3, r1997_4 -# 1998| r1998_1(int) = Constant[40] : -# 1998| r1998_2(glval) = VariableAddress[j] : -# 1998| r1998_3(int) = Load[j] : &:r1998_2, m1997_5 -# 1998| r1998_4(int) = Add : r1998_3, r1998_1 -# 1998| m1998_5(int) = Store[j] : &:r1998_2, r1998_4 -# 1998| r1998_6(int) = Load[j] : &:r1998_2, m1998_5 -# 1998| r1998_7(glval) = VariableAddress[i] : -# 1998| m1998_8(int) = Store[i] : &:r1998_7, r1998_6 -# 1999| v1999_1(void) = NoOp : -# 1996| v1996_5(void) = ReturnVoid : -# 1996| v1996_6(void) = AliasedUse : m1996_3 -# 1996| v1996_7(void) = ExitFunction : +# 1998| void test_assign_with_assign_operation() +# 1998| Block 0 +# 1998| v1998_1(void) = EnterFunction : +# 1998| m1998_2(unknown) = AliasedDefinition : +# 1998| m1998_3(unknown) = InitializeNonLocal : +# 1998| m1998_4(unknown) = Chi : total:m1998_2, partial:m1998_3 +# 1999| r1999_1(glval) = VariableAddress[i] : +# 1999| m1999_2(int) = Uninitialized[i] : &:r1999_1 +# 1999| r1999_3(glval) = VariableAddress[j] : +# 1999| r1999_4(int) = Constant[0] : +# 1999| m1999_5(int) = Store[j] : &:r1999_3, r1999_4 +# 2000| r2000_1(int) = Constant[40] : +# 2000| r2000_2(glval) = VariableAddress[j] : +# 2000| r2000_3(int) = Load[j] : &:r2000_2, m1999_5 +# 2000| r2000_4(int) = Add : r2000_3, r2000_1 +# 2000| m2000_5(int) = Store[j] : &:r2000_2, r2000_4 +# 2000| r2000_6(int) = Load[j] : &:r2000_2, m2000_5 +# 2000| r2000_7(glval) = VariableAddress[i] : +# 2000| m2000_8(int) = Store[i] : &:r2000_7, r2000_6 +# 2001| v2001_1(void) = NoOp : +# 1998| v1998_5(void) = ReturnVoid : +# 1998| v1998_6(void) = AliasedUse : m1998_3 +# 1998| v1998_7(void) = ExitFunction : -# 2005| D& D::ReferenceStaticMemberFunction() -# 2005| Block 0 -# 2005| v2005_1(void) = EnterFunction : -# 2005| m2005_2(unknown) = AliasedDefinition : -# 2005| m2005_3(unknown) = InitializeNonLocal : -# 2005| m2005_4(unknown) = Chi : total:m2005_2, partial:m2005_3 -# 2006| r2006_1(glval) = VariableAddress[#return] : -# 2006| r2006_2(glval) = VariableAddress[x] : -# 2006| r2006_3(D &) = CopyValue : r2006_2 -# 2006| m2006_4(D &) = Store[#return] : &:r2006_1, r2006_3 -# 2005| r2005_5(glval) = VariableAddress[#return] : -# 2005| v2005_6(void) = ReturnValue : &:r2005_5, m2006_4 -# 2005| v2005_7(void) = AliasedUse : m2005_3 -# 2005| v2005_8(void) = ExitFunction : +# 2007| D& D::ReferenceStaticMemberFunction() +# 2007| Block 0 +# 2007| v2007_1(void) = EnterFunction : +# 2007| m2007_2(unknown) = AliasedDefinition : +# 2007| m2007_3(unknown) = InitializeNonLocal : +# 2007| m2007_4(unknown) = Chi : total:m2007_2, partial:m2007_3 +# 2008| r2008_1(glval) = VariableAddress[#return] : +# 2008| r2008_2(glval) = VariableAddress[x] : +# 2008| r2008_3(D &) = CopyValue : r2008_2 +# 2008| m2008_4(D &) = Store[#return] : &:r2008_1, r2008_3 +# 2007| r2007_5(glval) = VariableAddress[#return] : +# 2007| v2007_6(void) = ReturnValue : &:r2007_5, m2008_4 +# 2007| v2007_7(void) = AliasedUse : m2007_3 +# 2007| v2007_8(void) = ExitFunction : -# 2008| D D::ObjectStaticMemberFunction() -# 2008| Block 0 -# 2008| v2008_1(void) = EnterFunction : -# 2008| m2008_2(unknown) = AliasedDefinition : -# 2008| m2008_3(unknown) = InitializeNonLocal : -# 2008| m2008_4(unknown) = Chi : total:m2008_2, partial:m2008_3 -# 2009| r2009_1(glval) = VariableAddress[#return] : -# 2009| r2009_2(glval) = VariableAddress[x] : -# 2009| r2009_3(D) = Load[x] : &:r2009_2, ~m2008_3 -# 2009| m2009_4(D) = Store[#return] : &:r2009_1, r2009_3 -# 2008| r2008_5(glval) = VariableAddress[#return] : -# 2008| v2008_6(void) = ReturnValue : &:r2008_5, m2009_4 -# 2008| v2008_7(void) = AliasedUse : m2008_3 -# 2008| v2008_8(void) = ExitFunction : +# 2010| D D::ObjectStaticMemberFunction() +# 2010| Block 0 +# 2010| v2010_1(void) = EnterFunction : +# 2010| m2010_2(unknown) = AliasedDefinition : +# 2010| m2010_3(unknown) = InitializeNonLocal : +# 2010| m2010_4(unknown) = Chi : total:m2010_2, partial:m2010_3 +# 2011| r2011_1(glval) = VariableAddress[#return] : +# 2011| r2011_2(glval) = VariableAddress[x] : +# 2011| r2011_3(D) = Load[x] : &:r2011_2, ~m2010_3 +# 2011| m2011_4(D) = Store[#return] : &:r2011_1, r2011_3 +# 2010| r2010_5(glval) = VariableAddress[#return] : +# 2010| v2010_6(void) = ReturnValue : &:r2010_5, m2011_4 +# 2010| v2010_7(void) = AliasedUse : m2010_3 +# 2010| v2010_8(void) = ExitFunction : -# 2013| void test_static_member_functions_with_reference_return() -# 2013| Block 0 -# 2013| v2013_1(void) = EnterFunction : -# 2013| m2013_2(unknown) = AliasedDefinition : -# 2013| m2013_3(unknown) = InitializeNonLocal : -# 2013| m2013_4(unknown) = Chi : total:m2013_2, partial:m2013_3 -# 2014| r2014_1(glval) = VariableAddress[d] : -# 2014| m2014_2(D) = Uninitialized[d] : &:r2014_1 +# 2015| void test_static_member_functions_with_reference_return() +# 2015| Block 0 +# 2015| v2015_1(void) = EnterFunction : +# 2015| m2015_2(unknown) = AliasedDefinition : +# 2015| m2015_3(unknown) = InitializeNonLocal : +# 2015| m2015_4(unknown) = Chi : total:m2015_2, partial:m2015_3 # 2016| r2016_1(glval) = VariableAddress[d] : -# 2016| r2016_2(glval) = FunctionAddress[ReferenceStaticMemberFunction] : -# 2016| r2016_3(D &) = Call[ReferenceStaticMemberFunction] : func:r2016_2 -# 2016| m2016_4(unknown) = ^CallSideEffect : ~m2013_4 -# 2016| m2016_5(unknown) = Chi : total:m2013_4, partial:m2016_4 -# 2016| r2016_6(glval) = CopyValue : r2016_3 -# 2017| r2017_1(glval) = FunctionAddress[ReferenceStaticMemberFunction] : -# 2017| r2017_2(D &) = Call[ReferenceStaticMemberFunction] : func:r2017_1 -# 2017| m2017_3(unknown) = ^CallSideEffect : ~m2016_5 -# 2017| m2017_4(unknown) = Chi : total:m2016_5, partial:m2017_3 -# 2017| r2017_5(glval) = CopyValue : r2017_2 +# 2016| m2016_2(D) = Uninitialized[d] : &:r2016_1 # 2018| r2018_1(glval) = VariableAddress[d] : -# 2018| r2018_2(glval) = FunctionAddress[ObjectStaticMemberFunction] : -# 2018| r2018_3(D) = Call[ObjectStaticMemberFunction] : func:r2018_2 -# 2018| m2018_4(unknown) = ^CallSideEffect : ~m2017_4 -# 2018| m2018_5(unknown) = Chi : total:m2017_4, partial:m2018_4 -# 2019| r2019_1(glval) = FunctionAddress[ObjectStaticMemberFunction] : -# 2019| r2019_2(D) = Call[ObjectStaticMemberFunction] : func:r2019_1 +# 2018| r2018_2(glval) = FunctionAddress[ReferenceStaticMemberFunction] : +# 2018| r2018_3(D &) = Call[ReferenceStaticMemberFunction] : func:r2018_2 +# 2018| m2018_4(unknown) = ^CallSideEffect : ~m2015_4 +# 2018| m2018_5(unknown) = Chi : total:m2015_4, partial:m2018_4 +# 2018| r2018_6(glval) = CopyValue : r2018_3 +# 2019| r2019_1(glval) = FunctionAddress[ReferenceStaticMemberFunction] : +# 2019| r2019_2(D &) = Call[ReferenceStaticMemberFunction] : func:r2019_1 # 2019| m2019_3(unknown) = ^CallSideEffect : ~m2018_5 # 2019| m2019_4(unknown) = Chi : total:m2018_5, partial:m2019_3 -# 2021| r2021_1(glval) = VariableAddress[x] : -# 2021| m2021_2(D) = Uninitialized[x] : &:r2021_1 -# 2022| r2022_1(glval) = VariableAddress[d] : -# 2022| r2022_2(glval) = FunctionAddress[ReferenceStaticMemberFunction] : -# 2022| r2022_3(D &) = Call[ReferenceStaticMemberFunction] : func:r2022_2 -# 2022| m2022_4(unknown) = ^CallSideEffect : ~m2019_4 -# 2022| m2022_5(unknown) = Chi : total:m2019_4, partial:m2022_4 -# 2022| r2022_6(D) = Load[?] : &:r2022_3, ~m2022_5 -# 2022| r2022_7(glval) = VariableAddress[x] : -# 2022| m2022_8(D) = Store[x] : &:r2022_7, r2022_6 -# 2023| r2023_1(glval) = VariableAddress[y] : -# 2023| m2023_2(D) = Uninitialized[y] : &:r2023_1 -# 2024| r2024_1(glval) = FunctionAddress[ReferenceStaticMemberFunction] : -# 2024| r2024_2(D &) = Call[ReferenceStaticMemberFunction] : func:r2024_1 -# 2024| m2024_3(unknown) = ^CallSideEffect : ~m2022_5 -# 2024| m2024_4(unknown) = Chi : total:m2022_5, partial:m2024_3 -# 2024| r2024_5(D) = Load[?] : &:r2024_2, ~m2024_4 -# 2024| r2024_6(glval) = VariableAddress[y] : -# 2024| m2024_7(D) = Store[y] : &:r2024_6, r2024_5 -# 2025| r2025_1(glval) = VariableAddress[j] : -# 2025| m2025_2(D) = Uninitialized[j] : &:r2025_1 -# 2026| r2026_1(glval) = VariableAddress[d] : -# 2026| r2026_2(glval) = FunctionAddress[ObjectStaticMemberFunction] : -# 2026| r2026_3(D) = Call[ObjectStaticMemberFunction] : func:r2026_2 -# 2026| m2026_4(unknown) = ^CallSideEffect : ~m2024_4 -# 2026| m2026_5(unknown) = Chi : total:m2024_4, partial:m2026_4 -# 2026| r2026_6(glval) = VariableAddress[j] : -# 2026| m2026_7(D) = Store[j] : &:r2026_6, r2026_3 -# 2027| r2027_1(glval) = VariableAddress[k] : -# 2027| m2027_2(D) = Uninitialized[k] : &:r2027_1 -# 2028| r2028_1(glval) = FunctionAddress[ObjectStaticMemberFunction] : -# 2028| r2028_2(D) = Call[ObjectStaticMemberFunction] : func:r2028_1 -# 2028| m2028_3(unknown) = ^CallSideEffect : ~m2026_5 -# 2028| m2028_4(unknown) = Chi : total:m2026_5, partial:m2028_3 -# 2028| r2028_5(glval) = VariableAddress[k] : -# 2028| m2028_6(D) = Store[k] : &:r2028_5, r2028_2 -# 2029| v2029_1(void) = NoOp : -# 2013| v2013_5(void) = ReturnVoid : -# 2013| v2013_6(void) = AliasedUse : ~m2028_4 -# 2013| v2013_7(void) = ExitFunction : +# 2019| r2019_5(glval) = CopyValue : r2019_2 +# 2020| r2020_1(glval) = VariableAddress[d] : +# 2020| r2020_2(glval) = FunctionAddress[ObjectStaticMemberFunction] : +# 2020| r2020_3(D) = Call[ObjectStaticMemberFunction] : func:r2020_2 +# 2020| m2020_4(unknown) = ^CallSideEffect : ~m2019_4 +# 2020| m2020_5(unknown) = Chi : total:m2019_4, partial:m2020_4 +# 2021| r2021_1(glval) = FunctionAddress[ObjectStaticMemberFunction] : +# 2021| r2021_2(D) = Call[ObjectStaticMemberFunction] : func:r2021_1 +# 2021| m2021_3(unknown) = ^CallSideEffect : ~m2020_5 +# 2021| m2021_4(unknown) = Chi : total:m2020_5, partial:m2021_3 +# 2023| r2023_1(glval) = VariableAddress[x] : +# 2023| m2023_2(D) = Uninitialized[x] : &:r2023_1 +# 2024| r2024_1(glval) = VariableAddress[d] : +# 2024| r2024_2(glval) = FunctionAddress[ReferenceStaticMemberFunction] : +# 2024| r2024_3(D &) = Call[ReferenceStaticMemberFunction] : func:r2024_2 +# 2024| m2024_4(unknown) = ^CallSideEffect : ~m2021_4 +# 2024| m2024_5(unknown) = Chi : total:m2021_4, partial:m2024_4 +# 2024| r2024_6(D) = Load[?] : &:r2024_3, ~m2024_5 +# 2024| r2024_7(glval) = VariableAddress[x] : +# 2024| m2024_8(D) = Store[x] : &:r2024_7, r2024_6 +# 2025| r2025_1(glval) = VariableAddress[y] : +# 2025| m2025_2(D) = Uninitialized[y] : &:r2025_1 +# 2026| r2026_1(glval) = FunctionAddress[ReferenceStaticMemberFunction] : +# 2026| r2026_2(D &) = Call[ReferenceStaticMemberFunction] : func:r2026_1 +# 2026| m2026_3(unknown) = ^CallSideEffect : ~m2024_5 +# 2026| m2026_4(unknown) = Chi : total:m2024_5, partial:m2026_3 +# 2026| r2026_5(D) = Load[?] : &:r2026_2, ~m2026_4 +# 2026| r2026_6(glval) = VariableAddress[y] : +# 2026| m2026_7(D) = Store[y] : &:r2026_6, r2026_5 +# 2027| r2027_1(glval) = VariableAddress[j] : +# 2027| m2027_2(D) = Uninitialized[j] : &:r2027_1 +# 2028| r2028_1(glval) = VariableAddress[d] : +# 2028| r2028_2(glval) = FunctionAddress[ObjectStaticMemberFunction] : +# 2028| r2028_3(D) = Call[ObjectStaticMemberFunction] : func:r2028_2 +# 2028| m2028_4(unknown) = ^CallSideEffect : ~m2026_4 +# 2028| m2028_5(unknown) = Chi : total:m2026_4, partial:m2028_4 +# 2028| r2028_6(glval) = VariableAddress[j] : +# 2028| m2028_7(D) = Store[j] : &:r2028_6, r2028_3 +# 2029| r2029_1(glval) = VariableAddress[k] : +# 2029| m2029_2(D) = Uninitialized[k] : &:r2029_1 +# 2030| r2030_1(glval) = FunctionAddress[ObjectStaticMemberFunction] : +# 2030| r2030_2(D) = Call[ObjectStaticMemberFunction] : func:r2030_1 +# 2030| m2030_3(unknown) = ^CallSideEffect : ~m2028_5 +# 2030| m2030_4(unknown) = Chi : total:m2028_5, partial:m2030_3 +# 2030| r2030_5(glval) = VariableAddress[k] : +# 2030| m2030_6(D) = Store[k] : &:r2030_5, r2030_2 +# 2031| v2031_1(void) = NoOp : +# 2015| v2015_5(void) = ReturnVoid : +# 2015| v2015_6(void) = AliasedUse : ~m2030_4 +# 2015| v2015_7(void) = ExitFunction : -# 2031| void test_volatile() -# 2031| Block 0 -# 2031| v2031_1(void) = EnterFunction : -# 2031| m2031_2(unknown) = AliasedDefinition : -# 2031| m2031_3(unknown) = InitializeNonLocal : -# 2031| m2031_4(unknown) = Chi : total:m2031_2, partial:m2031_3 -# 2032| r2032_1(glval) = VariableAddress[x] : -# 2032| m2032_2(int) = Uninitialized[x] : &:r2032_1 -# 2033| r2033_1(glval) = VariableAddress[x] : -# 2033| r2033_2(int) = Load[x] : &:r2033_1, m2032_2 -# 2034| v2034_1(void) = NoOp : -# 2031| v2031_5(void) = ReturnVoid : -# 2031| v2031_6(void) = AliasedUse : m2031_3 -# 2031| v2031_7(void) = ExitFunction : +# 2033| void test_volatile() +# 2033| Block 0 +# 2033| v2033_1(void) = EnterFunction : +# 2033| m2033_2(unknown) = AliasedDefinition : +# 2033| m2033_3(unknown) = InitializeNonLocal : +# 2033| m2033_4(unknown) = Chi : total:m2033_2, partial:m2033_3 +# 2034| r2034_1(glval) = VariableAddress[x] : +# 2034| m2034_2(int) = Uninitialized[x] : &:r2034_1 +# 2035| r2035_1(glval) = VariableAddress[x] : +# 2035| r2035_2(int) = Load[x] : &:r2035_1, m2034_2 +# 2036| v2036_1(void) = NoOp : +# 2033| v2033_5(void) = ReturnVoid : +# 2033| v2033_6(void) = AliasedUse : m2033_3 +# 2033| v2033_7(void) = ExitFunction : -# 2042| void value_category_test() -# 2042| Block 0 -# 2042| v2042_1(void) = EnterFunction : -# 2042| m2042_2(unknown) = AliasedDefinition : -# 2042| m2042_3(unknown) = InitializeNonLocal : -# 2042| m2042_4(unknown) = Chi : total:m2042_2, partial:m2042_3 -# 2043| r2043_1(glval) = VariableAddress[c] : -# 2043| m2043_2(ValCat) = Uninitialized[c] : &:r2043_1 +# 2044| void value_category_test() +# 2044| Block 0 +# 2044| v2044_1(void) = EnterFunction : +# 2044| m2044_2(unknown) = AliasedDefinition : +# 2044| m2044_3(unknown) = InitializeNonLocal : +# 2044| m2044_4(unknown) = Chi : total:m2044_2, partial:m2044_3 +# 2045| r2045_1(glval) = VariableAddress[c] : +# 2045| m2045_2(ValCat) = Uninitialized[c] : &:r2045_1 #-----| r0_1(glval) = VariableAddress[#temp0:0] : #-----| m0_2(ValCat) = Uninitialized[#temp0:0] : &:r0_1 #-----| r0_3(ValCat) = Load[#temp0:0] : &:r0_1, m0_2 -# 2045| r2045_1(glval) = VariableAddress[c] : -# 2045| r2045_2(glval) = FunctionAddress[lvalue] : -# 2045| r2045_3(ValCat &) = Call[lvalue] : func:r2045_2 -# 2045| m2045_4(unknown) = ^CallSideEffect : ~m2042_4 -# 2045| m2045_5(unknown) = Chi : total:m2042_4, partial:m2045_4 -# 2045| r2045_6(glval) = CopyValue : r2045_3 -# 2045| m2045_7(ValCat) = Store[?] : &:r2045_6, r0_3 -# 2045| m2045_8(unknown) = Chi : total:m2045_5, partial:m2045_7 +# 2047| r2047_1(glval) = VariableAddress[c] : +# 2047| r2047_2(glval) = FunctionAddress[lvalue] : +# 2047| r2047_3(ValCat &) = Call[lvalue] : func:r2047_2 +# 2047| m2047_4(unknown) = ^CallSideEffect : ~m2044_4 +# 2047| m2047_5(unknown) = Chi : total:m2044_4, partial:m2047_4 +# 2047| r2047_6(glval) = CopyValue : r2047_3 +# 2047| m2047_7(ValCat) = Store[?] : &:r2047_6, r0_3 +# 2047| m2047_8(unknown) = Chi : total:m2047_5, partial:m2047_7 #-----| r0_4(glval) = VariableAddress[#temp0:0] : #-----| m0_5(ValCat) = Uninitialized[#temp0:0] : &:r0_4 #-----| r0_6(ValCat) = Load[#temp0:0] : &:r0_4, m0_5 -# 2046| r2046_1(glval) = VariableAddress[c] : -# 2046| r2046_2(glval) = FunctionAddress[xvalue] : -# 2046| r2046_3(ValCat &&) = Call[xvalue] : func:r2046_2 -# 2046| m2046_4(unknown) = ^CallSideEffect : ~m2045_8 -# 2046| m2046_5(unknown) = Chi : total:m2045_8, partial:m2046_4 -# 2046| r2046_6(glval) = CopyValue : r2046_3 -# 2046| m2046_7(ValCat) = Store[?] : &:r2046_6, r0_6 -# 2046| m2046_8(unknown) = Chi : total:m2046_5, partial:m2046_7 +# 2048| r2048_1(glval) = VariableAddress[c] : +# 2048| r2048_2(glval) = FunctionAddress[xvalue] : +# 2048| r2048_3(ValCat &&) = Call[xvalue] : func:r2048_2 +# 2048| m2048_4(unknown) = ^CallSideEffect : ~m2047_8 +# 2048| m2048_5(unknown) = Chi : total:m2047_8, partial:m2048_4 +# 2048| r2048_6(glval) = CopyValue : r2048_3 +# 2048| m2048_7(ValCat) = Store[?] : &:r2048_6, r0_6 +# 2048| m2048_8(unknown) = Chi : total:m2048_5, partial:m2048_7 #-----| r0_7(glval) = VariableAddress[#temp0:0] : #-----| m0_8(ValCat) = Uninitialized[#temp0:0] : &:r0_7 #-----| r0_9(ValCat) = Load[#temp0:0] : &:r0_7, m0_8 -# 2047| r2047_1(glval) = VariableAddress[#temp2047:5] : -# 2047| r2047_2(glval) = VariableAddress[c] : -# 2047| r2047_3(glval) = FunctionAddress[prvalue] : -# 2047| r2047_4(ValCat) = Call[prvalue] : func:r2047_3 -# 2047| m2047_5(unknown) = ^CallSideEffect : ~m2046_8 -# 2047| m2047_6(unknown) = Chi : total:m2046_8, partial:m2047_5 -# 2047| m2047_7(ValCat) = Store[#temp2047:5] : &:r2047_1, r2047_4 -# 2047| m2047_8(ValCat) = Store[#temp2047:5] : &:r2047_1, r0_9 +# 2049| r2049_1(glval) = VariableAddress[#temp2049:5] : +# 2049| r2049_2(glval) = VariableAddress[c] : +# 2049| r2049_3(glval) = FunctionAddress[prvalue] : +# 2049| r2049_4(ValCat) = Call[prvalue] : func:r2049_3 +# 2049| m2049_5(unknown) = ^CallSideEffect : ~m2048_8 +# 2049| m2049_6(unknown) = Chi : total:m2048_8, partial:m2049_5 +# 2049| m2049_7(ValCat) = Store[#temp2049:5] : &:r2049_1, r2049_4 +# 2049| m2049_8(ValCat) = Store[#temp2049:5] : &:r2049_1, r0_9 #-----| r0_10(glval) = VariableAddress[#temp0:0] : #-----| m0_11(ValCat) = Uninitialized[#temp0:0] : &:r0_10 #-----| r0_12(ValCat) = Load[#temp0:0] : &:r0_10, m0_11 -# 2048| r2048_1(glval) = FunctionAddress[lvalue] : -# 2048| r2048_2(ValCat &) = Call[lvalue] : func:r2048_1 -# 2048| m2048_3(unknown) = ^CallSideEffect : ~m2047_6 -# 2048| m2048_4(unknown) = Chi : total:m2047_6, partial:m2048_3 -# 2048| r2048_5(glval) = CopyValue : r2048_2 -# 2048| m2048_6(ValCat) = Store[?] : &:r2048_5, r0_12 -# 2048| m2048_7(unknown) = Chi : total:m2048_4, partial:m2048_6 +# 2050| r2050_1(glval) = FunctionAddress[lvalue] : +# 2050| r2050_2(ValCat &) = Call[lvalue] : func:r2050_1 +# 2050| m2050_3(unknown) = ^CallSideEffect : ~m2049_6 +# 2050| m2050_4(unknown) = Chi : total:m2049_6, partial:m2050_3 +# 2050| r2050_5(glval) = CopyValue : r2050_2 +# 2050| m2050_6(ValCat) = Store[?] : &:r2050_5, r0_12 +# 2050| m2050_7(unknown) = Chi : total:m2050_4, partial:m2050_6 #-----| r0_13(glval) = VariableAddress[#temp0:0] : #-----| m0_14(ValCat) = Uninitialized[#temp0:0] : &:r0_13 #-----| r0_15(ValCat) = Load[#temp0:0] : &:r0_13, m0_14 -# 2049| r2049_1(glval) = FunctionAddress[xvalue] : -# 2049| r2049_2(ValCat &&) = Call[xvalue] : func:r2049_1 -# 2049| m2049_3(unknown) = ^CallSideEffect : ~m2048_7 -# 2049| m2049_4(unknown) = Chi : total:m2048_7, partial:m2049_3 -# 2049| r2049_5(glval) = CopyValue : r2049_2 -# 2049| m2049_6(ValCat) = Store[?] : &:r2049_5, r0_15 -# 2049| m2049_7(unknown) = Chi : total:m2049_4, partial:m2049_6 +# 2051| r2051_1(glval) = FunctionAddress[xvalue] : +# 2051| r2051_2(ValCat &&) = Call[xvalue] : func:r2051_1 +# 2051| m2051_3(unknown) = ^CallSideEffect : ~m2050_7 +# 2051| m2051_4(unknown) = Chi : total:m2050_7, partial:m2051_3 +# 2051| r2051_5(glval) = CopyValue : r2051_2 +# 2051| m2051_6(ValCat) = Store[?] : &:r2051_5, r0_15 +# 2051| m2051_7(unknown) = Chi : total:m2051_4, partial:m2051_6 #-----| r0_16(glval) = VariableAddress[#temp0:0] : #-----| m0_17(ValCat) = Uninitialized[#temp0:0] : &:r0_16 #-----| r0_18(ValCat) = Load[#temp0:0] : &:r0_16, m0_17 -# 2050| r2050_1(glval) = VariableAddress[#temp2050:5] : -# 2050| r2050_2(glval) = FunctionAddress[prvalue] : -# 2050| r2050_3(ValCat) = Call[prvalue] : func:r2050_2 -# 2050| m2050_4(unknown) = ^CallSideEffect : ~m2049_7 -# 2050| m2050_5(unknown) = Chi : total:m2049_7, partial:m2050_4 -# 2050| m2050_6(ValCat) = Store[#temp2050:5] : &:r2050_1, r2050_3 -# 2050| m2050_7(ValCat) = Store[#temp2050:5] : &:r2050_1, r0_18 -# 2051| v2051_1(void) = NoOp : -# 2042| v2042_5(void) = ReturnVoid : -# 2042| v2042_6(void) = AliasedUse : ~m2050_5 -# 2042| v2042_7(void) = ExitFunction : +# 2052| r2052_1(glval) = VariableAddress[#temp2052:5] : +# 2052| r2052_2(glval) = FunctionAddress[prvalue] : +# 2052| r2052_3(ValCat) = Call[prvalue] : func:r2052_2 +# 2052| m2052_4(unknown) = ^CallSideEffect : ~m2051_7 +# 2052| m2052_5(unknown) = Chi : total:m2051_7, partial:m2052_4 +# 2052| m2052_6(ValCat) = Store[#temp2052:5] : &:r2052_1, r2052_3 +# 2052| m2052_7(ValCat) = Store[#temp2052:5] : &:r2052_1, r0_18 +# 2053| v2053_1(void) = NoOp : +# 2044| v2044_5(void) = ReturnVoid : +# 2044| v2044_6(void) = AliasedUse : ~m2052_5 +# 2044| v2044_7(void) = ExitFunction : -# 2053| void SetStaticFuncPtr() -# 2053| Block 0 -# 2053| v2053_1(void) = EnterFunction : -# 2053| m2053_2(unknown) = AliasedDefinition : -# 2053| m2053_3(unknown) = InitializeNonLocal : -# 2053| m2053_4(unknown) = Chi : total:m2053_2, partial:m2053_3 -# 2054| r2054_1(glval) = VariableAddress[c] : -# 2054| m2054_2(C) = Uninitialized[c] : &:r2054_1 -# 2054| m2054_3(unknown) = Chi : total:m2053_4, partial:m2054_2 -# 2054| r2054_4(glval) = FunctionAddress[C] : -# 2054| v2054_5(void) = Call[C] : func:r2054_4, this:r2054_1 -# 2054| m2054_6(unknown) = ^CallSideEffect : ~m2054_3 -# 2054| m2054_7(unknown) = Chi : total:m2054_3, partial:m2054_6 -# 2054| m2054_8(C) = ^IndirectMayWriteSideEffect[-1] : &:r2054_1 -# 2054| m2054_9(unknown) = Chi : total:m2054_7, partial:m2054_8 -# 2055| r2055_1(glval<..(*)(..)>) = VariableAddress[pfn] : -# 2055| r2055_2(..(*)(..)) = FunctionAddress[StaticMemberFunction] : -# 2055| m2055_3(..(*)(..)) = Store[pfn] : &:r2055_1, r2055_2 +# 2055| void SetStaticFuncPtr() +# 2055| Block 0 +# 2055| v2055_1(void) = EnterFunction : +# 2055| m2055_2(unknown) = AliasedDefinition : +# 2055| m2055_3(unknown) = InitializeNonLocal : +# 2055| m2055_4(unknown) = Chi : total:m2055_2, partial:m2055_3 # 2056| r2056_1(glval) = VariableAddress[c] : -# 2056| r2056_2(..(*)(..)) = FunctionAddress[StaticMemberFunction] : -# 2056| r2056_3(glval<..(*)(..)>) = VariableAddress[pfn] : -# 2056| m2056_4(..(*)(..)) = Store[pfn] : &:r2056_3, r2056_2 -# 2057| v2057_1(void) = NoOp : -# 2057| r2057_2(glval) = VariableAddress[c] : -# 2057| r2057_3(glval) = FunctionAddress[~C] : -# 2057| v2057_4(void) = Call[~C] : func:r2057_3, this:r2057_2 -# 2057| m2057_5(unknown) = ^CallSideEffect : ~m2054_9 -# 2057| m2057_6(unknown) = Chi : total:m2054_9, partial:m2057_5 -# 2057| v2057_7(void) = ^IndirectReadSideEffect[-1] : &:r2057_2, ~m2057_6 -# 2057| m2057_8(C) = ^IndirectMayWriteSideEffect[-1] : &:r2057_2 -# 2057| m2057_9(unknown) = Chi : total:m2057_6, partial:m2057_8 -# 2053| v2053_5(void) = ReturnVoid : -# 2053| v2053_6(void) = AliasedUse : ~m2057_6 -# 2053| v2053_7(void) = ExitFunction : +# 2056| m2056_2(C) = Uninitialized[c] : &:r2056_1 +# 2056| m2056_3(unknown) = Chi : total:m2055_4, partial:m2056_2 +# 2056| r2056_4(glval) = FunctionAddress[C] : +# 2056| v2056_5(void) = Call[C] : func:r2056_4, this:r2056_1 +# 2056| m2056_6(unknown) = ^CallSideEffect : ~m2056_3 +# 2056| m2056_7(unknown) = Chi : total:m2056_3, partial:m2056_6 +# 2056| m2056_8(C) = ^IndirectMayWriteSideEffect[-1] : &:r2056_1 +# 2056| m2056_9(unknown) = Chi : total:m2056_7, partial:m2056_8 +# 2057| r2057_1(glval<..(*)(..)>) = VariableAddress[pfn] : +# 2057| r2057_2(..(*)(..)) = FunctionAddress[StaticMemberFunction] : +# 2057| m2057_3(..(*)(..)) = Store[pfn] : &:r2057_1, r2057_2 +# 2058| r2058_1(glval) = VariableAddress[c] : +# 2058| r2058_2(..(*)(..)) = FunctionAddress[StaticMemberFunction] : +# 2058| r2058_3(glval<..(*)(..)>) = VariableAddress[pfn] : +# 2058| m2058_4(..(*)(..)) = Store[pfn] : &:r2058_3, r2058_2 +# 2059| v2059_1(void) = NoOp : +# 2059| r2059_2(glval) = VariableAddress[c] : +# 2059| r2059_3(glval) = FunctionAddress[~C] : +# 2059| v2059_4(void) = Call[~C] : func:r2059_3, this:r2059_2 +# 2059| m2059_5(unknown) = ^CallSideEffect : ~m2056_9 +# 2059| m2059_6(unknown) = Chi : total:m2056_9, partial:m2059_5 +# 2059| v2059_7(void) = ^IndirectReadSideEffect[-1] : &:r2059_2, ~m2059_6 +# 2059| m2059_8(C) = ^IndirectMayWriteSideEffect[-1] : &:r2059_2 +# 2059| m2059_9(unknown) = Chi : total:m2059_6, partial:m2059_8 +# 2055| v2055_5(void) = ReturnVoid : +# 2055| v2055_6(void) = AliasedUse : ~m2059_6 +# 2055| v2055_7(void) = ExitFunction : -# 2059| void TernaryTestInt(bool, int, int, int) -# 2059| Block 0 -# 2059| v2059_1(void) = EnterFunction : -# 2059| m2059_2(unknown) = AliasedDefinition : -# 2059| m2059_3(unknown) = InitializeNonLocal : -# 2059| m2059_4(unknown) = Chi : total:m2059_2, partial:m2059_3 -# 2059| m2059_5(int) = UninitializedGroup[x,y] : -# 2059| r2059_6(glval) = VariableAddress[a] : -# 2059| m2059_7(bool) = InitializeParameter[a] : &:r2059_6 -# 2059| r2059_8(glval) = VariableAddress[x] : -# 2059| m2059_9(int) = InitializeParameter[x] : &:r2059_8 -# 2059| m2059_10(int) = Chi : total:m2059_5, partial:m2059_9 -# 2059| r2059_11(glval) = VariableAddress[y] : -# 2059| m2059_12(int) = InitializeParameter[y] : &:r2059_11 -# 2059| m2059_13(int) = Chi : total:m2059_10, partial:m2059_12 -# 2059| r2059_14(glval) = VariableAddress[z] : -# 2059| m2059_15(int) = InitializeParameter[z] : &:r2059_14 -# 2060| r2060_1(glval) = VariableAddress[a] : -# 2060| r2060_2(bool) = Load[a] : &:r2060_1, m2059_7 -# 2060| v2060_3(void) = ConditionalBranch : r2060_2 +# 2061| void TernaryTestInt(bool, int, int, int) +# 2061| Block 0 +# 2061| v2061_1(void) = EnterFunction : +# 2061| m2061_2(unknown) = AliasedDefinition : +# 2061| m2061_3(unknown) = InitializeNonLocal : +# 2061| m2061_4(unknown) = Chi : total:m2061_2, partial:m2061_3 +# 2061| m2061_5(int) = UninitializedGroup[x,y] : +# 2061| r2061_6(glval) = VariableAddress[a] : +# 2061| m2061_7(bool) = InitializeParameter[a] : &:r2061_6 +# 2061| r2061_8(glval) = VariableAddress[x] : +# 2061| m2061_9(int) = InitializeParameter[x] : &:r2061_8 +# 2061| m2061_10(int) = Chi : total:m2061_5, partial:m2061_9 +# 2061| r2061_11(glval) = VariableAddress[y] : +# 2061| m2061_12(int) = InitializeParameter[y] : &:r2061_11 +# 2061| m2061_13(int) = Chi : total:m2061_10, partial:m2061_12 +# 2061| r2061_14(glval) = VariableAddress[z] : +# 2061| m2061_15(int) = InitializeParameter[z] : &:r2061_14 +# 2062| r2062_1(glval) = VariableAddress[a] : +# 2062| r2062_2(bool) = Load[a] : &:r2062_1, m2061_7 +# 2062| v2062_3(void) = ConditionalBranch : r2062_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 2060| Block 1 -# 2060| m2060_4(int) = Phi : from 2:m2060_12, from 3:m2060_16 -# 2060| r2060_5(glval) = VariableAddress[#temp2060:9] : -# 2060| r2060_6(int) = Load[#temp2060:9] : &:r2060_5, m2060_4 -# 2060| r2060_7(glval) = VariableAddress[z] : -# 2060| m2060_8(int) = Store[z] : &:r2060_7, r2060_6 -# 2061| r2061_1(glval) = VariableAddress[a] : -# 2061| r2061_2(bool) = Load[a] : &:r2061_1, m2059_7 -# 2061| v2061_3(void) = ConditionalBranch : r2061_2 -#-----| False -> Block 6 -#-----| True -> Block 5 - -# 2060| Block 2 -# 2060| r2060_9(glval) = VariableAddress[x] : -# 2060| r2060_10(int) = Load[x] : &:r2060_9, m2059_9 -# 2060| r2060_11(glval) = VariableAddress[#temp2060:9] : -# 2060| m2060_12(int) = Store[#temp2060:9] : &:r2060_11, r2060_10 -#-----| Goto -> Block 1 - -# 2060| Block 3 -# 2060| r2060_13(glval) = VariableAddress[y] : -# 2060| r2060_14(int) = Load[y] : &:r2060_13, m2059_12 -# 2060| r2060_15(glval) = VariableAddress[#temp2060:9] : -# 2060| m2060_16(int) = Store[#temp2060:9] : &:r2060_15, r2060_14 -#-----| Goto -> Block 1 - -# 2061| Block 4 -# 2061| m2061_4(int) = Phi : from 5:m2061_12, from 6:m2061_15 -# 2061| r2061_5(glval) = VariableAddress[#temp2061:9] : -# 2061| r2061_6(int) = Load[#temp2061:9] : &:r2061_5, m2061_4 -# 2061| r2061_7(glval) = VariableAddress[z] : -# 2061| m2061_8(int) = Store[z] : &:r2061_7, r2061_6 -# 2062| r2062_1(glval) = VariableAddress[a] : -# 2062| r2062_2(bool) = Load[a] : &:r2062_1, m2059_7 -# 2062| v2062_3(void) = ConditionalBranch : r2062_2 -#-----| False -> Block 9 -#-----| True -> Block 8 - -# 2061| Block 5 -# 2061| r2061_9(glval) = VariableAddress[x] : -# 2061| r2061_10(int) = Load[x] : &:r2061_9, m2059_9 -# 2061| r2061_11(glval) = VariableAddress[#temp2061:9] : -# 2061| m2061_12(int) = Store[#temp2061:9] : &:r2061_11, r2061_10 -#-----| Goto -> Block 4 - -# 2061| Block 6 -# 2061| r2061_13(int) = Constant[5] : -# 2061| r2061_14(glval) = VariableAddress[#temp2061:9] : -# 2061| m2061_15(int) = Store[#temp2061:9] : &:r2061_14, r2061_13 -#-----| Goto -> Block 4 - -# 2062| Block 7 -# 2062| m2062_4(int) = Phi : from 8:m2062_11, from 9:m2062_14 +# 2062| Block 1 +# 2062| m2062_4(int) = Phi : from 2:m2062_12, from 3:m2062_16 # 2062| r2062_5(glval) = VariableAddress[#temp2062:9] : # 2062| r2062_6(int) = Load[#temp2062:9] : &:r2062_5, m2062_4 # 2062| r2062_7(glval) = VariableAddress[z] : # 2062| m2062_8(int) = Store[z] : &:r2062_7, r2062_6 -# 2063| r2063_1(int) = Constant[7] : -# 2063| r2063_2(glval) = VariableAddress[a] : -# 2063| r2063_3(bool) = Load[a] : &:r2063_2, m2059_7 -# 2063| v2063_4(void) = ConditionalBranch : r2063_3 -#-----| False -> Block 12 -#-----| True -> Block 11 - -# 2062| Block 8 -# 2062| r2062_9(int) = Constant[3] : -# 2062| r2062_10(glval) = VariableAddress[#temp2062:9] : -# 2062| m2062_11(int) = Store[#temp2062:9] : &:r2062_10, r2062_9 -#-----| Goto -> Block 7 - -# 2062| Block 9 -# 2062| r2062_12(int) = Constant[5] : -# 2062| r2062_13(glval) = VariableAddress[#temp2062:9] : -# 2062| m2062_14(int) = Store[#temp2062:9] : &:r2062_13, r2062_12 -#-----| Goto -> Block 7 - -# 2063| Block 10 -# 2063| m2063_5(glval) = Phi : from 11:m2063_12, from 12:m2063_15 -# 2063| r2063_6(glval) = VariableAddress[#temp2063:6] : -# 2063| r2063_7(glval) = Load[#temp2063:6] : &:r2063_6, m2063_5 -# 2063| m2063_8(int) = Store[?] : &:r2063_7, r2063_1 -# 2063| m2063_9(int) = Chi : total:m2059_13, partial:m2063_8 -# 2064| v2064_1(void) = NoOp : -# 2059| v2059_16(void) = ReturnVoid : -# 2059| v2059_17(void) = AliasedUse : m2059_3 -# 2059| v2059_18(void) = ExitFunction : - -# 2063| Block 11 -# 2063| r2063_10(glval) = VariableAddress[x] : -# 2063| r2063_11(glval) = VariableAddress[#temp2063:6] : -# 2063| m2063_12(glval) = Store[#temp2063:6] : &:r2063_11, r2063_10 -#-----| Goto -> Block 10 - -# 2063| Block 12 -# 2063| r2063_13(glval) = VariableAddress[y] : -# 2063| r2063_14(glval) = VariableAddress[#temp2063:6] : -# 2063| m2063_15(glval) = Store[#temp2063:6] : &:r2063_14, r2063_13 -#-----| Goto -> Block 10 - -# 2069| void TernaryTestPodObj(bool, TernaryPodObj, TernaryPodObj, TernaryPodObj) -# 2069| Block 0 -# 2069| v2069_1(void) = EnterFunction : -# 2069| m2069_2(unknown) = AliasedDefinition : -# 2069| m2069_3(unknown) = InitializeNonLocal : -# 2069| m2069_4(unknown) = Chi : total:m2069_2, partial:m2069_3 -# 2069| r2069_5(glval) = VariableAddress[a] : -# 2069| m2069_6(bool) = InitializeParameter[a] : &:r2069_5 -# 2069| r2069_7(glval) = VariableAddress[x] : -# 2069| m2069_8(TernaryPodObj) = InitializeParameter[x] : &:r2069_7 -# 2069| r2069_9(glval) = VariableAddress[y] : -# 2069| m2069_10(TernaryPodObj) = InitializeParameter[y] : &:r2069_9 -# 2069| r2069_11(glval) = VariableAddress[z] : -# 2069| m2069_12(TernaryPodObj) = InitializeParameter[z] : &:r2069_11 -# 2070| r2070_1(glval) = VariableAddress[a] : -# 2070| r2070_2(bool) = Load[a] : &:r2070_1, m2069_6 -# 2070| v2070_3(void) = ConditionalBranch : r2070_2 -#-----| False -> Block 3 -#-----| True -> Block 2 - -# 2070| Block 1 -# 2070| m2070_4(TernaryPodObj) = Phi : from 2:m2070_12, from 3:m2070_16 -# 2070| r2070_5(glval) = VariableAddress[#temp2070:9] : -# 2070| r2070_6(TernaryPodObj) = Load[#temp2070:9] : &:r2070_5, m2070_4 -# 2070| r2070_7(glval) = VariableAddress[z] : -# 2070| m2070_8(TernaryPodObj) = Store[z] : &:r2070_7, r2070_6 -# 2071| r2071_1(glval) = VariableAddress[#temp2071:9] : -# 2071| r2071_2(glval) = VariableAddress[a] : -# 2071| r2071_3(bool) = Load[a] : &:r2071_2, m2069_6 -# 2071| v2071_4(void) = ConditionalBranch : r2071_3 +# 2063| r2063_1(glval) = VariableAddress[a] : +# 2063| r2063_2(bool) = Load[a] : &:r2063_1, m2061_7 +# 2063| v2063_3(void) = ConditionalBranch : r2063_2 #-----| False -> Block 6 #-----| True -> Block 5 -# 2070| Block 2 -# 2070| r2070_9(glval) = VariableAddress[x] : -# 2070| r2070_10(TernaryPodObj) = Load[x] : &:r2070_9, m2069_8 -# 2070| r2070_11(glval) = VariableAddress[#temp2070:9] : -# 2070| m2070_12(TernaryPodObj) = Store[#temp2070:9] : &:r2070_11, r2070_10 +# 2062| Block 2 +# 2062| r2062_9(glval) = VariableAddress[x] : +# 2062| r2062_10(int) = Load[x] : &:r2062_9, m2061_9 +# 2062| r2062_11(glval) = VariableAddress[#temp2062:9] : +# 2062| m2062_12(int) = Store[#temp2062:9] : &:r2062_11, r2062_10 #-----| Goto -> Block 1 -# 2070| Block 3 -# 2070| r2070_13(glval) = VariableAddress[y] : -# 2070| r2070_14(TernaryPodObj) = Load[y] : &:r2070_13, m2069_10 -# 2070| r2070_15(glval) = VariableAddress[#temp2070:9] : -# 2070| m2070_16(TernaryPodObj) = Store[#temp2070:9] : &:r2070_15, r2070_14 +# 2062| Block 3 +# 2062| r2062_13(glval) = VariableAddress[y] : +# 2062| r2062_14(int) = Load[y] : &:r2062_13, m2061_12 +# 2062| r2062_15(glval) = VariableAddress[#temp2062:9] : +# 2062| m2062_16(int) = Store[#temp2062:9] : &:r2062_15, r2062_14 #-----| Goto -> Block 1 -# 2071| Block 4 -# 2071| m2071_5(TernaryPodObj) = Phi : from 5:m2071_18, from 6:m2071_24 -# 2071| r2071_6(glval) = VariableAddress[#temp2071:9] : -# 2071| r2071_7(TernaryPodObj) = Load[#temp2071:9] : &:r2071_6, m2071_5 -# 2071| m2071_8(TernaryPodObj) = Store[#temp2071:9] : &:r2071_1, r2071_7 -# 2071| r2071_9(TernaryPodObj) = Load[#temp2071:9] : &:r2071_1, m2071_8 -# 2071| r2071_10(glval) = VariableAddress[z] : -# 2071| m2071_11(TernaryPodObj) = Store[z] : &:r2071_10, r2071_9 -# 2072| r2072_1(glval) = VariableAddress[#temp2072:9] : -# 2072| r2072_2(glval) = VariableAddress[a] : -# 2072| r2072_3(bool) = Load[a] : &:r2072_2, m2069_6 -# 2072| v2072_4(void) = ConditionalBranch : r2072_3 +# 2063| Block 4 +# 2063| m2063_4(int) = Phi : from 5:m2063_12, from 6:m2063_15 +# 2063| r2063_5(glval) = VariableAddress[#temp2063:9] : +# 2063| r2063_6(int) = Load[#temp2063:9] : &:r2063_5, m2063_4 +# 2063| r2063_7(glval) = VariableAddress[z] : +# 2063| m2063_8(int) = Store[z] : &:r2063_7, r2063_6 +# 2064| r2064_1(glval) = VariableAddress[a] : +# 2064| r2064_2(bool) = Load[a] : &:r2064_1, m2061_7 +# 2064| v2064_3(void) = ConditionalBranch : r2064_2 #-----| False -> Block 9 #-----| True -> Block 8 -# 2071| Block 5 -# 2071| r2071_12(glval) = VariableAddress[#temp2071:13] : -# 2071| r2071_13(glval) = VariableAddress[x] : -# 2071| r2071_14(TernaryPodObj) = Load[x] : &:r2071_13, m2069_8 -# 2071| m2071_15(TernaryPodObj) = Store[#temp2071:13] : &:r2071_12, r2071_14 -# 2071| r2071_16(TernaryPodObj) = Load[#temp2071:13] : &:r2071_12, m2071_15 -# 2071| r2071_17(glval) = VariableAddress[#temp2071:9] : -# 2071| m2071_18(TernaryPodObj) = Store[#temp2071:9] : &:r2071_17, r2071_16 +# 2063| Block 5 +# 2063| r2063_9(glval) = VariableAddress[x] : +# 2063| r2063_10(int) = Load[x] : &:r2063_9, m2061_9 +# 2063| r2063_11(glval) = VariableAddress[#temp2063:9] : +# 2063| m2063_12(int) = Store[#temp2063:9] : &:r2063_11, r2063_10 #-----| Goto -> Block 4 -# 2071| Block 6 -# 2071| r2071_19(glval) = VariableAddress[#temp2071:17] : -# 2071| r2071_20(TernaryPodObj) = Constant[0] : -# 2071| m2071_21(TernaryPodObj) = Store[#temp2071:17] : &:r2071_19, r2071_20 -# 2071| r2071_22(TernaryPodObj) = Load[#temp2071:17] : &:r2071_19, m2071_21 -# 2071| r2071_23(glval) = VariableAddress[#temp2071:9] : -# 2071| m2071_24(TernaryPodObj) = Store[#temp2071:9] : &:r2071_23, r2071_22 +# 2063| Block 6 +# 2063| r2063_13(int) = Constant[5] : +# 2063| r2063_14(glval) = VariableAddress[#temp2063:9] : +# 2063| m2063_15(int) = Store[#temp2063:9] : &:r2063_14, r2063_13 #-----| Goto -> Block 4 -# 2072| Block 7 -# 2072| m2072_5(TernaryPodObj) = Phi : from 8:m2072_17, from 9:m2072_23 -# 2072| r2072_6(glval) = VariableAddress[#temp2072:9] : -# 2072| r2072_7(TernaryPodObj) = Load[#temp2072:9] : &:r2072_6, m2072_5 -# 2072| m2072_8(TernaryPodObj) = Store[#temp2072:9] : &:r2072_1, r2072_7 -# 2072| r2072_9(TernaryPodObj) = Load[#temp2072:9] : &:r2072_1, m2072_8 -# 2072| r2072_10(glval) = VariableAddress[z] : -# 2072| m2072_11(TernaryPodObj) = Store[z] : &:r2072_10, r2072_9 -# 2073| r2073_1(glval) = VariableAddress[#temp2073:23] : -# 2073| r2073_2(TernaryPodObj) = Constant[0] : -# 2073| m2073_3(TernaryPodObj) = Store[#temp2073:23] : &:r2073_1, r2073_2 -# 2073| r2073_4(TernaryPodObj) = Load[#temp2073:23] : &:r2073_1, m2073_3 -# 2073| r2073_5(glval) = VariableAddress[a] : -# 2073| r2073_6(bool) = Load[a] : &:r2073_5, m2069_6 -# 2073| v2073_7(void) = ConditionalBranch : r2073_6 +# 2064| Block 7 +# 2064| m2064_4(int) = Phi : from 8:m2064_11, from 9:m2064_14 +# 2064| r2064_5(glval) = VariableAddress[#temp2064:9] : +# 2064| r2064_6(int) = Load[#temp2064:9] : &:r2064_5, m2064_4 +# 2064| r2064_7(glval) = VariableAddress[z] : +# 2064| m2064_8(int) = Store[z] : &:r2064_7, r2064_6 +# 2065| r2065_1(int) = Constant[7] : +# 2065| r2065_2(glval) = VariableAddress[a] : +# 2065| r2065_3(bool) = Load[a] : &:r2065_2, m2061_7 +# 2065| v2065_4(void) = ConditionalBranch : r2065_3 #-----| False -> Block 12 #-----| True -> Block 11 -# 2072| Block 8 -# 2072| r2072_12(glval) = VariableAddress[#temp2072:13] : -# 2072| r2072_13(TernaryPodObj) = Constant[0] : -# 2072| m2072_14(TernaryPodObj) = Store[#temp2072:13] : &:r2072_12, r2072_13 -# 2072| r2072_15(TernaryPodObj) = Load[#temp2072:13] : &:r2072_12, m2072_14 -# 2072| r2072_16(glval) = VariableAddress[#temp2072:9] : -# 2072| m2072_17(TernaryPodObj) = Store[#temp2072:9] : &:r2072_16, r2072_15 +# 2064| Block 8 +# 2064| r2064_9(int) = Constant[3] : +# 2064| r2064_10(glval) = VariableAddress[#temp2064:9] : +# 2064| m2064_11(int) = Store[#temp2064:9] : &:r2064_10, r2064_9 #-----| Goto -> Block 7 -# 2072| Block 9 -# 2072| r2072_18(glval) = VariableAddress[#temp2072:31] : -# 2072| r2072_19(TernaryPodObj) = Constant[0] : -# 2072| m2072_20(TernaryPodObj) = Store[#temp2072:31] : &:r2072_18, r2072_19 -# 2072| r2072_21(TernaryPodObj) = Load[#temp2072:31] : &:r2072_18, m2072_20 -# 2072| r2072_22(glval) = VariableAddress[#temp2072:9] : -# 2072| m2072_23(TernaryPodObj) = Store[#temp2072:9] : &:r2072_22, r2072_21 +# 2064| Block 9 +# 2064| r2064_12(int) = Constant[5] : +# 2064| r2064_13(glval) = VariableAddress[#temp2064:9] : +# 2064| m2064_14(int) = Store[#temp2064:9] : &:r2064_13, r2064_12 #-----| Goto -> Block 7 -# 2073| Block 10 -# 2073| m2073_8(TernaryPodObj) = Phi : from 11:m2073_18, from 12:m2073_22 -# 2073| r2073_9(glval) = VariableAddress[#temp2073:10] : -# 2073| r2073_10(TernaryPodObj) = Load[#temp2073:10] : &:r2073_9, m2073_8 -# 2073| r2073_11(glval) = VariableAddress[z] : -# 2073| m2073_12(TernaryPodObj) = Store[z] : &:r2073_11, r2073_10 -# 2073| r2073_13(glval) = CopyValue : r2073_11 -# 2073| m2073_14(TernaryPodObj) = Store[?] : &:r2073_13, r2073_4 -# 2074| v2074_1(void) = NoOp : -# 2069| v2069_13(void) = ReturnVoid : -# 2069| v2069_14(void) = AliasedUse : m2069_3 -# 2069| v2069_15(void) = ExitFunction : +# 2065| Block 10 +# 2065| m2065_5(glval) = Phi : from 11:m2065_12, from 12:m2065_15 +# 2065| r2065_6(glval) = VariableAddress[#temp2065:6] : +# 2065| r2065_7(glval) = Load[#temp2065:6] : &:r2065_6, m2065_5 +# 2065| m2065_8(int) = Store[?] : &:r2065_7, r2065_1 +# 2065| m2065_9(int) = Chi : total:m2061_13, partial:m2065_8 +# 2066| v2066_1(void) = NoOp : +# 2061| v2061_16(void) = ReturnVoid : +# 2061| v2061_17(void) = AliasedUse : m2061_3 +# 2061| v2061_18(void) = ExitFunction : -# 2073| Block 11 -# 2073| r2073_15(glval) = VariableAddress[x] : -# 2073| r2073_16(TernaryPodObj) = Load[x] : &:r2073_15, m2069_8 -# 2073| r2073_17(glval) = VariableAddress[#temp2073:10] : -# 2073| m2073_18(TernaryPodObj) = Store[#temp2073:10] : &:r2073_17, r2073_16 +# 2065| Block 11 +# 2065| r2065_10(glval) = VariableAddress[x] : +# 2065| r2065_11(glval) = VariableAddress[#temp2065:6] : +# 2065| m2065_12(glval) = Store[#temp2065:6] : &:r2065_11, r2065_10 #-----| Goto -> Block 10 -# 2073| Block 12 -# 2073| r2073_19(glval) = VariableAddress[y] : -# 2073| r2073_20(TernaryPodObj) = Load[y] : &:r2073_19, m2069_10 -# 2073| r2073_21(glval) = VariableAddress[#temp2073:10] : -# 2073| m2073_22(TernaryPodObj) = Store[#temp2073:10] : &:r2073_21, r2073_20 +# 2065| Block 12 +# 2065| r2065_13(glval) = VariableAddress[y] : +# 2065| r2065_14(glval) = VariableAddress[#temp2065:6] : +# 2065| m2065_15(glval) = Store[#temp2065:6] : &:r2065_14, r2065_13 #-----| Goto -> Block 10 -# 2076| TernaryNonPodObj& TernaryNonPodObj::operator=(TernaryNonPodObj const&) -# 2076| Block 0 -# 2076| v2076_1(void) = EnterFunction : -# 2076| m2076_2(unknown) = AliasedDefinition : -# 2076| m2076_3(unknown) = InitializeNonLocal : -# 2076| m2076_4(unknown) = Chi : total:m2076_2, partial:m2076_3 -# 2076| r2076_5(glval) = VariableAddress[#this] : -# 2076| m2076_6(glval) = InitializeParameter[#this] : &:r2076_5 -# 2076| r2076_7(glval) = Load[#this] : &:r2076_5, m2076_6 -# 2076| m2076_8(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2076_7 +# 2071| void TernaryTestPodObj(bool, TernaryPodObj, TernaryPodObj, TernaryPodObj) +# 2071| Block 0 +# 2071| v2071_1(void) = EnterFunction : +# 2071| m2071_2(unknown) = AliasedDefinition : +# 2071| m2071_3(unknown) = InitializeNonLocal : +# 2071| m2071_4(unknown) = Chi : total:m2071_2, partial:m2071_3 +# 2071| r2071_5(glval) = VariableAddress[a] : +# 2071| m2071_6(bool) = InitializeParameter[a] : &:r2071_5 +# 2071| r2071_7(glval) = VariableAddress[x] : +# 2071| m2071_8(TernaryPodObj) = InitializeParameter[x] : &:r2071_7 +# 2071| r2071_9(glval) = VariableAddress[y] : +# 2071| m2071_10(TernaryPodObj) = InitializeParameter[y] : &:r2071_9 +# 2071| r2071_11(glval) = VariableAddress[z] : +# 2071| m2071_12(TernaryPodObj) = InitializeParameter[z] : &:r2071_11 +# 2072| r2072_1(glval) = VariableAddress[a] : +# 2072| r2072_2(bool) = Load[a] : &:r2072_1, m2071_6 +# 2072| v2072_3(void) = ConditionalBranch : r2072_2 +#-----| False -> Block 3 +#-----| True -> Block 2 + +# 2072| Block 1 +# 2072| m2072_4(TernaryPodObj) = Phi : from 2:m2072_12, from 3:m2072_16 +# 2072| r2072_5(glval) = VariableAddress[#temp2072:9] : +# 2072| r2072_6(TernaryPodObj) = Load[#temp2072:9] : &:r2072_5, m2072_4 +# 2072| r2072_7(glval) = VariableAddress[z] : +# 2072| m2072_8(TernaryPodObj) = Store[z] : &:r2072_7, r2072_6 +# 2073| r2073_1(glval) = VariableAddress[#temp2073:9] : +# 2073| r2073_2(glval) = VariableAddress[a] : +# 2073| r2073_3(bool) = Load[a] : &:r2073_2, m2071_6 +# 2073| v2073_4(void) = ConditionalBranch : r2073_3 +#-----| False -> Block 6 +#-----| True -> Block 5 + +# 2072| Block 2 +# 2072| r2072_9(glval) = VariableAddress[x] : +# 2072| r2072_10(TernaryPodObj) = Load[x] : &:r2072_9, m2071_8 +# 2072| r2072_11(glval) = VariableAddress[#temp2072:9] : +# 2072| m2072_12(TernaryPodObj) = Store[#temp2072:9] : &:r2072_11, r2072_10 +#-----| Goto -> Block 1 + +# 2072| Block 3 +# 2072| r2072_13(glval) = VariableAddress[y] : +# 2072| r2072_14(TernaryPodObj) = Load[y] : &:r2072_13, m2071_10 +# 2072| r2072_15(glval) = VariableAddress[#temp2072:9] : +# 2072| m2072_16(TernaryPodObj) = Store[#temp2072:9] : &:r2072_15, r2072_14 +#-----| Goto -> Block 1 + +# 2073| Block 4 +# 2073| m2073_5(TernaryPodObj) = Phi : from 5:m2073_18, from 6:m2073_24 +# 2073| r2073_6(glval) = VariableAddress[#temp2073:9] : +# 2073| r2073_7(TernaryPodObj) = Load[#temp2073:9] : &:r2073_6, m2073_5 +# 2073| m2073_8(TernaryPodObj) = Store[#temp2073:9] : &:r2073_1, r2073_7 +# 2073| r2073_9(TernaryPodObj) = Load[#temp2073:9] : &:r2073_1, m2073_8 +# 2073| r2073_10(glval) = VariableAddress[z] : +# 2073| m2073_11(TernaryPodObj) = Store[z] : &:r2073_10, r2073_9 +# 2074| r2074_1(glval) = VariableAddress[#temp2074:9] : +# 2074| r2074_2(glval) = VariableAddress[a] : +# 2074| r2074_3(bool) = Load[a] : &:r2074_2, m2071_6 +# 2074| v2074_4(void) = ConditionalBranch : r2074_3 +#-----| False -> Block 9 +#-----| True -> Block 8 + +# 2073| Block 5 +# 2073| r2073_12(glval) = VariableAddress[#temp2073:13] : +# 2073| r2073_13(glval) = VariableAddress[x] : +# 2073| r2073_14(TernaryPodObj) = Load[x] : &:r2073_13, m2071_8 +# 2073| m2073_15(TernaryPodObj) = Store[#temp2073:13] : &:r2073_12, r2073_14 +# 2073| r2073_16(TernaryPodObj) = Load[#temp2073:13] : &:r2073_12, m2073_15 +# 2073| r2073_17(glval) = VariableAddress[#temp2073:9] : +# 2073| m2073_18(TernaryPodObj) = Store[#temp2073:9] : &:r2073_17, r2073_16 +#-----| Goto -> Block 4 + +# 2073| Block 6 +# 2073| r2073_19(glval) = VariableAddress[#temp2073:17] : +# 2073| r2073_20(TernaryPodObj) = Constant[0] : +# 2073| m2073_21(TernaryPodObj) = Store[#temp2073:17] : &:r2073_19, r2073_20 +# 2073| r2073_22(TernaryPodObj) = Load[#temp2073:17] : &:r2073_19, m2073_21 +# 2073| r2073_23(glval) = VariableAddress[#temp2073:9] : +# 2073| m2073_24(TernaryPodObj) = Store[#temp2073:9] : &:r2073_23, r2073_22 +#-----| Goto -> Block 4 + +# 2074| Block 7 +# 2074| m2074_5(TernaryPodObj) = Phi : from 8:m2074_17, from 9:m2074_23 +# 2074| r2074_6(glval) = VariableAddress[#temp2074:9] : +# 2074| r2074_7(TernaryPodObj) = Load[#temp2074:9] : &:r2074_6, m2074_5 +# 2074| m2074_8(TernaryPodObj) = Store[#temp2074:9] : &:r2074_1, r2074_7 +# 2074| r2074_9(TernaryPodObj) = Load[#temp2074:9] : &:r2074_1, m2074_8 +# 2074| r2074_10(glval) = VariableAddress[z] : +# 2074| m2074_11(TernaryPodObj) = Store[z] : &:r2074_10, r2074_9 +# 2075| r2075_1(glval) = VariableAddress[#temp2075:23] : +# 2075| r2075_2(TernaryPodObj) = Constant[0] : +# 2075| m2075_3(TernaryPodObj) = Store[#temp2075:23] : &:r2075_1, r2075_2 +# 2075| r2075_4(TernaryPodObj) = Load[#temp2075:23] : &:r2075_1, m2075_3 +# 2075| r2075_5(glval) = VariableAddress[a] : +# 2075| r2075_6(bool) = Load[a] : &:r2075_5, m2071_6 +# 2075| v2075_7(void) = ConditionalBranch : r2075_6 +#-----| False -> Block 12 +#-----| True -> Block 11 + +# 2074| Block 8 +# 2074| r2074_12(glval) = VariableAddress[#temp2074:13] : +# 2074| r2074_13(TernaryPodObj) = Constant[0] : +# 2074| m2074_14(TernaryPodObj) = Store[#temp2074:13] : &:r2074_12, r2074_13 +# 2074| r2074_15(TernaryPodObj) = Load[#temp2074:13] : &:r2074_12, m2074_14 +# 2074| r2074_16(glval) = VariableAddress[#temp2074:9] : +# 2074| m2074_17(TernaryPodObj) = Store[#temp2074:9] : &:r2074_16, r2074_15 +#-----| Goto -> Block 7 + +# 2074| Block 9 +# 2074| r2074_18(glval) = VariableAddress[#temp2074:31] : +# 2074| r2074_19(TernaryPodObj) = Constant[0] : +# 2074| m2074_20(TernaryPodObj) = Store[#temp2074:31] : &:r2074_18, r2074_19 +# 2074| r2074_21(TernaryPodObj) = Load[#temp2074:31] : &:r2074_18, m2074_20 +# 2074| r2074_22(glval) = VariableAddress[#temp2074:9] : +# 2074| m2074_23(TernaryPodObj) = Store[#temp2074:9] : &:r2074_22, r2074_21 +#-----| Goto -> Block 7 + +# 2075| Block 10 +# 2075| m2075_8(TernaryPodObj) = Phi : from 11:m2075_18, from 12:m2075_22 +# 2075| r2075_9(glval) = VariableAddress[#temp2075:10] : +# 2075| r2075_10(TernaryPodObj) = Load[#temp2075:10] : &:r2075_9, m2075_8 +# 2075| r2075_11(glval) = VariableAddress[z] : +# 2075| m2075_12(TernaryPodObj) = Store[z] : &:r2075_11, r2075_10 +# 2075| r2075_13(glval) = CopyValue : r2075_11 +# 2075| m2075_14(TernaryPodObj) = Store[?] : &:r2075_13, r2075_4 +# 2076| v2076_1(void) = NoOp : +# 2071| v2071_13(void) = ReturnVoid : +# 2071| v2071_14(void) = AliasedUse : m2071_3 +# 2071| v2071_15(void) = ExitFunction : + +# 2075| Block 11 +# 2075| r2075_15(glval) = VariableAddress[x] : +# 2075| r2075_16(TernaryPodObj) = Load[x] : &:r2075_15, m2071_8 +# 2075| r2075_17(glval) = VariableAddress[#temp2075:10] : +# 2075| m2075_18(TernaryPodObj) = Store[#temp2075:10] : &:r2075_17, r2075_16 +#-----| Goto -> Block 10 + +# 2075| Block 12 +# 2075| r2075_19(glval) = VariableAddress[y] : +# 2075| r2075_20(TernaryPodObj) = Load[y] : &:r2075_19, m2071_10 +# 2075| r2075_21(glval) = VariableAddress[#temp2075:10] : +# 2075| m2075_22(TernaryPodObj) = Store[#temp2075:10] : &:r2075_21, r2075_20 +#-----| Goto -> Block 10 + +# 2078| TernaryNonPodObj& TernaryNonPodObj::operator=(TernaryNonPodObj const&) +# 2078| Block 0 +# 2078| v2078_1(void) = EnterFunction : +# 2078| m2078_2(unknown) = AliasedDefinition : +# 2078| m2078_3(unknown) = InitializeNonLocal : +# 2078| m2078_4(unknown) = Chi : total:m2078_2, partial:m2078_3 +# 2078| r2078_5(glval) = VariableAddress[#this] : +# 2078| m2078_6(glval) = InitializeParameter[#this] : &:r2078_5 +# 2078| r2078_7(glval) = Load[#this] : &:r2078_5, m2078_6 +# 2078| m2078_8(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2078_7 #-----| r0_1(glval) = VariableAddress[(unnamed parameter 0)] : #-----| m0_2(TernaryNonPodObj &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(TernaryNonPodObj &) = Load[(unnamed parameter 0)] : &:r0_1, m0_2 #-----| m0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 #-----| r0_5(glval) = VariableAddress[#return] : #-----| r0_6(glval) = VariableAddress[#this] : -#-----| r0_7(TernaryNonPodObj *) = Load[#this] : &:r0_6, m2076_6 +#-----| r0_7(TernaryNonPodObj *) = Load[#this] : &:r0_6, m2078_6 #-----| r0_8(glval) = CopyValue : r0_7 #-----| r0_9(TernaryNonPodObj &) = CopyValue : r0_8 #-----| m0_10(TernaryNonPodObj &) = Store[#return] : &:r0_5, r0_9 -# 2076| v2076_9(void) = ReturnIndirection[#this] : &:r2076_7, m2076_8 +# 2078| v2078_9(void) = ReturnIndirection[#this] : &:r2078_7, m2078_8 #-----| v0_11(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, m0_4 -# 2076| r2076_10(glval) = VariableAddress[#return] : -# 2076| v2076_11(void) = ReturnValue : &:r2076_10, m0_10 -# 2076| v2076_12(void) = AliasedUse : m2076_3 -# 2076| v2076_13(void) = ExitFunction : +# 2078| r2078_10(glval) = VariableAddress[#return] : +# 2078| v2078_11(void) = ReturnValue : &:r2078_10, m0_10 +# 2078| v2078_12(void) = AliasedUse : m2078_3 +# 2078| v2078_13(void) = ExitFunction : -# 2076| void TernaryNonPodObj::TernaryNonPodObj() -# 2076| Block 0 -# 2076| v2076_1(void) = EnterFunction : -# 2076| m2076_2(unknown) = AliasedDefinition : -# 2076| m2076_3(unknown) = InitializeNonLocal : -# 2076| m2076_4(unknown) = Chi : total:m2076_2, partial:m2076_3 -# 2076| r2076_5(glval) = VariableAddress[#this] : -# 2076| m2076_6(glval) = InitializeParameter[#this] : &:r2076_5 -# 2076| r2076_7(glval) = Load[#this] : &:r2076_5, m2076_6 -# 2076| m2076_8(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2076_7 -# 2076| v2076_9(void) = NoOp : -# 2076| v2076_10(void) = ReturnIndirection[#this] : &:r2076_7, m2076_8 -# 2076| v2076_11(void) = ReturnVoid : -# 2076| v2076_12(void) = AliasedUse : m2076_3 -# 2076| v2076_13(void) = ExitFunction : +# 2078| void TernaryNonPodObj::TernaryNonPodObj() +# 2078| Block 0 +# 2078| v2078_1(void) = EnterFunction : +# 2078| m2078_2(unknown) = AliasedDefinition : +# 2078| m2078_3(unknown) = InitializeNonLocal : +# 2078| m2078_4(unknown) = Chi : total:m2078_2, partial:m2078_3 +# 2078| r2078_5(glval) = VariableAddress[#this] : +# 2078| m2078_6(glval) = InitializeParameter[#this] : &:r2078_5 +# 2078| r2078_7(glval) = Load[#this] : &:r2078_5, m2078_6 +# 2078| m2078_8(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2078_7 +# 2078| v2078_9(void) = NoOp : +# 2078| v2078_10(void) = ReturnIndirection[#this] : &:r2078_7, m2078_8 +# 2078| v2078_11(void) = ReturnVoid : +# 2078| v2078_12(void) = AliasedUse : m2078_3 +# 2078| v2078_13(void) = ExitFunction : -# 2076| void TernaryNonPodObj::TernaryNonPodObj(TernaryNonPodObj const&) -# 2076| Block 0 -# 2076| v2076_1(void) = EnterFunction : -# 2076| m2076_2(unknown) = AliasedDefinition : -# 2076| m2076_3(unknown) = InitializeNonLocal : -# 2076| m2076_4(unknown) = Chi : total:m2076_2, partial:m2076_3 -# 2076| r2076_5(glval) = VariableAddress[#this] : -# 2076| m2076_6(glval) = InitializeParameter[#this] : &:r2076_5 -# 2076| r2076_7(glval) = Load[#this] : &:r2076_5, m2076_6 -# 2076| m2076_8(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2076_7 +# 2078| void TernaryNonPodObj::TernaryNonPodObj(TernaryNonPodObj const&) +# 2078| Block 0 +# 2078| v2078_1(void) = EnterFunction : +# 2078| m2078_2(unknown) = AliasedDefinition : +# 2078| m2078_3(unknown) = InitializeNonLocal : +# 2078| m2078_4(unknown) = Chi : total:m2078_2, partial:m2078_3 +# 2078| r2078_5(glval) = VariableAddress[#this] : +# 2078| m2078_6(glval) = InitializeParameter[#this] : &:r2078_5 +# 2078| r2078_7(glval) = Load[#this] : &:r2078_5, m2078_6 +# 2078| m2078_8(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2078_7 #-----| r0_1(glval) = VariableAddress[(unnamed parameter 0)] : #-----| m0_2(TernaryNonPodObj &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(TernaryNonPodObj &) = Load[(unnamed parameter 0)] : &:r0_1, m0_2 #-----| m0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 2076| v2076_9(void) = NoOp : -# 2076| v2076_10(void) = ReturnIndirection[#this] : &:r2076_7, m2076_8 +# 2078| v2078_9(void) = NoOp : +# 2078| v2078_10(void) = ReturnIndirection[#this] : &:r2078_7, m2078_8 #-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, m0_4 -# 2076| v2076_11(void) = ReturnVoid : -# 2076| v2076_12(void) = AliasedUse : m2076_3 -# 2076| v2076_13(void) = ExitFunction : +# 2078| v2078_11(void) = ReturnVoid : +# 2078| v2078_12(void) = AliasedUse : m2078_3 +# 2078| v2078_13(void) = ExitFunction : -# 2077| void TernaryNonPodObj::~TernaryNonPodObj() -# 2077| Block 0 -# 2077| v2077_1(void) = EnterFunction : -# 2077| m2077_2(unknown) = AliasedDefinition : -# 2077| m2077_3(unknown) = InitializeNonLocal : -# 2077| m2077_4(unknown) = Chi : total:m2077_2, partial:m2077_3 -# 2077| r2077_5(glval) = VariableAddress[#this] : -# 2077| m2077_6(glval) = InitializeParameter[#this] : &:r2077_5 -# 2077| r2077_7(glval) = Load[#this] : &:r2077_5, m2077_6 -# 2077| m2077_8(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2077_7 -# 2077| v2077_9(void) = NoOp : -# 2077| v2077_10(void) = ReturnIndirection[#this] : &:r2077_7, m2077_8 -# 2077| v2077_11(void) = ReturnVoid : -# 2077| v2077_12(void) = AliasedUse : m2077_3 -# 2077| v2077_13(void) = ExitFunction : +# 2079| void TernaryNonPodObj::~TernaryNonPodObj() +# 2079| Block 0 +# 2079| v2079_1(void) = EnterFunction : +# 2079| m2079_2(unknown) = AliasedDefinition : +# 2079| m2079_3(unknown) = InitializeNonLocal : +# 2079| m2079_4(unknown) = Chi : total:m2079_2, partial:m2079_3 +# 2079| r2079_5(glval) = VariableAddress[#this] : +# 2079| m2079_6(glval) = InitializeParameter[#this] : &:r2079_5 +# 2079| r2079_7(glval) = Load[#this] : &:r2079_5, m2079_6 +# 2079| m2079_8(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2079_7 +# 2079| v2079_9(void) = NoOp : +# 2079| v2079_10(void) = ReturnIndirection[#this] : &:r2079_7, m2079_8 +# 2079| v2079_11(void) = ReturnVoid : +# 2079| v2079_12(void) = AliasedUse : m2079_3 +# 2079| v2079_13(void) = ExitFunction : -# 2080| void TernaryTestNonPodObj(bool, TernaryNonPodObj, TernaryNonPodObj, TernaryNonPodObj) -# 2080| Block 0 -# 2080| v2080_1(void) = EnterFunction : -# 2080| m2080_2(unknown) = AliasedDefinition : -# 2080| m2080_3(unknown) = InitializeNonLocal : -# 2080| m2080_4(unknown) = Chi : total:m2080_2, partial:m2080_3 -# 2080| m2080_5(unknown) = UninitializedGroup[x,y] : -# 2080| r2080_6(glval) = VariableAddress[a] : -# 2080| m2080_7(bool) = InitializeParameter[a] : &:r2080_6 -# 2080| r2080_8(glval) = VariableAddress[x] : -# 2080| m2080_9(TernaryNonPodObj) = InitializeParameter[x] : &:r2080_8 -# 2080| m2080_10(unknown) = Chi : total:m2080_5, partial:m2080_9 -# 2080| r2080_11(glval) = VariableAddress[y] : -# 2080| m2080_12(TernaryNonPodObj) = InitializeParameter[y] : &:r2080_11 -# 2080| m2080_13(unknown) = Chi : total:m2080_10, partial:m2080_12 -# 2080| r2080_14(glval) = VariableAddress[z] : -# 2080| m2080_15(TernaryNonPodObj) = InitializeParameter[z] : &:r2080_14 -# 2081| r2081_1(glval) = VariableAddress[z] : -# 2081| r2081_2(glval) = FunctionAddress[operator=] : -# 2081| r2081_3(glval) = VariableAddress[a] : -# 2081| r2081_4(bool) = Load[a] : &:r2081_3, m2080_7 -# 2081| v2081_5(void) = ConditionalBranch : r2081_4 +# 2082| void TernaryTestNonPodObj(bool, TernaryNonPodObj, TernaryNonPodObj, TernaryNonPodObj) +# 2082| Block 0 +# 2082| v2082_1(void) = EnterFunction : +# 2082| m2082_2(unknown) = AliasedDefinition : +# 2082| m2082_3(unknown) = InitializeNonLocal : +# 2082| m2082_4(unknown) = Chi : total:m2082_2, partial:m2082_3 +# 2082| m2082_5(unknown) = UninitializedGroup[x,y] : +# 2082| r2082_6(glval) = VariableAddress[a] : +# 2082| m2082_7(bool) = InitializeParameter[a] : &:r2082_6 +# 2082| r2082_8(glval) = VariableAddress[x] : +# 2082| m2082_9(TernaryNonPodObj) = InitializeParameter[x] : &:r2082_8 +# 2082| m2082_10(unknown) = Chi : total:m2082_5, partial:m2082_9 +# 2082| r2082_11(glval) = VariableAddress[y] : +# 2082| m2082_12(TernaryNonPodObj) = InitializeParameter[y] : &:r2082_11 +# 2082| m2082_13(unknown) = Chi : total:m2082_10, partial:m2082_12 +# 2082| r2082_14(glval) = VariableAddress[z] : +# 2082| m2082_15(TernaryNonPodObj) = InitializeParameter[z] : &:r2082_14 +# 2083| r2083_1(glval) = VariableAddress[z] : +# 2083| r2083_2(glval) = FunctionAddress[operator=] : +# 2083| r2083_3(glval) = VariableAddress[a] : +# 2083| r2083_4(bool) = Load[a] : &:r2083_3, m2082_7 +# 2083| v2083_5(void) = ConditionalBranch : r2083_4 #-----| False -> Block 3 #-----| True -> Block 2 -# 2081| Block 1 -# 2081| m2081_6(glval) = Phi : from 2:m2081_21, from 3:m2081_24 -# 2081| r2081_7(glval) = VariableAddress[#temp2081:9] : -# 2081| r2081_8(glval) = Load[#temp2081:9] : &:r2081_7, m2081_6 -# 2081| r2081_9(glval) = Convert : r2081_8 -# 2081| r2081_10(TernaryNonPodObj &) = CopyValue : r2081_9 -# 2081| r2081_11(TernaryNonPodObj &) = Call[operator=] : func:r2081_2, this:r2081_1, 0:r2081_10 -# 2081| m2081_12(unknown) = ^CallSideEffect : ~m2080_4 -# 2081| m2081_13(unknown) = Chi : total:m2080_4, partial:m2081_12 -# 2081| v2081_14(void) = ^IndirectReadSideEffect[-1] : &:r2081_1, m2080_15 -# 2081| v2081_15(void) = ^BufferReadSideEffect[0] : &:r2081_10, ~m2080_13 -# 2081| m2081_16(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2081_1 -# 2081| m2081_17(TernaryNonPodObj) = Chi : total:m2080_15, partial:m2081_16 -# 2081| r2081_18(glval) = CopyValue : r2081_11 -# 2082| r2082_1(glval) = VariableAddress[z] : -# 2082| r2082_2(glval) = FunctionAddress[operator=] : -# 2082| r2082_3(glval) = VariableAddress[#temp2082:9] : -# 2082| r2082_4(glval) = VariableAddress[a] : -# 2082| r2082_5(bool) = Load[a] : &:r2082_4, m2080_7 -# 2082| v2082_6(void) = ConditionalBranch : r2082_5 +# 2083| Block 1 +# 2083| m2083_6(glval) = Phi : from 2:m2083_21, from 3:m2083_24 +# 2083| r2083_7(glval) = VariableAddress[#temp2083:9] : +# 2083| r2083_8(glval) = Load[#temp2083:9] : &:r2083_7, m2083_6 +# 2083| r2083_9(glval) = Convert : r2083_8 +# 2083| r2083_10(TernaryNonPodObj &) = CopyValue : r2083_9 +# 2083| r2083_11(TernaryNonPodObj &) = Call[operator=] : func:r2083_2, this:r2083_1, 0:r2083_10 +# 2083| m2083_12(unknown) = ^CallSideEffect : ~m2082_4 +# 2083| m2083_13(unknown) = Chi : total:m2082_4, partial:m2083_12 +# 2083| v2083_14(void) = ^IndirectReadSideEffect[-1] : &:r2083_1, m2082_15 +# 2083| v2083_15(void) = ^BufferReadSideEffect[0] : &:r2083_10, ~m2082_13 +# 2083| m2083_16(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2083_1 +# 2083| m2083_17(TernaryNonPodObj) = Chi : total:m2082_15, partial:m2083_16 +# 2083| r2083_18(glval) = CopyValue : r2083_11 +# 2084| r2084_1(glval) = VariableAddress[z] : +# 2084| r2084_2(glval) = FunctionAddress[operator=] : +# 2084| r2084_3(glval) = VariableAddress[#temp2084:9] : +# 2084| r2084_4(glval) = VariableAddress[a] : +# 2084| r2084_5(bool) = Load[a] : &:r2084_4, m2082_7 +# 2084| v2084_6(void) = ConditionalBranch : r2084_5 #-----| False -> Block 6 #-----| True -> Block 5 -# 2081| Block 2 -# 2081| r2081_19(glval) = VariableAddress[x] : -# 2081| r2081_20(glval) = VariableAddress[#temp2081:9] : -# 2081| m2081_21(glval) = Store[#temp2081:9] : &:r2081_20, r2081_19 +# 2083| Block 2 +# 2083| r2083_19(glval) = VariableAddress[x] : +# 2083| r2083_20(glval) = VariableAddress[#temp2083:9] : +# 2083| m2083_21(glval) = Store[#temp2083:9] : &:r2083_20, r2083_19 #-----| Goto -> Block 1 -# 2081| Block 3 -# 2081| r2081_22(glval) = VariableAddress[y] : -# 2081| r2081_23(glval) = VariableAddress[#temp2081:9] : -# 2081| m2081_24(glval) = Store[#temp2081:9] : &:r2081_23, r2081_22 +# 2083| Block 3 +# 2083| r2083_22(glval) = VariableAddress[y] : +# 2083| r2083_23(glval) = VariableAddress[#temp2083:9] : +# 2083| m2083_24(glval) = Store[#temp2083:9] : &:r2083_23, r2083_22 #-----| Goto -> Block 1 -# 2082| Block 4 -# 2082| m2082_7(unknown) = Phi : from 5:~m2082_39, from 6:~m2082_51 -# 2082| m2082_8(TernaryNonPodObj) = Phi : from 5:m2082_45, from 6:m2082_56 -# 2082| r2082_9(glval) = VariableAddress[#temp2082:9] : -# 2082| r2082_10(TernaryNonPodObj) = Load[#temp2082:9] : &:r2082_9, m2082_8 -# 2082| m2082_11(TernaryNonPodObj) = Store[#temp2082:9] : &:r2082_3, r2082_10 -# 2082| m2082_12(unknown) = Chi : total:m2082_7, partial:m2082_11 -# 2082| r2082_13(glval) = Convert : r2082_3 -# 2082| r2082_14(TernaryNonPodObj &) = CopyValue : r2082_13 -# 2082| r2082_15(TernaryNonPodObj &) = Call[operator=] : func:r2082_2, this:r2082_1, 0:r2082_14 -# 2082| m2082_16(unknown) = ^CallSideEffect : ~m2082_12 -# 2082| m2082_17(unknown) = Chi : total:m2082_12, partial:m2082_16 -# 2082| v2082_18(void) = ^IndirectReadSideEffect[-1] : &:r2082_1, m2081_17 -# 2082| v2082_19(void) = ^BufferReadSideEffect[0] : &:r2082_14, ~m2082_17 -# 2082| m2082_20(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2082_1 -# 2082| m2082_21(TernaryNonPodObj) = Chi : total:m2081_17, partial:m2082_20 -# 2082| r2082_22(glval) = CopyValue : r2082_3 -# 2082| r2082_23(glval) = FunctionAddress[~TernaryNonPodObj] : -# 2082| v2082_24(void) = Call[~TernaryNonPodObj] : func:r2082_23, this:r2082_22 -# 2082| m2082_25(unknown) = ^CallSideEffect : ~m2082_17 -# 2082| m2082_26(unknown) = Chi : total:m2082_17, partial:m2082_25 -# 2082| v2082_27(void) = ^IndirectReadSideEffect[-1] : &:r2082_22, ~m2082_26 -# 2082| m2082_28(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2082_22 -# 2082| m2082_29(unknown) = Chi : total:m2082_26, partial:m2082_28 -# 2082| r2082_30(glval) = CopyValue : r2082_15 -# 2083| r2083_1(glval) = VariableAddress[z] : -# 2083| r2083_2(glval) = FunctionAddress[operator=] : -# 2083| r2083_3(glval) = VariableAddress[#temp2083:9] : -# 2083| r2083_4(glval) = VariableAddress[a] : -# 2083| r2083_5(bool) = Load[a] : &:r2083_4, m2080_7 -# 2083| v2083_6(void) = ConditionalBranch : r2083_5 +# 2084| Block 4 +# 2084| m2084_7(unknown) = Phi : from 5:~m2084_39, from 6:~m2084_51 +# 2084| m2084_8(TernaryNonPodObj) = Phi : from 5:m2084_45, from 6:m2084_56 +# 2084| r2084_9(glval) = VariableAddress[#temp2084:9] : +# 2084| r2084_10(TernaryNonPodObj) = Load[#temp2084:9] : &:r2084_9, m2084_8 +# 2084| m2084_11(TernaryNonPodObj) = Store[#temp2084:9] : &:r2084_3, r2084_10 +# 2084| m2084_12(unknown) = Chi : total:m2084_7, partial:m2084_11 +# 2084| r2084_13(glval) = Convert : r2084_3 +# 2084| r2084_14(TernaryNonPodObj &) = CopyValue : r2084_13 +# 2084| r2084_15(TernaryNonPodObj &) = Call[operator=] : func:r2084_2, this:r2084_1, 0:r2084_14 +# 2084| m2084_16(unknown) = ^CallSideEffect : ~m2084_12 +# 2084| m2084_17(unknown) = Chi : total:m2084_12, partial:m2084_16 +# 2084| v2084_18(void) = ^IndirectReadSideEffect[-1] : &:r2084_1, m2083_17 +# 2084| v2084_19(void) = ^BufferReadSideEffect[0] : &:r2084_14, ~m2084_17 +# 2084| m2084_20(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2084_1 +# 2084| m2084_21(TernaryNonPodObj) = Chi : total:m2083_17, partial:m2084_20 +# 2084| r2084_22(glval) = CopyValue : r2084_3 +# 2084| r2084_23(glval) = FunctionAddress[~TernaryNonPodObj] : +# 2084| v2084_24(void) = Call[~TernaryNonPodObj] : func:r2084_23, this:r2084_22 +# 2084| m2084_25(unknown) = ^CallSideEffect : ~m2084_17 +# 2084| m2084_26(unknown) = Chi : total:m2084_17, partial:m2084_25 +# 2084| v2084_27(void) = ^IndirectReadSideEffect[-1] : &:r2084_22, ~m2084_26 +# 2084| m2084_28(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2084_22 +# 2084| m2084_29(unknown) = Chi : total:m2084_26, partial:m2084_28 +# 2084| r2084_30(glval) = CopyValue : r2084_15 +# 2085| r2085_1(glval) = VariableAddress[z] : +# 2085| r2085_2(glval) = FunctionAddress[operator=] : +# 2085| r2085_3(glval) = VariableAddress[#temp2085:9] : +# 2085| r2085_4(glval) = VariableAddress[a] : +# 2085| r2085_5(bool) = Load[a] : &:r2085_4, m2082_7 +# 2085| v2085_6(void) = ConditionalBranch : r2085_5 #-----| False -> Block 9 #-----| True -> Block 8 -# 2082| Block 5 -# 2082| r2082_31(glval) = VariableAddress[#temp2082:13] : -# 2082| m2082_32(TernaryNonPodObj) = Uninitialized[#temp2082:13] : &:r2082_31 -# 2082| r2082_33(glval) = FunctionAddress[TernaryNonPodObj] : -# 2082| r2082_34(glval) = VariableAddress[x] : -# 2082| r2082_35(glval) = Convert : r2082_34 -# 2082| r2082_36(TernaryNonPodObj &) = CopyValue : r2082_35 -# 2082| v2082_37(void) = Call[TernaryNonPodObj] : func:r2082_33, this:r2082_31, 0:r2082_36 -# 2082| m2082_38(unknown) = ^CallSideEffect : ~m2081_13 -# 2082| m2082_39(unknown) = Chi : total:m2081_13, partial:m2082_38 -# 2082| v2082_40(void) = ^BufferReadSideEffect[0] : &:r2082_36, ~m2080_9 -# 2082| m2082_41(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2082_31 -# 2082| m2082_42(TernaryNonPodObj) = Chi : total:m2082_32, partial:m2082_41 -# 2082| r2082_43(TernaryNonPodObj) = Load[#temp2082:13] : &:r2082_31, m2082_42 -# 2082| r2082_44(glval) = VariableAddress[#temp2082:9] : -# 2082| m2082_45(TernaryNonPodObj) = Store[#temp2082:9] : &:r2082_44, r2082_43 +# 2084| Block 5 +# 2084| r2084_31(glval) = VariableAddress[#temp2084:13] : +# 2084| m2084_32(TernaryNonPodObj) = Uninitialized[#temp2084:13] : &:r2084_31 +# 2084| r2084_33(glval) = FunctionAddress[TernaryNonPodObj] : +# 2084| r2084_34(glval) = VariableAddress[x] : +# 2084| r2084_35(glval) = Convert : r2084_34 +# 2084| r2084_36(TernaryNonPodObj &) = CopyValue : r2084_35 +# 2084| v2084_37(void) = Call[TernaryNonPodObj] : func:r2084_33, this:r2084_31, 0:r2084_36 +# 2084| m2084_38(unknown) = ^CallSideEffect : ~m2083_13 +# 2084| m2084_39(unknown) = Chi : total:m2083_13, partial:m2084_38 +# 2084| v2084_40(void) = ^BufferReadSideEffect[0] : &:r2084_36, ~m2082_9 +# 2084| m2084_41(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2084_31 +# 2084| m2084_42(TernaryNonPodObj) = Chi : total:m2084_32, partial:m2084_41 +# 2084| r2084_43(TernaryNonPodObj) = Load[#temp2084:13] : &:r2084_31, m2084_42 +# 2084| r2084_44(glval) = VariableAddress[#temp2084:9] : +# 2084| m2084_45(TernaryNonPodObj) = Store[#temp2084:9] : &:r2084_44, r2084_43 #-----| Goto -> Block 4 -# 2082| Block 6 -# 2082| r2082_46(glval) = VariableAddress[#temp2082:17] : -# 2082| m2082_47(TernaryNonPodObj) = Uninitialized[#temp2082:17] : &:r2082_46 -# 2082| r2082_48(glval) = FunctionAddress[TernaryNonPodObj] : -# 2082| v2082_49(void) = Call[TernaryNonPodObj] : func:r2082_48, this:r2082_46 -# 2082| m2082_50(unknown) = ^CallSideEffect : ~m2081_13 -# 2082| m2082_51(unknown) = Chi : total:m2081_13, partial:m2082_50 -# 2082| m2082_52(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2082_46 -# 2082| m2082_53(TernaryNonPodObj) = Chi : total:m2082_47, partial:m2082_52 -# 2082| r2082_54(TernaryNonPodObj) = Load[#temp2082:17] : &:r2082_46, m2082_53 -# 2082| r2082_55(glval) = VariableAddress[#temp2082:9] : -# 2082| m2082_56(TernaryNonPodObj) = Store[#temp2082:9] : &:r2082_55, r2082_54 +# 2084| Block 6 +# 2084| r2084_46(glval) = VariableAddress[#temp2084:17] : +# 2084| m2084_47(TernaryNonPodObj) = Uninitialized[#temp2084:17] : &:r2084_46 +# 2084| r2084_48(glval) = FunctionAddress[TernaryNonPodObj] : +# 2084| v2084_49(void) = Call[TernaryNonPodObj] : func:r2084_48, this:r2084_46 +# 2084| m2084_50(unknown) = ^CallSideEffect : ~m2083_13 +# 2084| m2084_51(unknown) = Chi : total:m2083_13, partial:m2084_50 +# 2084| m2084_52(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2084_46 +# 2084| m2084_53(TernaryNonPodObj) = Chi : total:m2084_47, partial:m2084_52 +# 2084| r2084_54(TernaryNonPodObj) = Load[#temp2084:17] : &:r2084_46, m2084_53 +# 2084| r2084_55(glval) = VariableAddress[#temp2084:9] : +# 2084| m2084_56(TernaryNonPodObj) = Store[#temp2084:9] : &:r2084_55, r2084_54 #-----| Goto -> Block 4 -# 2083| Block 7 -# 2083| m2083_7(unknown) = Phi : from 8:~m2083_36, from 9:~m2083_47 -# 2083| m2083_8(TernaryNonPodObj) = Phi : from 8:m2083_41, from 9:m2083_52 -# 2083| r2083_9(glval) = VariableAddress[#temp2083:9] : -# 2083| r2083_10(TernaryNonPodObj) = Load[#temp2083:9] : &:r2083_9, m2083_8 -# 2083| m2083_11(TernaryNonPodObj) = Store[#temp2083:9] : &:r2083_3, r2083_10 -# 2083| m2083_12(unknown) = Chi : total:m2083_7, partial:m2083_11 -# 2083| r2083_13(glval) = Convert : r2083_3 -# 2083| r2083_14(TernaryNonPodObj &) = CopyValue : r2083_13 -# 2083| r2083_15(TernaryNonPodObj &) = Call[operator=] : func:r2083_2, this:r2083_1, 0:r2083_14 -# 2083| m2083_16(unknown) = ^CallSideEffect : ~m2083_12 -# 2083| m2083_17(unknown) = Chi : total:m2083_12, partial:m2083_16 -# 2083| v2083_18(void) = ^IndirectReadSideEffect[-1] : &:r2083_1, m2082_21 -# 2083| v2083_19(void) = ^BufferReadSideEffect[0] : &:r2083_14, ~m2083_17 -# 2083| m2083_20(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2083_1 -# 2083| m2083_21(TernaryNonPodObj) = Chi : total:m2082_21, partial:m2083_20 -# 2083| r2083_22(glval) = CopyValue : r2083_3 -# 2083| r2083_23(glval) = FunctionAddress[~TernaryNonPodObj] : -# 2083| v2083_24(void) = Call[~TernaryNonPodObj] : func:r2083_23, this:r2083_22 -# 2083| m2083_25(unknown) = ^CallSideEffect : ~m2083_17 -# 2083| m2083_26(unknown) = Chi : total:m2083_17, partial:m2083_25 -# 2083| v2083_27(void) = ^IndirectReadSideEffect[-1] : &:r2083_22, ~m2083_26 -# 2083| m2083_28(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2083_22 -# 2083| m2083_29(unknown) = Chi : total:m2083_26, partial:m2083_28 -# 2083| r2083_30(glval) = CopyValue : r2083_15 -# 2084| r2084_1(glval) = VariableAddress[z] : -# 2084| r2084_2(glval) = FunctionAddress[operator=] : -# 2084| r2084_3(glval) = VariableAddress[a] : -# 2084| r2084_4(bool) = Load[a] : &:r2084_3, m2080_7 -# 2084| v2084_5(void) = ConditionalBranch : r2084_4 +# 2085| Block 7 +# 2085| m2085_7(unknown) = Phi : from 8:~m2085_36, from 9:~m2085_47 +# 2085| m2085_8(TernaryNonPodObj) = Phi : from 8:m2085_41, from 9:m2085_52 +# 2085| r2085_9(glval) = VariableAddress[#temp2085:9] : +# 2085| r2085_10(TernaryNonPodObj) = Load[#temp2085:9] : &:r2085_9, m2085_8 +# 2085| m2085_11(TernaryNonPodObj) = Store[#temp2085:9] : &:r2085_3, r2085_10 +# 2085| m2085_12(unknown) = Chi : total:m2085_7, partial:m2085_11 +# 2085| r2085_13(glval) = Convert : r2085_3 +# 2085| r2085_14(TernaryNonPodObj &) = CopyValue : r2085_13 +# 2085| r2085_15(TernaryNonPodObj &) = Call[operator=] : func:r2085_2, this:r2085_1, 0:r2085_14 +# 2085| m2085_16(unknown) = ^CallSideEffect : ~m2085_12 +# 2085| m2085_17(unknown) = Chi : total:m2085_12, partial:m2085_16 +# 2085| v2085_18(void) = ^IndirectReadSideEffect[-1] : &:r2085_1, m2084_21 +# 2085| v2085_19(void) = ^BufferReadSideEffect[0] : &:r2085_14, ~m2085_17 +# 2085| m2085_20(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2085_1 +# 2085| m2085_21(TernaryNonPodObj) = Chi : total:m2084_21, partial:m2085_20 +# 2085| r2085_22(glval) = CopyValue : r2085_3 +# 2085| r2085_23(glval) = FunctionAddress[~TernaryNonPodObj] : +# 2085| v2085_24(void) = Call[~TernaryNonPodObj] : func:r2085_23, this:r2085_22 +# 2085| m2085_25(unknown) = ^CallSideEffect : ~m2085_17 +# 2085| m2085_26(unknown) = Chi : total:m2085_17, partial:m2085_25 +# 2085| v2085_27(void) = ^IndirectReadSideEffect[-1] : &:r2085_22, ~m2085_26 +# 2085| m2085_28(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2085_22 +# 2085| m2085_29(unknown) = Chi : total:m2085_26, partial:m2085_28 +# 2085| r2085_30(glval) = CopyValue : r2085_15 +# 2086| r2086_1(glval) = VariableAddress[z] : +# 2086| r2086_2(glval) = FunctionAddress[operator=] : +# 2086| r2086_3(glval) = VariableAddress[a] : +# 2086| r2086_4(bool) = Load[a] : &:r2086_3, m2082_7 +# 2086| v2086_5(void) = ConditionalBranch : r2086_4 #-----| False -> Block 12 #-----| True -> Block 11 -# 2083| Block 8 -# 2083| r2083_31(glval) = VariableAddress[#temp2083:13] : -# 2083| m2083_32(TernaryNonPodObj) = Uninitialized[#temp2083:13] : &:r2083_31 -# 2083| r2083_33(glval) = FunctionAddress[TernaryNonPodObj] : -# 2083| v2083_34(void) = Call[TernaryNonPodObj] : func:r2083_33, this:r2083_31 -# 2083| m2083_35(unknown) = ^CallSideEffect : ~m2082_29 -# 2083| m2083_36(unknown) = Chi : total:m2082_29, partial:m2083_35 -# 2083| m2083_37(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2083_31 -# 2083| m2083_38(TernaryNonPodObj) = Chi : total:m2083_32, partial:m2083_37 -# 2083| r2083_39(TernaryNonPodObj) = Load[#temp2083:13] : &:r2083_31, m2083_38 -# 2083| r2083_40(glval) = VariableAddress[#temp2083:9] : -# 2083| m2083_41(TernaryNonPodObj) = Store[#temp2083:9] : &:r2083_40, r2083_39 +# 2085| Block 8 +# 2085| r2085_31(glval) = VariableAddress[#temp2085:13] : +# 2085| m2085_32(TernaryNonPodObj) = Uninitialized[#temp2085:13] : &:r2085_31 +# 2085| r2085_33(glval) = FunctionAddress[TernaryNonPodObj] : +# 2085| v2085_34(void) = Call[TernaryNonPodObj] : func:r2085_33, this:r2085_31 +# 2085| m2085_35(unknown) = ^CallSideEffect : ~m2084_29 +# 2085| m2085_36(unknown) = Chi : total:m2084_29, partial:m2085_35 +# 2085| m2085_37(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2085_31 +# 2085| m2085_38(TernaryNonPodObj) = Chi : total:m2085_32, partial:m2085_37 +# 2085| r2085_39(TernaryNonPodObj) = Load[#temp2085:13] : &:r2085_31, m2085_38 +# 2085| r2085_40(glval) = VariableAddress[#temp2085:9] : +# 2085| m2085_41(TernaryNonPodObj) = Store[#temp2085:9] : &:r2085_40, r2085_39 #-----| Goto -> Block 7 -# 2083| Block 9 -# 2083| r2083_42(glval) = VariableAddress[#temp2083:34] : -# 2083| m2083_43(TernaryNonPodObj) = Uninitialized[#temp2083:34] : &:r2083_42 -# 2083| r2083_44(glval) = FunctionAddress[TernaryNonPodObj] : -# 2083| v2083_45(void) = Call[TernaryNonPodObj] : func:r2083_44, this:r2083_42 -# 2083| m2083_46(unknown) = ^CallSideEffect : ~m2082_29 -# 2083| m2083_47(unknown) = Chi : total:m2082_29, partial:m2083_46 -# 2083| m2083_48(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2083_42 -# 2083| m2083_49(TernaryNonPodObj) = Chi : total:m2083_43, partial:m2083_48 -# 2083| r2083_50(TernaryNonPodObj) = Load[#temp2083:34] : &:r2083_42, m2083_49 -# 2083| r2083_51(glval) = VariableAddress[#temp2083:9] : -# 2083| m2083_52(TernaryNonPodObj) = Store[#temp2083:9] : &:r2083_51, r2083_50 +# 2085| Block 9 +# 2085| r2085_42(glval) = VariableAddress[#temp2085:34] : +# 2085| m2085_43(TernaryNonPodObj) = Uninitialized[#temp2085:34] : &:r2085_42 +# 2085| r2085_44(glval) = FunctionAddress[TernaryNonPodObj] : +# 2085| v2085_45(void) = Call[TernaryNonPodObj] : func:r2085_44, this:r2085_42 +# 2085| m2085_46(unknown) = ^CallSideEffect : ~m2084_29 +# 2085| m2085_47(unknown) = Chi : total:m2084_29, partial:m2085_46 +# 2085| m2085_48(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2085_42 +# 2085| m2085_49(TernaryNonPodObj) = Chi : total:m2085_43, partial:m2085_48 +# 2085| r2085_50(TernaryNonPodObj) = Load[#temp2085:34] : &:r2085_42, m2085_49 +# 2085| r2085_51(glval) = VariableAddress[#temp2085:9] : +# 2085| m2085_52(TernaryNonPodObj) = Store[#temp2085:9] : &:r2085_51, r2085_50 #-----| Goto -> Block 7 -# 2084| Block 10 -# 2084| m2084_6(glval) = Phi : from 11:m2084_49, from 12:m2084_52 -# 2084| r2084_7(glval) = VariableAddress[#temp2084:10] : -# 2084| r2084_8(glval) = Load[#temp2084:10] : &:r2084_7, m2084_6 -# 2084| r2084_9(glval) = Convert : r2084_8 -# 2084| r2084_10(TernaryNonPodObj &) = CopyValue : r2084_9 -# 2084| r2084_11(TernaryNonPodObj &) = Call[operator=] : func:r2084_2, this:r2084_1, 0:r2084_10 -# 2084| m2084_12(unknown) = ^CallSideEffect : ~m2083_29 -# 2084| m2084_13(unknown) = Chi : total:m2083_29, partial:m2084_12 -# 2084| v2084_14(void) = ^IndirectReadSideEffect[-1] : &:r2084_1, m2083_21 -# 2084| v2084_15(void) = ^BufferReadSideEffect[0] : &:r2084_10, ~m2080_13 -# 2084| m2084_16(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2084_1 -# 2084| m2084_17(TernaryNonPodObj) = Chi : total:m2083_21, partial:m2084_16 -# 2084| r2084_18(glval) = CopyValue : r2084_11 -# 2084| r2084_19(glval) = FunctionAddress[operator=] : -# 2084| r2084_20(glval) = VariableAddress[#temp2084:23] : -# 2084| m2084_21(TernaryNonPodObj) = Uninitialized[#temp2084:23] : &:r2084_20 -# 2084| m2084_22(unknown) = Chi : total:m2084_13, partial:m2084_21 -# 2084| r2084_23(glval) = FunctionAddress[TernaryNonPodObj] : -# 2084| v2084_24(void) = Call[TernaryNonPodObj] : func:r2084_23, this:r2084_20 -# 2084| m2084_25(unknown) = ^CallSideEffect : ~m2084_22 -# 2084| m2084_26(unknown) = Chi : total:m2084_22, partial:m2084_25 -# 2084| m2084_27(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2084_20 -# 2084| m2084_28(unknown) = Chi : total:m2084_26, partial:m2084_27 -# 2084| r2084_29(glval) = Convert : r2084_20 -# 2084| r2084_30(TernaryNonPodObj &) = CopyValue : r2084_29 -# 2084| r2084_31(TernaryNonPodObj &) = Call[operator=] : func:r2084_19, this:r2084_18, 0:r2084_30 -# 2084| m2084_32(unknown) = ^CallSideEffect : ~m2084_28 -# 2084| m2084_33(unknown) = Chi : total:m2084_28, partial:m2084_32 -# 2084| v2084_34(void) = ^IndirectReadSideEffect[-1] : &:r2084_18, m2084_17 -# 2084| v2084_35(void) = ^BufferReadSideEffect[0] : &:r2084_30, ~m2084_33 -# 2084| m2084_36(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2084_18 -# 2084| m2084_37(TernaryNonPodObj) = Chi : total:m2084_17, partial:m2084_36 -# 2084| r2084_38(glval) = CopyValue : r2084_20 -# 2084| r2084_39(glval) = FunctionAddress[~TernaryNonPodObj] : -# 2084| v2084_40(void) = Call[~TernaryNonPodObj] : func:r2084_39, this:r2084_38 -# 2084| m2084_41(unknown) = ^CallSideEffect : ~m2084_33 -# 2084| m2084_42(unknown) = Chi : total:m2084_33, partial:m2084_41 -# 2084| v2084_43(void) = ^IndirectReadSideEffect[-1] : &:r2084_38, ~m2084_42 -# 2084| m2084_44(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2084_38 -# 2084| m2084_45(unknown) = Chi : total:m2084_42, partial:m2084_44 -# 2084| r2084_46(glval) = CopyValue : r2084_31 -# 2085| v2085_1(void) = NoOp : -# 2080| v2080_16(void) = ReturnVoid : -# 2080| v2080_17(void) = AliasedUse : ~m2084_42 -# 2080| v2080_18(void) = ExitFunction : +# 2086| Block 10 +# 2086| m2086_6(glval) = Phi : from 11:m2086_49, from 12:m2086_52 +# 2086| r2086_7(glval) = VariableAddress[#temp2086:10] : +# 2086| r2086_8(glval) = Load[#temp2086:10] : &:r2086_7, m2086_6 +# 2086| r2086_9(glval) = Convert : r2086_8 +# 2086| r2086_10(TernaryNonPodObj &) = CopyValue : r2086_9 +# 2086| r2086_11(TernaryNonPodObj &) = Call[operator=] : func:r2086_2, this:r2086_1, 0:r2086_10 +# 2086| m2086_12(unknown) = ^CallSideEffect : ~m2085_29 +# 2086| m2086_13(unknown) = Chi : total:m2085_29, partial:m2086_12 +# 2086| v2086_14(void) = ^IndirectReadSideEffect[-1] : &:r2086_1, m2085_21 +# 2086| v2086_15(void) = ^BufferReadSideEffect[0] : &:r2086_10, ~m2082_13 +# 2086| m2086_16(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2086_1 +# 2086| m2086_17(TernaryNonPodObj) = Chi : total:m2085_21, partial:m2086_16 +# 2086| r2086_18(glval) = CopyValue : r2086_11 +# 2086| r2086_19(glval) = FunctionAddress[operator=] : +# 2086| r2086_20(glval) = VariableAddress[#temp2086:23] : +# 2086| m2086_21(TernaryNonPodObj) = Uninitialized[#temp2086:23] : &:r2086_20 +# 2086| m2086_22(unknown) = Chi : total:m2086_13, partial:m2086_21 +# 2086| r2086_23(glval) = FunctionAddress[TernaryNonPodObj] : +# 2086| v2086_24(void) = Call[TernaryNonPodObj] : func:r2086_23, this:r2086_20 +# 2086| m2086_25(unknown) = ^CallSideEffect : ~m2086_22 +# 2086| m2086_26(unknown) = Chi : total:m2086_22, partial:m2086_25 +# 2086| m2086_27(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2086_20 +# 2086| m2086_28(unknown) = Chi : total:m2086_26, partial:m2086_27 +# 2086| r2086_29(glval) = Convert : r2086_20 +# 2086| r2086_30(TernaryNonPodObj &) = CopyValue : r2086_29 +# 2086| r2086_31(TernaryNonPodObj &) = Call[operator=] : func:r2086_19, this:r2086_18, 0:r2086_30 +# 2086| m2086_32(unknown) = ^CallSideEffect : ~m2086_28 +# 2086| m2086_33(unknown) = Chi : total:m2086_28, partial:m2086_32 +# 2086| v2086_34(void) = ^IndirectReadSideEffect[-1] : &:r2086_18, m2086_17 +# 2086| v2086_35(void) = ^BufferReadSideEffect[0] : &:r2086_30, ~m2086_33 +# 2086| m2086_36(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2086_18 +# 2086| m2086_37(TernaryNonPodObj) = Chi : total:m2086_17, partial:m2086_36 +# 2086| r2086_38(glval) = CopyValue : r2086_20 +# 2086| r2086_39(glval) = FunctionAddress[~TernaryNonPodObj] : +# 2086| v2086_40(void) = Call[~TernaryNonPodObj] : func:r2086_39, this:r2086_38 +# 2086| m2086_41(unknown) = ^CallSideEffect : ~m2086_33 +# 2086| m2086_42(unknown) = Chi : total:m2086_33, partial:m2086_41 +# 2086| v2086_43(void) = ^IndirectReadSideEffect[-1] : &:r2086_38, ~m2086_42 +# 2086| m2086_44(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2086_38 +# 2086| m2086_45(unknown) = Chi : total:m2086_42, partial:m2086_44 +# 2086| r2086_46(glval) = CopyValue : r2086_31 +# 2087| v2087_1(void) = NoOp : +# 2082| v2082_16(void) = ReturnVoid : +# 2082| v2082_17(void) = AliasedUse : ~m2086_42 +# 2082| v2082_18(void) = ExitFunction : -# 2084| Block 11 -# 2084| r2084_47(glval) = VariableAddress[x] : -# 2084| r2084_48(glval) = VariableAddress[#temp2084:10] : -# 2084| m2084_49(glval) = Store[#temp2084:10] : &:r2084_48, r2084_47 +# 2086| Block 11 +# 2086| r2086_47(glval) = VariableAddress[x] : +# 2086| r2086_48(glval) = VariableAddress[#temp2086:10] : +# 2086| m2086_49(glval) = Store[#temp2086:10] : &:r2086_48, r2086_47 #-----| Goto -> Block 10 -# 2084| Block 12 -# 2084| r2084_50(glval) = VariableAddress[y] : -# 2084| r2084_51(glval) = VariableAddress[#temp2084:10] : -# 2084| m2084_52(glval) = Store[#temp2084:10] : &:r2084_51, r2084_50 +# 2086| Block 12 +# 2086| r2086_50(glval) = VariableAddress[y] : +# 2086| r2086_51(glval) = VariableAddress[#temp2086:10] : +# 2086| m2086_52(glval) = Store[#temp2086:10] : &:r2086_51, r2086_50 #-----| Goto -> Block 10 -# 2089| unsigned int CommaTest(unsigned int) -# 2089| Block 0 -# 2089| v2089_1(void) = EnterFunction : -# 2089| m2089_2(unknown) = AliasedDefinition : -# 2089| m2089_3(unknown) = InitializeNonLocal : -# 2089| m2089_4(unknown) = Chi : total:m2089_2, partial:m2089_3 -# 2089| r2089_5(glval) = VariableAddress[x] : -# 2089| m2089_6(unsigned int) = InitializeParameter[x] : &:r2089_5 -# 2090| r2090_1(glval) = VariableAddress[y] : -# 2090| m2090_2(unsigned int) = Uninitialized[y] : &:r2090_1 -# 2091| r2091_1(glval) = VariableAddress[x] : -# 2091| r2091_2(unsigned int) = Load[x] : &:r2091_1, m2089_6 -# 2091| r2091_3(unsigned int) = Constant[100] : -# 2091| r2091_4(bool) = CompareLT : r2091_2, r2091_3 -# 2091| v2091_5(void) = ConditionalBranch : r2091_4 +# 2091| unsigned int CommaTest(unsigned int) +# 2091| Block 0 +# 2091| v2091_1(void) = EnterFunction : +# 2091| m2091_2(unknown) = AliasedDefinition : +# 2091| m2091_3(unknown) = InitializeNonLocal : +# 2091| m2091_4(unknown) = Chi : total:m2091_2, partial:m2091_3 +# 2091| r2091_5(glval) = VariableAddress[x] : +# 2091| m2091_6(unsigned int) = InitializeParameter[x] : &:r2091_5 +# 2092| r2092_1(glval) = VariableAddress[y] : +# 2092| m2092_2(unsigned int) = Uninitialized[y] : &:r2092_1 +# 2093| r2093_1(glval) = VariableAddress[x] : +# 2093| r2093_2(unsigned int) = Load[x] : &:r2093_1, m2091_6 +# 2093| r2093_3(unsigned int) = Constant[100] : +# 2093| r2093_4(bool) = CompareLT : r2093_2, r2093_3 +# 2093| v2093_5(void) = ConditionalBranch : r2093_4 #-----| False -> Block 3 #-----| True -> Block 2 -# 2091| Block 1 -# 2091| m2091_6(unknown) = Phi : from 2:~m2092_6, from 3:~m2093_6 -# 2091| m2091_7(unsigned int) = Phi : from 2:m2091_13, from 3:m2091_15 -# 2091| r2091_8(glval) = VariableAddress[#temp2091:7] : -# 2091| r2091_9(unsigned int) = Load[#temp2091:7] : &:r2091_8, m2091_7 -# 2091| r2091_10(glval) = VariableAddress[y] : -# 2091| m2091_11(unsigned int) = Store[y] : &:r2091_10, r2091_9 -# 2094| r2094_1(glval) = VariableAddress[#return] : -# 2094| m2094_2(unsigned int) = Uninitialized[#return] : &:r2094_1 -# 2089| r2089_7(glval) = VariableAddress[#return] : -# 2089| v2089_8(void) = ReturnValue : &:r2089_7, m2094_2 -# 2089| v2089_9(void) = AliasedUse : ~m2091_6 -# 2089| v2089_10(void) = ExitFunction : +# 2093| Block 1 +# 2093| m2093_6(unknown) = Phi : from 2:~m2094_6, from 3:~m2095_6 +# 2093| m2093_7(unsigned int) = Phi : from 2:m2093_13, from 3:m2093_15 +# 2093| r2093_8(glval) = VariableAddress[#temp2093:7] : +# 2093| r2093_9(unsigned int) = Load[#temp2093:7] : &:r2093_8, m2093_7 +# 2093| r2093_10(glval) = VariableAddress[y] : +# 2093| m2093_11(unsigned int) = Store[y] : &:r2093_10, r2093_9 +# 2096| r2096_1(glval) = VariableAddress[#return] : +# 2096| m2096_2(unsigned int) = Uninitialized[#return] : &:r2096_1 +# 2091| r2091_7(glval) = VariableAddress[#return] : +# 2091| v2091_8(void) = ReturnValue : &:r2091_7, m2096_2 +# 2091| v2091_9(void) = AliasedUse : ~m2093_6 +# 2091| v2091_10(void) = ExitFunction : -# 2092| Block 2 -# 2092| r2092_1(glval) = FunctionAddress[CommaTestHelper] : -# 2092| r2092_2(glval) = VariableAddress[x] : -# 2092| r2092_3(unsigned int) = Load[x] : &:r2092_2, m2089_6 -# 2092| v2092_4(void) = Call[CommaTestHelper] : func:r2092_1, 0:r2092_3 -# 2092| m2092_5(unknown) = ^CallSideEffect : ~m2089_4 -# 2092| m2092_6(unknown) = Chi : total:m2089_4, partial:m2092_5 -# 2092| r2092_7(glval) = VariableAddress[x] : -# 2092| r2092_8(unsigned int) = Load[x] : &:r2092_7, m2089_6 -# 2092| r2092_9(unsigned int) = CopyValue : r2092_8 -# 2091| r2091_12(glval) = VariableAddress[#temp2091:7] : -# 2091| m2091_13(unsigned int) = Store[#temp2091:7] : &:r2091_12, r2092_9 +# 2094| Block 2 +# 2094| r2094_1(glval) = FunctionAddress[CommaTestHelper] : +# 2094| r2094_2(glval) = VariableAddress[x] : +# 2094| r2094_3(unsigned int) = Load[x] : &:r2094_2, m2091_6 +# 2094| v2094_4(void) = Call[CommaTestHelper] : func:r2094_1, 0:r2094_3 +# 2094| m2094_5(unknown) = ^CallSideEffect : ~m2091_4 +# 2094| m2094_6(unknown) = Chi : total:m2091_4, partial:m2094_5 +# 2094| r2094_7(glval) = VariableAddress[x] : +# 2094| r2094_8(unsigned int) = Load[x] : &:r2094_7, m2091_6 +# 2094| r2094_9(unsigned int) = CopyValue : r2094_8 +# 2093| r2093_12(glval) = VariableAddress[#temp2093:7] : +# 2093| m2093_13(unsigned int) = Store[#temp2093:7] : &:r2093_12, r2094_9 #-----| Goto -> Block 1 -# 2093| Block 3 -# 2093| r2093_1(glval) = FunctionAddress[CommaTestHelper] : -# 2093| r2093_2(glval) = VariableAddress[x] : -# 2093| r2093_3(unsigned int) = Load[x] : &:r2093_2, m2089_6 -# 2093| v2093_4(void) = Call[CommaTestHelper] : func:r2093_1, 0:r2093_3 -# 2093| m2093_5(unknown) = ^CallSideEffect : ~m2089_4 -# 2093| m2093_6(unknown) = Chi : total:m2089_4, partial:m2093_5 -# 2093| r2093_7(int) = Constant[10] : -# 2093| r2093_8(int) = CopyValue : r2093_7 -# 2093| r2093_9(unsigned int) = Convert : r2093_8 -# 2091| r2091_14(glval) = VariableAddress[#temp2091:7] : -# 2091| m2091_15(unsigned int) = Store[#temp2091:7] : &:r2091_14, r2093_9 +# 2095| Block 3 +# 2095| r2095_1(glval) = FunctionAddress[CommaTestHelper] : +# 2095| r2095_2(glval) = VariableAddress[x] : +# 2095| r2095_3(unsigned int) = Load[x] : &:r2095_2, m2091_6 +# 2095| v2095_4(void) = Call[CommaTestHelper] : func:r2095_1, 0:r2095_3 +# 2095| m2095_5(unknown) = ^CallSideEffect : ~m2091_4 +# 2095| m2095_6(unknown) = Chi : total:m2091_4, partial:m2095_5 +# 2095| r2095_7(int) = Constant[10] : +# 2095| r2095_8(int) = CopyValue : r2095_7 +# 2095| r2095_9(unsigned int) = Convert : r2095_8 +# 2093| r2093_14(glval) = VariableAddress[#temp2093:7] : +# 2093| m2093_15(unsigned int) = Store[#temp2093:7] : &:r2093_14, r2095_9 #-----| Goto -> Block 1 -# 2096| void NewDeleteMem() -# 2096| Block 0 -# 2096| v2096_1(void) = EnterFunction : -# 2096| m2096_2(unknown) = AliasedDefinition : -# 2096| m2096_3(unknown) = InitializeNonLocal : -# 2096| m2096_4(unknown) = Chi : total:m2096_2, partial:m2096_3 -# 2097| r2097_1(glval) = VariableAddress[x] : -# 2097| r2097_2(glval) = FunctionAddress[operator new] : -# 2097| r2097_3(unsigned long) = Constant[4] : -# 2097| r2097_4(void *) = Call[operator new] : func:r2097_2, 0:r2097_3 -# 2097| m2097_5(unknown) = ^CallSideEffect : ~m2096_4 -# 2097| m2097_6(unknown) = Chi : total:m2096_4, partial:m2097_5 -# 2097| m2097_7(unknown) = ^InitializeDynamicAllocation : &:r2097_4 -# 2097| m2097_8(unknown) = Chi : total:m2097_6, partial:m2097_7 -# 2097| r2097_9(int *) = Convert : r2097_4 -# 2097| m2097_10(int *) = Store[x] : &:r2097_1, r2097_9 -# 2098| r2098_1(int) = Constant[6] : -# 2098| r2098_2(glval) = VariableAddress[x] : -# 2098| r2098_3(int *) = Load[x] : &:r2098_2, m2097_10 -# 2098| r2098_4(glval) = CopyValue : r2098_3 -# 2098| m2098_5(int) = Store[?] : &:r2098_4, r2098_1 -# 2098| m2098_6(unknown) = Chi : total:m2097_8, partial:m2098_5 -# 2099| r2099_1(glval) = FunctionAddress[operator delete] : -# 2099| r2099_2(glval) = VariableAddress[x] : -# 2099| r2099_3(int *) = Load[x] : &:r2099_2, m2097_10 -# 2099| v2099_4(void) = Call[operator delete] : func:r2099_1, 0:r2099_3 -# 2099| m2099_5(unknown) = ^CallSideEffect : ~m2098_6 -# 2099| m2099_6(unknown) = Chi : total:m2098_6, partial:m2099_5 -# 2100| v2100_1(void) = NoOp : -# 2096| v2096_5(void) = ReturnVoid : -# 2096| v2096_6(void) = AliasedUse : ~m2099_6 -# 2096| v2096_7(void) = ExitFunction : +# 2098| void NewDeleteMem() +# 2098| Block 0 +# 2098| v2098_1(void) = EnterFunction : +# 2098| m2098_2(unknown) = AliasedDefinition : +# 2098| m2098_3(unknown) = InitializeNonLocal : +# 2098| m2098_4(unknown) = Chi : total:m2098_2, partial:m2098_3 +# 2099| r2099_1(glval) = VariableAddress[x] : +# 2099| r2099_2(glval) = FunctionAddress[operator new] : +# 2099| r2099_3(unsigned long) = Constant[4] : +# 2099| r2099_4(void *) = Call[operator new] : func:r2099_2, 0:r2099_3 +# 2099| m2099_5(unknown) = ^CallSideEffect : ~m2098_4 +# 2099| m2099_6(unknown) = Chi : total:m2098_4, partial:m2099_5 +# 2099| m2099_7(unknown) = ^InitializeDynamicAllocation : &:r2099_4 +# 2099| m2099_8(unknown) = Chi : total:m2099_6, partial:m2099_7 +# 2099| r2099_9(int *) = Convert : r2099_4 +# 2099| m2099_10(int *) = Store[x] : &:r2099_1, r2099_9 +# 2100| r2100_1(int) = Constant[6] : +# 2100| r2100_2(glval) = VariableAddress[x] : +# 2100| r2100_3(int *) = Load[x] : &:r2100_2, m2099_10 +# 2100| r2100_4(glval) = CopyValue : r2100_3 +# 2100| m2100_5(int) = Store[?] : &:r2100_4, r2100_1 +# 2100| m2100_6(unknown) = Chi : total:m2099_8, partial:m2100_5 +# 2101| r2101_1(glval) = FunctionAddress[operator delete] : +# 2101| r2101_2(glval) = VariableAddress[x] : +# 2101| r2101_3(int *) = Load[x] : &:r2101_2, m2099_10 +# 2101| v2101_4(void) = Call[operator delete] : func:r2101_1, 0:r2101_3 +# 2101| m2101_5(unknown) = ^CallSideEffect : ~m2100_6 +# 2101| m2101_6(unknown) = Chi : total:m2100_6, partial:m2101_5 +# 2102| v2102_1(void) = NoOp : +# 2098| v2098_5(void) = ReturnVoid : +# 2098| v2098_6(void) = AliasedUse : ~m2101_6 +# 2098| v2098_7(void) = ExitFunction : -# 2102| void Base2::Base2() -# 2102| Block 0 -# 2102| v2102_1(void) = EnterFunction : -# 2102| m2102_2(unknown) = AliasedDefinition : -# 2102| m2102_3(unknown) = InitializeNonLocal : -# 2102| m2102_4(unknown) = Chi : total:m2102_2, partial:m2102_3 -# 2102| r2102_5(glval) = VariableAddress[#this] : -# 2102| m2102_6(glval) = InitializeParameter[#this] : &:r2102_5 -# 2102| r2102_7(glval) = Load[#this] : &:r2102_5, m2102_6 -# 2102| m2102_8(Base2) = InitializeIndirection[#this] : &:r2102_7 -# 2102| v2102_9(void) = NoOp : -# 2102| v2102_10(void) = ReturnIndirection[#this] : &:r2102_7, m2102_8 -# 2102| v2102_11(void) = ReturnVoid : -# 2102| v2102_12(void) = AliasedUse : m2102_3 -# 2102| v2102_13(void) = ExitFunction : - -# 2104| void Base2::operator delete(void*) +# 2104| void Base2::Base2() # 2104| Block 0 -# 2104| v2104_1(void) = EnterFunction : -# 2104| m2104_2(unknown) = AliasedDefinition : -# 2104| m2104_3(unknown) = InitializeNonLocal : -# 2104| m2104_4(unknown) = Chi : total:m2104_2, partial:m2104_3 -# 2104| r2104_5(glval) = VariableAddress[p] : -# 2104| m2104_6(void *) = InitializeParameter[p] : &:r2104_5 -# 2104| r2104_7(void *) = Load[p] : &:r2104_5, m2104_6 -# 2104| m2104_8(unknown) = InitializeIndirection[p] : &:r2104_7 -# 2105| v2105_1(void) = NoOp : -# 2104| v2104_9(void) = ReturnIndirection[p] : &:r2104_7, m2104_8 -# 2104| v2104_10(void) = ReturnVoid : -# 2104| v2104_11(void) = AliasedUse : m2104_3 -# 2104| v2104_12(void) = ExitFunction : +# 2104| v2104_1(void) = EnterFunction : +# 2104| m2104_2(unknown) = AliasedDefinition : +# 2104| m2104_3(unknown) = InitializeNonLocal : +# 2104| m2104_4(unknown) = Chi : total:m2104_2, partial:m2104_3 +# 2104| r2104_5(glval) = VariableAddress[#this] : +# 2104| m2104_6(glval) = InitializeParameter[#this] : &:r2104_5 +# 2104| r2104_7(glval) = Load[#this] : &:r2104_5, m2104_6 +# 2104| m2104_8(Base2) = InitializeIndirection[#this] : &:r2104_7 +# 2104| v2104_9(void) = NoOp : +# 2104| v2104_10(void) = ReturnIndirection[#this] : &:r2104_7, m2104_8 +# 2104| v2104_11(void) = ReturnVoid : +# 2104| v2104_12(void) = AliasedUse : m2104_3 +# 2104| v2104_13(void) = ExitFunction : -# 2106| void Base2::~Base2() +# 2106| void Base2::operator delete(void*) # 2106| Block 0 -# 2106| v2106_1(void) = EnterFunction : -# 2106| m2106_2(unknown) = AliasedDefinition : -# 2106| m2106_3(unknown) = InitializeNonLocal : -# 2106| m2106_4(unknown) = Chi : total:m2106_2, partial:m2106_3 -# 2106| r2106_5(glval) = VariableAddress[#this] : -# 2106| m2106_6(glval) = InitializeParameter[#this] : &:r2106_5 -# 2106| r2106_7(glval) = Load[#this] : &:r2106_5, m2106_6 -# 2106| m2106_8(Base2) = InitializeIndirection[#this] : &:r2106_7 -# 2106| v2106_9(void) = NoOp : -# 2106| v2106_10(void) = ReturnIndirection[#this] : &:r2106_7, m2106_8 -# 2106| v2106_11(void) = ReturnVoid : -# 2106| v2106_12(void) = AliasedUse : m2106_3 -# 2106| v2106_13(void) = ExitFunction : +# 2106| v2106_1(void) = EnterFunction : +# 2106| m2106_2(unknown) = AliasedDefinition : +# 2106| m2106_3(unknown) = InitializeNonLocal : +# 2106| m2106_4(unknown) = Chi : total:m2106_2, partial:m2106_3 +# 2106| r2106_5(glval) = VariableAddress[p] : +# 2106| m2106_6(void *) = InitializeParameter[p] : &:r2106_5 +# 2106| r2106_7(void *) = Load[p] : &:r2106_5, m2106_6 +# 2106| m2106_8(unknown) = InitializeIndirection[p] : &:r2106_7 +# 2107| v2107_1(void) = NoOp : +# 2106| v2106_9(void) = ReturnIndirection[p] : &:r2106_7, m2106_8 +# 2106| v2106_10(void) = ReturnVoid : +# 2106| v2106_11(void) = AliasedUse : m2106_3 +# 2106| v2106_12(void) = ExitFunction : -# 2109| void Derived2::Derived2() -# 2109| Block 0 -# 2109| v2109_1(void) = EnterFunction : -# 2109| m2109_2(unknown) = AliasedDefinition : -# 2109| m2109_3(unknown) = InitializeNonLocal : -# 2109| m2109_4(unknown) = Chi : total:m2109_2, partial:m2109_3 -# 2109| r2109_5(glval) = VariableAddress[#this] : -# 2109| m2109_6(glval) = InitializeParameter[#this] : &:r2109_5 -# 2109| r2109_7(glval) = Load[#this] : &:r2109_5, m2109_6 -# 2109| m2109_8(Derived2) = InitializeIndirection[#this] : &:r2109_7 -# 2109| r2109_9(glval) = ConvertToNonVirtualBase[Derived2 : Base2] : r2109_7 -# 2109| r2109_10(glval) = FunctionAddress[Base2] : -# 2109| v2109_11(void) = Call[Base2] : func:r2109_10, this:r2109_9 -# 2109| m2109_12(unknown) = ^CallSideEffect : ~m2109_4 -# 2109| m2109_13(unknown) = Chi : total:m2109_4, partial:m2109_12 -# 2109| m2109_14(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2109_9 -# 2109| m2109_15(unknown) = Chi : total:m2109_8, partial:m2109_14 -# 2109| v2109_16(void) = NoOp : -# 2109| v2109_17(void) = ReturnIndirection[#this] : &:r2109_7, m2109_15 -# 2109| v2109_18(void) = ReturnVoid : -# 2109| v2109_19(void) = AliasedUse : ~m2109_13 -# 2109| v2109_20(void) = ExitFunction : +# 2108| void Base2::~Base2() +# 2108| Block 0 +# 2108| v2108_1(void) = EnterFunction : +# 2108| m2108_2(unknown) = AliasedDefinition : +# 2108| m2108_3(unknown) = InitializeNonLocal : +# 2108| m2108_4(unknown) = Chi : total:m2108_2, partial:m2108_3 +# 2108| r2108_5(glval) = VariableAddress[#this] : +# 2108| m2108_6(glval) = InitializeParameter[#this] : &:r2108_5 +# 2108| r2108_7(glval) = Load[#this] : &:r2108_5, m2108_6 +# 2108| m2108_8(Base2) = InitializeIndirection[#this] : &:r2108_7 +# 2108| v2108_9(void) = NoOp : +# 2108| v2108_10(void) = ReturnIndirection[#this] : &:r2108_7, m2108_8 +# 2108| v2108_11(void) = ReturnVoid : +# 2108| v2108_12(void) = AliasedUse : m2108_3 +# 2108| v2108_13(void) = ExitFunction : -# 2112| void Derived2::~Derived2() -# 2112| Block 0 -# 2112| v2112_1(void) = EnterFunction : -# 2112| m2112_2(unknown) = AliasedDefinition : -# 2112| m2112_3(unknown) = InitializeNonLocal : -# 2112| m2112_4(unknown) = Chi : total:m2112_2, partial:m2112_3 -# 2112| r2112_5(glval) = VariableAddress[#this] : -# 2112| m2112_6(glval) = InitializeParameter[#this] : &:r2112_5 -# 2112| r2112_7(glval) = Load[#this] : &:r2112_5, m2112_6 -# 2112| m2112_8(Derived2) = InitializeIndirection[#this] : &:r2112_7 -# 2112| m2112_9(unknown) = Chi : total:m2112_4, partial:m2112_8 -# 2112| v2112_10(void) = NoOp : -# 2112| r2112_11(glval) = ConvertToNonVirtualBase[Derived2 : Base2] : r2112_7 -# 2112| r2112_12(glval) = FunctionAddress[~Base2] : -# 2112| v2112_13(void) = Call[~Base2] : func:r2112_12, this:r2112_11 -# 2112| m2112_14(unknown) = ^CallSideEffect : ~m2112_9 -# 2112| m2112_15(unknown) = Chi : total:m2112_9, partial:m2112_14 -# 2112| v2112_16(void) = ReturnIndirection[#this] : &:r2112_7, ~m2112_15 -# 2112| v2112_17(void) = ReturnVoid : -# 2112| v2112_18(void) = AliasedUse : ~m2112_15 -# 2112| v2112_19(void) = ExitFunction : +# 2111| void Derived2::Derived2() +# 2111| Block 0 +# 2111| v2111_1(void) = EnterFunction : +# 2111| m2111_2(unknown) = AliasedDefinition : +# 2111| m2111_3(unknown) = InitializeNonLocal : +# 2111| m2111_4(unknown) = Chi : total:m2111_2, partial:m2111_3 +# 2111| r2111_5(glval) = VariableAddress[#this] : +# 2111| m2111_6(glval) = InitializeParameter[#this] : &:r2111_5 +# 2111| r2111_7(glval) = Load[#this] : &:r2111_5, m2111_6 +# 2111| m2111_8(Derived2) = InitializeIndirection[#this] : &:r2111_7 +# 2111| r2111_9(glval) = ConvertToNonVirtualBase[Derived2 : Base2] : r2111_7 +# 2111| r2111_10(glval) = FunctionAddress[Base2] : +# 2111| v2111_11(void) = Call[Base2] : func:r2111_10, this:r2111_9 +# 2111| m2111_12(unknown) = ^CallSideEffect : ~m2111_4 +# 2111| m2111_13(unknown) = Chi : total:m2111_4, partial:m2111_12 +# 2111| m2111_14(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2111_9 +# 2111| m2111_15(unknown) = Chi : total:m2111_8, partial:m2111_14 +# 2111| v2111_16(void) = NoOp : +# 2111| v2111_17(void) = ReturnIndirection[#this] : &:r2111_7, m2111_15 +# 2111| v2111_18(void) = ReturnVoid : +# 2111| v2111_19(void) = AliasedUse : ~m2111_13 +# 2111| v2111_20(void) = ExitFunction : -# 2114| void Derived2::operator delete(void*) +# 2114| void Derived2::~Derived2() # 2114| Block 0 -# 2114| v2114_1(void) = EnterFunction : -# 2114| m2114_2(unknown) = AliasedDefinition : -# 2114| m2114_3(unknown) = InitializeNonLocal : -# 2114| m2114_4(unknown) = Chi : total:m2114_2, partial:m2114_3 -# 2114| r2114_5(glval) = VariableAddress[p] : -# 2114| m2114_6(void *) = InitializeParameter[p] : &:r2114_5 -# 2114| r2114_7(void *) = Load[p] : &:r2114_5, m2114_6 -# 2114| m2114_8(unknown) = InitializeIndirection[p] : &:r2114_7 -# 2115| v2115_1(void) = NoOp : -# 2114| v2114_9(void) = ReturnIndirection[p] : &:r2114_7, m2114_8 -# 2114| v2114_10(void) = ReturnVoid : -# 2114| v2114_11(void) = AliasedUse : m2114_3 -# 2114| v2114_12(void) = ExitFunction : +# 2114| v2114_1(void) = EnterFunction : +# 2114| m2114_2(unknown) = AliasedDefinition : +# 2114| m2114_3(unknown) = InitializeNonLocal : +# 2114| m2114_4(unknown) = Chi : total:m2114_2, partial:m2114_3 +# 2114| r2114_5(glval) = VariableAddress[#this] : +# 2114| m2114_6(glval) = InitializeParameter[#this] : &:r2114_5 +# 2114| r2114_7(glval) = Load[#this] : &:r2114_5, m2114_6 +# 2114| m2114_8(Derived2) = InitializeIndirection[#this] : &:r2114_7 +# 2114| m2114_9(unknown) = Chi : total:m2114_4, partial:m2114_8 +# 2114| v2114_10(void) = NoOp : +# 2114| r2114_11(glval) = ConvertToNonVirtualBase[Derived2 : Base2] : r2114_7 +# 2114| r2114_12(glval) = FunctionAddress[~Base2] : +# 2114| v2114_13(void) = Call[~Base2] : func:r2114_12, this:r2114_11 +# 2114| m2114_14(unknown) = ^CallSideEffect : ~m2114_9 +# 2114| m2114_15(unknown) = Chi : total:m2114_9, partial:m2114_14 +# 2114| v2114_16(void) = ReturnIndirection[#this] : &:r2114_7, ~m2114_15 +# 2114| v2114_17(void) = ReturnVoid : +# 2114| v2114_18(void) = AliasedUse : ~m2114_15 +# 2114| v2114_19(void) = ExitFunction : -# 2119| int virtual_delete() -# 2119| Block 0 -# 2119| v2119_1(void) = EnterFunction : -# 2119| m2119_2(unknown) = AliasedDefinition : -# 2119| m2119_3(unknown) = InitializeNonLocal : -# 2119| m2119_4(unknown) = Chi : total:m2119_2, partial:m2119_3 -# 2121| r2121_1(glval) = VariableAddress[b1] : -# 2121| r2121_2(glval) = FunctionAddress[operator new] : -# 2121| r2121_3(unsigned long) = Constant[8] : -# 2121| r2121_4(void *) = Call[operator new] : func:r2121_2, 0:r2121_3 -# 2121| m2121_5(unknown) = ^CallSideEffect : ~m2119_4 -# 2121| m2121_6(unknown) = Chi : total:m2119_4, partial:m2121_5 -# 2121| m2121_7(unknown) = ^InitializeDynamicAllocation : &:r2121_4 -# 2121| m2121_8(unknown) = Chi : total:m2121_6, partial:m2121_7 -# 2121| r2121_9(Base2 *) = Convert : r2121_4 -# 2121| r2121_10(glval) = FunctionAddress[Base2] : -# 2121| v2121_11(void) = Call[Base2] : func:r2121_10, this:r2121_9 -# 2121| m2121_12(unknown) = ^CallSideEffect : ~m2121_8 -# 2121| m2121_13(unknown) = Chi : total:m2121_8, partial:m2121_12 -# 2121| m2121_14(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2121_9 -# 2121| m2121_15(unknown) = Chi : total:m2121_13, partial:m2121_14 -# 2121| m2121_16(Base2 *) = Store[b1] : &:r2121_1, r2121_9 -# 2121| m2121_17(unknown) = Chi : total:m2121_15, partial:m2121_16 -# 2122| r2122_1(glval) = VariableAddress[b1] : -# 2122| r2122_2(Base2 *) = Load[b1] : &:r2122_1, m2121_16 -# 2122| r2122_3(glval) = FunctionAddress[~Base2] : -# 2122| v2122_4(void) = Call[~Base2] : func:r2122_3 -# 2122| m2122_5(unknown) = ^CallSideEffect : ~m2121_17 -# 2122| m2122_6(unknown) = Chi : total:m2121_17, partial:m2122_5 -# 2122| v2122_7(void) = ^IndirectReadSideEffect[-1] : &:r2122_2, ~m2122_6 -# 2122| m2122_8(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2122_2 -# 2122| m2122_9(unknown) = Chi : total:m2122_6, partial:m2122_8 -# 2122| r2122_10(glval) = VirtualDeleteFunctionAddress : -# 2122| r2122_11(Base2 *) = CopyValue : r2122_1 -# 2122| v2122_12(void) = Call[?] : func:r2122_10, 0:r2122_11 -# 2122| m2122_13(unknown) = ^CallSideEffect : ~m2122_9 -# 2122| m2122_14(unknown) = Chi : total:m2122_9, partial:m2122_13 -# 2124| r2124_1(glval) = VariableAddress[b2] : -# 2124| r2124_2(glval) = FunctionAddress[operator new] : -# 2124| r2124_3(unsigned long) = Constant[16] : -# 2124| r2124_4(void *) = Call[operator new] : func:r2124_2, 0:r2124_3 -# 2124| m2124_5(unknown) = ^CallSideEffect : ~m2122_14 -# 2124| m2124_6(unknown) = Chi : total:m2122_14, partial:m2124_5 -# 2124| m2124_7(unknown) = ^InitializeDynamicAllocation : &:r2124_4 -# 2124| m2124_8(unknown) = Chi : total:m2124_6, partial:m2124_7 -# 2124| r2124_9(Derived2 *) = Convert : r2124_4 -# 2124| r2124_10(glval) = FunctionAddress[Derived2] : -# 2124| v2124_11(void) = Call[Derived2] : func:r2124_10, this:r2124_9 -# 2124| m2124_12(unknown) = ^CallSideEffect : ~m2124_8 -# 2124| m2124_13(unknown) = Chi : total:m2124_8, partial:m2124_12 -# 2124| m2124_14(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2124_9 -# 2124| m2124_15(unknown) = Chi : total:m2124_13, partial:m2124_14 -# 2124| r2124_16(Base2 *) = ConvertToNonVirtualBase[Derived2 : Base2] : r2124_9 -# 2124| m2124_17(Base2 *) = Store[b2] : &:r2124_1, r2124_16 -# 2124| m2124_18(unknown) = Chi : total:m2124_15, partial:m2124_17 -# 2125| r2125_1(glval) = VariableAddress[b2] : -# 2125| r2125_2(Base2 *) = Load[b2] : &:r2125_1, m2124_17 -# 2125| r2125_3(glval) = FunctionAddress[~Base2] : -# 2125| v2125_4(void) = Call[~Base2] : func:r2125_3 -# 2125| m2125_5(unknown) = ^CallSideEffect : ~m2124_18 -# 2125| m2125_6(unknown) = Chi : total:m2124_18, partial:m2125_5 -# 2125| v2125_7(void) = ^IndirectReadSideEffect[-1] : &:r2125_2, ~m2125_6 -# 2125| m2125_8(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2125_2 -# 2125| m2125_9(unknown) = Chi : total:m2125_6, partial:m2125_8 -# 2125| r2125_10(glval) = VirtualDeleteFunctionAddress : -# 2125| r2125_11(Base2 *) = CopyValue : r2125_1 -# 2125| v2125_12(void) = Call[?] : func:r2125_10, 0:r2125_11 -# 2125| m2125_13(unknown) = ^CallSideEffect : ~m2125_9 -# 2125| m2125_14(unknown) = Chi : total:m2125_9, partial:m2125_13 -# 2127| r2127_1(glval) = VariableAddress[d] : -# 2127| r2127_2(glval) = FunctionAddress[operator new] : -# 2127| r2127_3(unsigned long) = Constant[16] : -# 2127| r2127_4(void *) = Call[operator new] : func:r2127_2, 0:r2127_3 -# 2127| m2127_5(unknown) = ^CallSideEffect : ~m2125_14 -# 2127| m2127_6(unknown) = Chi : total:m2125_14, partial:m2127_5 -# 2127| m2127_7(unknown) = ^InitializeDynamicAllocation : &:r2127_4 -# 2127| m2127_8(unknown) = Chi : total:m2127_6, partial:m2127_7 -# 2127| r2127_9(Derived2 *) = Convert : r2127_4 -# 2127| r2127_10(glval) = FunctionAddress[Derived2] : -# 2127| v2127_11(void) = Call[Derived2] : func:r2127_10, this:r2127_9 -# 2127| m2127_12(unknown) = ^CallSideEffect : ~m2127_8 -# 2127| m2127_13(unknown) = Chi : total:m2127_8, partial:m2127_12 -# 2127| m2127_14(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2127_9 -# 2127| m2127_15(unknown) = Chi : total:m2127_13, partial:m2127_14 -# 2127| m2127_16(Derived2 *) = Store[d] : &:r2127_1, r2127_9 -# 2127| m2127_17(unknown) = Chi : total:m2127_15, partial:m2127_16 -# 2128| r2128_1(glval) = VariableAddress[d] : -# 2128| r2128_2(Derived2 *) = Load[d] : &:r2128_1, m2127_16 -# 2128| r2128_3(glval) = FunctionAddress[~Derived2] : -# 2128| v2128_4(void) = Call[~Derived2] : func:r2128_3 -# 2128| m2128_5(unknown) = ^CallSideEffect : ~m2127_17 -# 2128| m2128_6(unknown) = Chi : total:m2127_17, partial:m2128_5 -# 2128| v2128_7(void) = ^IndirectReadSideEffect[-1] : &:r2128_2, ~m2128_6 -# 2128| m2128_8(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2128_2 -# 2128| m2128_9(unknown) = Chi : total:m2128_6, partial:m2128_8 -# 2128| r2128_10(glval) = VirtualDeleteFunctionAddress : -# 2128| r2128_11(Derived2 *) = CopyValue : r2128_1 -# 2128| v2128_12(void) = Call[?] : func:r2128_10, 0:r2128_11 -# 2128| m2128_13(unknown) = ^CallSideEffect : ~m2128_9 -# 2128| m2128_14(unknown) = Chi : total:m2128_9, partial:m2128_13 -# 2129| r2129_1(glval) = VariableAddress[#return] : -# 2129| m2129_2(int) = Uninitialized[#return] : &:r2129_1 -# 2119| r2119_5(glval) = VariableAddress[#return] : -# 2119| v2119_6(void) = ReturnValue : &:r2119_5, m2129_2 -# 2119| v2119_7(void) = AliasedUse : ~m2128_14 -# 2119| v2119_8(void) = ExitFunction : +# 2116| void Derived2::operator delete(void*) +# 2116| Block 0 +# 2116| v2116_1(void) = EnterFunction : +# 2116| m2116_2(unknown) = AliasedDefinition : +# 2116| m2116_3(unknown) = InitializeNonLocal : +# 2116| m2116_4(unknown) = Chi : total:m2116_2, partial:m2116_3 +# 2116| r2116_5(glval) = VariableAddress[p] : +# 2116| m2116_6(void *) = InitializeParameter[p] : &:r2116_5 +# 2116| r2116_7(void *) = Load[p] : &:r2116_5, m2116_6 +# 2116| m2116_8(unknown) = InitializeIndirection[p] : &:r2116_7 +# 2117| v2117_1(void) = NoOp : +# 2116| v2116_9(void) = ReturnIndirection[p] : &:r2116_7, m2116_8 +# 2116| v2116_10(void) = ReturnVoid : +# 2116| v2116_11(void) = AliasedUse : m2116_3 +# 2116| v2116_12(void) = ExitFunction : -# 2133| void test_constant_folding() -# 2133| Block 0 -# 2133| v2133_1(void) = EnterFunction : -# 2133| m2133_2(unknown) = AliasedDefinition : -# 2133| m2133_3(unknown) = InitializeNonLocal : -# 2133| m2133_4(unknown) = Chi : total:m2133_2, partial:m2133_3 -# 2134| r2134_1(glval) = VariableAddress[x] : -# 2134| r2134_2(int) = Constant[116] : -# 2134| m2134_3(int) = Store[x] : &:r2134_1, r2134_2 -# 2135| r2135_1(glval) = FunctionAddress[test_constant_folding_use] : -# 2135| r2135_2(int) = Constant[116] : -# 2135| v2135_3(void) = Call[test_constant_folding_use] : func:r2135_1, 0:r2135_2 -# 2135| m2135_4(unknown) = ^CallSideEffect : ~m2133_4 -# 2135| m2135_5(unknown) = Chi : total:m2133_4, partial:m2135_4 -# 2136| v2136_1(void) = NoOp : -# 2133| v2133_5(void) = ReturnVoid : -# 2133| v2133_6(void) = AliasedUse : ~m2135_5 -# 2133| v2133_7(void) = ExitFunction : +# 2121| int virtual_delete() +# 2121| Block 0 +# 2121| v2121_1(void) = EnterFunction : +# 2121| m2121_2(unknown) = AliasedDefinition : +# 2121| m2121_3(unknown) = InitializeNonLocal : +# 2121| m2121_4(unknown) = Chi : total:m2121_2, partial:m2121_3 +# 2123| r2123_1(glval) = VariableAddress[b1] : +# 2123| r2123_2(glval) = FunctionAddress[operator new] : +# 2123| r2123_3(unsigned long) = Constant[8] : +# 2123| r2123_4(void *) = Call[operator new] : func:r2123_2, 0:r2123_3 +# 2123| m2123_5(unknown) = ^CallSideEffect : ~m2121_4 +# 2123| m2123_6(unknown) = Chi : total:m2121_4, partial:m2123_5 +# 2123| m2123_7(unknown) = ^InitializeDynamicAllocation : &:r2123_4 +# 2123| m2123_8(unknown) = Chi : total:m2123_6, partial:m2123_7 +# 2123| r2123_9(Base2 *) = Convert : r2123_4 +# 2123| r2123_10(glval) = FunctionAddress[Base2] : +# 2123| v2123_11(void) = Call[Base2] : func:r2123_10, this:r2123_9 +# 2123| m2123_12(unknown) = ^CallSideEffect : ~m2123_8 +# 2123| m2123_13(unknown) = Chi : total:m2123_8, partial:m2123_12 +# 2123| m2123_14(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2123_9 +# 2123| m2123_15(unknown) = Chi : total:m2123_13, partial:m2123_14 +# 2123| m2123_16(Base2 *) = Store[b1] : &:r2123_1, r2123_9 +# 2123| m2123_17(unknown) = Chi : total:m2123_15, partial:m2123_16 +# 2124| r2124_1(glval) = VariableAddress[b1] : +# 2124| r2124_2(Base2 *) = Load[b1] : &:r2124_1, m2123_16 +# 2124| r2124_3(glval) = FunctionAddress[~Base2] : +# 2124| v2124_4(void) = Call[~Base2] : func:r2124_3 +# 2124| m2124_5(unknown) = ^CallSideEffect : ~m2123_17 +# 2124| m2124_6(unknown) = Chi : total:m2123_17, partial:m2124_5 +# 2124| v2124_7(void) = ^IndirectReadSideEffect[-1] : &:r2124_2, ~m2124_6 +# 2124| m2124_8(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2124_2 +# 2124| m2124_9(unknown) = Chi : total:m2124_6, partial:m2124_8 +# 2124| r2124_10(glval) = VirtualDeleteFunctionAddress : +# 2124| r2124_11(Base2 *) = CopyValue : r2124_1 +# 2124| v2124_12(void) = Call[?] : func:r2124_10, 0:r2124_11 +# 2124| m2124_13(unknown) = ^CallSideEffect : ~m2124_9 +# 2124| m2124_14(unknown) = Chi : total:m2124_9, partial:m2124_13 +# 2126| r2126_1(glval) = VariableAddress[b2] : +# 2126| r2126_2(glval) = FunctionAddress[operator new] : +# 2126| r2126_3(unsigned long) = Constant[16] : +# 2126| r2126_4(void *) = Call[operator new] : func:r2126_2, 0:r2126_3 +# 2126| m2126_5(unknown) = ^CallSideEffect : ~m2124_14 +# 2126| m2126_6(unknown) = Chi : total:m2124_14, partial:m2126_5 +# 2126| m2126_7(unknown) = ^InitializeDynamicAllocation : &:r2126_4 +# 2126| m2126_8(unknown) = Chi : total:m2126_6, partial:m2126_7 +# 2126| r2126_9(Derived2 *) = Convert : r2126_4 +# 2126| r2126_10(glval) = FunctionAddress[Derived2] : +# 2126| v2126_11(void) = Call[Derived2] : func:r2126_10, this:r2126_9 +# 2126| m2126_12(unknown) = ^CallSideEffect : ~m2126_8 +# 2126| m2126_13(unknown) = Chi : total:m2126_8, partial:m2126_12 +# 2126| m2126_14(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2126_9 +# 2126| m2126_15(unknown) = Chi : total:m2126_13, partial:m2126_14 +# 2126| r2126_16(Base2 *) = ConvertToNonVirtualBase[Derived2 : Base2] : r2126_9 +# 2126| m2126_17(Base2 *) = Store[b2] : &:r2126_1, r2126_16 +# 2126| m2126_18(unknown) = Chi : total:m2126_15, partial:m2126_17 +# 2127| r2127_1(glval) = VariableAddress[b2] : +# 2127| r2127_2(Base2 *) = Load[b2] : &:r2127_1, m2126_17 +# 2127| r2127_3(glval) = FunctionAddress[~Base2] : +# 2127| v2127_4(void) = Call[~Base2] : func:r2127_3 +# 2127| m2127_5(unknown) = ^CallSideEffect : ~m2126_18 +# 2127| m2127_6(unknown) = Chi : total:m2126_18, partial:m2127_5 +# 2127| v2127_7(void) = ^IndirectReadSideEffect[-1] : &:r2127_2, ~m2127_6 +# 2127| m2127_8(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2127_2 +# 2127| m2127_9(unknown) = Chi : total:m2127_6, partial:m2127_8 +# 2127| r2127_10(glval) = VirtualDeleteFunctionAddress : +# 2127| r2127_11(Base2 *) = CopyValue : r2127_1 +# 2127| v2127_12(void) = Call[?] : func:r2127_10, 0:r2127_11 +# 2127| m2127_13(unknown) = ^CallSideEffect : ~m2127_9 +# 2127| m2127_14(unknown) = Chi : total:m2127_9, partial:m2127_13 +# 2129| r2129_1(glval) = VariableAddress[d] : +# 2129| r2129_2(glval) = FunctionAddress[operator new] : +# 2129| r2129_3(unsigned long) = Constant[16] : +# 2129| r2129_4(void *) = Call[operator new] : func:r2129_2, 0:r2129_3 +# 2129| m2129_5(unknown) = ^CallSideEffect : ~m2127_14 +# 2129| m2129_6(unknown) = Chi : total:m2127_14, partial:m2129_5 +# 2129| m2129_7(unknown) = ^InitializeDynamicAllocation : &:r2129_4 +# 2129| m2129_8(unknown) = Chi : total:m2129_6, partial:m2129_7 +# 2129| r2129_9(Derived2 *) = Convert : r2129_4 +# 2129| r2129_10(glval) = FunctionAddress[Derived2] : +# 2129| v2129_11(void) = Call[Derived2] : func:r2129_10, this:r2129_9 +# 2129| m2129_12(unknown) = ^CallSideEffect : ~m2129_8 +# 2129| m2129_13(unknown) = Chi : total:m2129_8, partial:m2129_12 +# 2129| m2129_14(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2129_9 +# 2129| m2129_15(unknown) = Chi : total:m2129_13, partial:m2129_14 +# 2129| m2129_16(Derived2 *) = Store[d] : &:r2129_1, r2129_9 +# 2129| m2129_17(unknown) = Chi : total:m2129_15, partial:m2129_16 +# 2130| r2130_1(glval) = VariableAddress[d] : +# 2130| r2130_2(Derived2 *) = Load[d] : &:r2130_1, m2129_16 +# 2130| r2130_3(glval) = FunctionAddress[~Derived2] : +# 2130| v2130_4(void) = Call[~Derived2] : func:r2130_3 +# 2130| m2130_5(unknown) = ^CallSideEffect : ~m2129_17 +# 2130| m2130_6(unknown) = Chi : total:m2129_17, partial:m2130_5 +# 2130| v2130_7(void) = ^IndirectReadSideEffect[-1] : &:r2130_2, ~m2130_6 +# 2130| m2130_8(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2130_2 +# 2130| m2130_9(unknown) = Chi : total:m2130_6, partial:m2130_8 +# 2130| r2130_10(glval) = VirtualDeleteFunctionAddress : +# 2130| r2130_11(Derived2 *) = CopyValue : r2130_1 +# 2130| v2130_12(void) = Call[?] : func:r2130_10, 0:r2130_11 +# 2130| m2130_13(unknown) = ^CallSideEffect : ~m2130_9 +# 2130| m2130_14(unknown) = Chi : total:m2130_9, partial:m2130_13 +# 2131| r2131_1(glval) = VariableAddress[#return] : +# 2131| m2131_2(int) = Uninitialized[#return] : &:r2131_1 +# 2121| r2121_5(glval) = VariableAddress[#return] : +# 2121| v2121_6(void) = ReturnValue : &:r2121_5, m2131_2 +# 2121| v2121_7(void) = AliasedUse : ~m2130_14 +# 2121| v2121_8(void) = ExitFunction : -# 2140| int NonExit() -# 2140| Block 0 -# 2140| v2140_1(void) = EnterFunction : -# 2140| m2140_2(unknown) = AliasedDefinition : -# 2140| m2140_3(unknown) = InitializeNonLocal : -# 2140| m2140_4(unknown) = Chi : total:m2140_2, partial:m2140_3 -# 2141| r2141_1(glval) = VariableAddress[x] : -# 2141| r2141_2(glval) = FunctionAddress[Add] : -# 2141| r2141_3(int) = Constant[3] : -# 2141| r2141_4(int) = Constant[4] : -# 2141| r2141_5(int) = Call[Add] : func:r2141_2, 0:r2141_3, 1:r2141_4 -# 2141| m2141_6(unknown) = ^CallSideEffect : ~m2140_4 -# 2141| m2141_7(unknown) = Chi : total:m2140_4, partial:m2141_6 -# 2141| m2141_8(int) = Store[x] : &:r2141_1, r2141_5 -# 2142| r2142_1(glval) = VariableAddress[x] : -# 2142| r2142_2(int) = Load[x] : &:r2142_1, m2141_8 -# 2142| r2142_3(int) = Constant[7] : -# 2142| r2142_4(bool) = CompareEQ : r2142_2, r2142_3 -# 2142| v2142_5(void) = ConditionalBranch : r2142_4 +# 2135| void test_constant_folding() +# 2135| Block 0 +# 2135| v2135_1(void) = EnterFunction : +# 2135| m2135_2(unknown) = AliasedDefinition : +# 2135| m2135_3(unknown) = InitializeNonLocal : +# 2135| m2135_4(unknown) = Chi : total:m2135_2, partial:m2135_3 +# 2136| r2136_1(glval) = VariableAddress[x] : +# 2136| r2136_2(int) = Constant[116] : +# 2136| m2136_3(int) = Store[x] : &:r2136_1, r2136_2 +# 2137| r2137_1(glval) = FunctionAddress[test_constant_folding_use] : +# 2137| r2137_2(int) = Constant[116] : +# 2137| v2137_3(void) = Call[test_constant_folding_use] : func:r2137_1, 0:r2137_2 +# 2137| m2137_4(unknown) = ^CallSideEffect : ~m2135_4 +# 2137| m2137_5(unknown) = Chi : total:m2135_4, partial:m2137_4 +# 2138| v2138_1(void) = NoOp : +# 2135| v2135_5(void) = ReturnVoid : +# 2135| v2135_6(void) = AliasedUse : ~m2137_5 +# 2135| v2135_7(void) = ExitFunction : + +# 2142| int NonExit() +# 2142| Block 0 +# 2142| v2142_1(void) = EnterFunction : +# 2142| m2142_2(unknown) = AliasedDefinition : +# 2142| m2142_3(unknown) = InitializeNonLocal : +# 2142| m2142_4(unknown) = Chi : total:m2142_2, partial:m2142_3 +# 2143| r2143_1(glval) = VariableAddress[x] : +# 2143| r2143_2(glval) = FunctionAddress[Add] : +# 2143| r2143_3(int) = Constant[3] : +# 2143| r2143_4(int) = Constant[4] : +# 2143| r2143_5(int) = Call[Add] : func:r2143_2, 0:r2143_3, 1:r2143_4 +# 2143| m2143_6(unknown) = ^CallSideEffect : ~m2142_4 +# 2143| m2143_7(unknown) = Chi : total:m2142_4, partial:m2143_6 +# 2143| m2143_8(int) = Store[x] : &:r2143_1, r2143_5 +# 2144| r2144_1(glval) = VariableAddress[x] : +# 2144| r2144_2(int) = Load[x] : &:r2144_1, m2143_8 +# 2144| r2144_3(int) = Constant[7] : +# 2144| r2144_4(bool) = CompareEQ : r2144_2, r2144_3 +# 2144| v2144_5(void) = ConditionalBranch : r2144_4 #-----| False -> Block 2 #-----| True -> Block 1 -# 2143| Block 1 -# 2143| r2143_1(glval) = FunctionAddress[exit] : -# 2143| r2143_2(int) = Constant[3] : -# 2143| v2143_3(void) = Call[exit] : func:r2143_1, 0:r2143_2 -# 2143| m2143_4(unknown) = ^CallSideEffect : ~m2141_7 -# 2143| m2143_5(unknown) = Chi : total:m2141_7, partial:m2143_4 -# 2140| v2140_5(void) = Unreached : +# 2145| Block 1 +# 2145| r2145_1(glval) = FunctionAddress[exit] : +# 2145| r2145_2(int) = Constant[3] : +# 2145| v2145_3(void) = Call[exit] : func:r2145_1, 0:r2145_2 +# 2145| m2145_4(unknown) = ^CallSideEffect : ~m2143_7 +# 2145| m2145_5(unknown) = Chi : total:m2143_7, partial:m2145_4 +# 2142| v2142_5(void) = Unreached : -# 2144| Block 2 -# 2144| r2144_1(glval) = FunctionAddress[VoidFunc] : -# 2144| v2144_2(void) = Call[VoidFunc] : func:r2144_1 -# 2144| m2144_3(unknown) = ^CallSideEffect : ~m2141_7 -# 2144| m2144_4(unknown) = Chi : total:m2141_7, partial:m2144_3 -# 2145| r2145_1(glval) = VariableAddress[#return] : -# 2145| r2145_2(glval) = VariableAddress[x] : -# 2145| r2145_3(int) = Load[x] : &:r2145_2, m2141_8 -# 2145| m2145_4(int) = Store[#return] : &:r2145_1, r2145_3 -# 2140| r2140_6(glval) = VariableAddress[#return] : -# 2140| v2140_7(void) = ReturnValue : &:r2140_6, m2145_4 -# 2140| v2140_8(void) = AliasedUse : ~m2144_4 -# 2140| v2140_9(void) = ExitFunction : +# 2146| Block 2 +# 2146| r2146_1(glval) = FunctionAddress[VoidFunc] : +# 2146| v2146_2(void) = Call[VoidFunc] : func:r2146_1 +# 2146| m2146_3(unknown) = ^CallSideEffect : ~m2143_7 +# 2146| m2146_4(unknown) = Chi : total:m2143_7, partial:m2146_3 +# 2147| r2147_1(glval) = VariableAddress[#return] : +# 2147| r2147_2(glval) = VariableAddress[x] : +# 2147| r2147_3(int) = Load[x] : &:r2147_2, m2143_8 +# 2147| m2147_4(int) = Store[#return] : &:r2147_1, r2147_3 +# 2142| r2142_6(glval) = VariableAddress[#return] : +# 2142| v2142_7(void) = ReturnValue : &:r2142_6, m2147_4 +# 2142| v2142_8(void) = AliasedUse : ~m2146_4 +# 2142| v2142_9(void) = ExitFunction : -# 2148| void CallsNonExit() -# 2148| Block 0 -# 2148| v2148_1(void) = EnterFunction : -# 2148| m2148_2(unknown) = AliasedDefinition : -# 2148| m2148_3(unknown) = InitializeNonLocal : -# 2148| m2148_4(unknown) = Chi : total:m2148_2, partial:m2148_3 -# 2149| r2149_1(glval) = FunctionAddress[VoidFunc] : -# 2149| v2149_2(void) = Call[VoidFunc] : func:r2149_1 -# 2149| m2149_3(unknown) = ^CallSideEffect : ~m2148_4 -# 2149| m2149_4(unknown) = Chi : total:m2148_4, partial:m2149_3 -# 2150| r2150_1(glval) = FunctionAddress[exit] : -# 2150| r2150_2(int) = Constant[3] : -# 2150| v2150_3(void) = Call[exit] : func:r2150_1, 0:r2150_2 -# 2150| m2150_4(unknown) = ^CallSideEffect : ~m2149_4 -# 2150| m2150_5(unknown) = Chi : total:m2149_4, partial:m2150_4 -# 2148| v2148_5(void) = Unreached : +# 2150| void CallsNonExit() +# 2150| Block 0 +# 2150| v2150_1(void) = EnterFunction : +# 2150| m2150_2(unknown) = AliasedDefinition : +# 2150| m2150_3(unknown) = InitializeNonLocal : +# 2150| m2150_4(unknown) = Chi : total:m2150_2, partial:m2150_3 +# 2151| r2151_1(glval) = FunctionAddress[VoidFunc] : +# 2151| v2151_2(void) = Call[VoidFunc] : func:r2151_1 +# 2151| m2151_3(unknown) = ^CallSideEffect : ~m2150_4 +# 2151| m2151_4(unknown) = Chi : total:m2150_4, partial:m2151_3 +# 2152| r2152_1(glval) = FunctionAddress[exit] : +# 2152| r2152_2(int) = Constant[3] : +# 2152| v2152_3(void) = Call[exit] : func:r2152_1, 0:r2152_2 +# 2152| m2152_4(unknown) = ^CallSideEffect : ~m2151_4 +# 2152| m2152_5(unknown) = Chi : total:m2151_4, partial:m2152_4 +# 2150| v2150_5(void) = Unreached : -# 2153| int TransNonExit() -# 2153| Block 0 -# 2153| v2153_1(void) = EnterFunction : -# 2153| m2153_2(unknown) = AliasedDefinition : -# 2153| m2153_3(unknown) = InitializeNonLocal : -# 2153| m2153_4(unknown) = Chi : total:m2153_2, partial:m2153_3 -# 2154| r2154_1(glval) = VariableAddress[x] : -# 2154| r2154_2(glval) = FunctionAddress[Add] : -# 2154| r2154_3(int) = Constant[3] : -# 2154| r2154_4(int) = Constant[4] : -# 2154| r2154_5(int) = Call[Add] : func:r2154_2, 0:r2154_3, 1:r2154_4 -# 2154| m2154_6(unknown) = ^CallSideEffect : ~m2153_4 -# 2154| m2154_7(unknown) = Chi : total:m2153_4, partial:m2154_6 -# 2154| m2154_8(int) = Store[x] : &:r2154_1, r2154_5 -# 2155| r2155_1(glval) = VariableAddress[x] : -# 2155| r2155_2(int) = Load[x] : &:r2155_1, m2154_8 -# 2155| r2155_3(int) = Constant[7] : -# 2155| r2155_4(bool) = CompareEQ : r2155_2, r2155_3 -# 2155| v2155_5(void) = ConditionalBranch : r2155_4 +# 2155| int TransNonExit() +# 2155| Block 0 +# 2155| v2155_1(void) = EnterFunction : +# 2155| m2155_2(unknown) = AliasedDefinition : +# 2155| m2155_3(unknown) = InitializeNonLocal : +# 2155| m2155_4(unknown) = Chi : total:m2155_2, partial:m2155_3 +# 2156| r2156_1(glval) = VariableAddress[x] : +# 2156| r2156_2(glval) = FunctionAddress[Add] : +# 2156| r2156_3(int) = Constant[3] : +# 2156| r2156_4(int) = Constant[4] : +# 2156| r2156_5(int) = Call[Add] : func:r2156_2, 0:r2156_3, 1:r2156_4 +# 2156| m2156_6(unknown) = ^CallSideEffect : ~m2155_4 +# 2156| m2156_7(unknown) = Chi : total:m2155_4, partial:m2156_6 +# 2156| m2156_8(int) = Store[x] : &:r2156_1, r2156_5 +# 2157| r2157_1(glval) = VariableAddress[x] : +# 2157| r2157_2(int) = Load[x] : &:r2157_1, m2156_8 +# 2157| r2157_3(int) = Constant[7] : +# 2157| r2157_4(bool) = CompareEQ : r2157_2, r2157_3 +# 2157| v2157_5(void) = ConditionalBranch : r2157_4 #-----| False -> Block 2 #-----| True -> Block 1 -# 2156| Block 1 -# 2156| r2156_1(glval) = FunctionAddress[CallsNonExit] : -# 2156| v2156_2(void) = Call[CallsNonExit] : func:r2156_1 -# 2153| v2153_5(void) = Unreached : +# 2158| Block 1 +# 2158| r2158_1(glval) = FunctionAddress[CallsNonExit] : +# 2158| v2158_2(void) = Call[CallsNonExit] : func:r2158_1 +# 2155| v2155_5(void) = Unreached : -# 2157| Block 2 -# 2157| r2157_1(glval) = FunctionAddress[VoidFunc] : -# 2157| v2157_2(void) = Call[VoidFunc] : func:r2157_1 -# 2157| m2157_3(unknown) = ^CallSideEffect : ~m2154_7 -# 2157| m2157_4(unknown) = Chi : total:m2154_7, partial:m2157_3 -# 2158| r2158_1(glval) = VariableAddress[#return] : -# 2158| r2158_2(glval) = VariableAddress[x] : -# 2158| r2158_3(int) = Load[x] : &:r2158_2, m2154_8 -# 2158| m2158_4(int) = Store[#return] : &:r2158_1, r2158_3 -# 2153| r2153_6(glval) = VariableAddress[#return] : -# 2153| v2153_7(void) = ReturnValue : &:r2153_6, m2158_4 -# 2153| v2153_8(void) = AliasedUse : ~m2157_4 -# 2153| v2153_9(void) = ExitFunction : +# 2159| Block 2 +# 2159| r2159_1(glval) = FunctionAddress[VoidFunc] : +# 2159| v2159_2(void) = Call[VoidFunc] : func:r2159_1 +# 2159| m2159_3(unknown) = ^CallSideEffect : ~m2156_7 +# 2159| m2159_4(unknown) = Chi : total:m2156_7, partial:m2159_3 +# 2160| r2160_1(glval) = VariableAddress[#return] : +# 2160| r2160_2(glval) = VariableAddress[x] : +# 2160| r2160_3(int) = Load[x] : &:r2160_2, m2156_8 +# 2160| m2160_4(int) = Store[#return] : &:r2160_1, r2160_3 +# 2155| r2155_6(glval) = VariableAddress[#return] : +# 2155| v2155_7(void) = ReturnValue : &:r2155_6, m2160_4 +# 2155| v2155_8(void) = AliasedUse : ~m2159_4 +# 2155| v2155_9(void) = ExitFunction : -# 2161| void newArrayCorrectType(size_t) -# 2161| Block 0 -# 2161| v2161_1(void) = EnterFunction : -# 2161| m2161_2(unknown) = AliasedDefinition : -# 2161| m2161_3(unknown) = InitializeNonLocal : -# 2161| m2161_4(unknown) = Chi : total:m2161_2, partial:m2161_3 -# 2161| r2161_5(glval) = VariableAddress[n] : -# 2161| m2161_6(unsigned long) = InitializeParameter[n] : &:r2161_5 -# 2162| r2162_1(glval) = FunctionAddress[operator new[]] : -# 2162| r2162_2(glval) = VariableAddress[n] : -# 2162| r2162_3(unsigned long) = Load[n] : &:r2162_2, m2161_6 -# 2162| r2162_4(unsigned long) = Constant[4] : -# 2162| r2162_5(unsigned long) = Mul : r2162_3, r2162_4 -# 2162| r2162_6(void *) = Call[operator new[]] : func:r2162_1, 0:r2162_5 -# 2162| m2162_7(unknown) = ^CallSideEffect : ~m2161_4 -# 2162| m2162_8(unknown) = Chi : total:m2161_4, partial:m2162_7 -# 2162| m2162_9(unknown) = ^InitializeDynamicAllocation : &:r2162_6 -# 2162| r2162_10(int *) = Convert : r2162_6 -# 2163| r2163_1(glval) = FunctionAddress[operator new[]] : -# 2163| r2163_2(glval) = VariableAddress[n] : -# 2163| r2163_3(unsigned long) = Load[n] : &:r2163_2, m2161_6 -# 2163| r2163_4(unsigned long) = Constant[4] : -# 2163| r2163_5(unsigned long) = Mul : r2163_3, r2163_4 -# 2163| r2163_6(float) = Constant[1.0] : -# 2163| r2163_7(void *) = Call[operator new[]] : func:r2163_1, 0:r2163_5, 1:r2163_6 -# 2163| m2163_8(unknown) = ^CallSideEffect : ~m2162_8 -# 2163| m2163_9(unknown) = Chi : total:m2162_8, partial:m2163_8 -# 2163| m2163_10(unknown) = ^InitializeDynamicAllocation : &:r2163_7 -# 2163| r2163_11(int *) = Convert : r2163_7 +# 2163| void newArrayCorrectType(size_t) +# 2163| Block 0 +# 2163| v2163_1(void) = EnterFunction : +# 2163| m2163_2(unknown) = AliasedDefinition : +# 2163| m2163_3(unknown) = InitializeNonLocal : +# 2163| m2163_4(unknown) = Chi : total:m2163_2, partial:m2163_3 +# 2163| r2163_5(glval) = VariableAddress[n] : +# 2163| m2163_6(unsigned long) = InitializeParameter[n] : &:r2163_5 # 2164| r2164_1(glval) = FunctionAddress[operator new[]] : # 2164| r2164_2(glval) = VariableAddress[n] : -# 2164| r2164_3(unsigned long) = Load[n] : &:r2164_2, m2161_6 -# 2164| r2164_4(unsigned long) = Constant[8] : +# 2164| r2164_3(unsigned long) = Load[n] : &:r2164_2, m2163_6 +# 2164| r2164_4(unsigned long) = Constant[4] : # 2164| r2164_5(unsigned long) = Mul : r2164_3, r2164_4 # 2164| r2164_6(void *) = Call[operator new[]] : func:r2164_1, 0:r2164_5 -# 2164| m2164_7(unknown) = ^CallSideEffect : ~m2163_9 -# 2164| m2164_8(unknown) = Chi : total:m2163_9, partial:m2164_7 +# 2164| m2164_7(unknown) = ^CallSideEffect : ~m2163_4 +# 2164| m2164_8(unknown) = Chi : total:m2163_4, partial:m2164_7 # 2164| m2164_9(unknown) = ^InitializeDynamicAllocation : &:r2164_6 -# 2164| r2164_10(String *) = Convert : r2164_6 +# 2164| r2164_10(int *) = Convert : r2164_6 # 2165| r2165_1(glval) = FunctionAddress[operator new[]] : # 2165| r2165_2(glval) = VariableAddress[n] : -# 2165| r2165_3(unsigned long) = Load[n] : &:r2165_2, m2161_6 -# 2165| r2165_4(unsigned long) = Constant[256] : +# 2165| r2165_3(unsigned long) = Load[n] : &:r2165_2, m2163_6 +# 2165| r2165_4(unsigned long) = Constant[4] : # 2165| r2165_5(unsigned long) = Mul : r2165_3, r2165_4 -# 2165| r2165_6(align_val_t) = Constant[128] : +# 2165| r2165_6(float) = Constant[1.0] : # 2165| r2165_7(void *) = Call[operator new[]] : func:r2165_1, 0:r2165_5, 1:r2165_6 # 2165| m2165_8(unknown) = ^CallSideEffect : ~m2164_8 # 2165| m2165_9(unknown) = Chi : total:m2164_8, partial:m2165_8 # 2165| m2165_10(unknown) = ^InitializeDynamicAllocation : &:r2165_7 -# 2165| r2165_11(Overaligned *) = Convert : r2165_7 +# 2165| r2165_11(int *) = Convert : r2165_7 # 2166| r2166_1(glval) = FunctionAddress[operator new[]] : # 2166| r2166_2(glval) = VariableAddress[n] : -# 2166| r2166_3(unsigned long) = Load[n] : &:r2166_2, m2161_6 -# 2166| r2166_4(unsigned long) = Constant[1] : +# 2166| r2166_3(unsigned long) = Load[n] : &:r2166_2, m2163_6 +# 2166| r2166_4(unsigned long) = Constant[8] : # 2166| r2166_5(unsigned long) = Mul : r2166_3, r2166_4 # 2166| r2166_6(void *) = Call[operator new[]] : func:r2166_1, 0:r2166_5 # 2166| m2166_7(unknown) = ^CallSideEffect : ~m2165_9 # 2166| m2166_8(unknown) = Chi : total:m2165_9, partial:m2166_7 # 2166| m2166_9(unknown) = ^InitializeDynamicAllocation : &:r2166_6 -# 2166| r2166_10(DefaultCtorWithDefaultParam *) = Convert : r2166_6 +# 2166| r2166_10(String *) = Convert : r2166_6 # 2167| r2167_1(glval) = FunctionAddress[operator new[]] : # 2167| r2167_2(glval) = VariableAddress[n] : -# 2167| r2167_3(unsigned long) = Load[n] : &:r2167_2, m2161_6 -# 2167| r2167_4(unsigned long) = Constant[4] : +# 2167| r2167_3(unsigned long) = Load[n] : &:r2167_2, m2163_6 +# 2167| r2167_4(unsigned long) = Constant[256] : # 2167| r2167_5(unsigned long) = Mul : r2167_3, r2167_4 -# 2167| r2167_6(void *) = Call[operator new[]] : func:r2167_1, 0:r2167_5 -# 2167| m2167_7(unknown) = ^CallSideEffect : ~m2166_8 -# 2167| m2167_8(unknown) = Chi : total:m2166_8, partial:m2167_7 -# 2167| m2167_9(unknown) = ^InitializeDynamicAllocation : &:r2167_6 -# 2167| r2167_10(int *) = Convert : r2167_6 -# 2168| v2168_1(void) = NoOp : -# 2161| v2161_7(void) = ReturnVoid : -# 2161| v2161_8(void) = AliasedUse : ~m2167_8 -# 2161| v2161_9(void) = ExitFunction : +# 2167| r2167_6(align_val_t) = Constant[128] : +# 2167| r2167_7(void *) = Call[operator new[]] : func:r2167_1, 0:r2167_5, 1:r2167_6 +# 2167| m2167_8(unknown) = ^CallSideEffect : ~m2166_8 +# 2167| m2167_9(unknown) = Chi : total:m2166_8, partial:m2167_8 +# 2167| m2167_10(unknown) = ^InitializeDynamicAllocation : &:r2167_7 +# 2167| r2167_11(Overaligned *) = Convert : r2167_7 +# 2168| r2168_1(glval) = FunctionAddress[operator new[]] : +# 2168| r2168_2(glval) = VariableAddress[n] : +# 2168| r2168_3(unsigned long) = Load[n] : &:r2168_2, m2163_6 +# 2168| r2168_4(unsigned long) = Constant[1] : +# 2168| r2168_5(unsigned long) = Mul : r2168_3, r2168_4 +# 2168| r2168_6(void *) = Call[operator new[]] : func:r2168_1, 0:r2168_5 +# 2168| m2168_7(unknown) = ^CallSideEffect : ~m2167_9 +# 2168| m2168_8(unknown) = Chi : total:m2167_9, partial:m2168_7 +# 2168| m2168_9(unknown) = ^InitializeDynamicAllocation : &:r2168_6 +# 2168| r2168_10(DefaultCtorWithDefaultParam *) = Convert : r2168_6 +# 2169| r2169_1(glval) = FunctionAddress[operator new[]] : +# 2169| r2169_2(glval) = VariableAddress[n] : +# 2169| r2169_3(unsigned long) = Load[n] : &:r2169_2, m2163_6 +# 2169| r2169_4(unsigned long) = Constant[4] : +# 2169| r2169_5(unsigned long) = Mul : r2169_3, r2169_4 +# 2169| r2169_6(void *) = Call[operator new[]] : func:r2169_1, 0:r2169_5 +# 2169| m2169_7(unknown) = ^CallSideEffect : ~m2168_8 +# 2169| m2169_8(unknown) = Chi : total:m2168_8, partial:m2169_7 +# 2169| m2169_9(unknown) = ^InitializeDynamicAllocation : &:r2169_6 +# 2169| r2169_10(int *) = Convert : r2169_6 +# 2170| v2170_1(void) = NoOp : +# 2163| v2163_7(void) = ReturnVoid : +# 2163| v2163_8(void) = AliasedUse : ~m2169_8 +# 2163| v2163_9(void) = ExitFunction : -# 2172| char* test_strtod(char*) -# 2172| Block 0 -# 2172| v2172_1(void) = EnterFunction : -# 2172| m2172_2(unknown) = AliasedDefinition : -# 2172| m2172_3(unknown) = InitializeNonLocal : -# 2172| m2172_4(unknown) = Chi : total:m2172_2, partial:m2172_3 -# 2172| r2172_5(glval) = VariableAddress[s] : -# 2172| m2172_6(char *) = InitializeParameter[s] : &:r2172_5 -# 2172| r2172_7(char *) = Load[s] : &:r2172_5, m2172_6 -# 2172| m2172_8(unknown) = InitializeIndirection[s] : &:r2172_7 -# 2172| m2172_9(unknown) = Chi : total:m2172_4, partial:m2172_8 -# 2173| r2173_1(glval) = VariableAddress[end] : -# 2173| m2173_2(char *) = Uninitialized[end] : &:r2173_1 -# 2174| r2174_1(glval) = VariableAddress[d] : -# 2174| r2174_2(glval) = FunctionAddress[strtod] : -# 2174| r2174_3(glval) = VariableAddress[s] : -# 2174| r2174_4(char *) = Load[s] : &:r2174_3, m2172_6 -# 2174| r2174_5(char *) = Convert : r2174_4 -# 2174| r2174_6(glval) = VariableAddress[end] : -# 2174| r2174_7(char **) = CopyValue : r2174_6 -# 2174| r2174_8(double) = Call[strtod] : func:r2174_2, 0:r2174_5, 1:r2174_7 -# 2174| v2174_9(void) = ^BufferReadSideEffect[0] : &:r2174_5, ~m2172_8 -# 2174| m2174_10(char *) = ^IndirectMayWriteSideEffect[1] : &:r2174_7 -# 2174| m2174_11(char *) = Chi : total:m2173_2, partial:m2174_10 -# 2174| m2174_12(double) = Store[d] : &:r2174_1, r2174_8 -# 2175| r2175_1(glval) = VariableAddress[#return] : -# 2175| r2175_2(glval) = VariableAddress[end] : -# 2175| r2175_3(char *) = Load[end] : &:r2175_2, m2174_11 -# 2175| m2175_4(char *) = Store[#return] : &:r2175_1, r2175_3 -# 2172| v2172_10(void) = ReturnIndirection[s] : &:r2172_7, m2172_8 -# 2172| r2172_11(glval) = VariableAddress[#return] : -# 2172| v2172_12(void) = ReturnValue : &:r2172_11, m2175_4 -# 2172| v2172_13(void) = AliasedUse : ~m2172_9 -# 2172| v2172_14(void) = ExitFunction : +# 2174| char* test_strtod(char*) +# 2174| Block 0 +# 2174| v2174_1(void) = EnterFunction : +# 2174| m2174_2(unknown) = AliasedDefinition : +# 2174| m2174_3(unknown) = InitializeNonLocal : +# 2174| m2174_4(unknown) = Chi : total:m2174_2, partial:m2174_3 +# 2174| r2174_5(glval) = VariableAddress[s] : +# 2174| m2174_6(char *) = InitializeParameter[s] : &:r2174_5 +# 2174| r2174_7(char *) = Load[s] : &:r2174_5, m2174_6 +# 2174| m2174_8(unknown) = InitializeIndirection[s] : &:r2174_7 +# 2174| m2174_9(unknown) = Chi : total:m2174_4, partial:m2174_8 +# 2175| r2175_1(glval) = VariableAddress[end] : +# 2175| m2175_2(char *) = Uninitialized[end] : &:r2175_1 +# 2176| r2176_1(glval) = VariableAddress[d] : +# 2176| r2176_2(glval) = FunctionAddress[strtod] : +# 2176| r2176_3(glval) = VariableAddress[s] : +# 2176| r2176_4(char *) = Load[s] : &:r2176_3, m2174_6 +# 2176| r2176_5(char *) = Convert : r2176_4 +# 2176| r2176_6(glval) = VariableAddress[end] : +# 2176| r2176_7(char **) = CopyValue : r2176_6 +# 2176| r2176_8(double) = Call[strtod] : func:r2176_2, 0:r2176_5, 1:r2176_7 +# 2176| v2176_9(void) = ^BufferReadSideEffect[0] : &:r2176_5, ~m2174_8 +# 2176| m2176_10(char *) = ^IndirectMayWriteSideEffect[1] : &:r2176_7 +# 2176| m2176_11(char *) = Chi : total:m2175_2, partial:m2176_10 +# 2176| m2176_12(double) = Store[d] : &:r2176_1, r2176_8 +# 2177| r2177_1(glval) = VariableAddress[#return] : +# 2177| r2177_2(glval) = VariableAddress[end] : +# 2177| r2177_3(char *) = Load[end] : &:r2177_2, m2176_11 +# 2177| m2177_4(char *) = Store[#return] : &:r2177_1, r2177_3 +# 2174| v2174_10(void) = ReturnIndirection[s] : &:r2174_7, m2174_8 +# 2174| r2174_11(glval) = VariableAddress[#return] : +# 2174| v2174_12(void) = ReturnValue : &:r2174_11, m2177_4 +# 2174| v2174_13(void) = AliasedUse : ~m2174_9 +# 2174| v2174_14(void) = ExitFunction : -# 2182| void call_as_child_of_ConditionDeclExpr() -# 2182| Block 0 -# 2182| v2182_1(void) = EnterFunction : -# 2182| m2182_2(unknown) = AliasedDefinition : -# 2182| m2182_3(unknown) = InitializeNonLocal : -# 2182| m2182_4(unknown) = Chi : total:m2182_2, partial:m2182_3 -# 2183| r2183_1(glval) = VariableAddress[b] : -# 2183| r2183_2(HasOperatorBool) = Constant[0] : -# 2183| m2183_3(HasOperatorBool) = Store[b] : &:r2183_1, r2183_2 -# 2183| m2183_4(unknown) = Chi : total:m2182_4, partial:m2183_3 -# 2183| r2183_5(glval) = VariableAddress[b] : -# 2183| r2183_6(glval) = FunctionAddress[operator bool] : -# 2183| r2183_7(bool) = Call[operator bool] : func:r2183_6, this:r2183_5 -# 2183| m2183_8(unknown) = ^CallSideEffect : ~m2183_4 -# 2183| m2183_9(unknown) = Chi : total:m2183_4, partial:m2183_8 -# 2183| v2183_10(void) = ^IndirectReadSideEffect[-1] : &:r2183_5, ~m2183_9 -# 2183| m2183_11(HasOperatorBool) = ^IndirectMayWriteSideEffect[-1] : &:r2183_5 -# 2183| m2183_12(unknown) = Chi : total:m2183_9, partial:m2183_11 -# 2183| r2183_13(bool) = CopyValue : r2183_7 -# 2183| v2183_14(void) = ConditionalBranch : r2183_13 +# 2184| void call_as_child_of_ConditionDeclExpr() +# 2184| Block 0 +# 2184| v2184_1(void) = EnterFunction : +# 2184| m2184_2(unknown) = AliasedDefinition : +# 2184| m2184_3(unknown) = InitializeNonLocal : +# 2184| m2184_4(unknown) = Chi : total:m2184_2, partial:m2184_3 +# 2185| r2185_1(glval) = VariableAddress[b] : +# 2185| r2185_2(HasOperatorBool) = Constant[0] : +# 2185| m2185_3(HasOperatorBool) = Store[b] : &:r2185_1, r2185_2 +# 2185| m2185_4(unknown) = Chi : total:m2184_4, partial:m2185_3 +# 2185| r2185_5(glval) = VariableAddress[b] : +# 2185| r2185_6(glval) = FunctionAddress[operator bool] : +# 2185| r2185_7(bool) = Call[operator bool] : func:r2185_6, this:r2185_5 +# 2185| m2185_8(unknown) = ^CallSideEffect : ~m2185_4 +# 2185| m2185_9(unknown) = Chi : total:m2185_4, partial:m2185_8 +# 2185| v2185_10(void) = ^IndirectReadSideEffect[-1] : &:r2185_5, ~m2185_9 +# 2185| m2185_11(HasOperatorBool) = ^IndirectMayWriteSideEffect[-1] : &:r2185_5 +# 2185| m2185_12(unknown) = Chi : total:m2185_9, partial:m2185_11 +# 2185| r2185_13(bool) = CopyValue : r2185_7 +# 2185| v2185_14(void) = ConditionalBranch : r2185_13 #-----| False -> Block 2 #-----| True -> Block 1 -# 2183| Block 1 -# 2183| v2183_15(void) = NoOp : +# 2185| Block 1 +# 2185| v2185_15(void) = NoOp : #-----| Goto -> Block 2 -# 2184| Block 2 -# 2184| v2184_1(void) = NoOp : -# 2182| v2182_5(void) = ReturnVoid : -# 2182| v2182_6(void) = AliasedUse : ~m2183_9 -# 2182| v2182_7(void) = ExitFunction : +# 2186| Block 2 +# 2186| v2186_1(void) = NoOp : +# 2184| v2184_5(void) = ReturnVoid : +# 2184| v2184_6(void) = AliasedUse : ~m2185_9 +# 2184| v2184_7(void) = ExitFunction : -# 2186| void ClassWithDestructor::ClassWithDestructor(ClassWithDestructor const&) -# 2186| Block 0 -# 2186| v2186_1(void) = EnterFunction : -# 2186| m2186_2(unknown) = AliasedDefinition : -# 2186| m2186_3(unknown) = InitializeNonLocal : -# 2186| m2186_4(unknown) = Chi : total:m2186_2, partial:m2186_3 -# 2186| r2186_5(glval) = VariableAddress[#this] : -# 2186| m2186_6(glval) = InitializeParameter[#this] : &:r2186_5 -# 2186| r2186_7(glval) = Load[#this] : &:r2186_5, m2186_6 -# 2186| m2186_8(ClassWithDestructor) = InitializeIndirection[#this] : &:r2186_7 +# 2188| void ClassWithDestructor::ClassWithDestructor(ClassWithDestructor const&) +# 2188| Block 0 +# 2188| v2188_1(void) = EnterFunction : +# 2188| m2188_2(unknown) = AliasedDefinition : +# 2188| m2188_3(unknown) = InitializeNonLocal : +# 2188| m2188_4(unknown) = Chi : total:m2188_2, partial:m2188_3 +# 2188| r2188_5(glval) = VariableAddress[#this] : +# 2188| m2188_6(glval) = InitializeParameter[#this] : &:r2188_5 +# 2188| r2188_7(glval) = Load[#this] : &:r2188_5, m2188_6 +# 2188| m2188_8(ClassWithDestructor) = InitializeIndirection[#this] : &:r2188_7 #-----| r0_1(glval) = VariableAddress[(unnamed parameter 0)] : #-----| m0_2(ClassWithDestructor &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(ClassWithDestructor &) = Load[(unnamed parameter 0)] : &:r0_1, m0_2 #-----| m0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 2186| r2186_9(glval) = FieldAddress[x] : r2186_7 -# 2186| r2186_10(glval) = VariableAddress[(unnamed parameter 0)] : -# 2186| r2186_11(ClassWithDestructor &) = Load[(unnamed parameter 0)] : &:r2186_10, m0_2 -# 2186| r2186_12(glval) = CopyValue : r2186_11 -# 2186| r2186_13(glval) = FieldAddress[x] : r2186_12 -# 2186| r2186_14(char *) = Load[?] : &:r2186_13, ~m0_4 -# 2186| m2186_15(char *) = Store[?] : &:r2186_9, r2186_14 -# 2186| m2186_16(unknown) = Chi : total:m2186_8, partial:m2186_15 -# 2186| v2186_17(void) = NoOp : -# 2186| v2186_18(void) = ReturnIndirection[#this] : &:r2186_7, m2186_16 +# 2188| r2188_9(glval) = FieldAddress[x] : r2188_7 +# 2188| r2188_10(glval) = VariableAddress[(unnamed parameter 0)] : +# 2188| r2188_11(ClassWithDestructor &) = Load[(unnamed parameter 0)] : &:r2188_10, m0_2 +# 2188| r2188_12(glval) = CopyValue : r2188_11 +# 2188| r2188_13(glval) = FieldAddress[x] : r2188_12 +# 2188| r2188_14(char *) = Load[?] : &:r2188_13, ~m0_4 +# 2188| m2188_15(char *) = Store[?] : &:r2188_9, r2188_14 +# 2188| m2188_16(unknown) = Chi : total:m2188_8, partial:m2188_15 +# 2188| v2188_17(void) = NoOp : +# 2188| v2188_18(void) = ReturnIndirection[#this] : &:r2188_7, m2188_16 #-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, m0_4 -# 2186| v2186_19(void) = ReturnVoid : -# 2186| v2186_20(void) = AliasedUse : m2186_3 -# 2186| v2186_21(void) = ExitFunction : +# 2188| v2188_19(void) = ReturnVoid : +# 2188| v2188_20(void) = AliasedUse : m2188_3 +# 2188| v2188_21(void) = ExitFunction : -# 2189| void ClassWithDestructor::ClassWithDestructor() -# 2189| Block 0 -# 2189| v2189_1(void) = EnterFunction : -# 2189| m2189_2(unknown) = AliasedDefinition : -# 2189| m2189_3(unknown) = InitializeNonLocal : -# 2189| m2189_4(unknown) = Chi : total:m2189_2, partial:m2189_3 -# 2189| r2189_5(glval) = VariableAddress[#this] : -# 2189| m2189_6(glval) = InitializeParameter[#this] : &:r2189_5 -# 2189| r2189_7(glval) = Load[#this] : &:r2189_5, m2189_6 -# 2189| m2189_8(ClassWithDestructor) = InitializeIndirection[#this] : &:r2189_7 -# 2189| r2189_9(glval) = FunctionAddress[operator new] : -# 2189| r2189_10(unsigned long) = Constant[1] : -# 2189| r2189_11(void *) = Call[operator new] : func:r2189_9, 0:r2189_10 -# 2189| m2189_12(unknown) = ^CallSideEffect : ~m2189_4 -# 2189| m2189_13(unknown) = Chi : total:m2189_4, partial:m2189_12 -# 2189| m2189_14(unknown) = ^InitializeDynamicAllocation : &:r2189_11 -# 2189| m2189_15(unknown) = Chi : total:m2189_13, partial:m2189_14 -# 2189| r2189_16(char *) = Convert : r2189_11 -# 2189| r2189_17(glval) = VariableAddress[#this] : -# 2189| r2189_18(ClassWithDestructor *) = Load[#this] : &:r2189_17, m2189_6 -# 2189| r2189_19(glval) = FieldAddress[x] : r2189_18 -# 2189| m2189_20(char *) = Store[?] : &:r2189_19, r2189_16 -# 2189| m2189_21(unknown) = Chi : total:m2189_8, partial:m2189_20 -# 2189| v2189_22(void) = NoOp : -# 2189| v2189_23(void) = ReturnIndirection[#this] : &:r2189_7, m2189_21 -# 2189| v2189_24(void) = ReturnVoid : -# 2189| v2189_25(void) = AliasedUse : ~m2189_15 -# 2189| v2189_26(void) = ExitFunction : +# 2191| void ClassWithDestructor::ClassWithDestructor() +# 2191| Block 0 +# 2191| v2191_1(void) = EnterFunction : +# 2191| m2191_2(unknown) = AliasedDefinition : +# 2191| m2191_3(unknown) = InitializeNonLocal : +# 2191| m2191_4(unknown) = Chi : total:m2191_2, partial:m2191_3 +# 2191| r2191_5(glval) = VariableAddress[#this] : +# 2191| m2191_6(glval) = InitializeParameter[#this] : &:r2191_5 +# 2191| r2191_7(glval) = Load[#this] : &:r2191_5, m2191_6 +# 2191| m2191_8(ClassWithDestructor) = InitializeIndirection[#this] : &:r2191_7 +# 2191| r2191_9(glval) = FunctionAddress[operator new] : +# 2191| r2191_10(unsigned long) = Constant[1] : +# 2191| r2191_11(void *) = Call[operator new] : func:r2191_9, 0:r2191_10 +# 2191| m2191_12(unknown) = ^CallSideEffect : ~m2191_4 +# 2191| m2191_13(unknown) = Chi : total:m2191_4, partial:m2191_12 +# 2191| m2191_14(unknown) = ^InitializeDynamicAllocation : &:r2191_11 +# 2191| m2191_15(unknown) = Chi : total:m2191_13, partial:m2191_14 +# 2191| r2191_16(char *) = Convert : r2191_11 +# 2191| r2191_17(glval) = VariableAddress[#this] : +# 2191| r2191_18(ClassWithDestructor *) = Load[#this] : &:r2191_17, m2191_6 +# 2191| r2191_19(glval) = FieldAddress[x] : r2191_18 +# 2191| m2191_20(char *) = Store[?] : &:r2191_19, r2191_16 +# 2191| m2191_21(unknown) = Chi : total:m2191_8, partial:m2191_20 +# 2191| v2191_22(void) = NoOp : +# 2191| v2191_23(void) = ReturnIndirection[#this] : &:r2191_7, m2191_21 +# 2191| v2191_24(void) = ReturnVoid : +# 2191| v2191_25(void) = AliasedUse : ~m2191_15 +# 2191| v2191_26(void) = ExitFunction : -# 2190| void ClassWithDestructor::~ClassWithDestructor() -# 2190| Block 0 -# 2190| v2190_1(void) = EnterFunction : -# 2190| m2190_2(unknown) = AliasedDefinition : -# 2190| m2190_3(unknown) = InitializeNonLocal : -# 2190| m2190_4(unknown) = Chi : total:m2190_2, partial:m2190_3 -# 2190| r2190_5(glval) = VariableAddress[#this] : -# 2190| m2190_6(glval) = InitializeParameter[#this] : &:r2190_5 -# 2190| r2190_7(glval) = Load[#this] : &:r2190_5, m2190_6 -# 2190| m2190_8(ClassWithDestructor) = InitializeIndirection[#this] : &:r2190_7 -# 2190| r2190_9(glval) = FunctionAddress[operator delete] : -# 2190| r2190_10(glval) = VariableAddress[#this] : -# 2190| r2190_11(ClassWithDestructor *) = Load[#this] : &:r2190_10, m2190_6 -# 2190| r2190_12(glval) = FieldAddress[x] : r2190_11 -# 2190| r2190_13(char *) = Load[?] : &:r2190_12, ~m2190_8 -# 2190| v2190_14(void) = Call[operator delete] : func:r2190_9, 0:r2190_13 -# 2190| m2190_15(unknown) = ^CallSideEffect : ~m2190_4 -# 2190| m2190_16(unknown) = Chi : total:m2190_4, partial:m2190_15 -# 2190| v2190_17(void) = NoOp : -# 2190| v2190_18(void) = ReturnIndirection[#this] : &:r2190_7, m2190_8 -# 2190| v2190_19(void) = ReturnVoid : -# 2190| v2190_20(void) = AliasedUse : ~m2190_16 -# 2190| v2190_21(void) = ExitFunction : - -# 2192| void ClassWithDestructor::set_x(char) +# 2192| void ClassWithDestructor::~ClassWithDestructor() # 2192| Block 0 -# 2192| v2192_1(void) = EnterFunction : -# 2192| m2192_2(unknown) = AliasedDefinition : -# 2192| m2192_3(unknown) = InitializeNonLocal : -# 2192| m2192_4(unknown) = Chi : total:m2192_2, partial:m2192_3 -# 2192| r2192_5(glval) = VariableAddress[#this] : -# 2192| m2192_6(glval) = InitializeParameter[#this] : &:r2192_5 -# 2192| r2192_7(glval) = Load[#this] : &:r2192_5, m2192_6 -# 2192| m2192_8(ClassWithDestructor) = InitializeIndirection[#this] : &:r2192_7 -# 2192| r2192_9(glval) = VariableAddress[y] : -# 2192| m2192_10(char) = InitializeParameter[y] : &:r2192_9 -# 2192| r2192_11(glval) = VariableAddress[y] : -# 2192| r2192_12(char) = Load[y] : &:r2192_11, m2192_10 -# 2192| r2192_13(glval) = VariableAddress[#this] : -# 2192| r2192_14(ClassWithDestructor *) = Load[#this] : &:r2192_13, m2192_6 -# 2192| r2192_15(glval) = FieldAddress[x] : r2192_14 -# 2192| r2192_16(char *) = Load[?] : &:r2192_15, ~m2192_8 -# 2192| r2192_17(glval) = CopyValue : r2192_16 -# 2192| m2192_18(char) = Store[?] : &:r2192_17, r2192_12 -# 2192| m2192_19(unknown) = Chi : total:m2192_4, partial:m2192_18 -# 2192| v2192_20(void) = NoOp : -# 2192| v2192_21(void) = ReturnIndirection[#this] : &:r2192_7, m2192_8 -# 2192| v2192_22(void) = ReturnVoid : -# 2192| v2192_23(void) = AliasedUse : ~m2192_19 -# 2192| v2192_24(void) = ExitFunction : +# 2192| v2192_1(void) = EnterFunction : +# 2192| m2192_2(unknown) = AliasedDefinition : +# 2192| m2192_3(unknown) = InitializeNonLocal : +# 2192| m2192_4(unknown) = Chi : total:m2192_2, partial:m2192_3 +# 2192| r2192_5(glval) = VariableAddress[#this] : +# 2192| m2192_6(glval) = InitializeParameter[#this] : &:r2192_5 +# 2192| r2192_7(glval) = Load[#this] : &:r2192_5, m2192_6 +# 2192| m2192_8(ClassWithDestructor) = InitializeIndirection[#this] : &:r2192_7 +# 2192| r2192_9(glval) = FunctionAddress[operator delete] : +# 2192| r2192_10(glval) = VariableAddress[#this] : +# 2192| r2192_11(ClassWithDestructor *) = Load[#this] : &:r2192_10, m2192_6 +# 2192| r2192_12(glval) = FieldAddress[x] : r2192_11 +# 2192| r2192_13(char *) = Load[?] : &:r2192_12, ~m2192_8 +# 2192| v2192_14(void) = Call[operator delete] : func:r2192_9, 0:r2192_13 +# 2192| m2192_15(unknown) = ^CallSideEffect : ~m2192_4 +# 2192| m2192_16(unknown) = Chi : total:m2192_4, partial:m2192_15 +# 2192| v2192_17(void) = NoOp : +# 2192| v2192_18(void) = ReturnIndirection[#this] : &:r2192_7, m2192_8 +# 2192| v2192_19(void) = ReturnVoid : +# 2192| v2192_20(void) = AliasedUse : ~m2192_16 +# 2192| v2192_21(void) = ExitFunction : -# 2193| char ClassWithDestructor::get_x() -# 2193| Block 0 -# 2193| v2193_1(void) = EnterFunction : -# 2193| m2193_2(unknown) = AliasedDefinition : -# 2193| m2193_3(unknown) = InitializeNonLocal : -# 2193| m2193_4(unknown) = Chi : total:m2193_2, partial:m2193_3 -# 2193| r2193_5(glval) = VariableAddress[#this] : -# 2193| m2193_6(glval) = InitializeParameter[#this] : &:r2193_5 -# 2193| r2193_7(glval) = Load[#this] : &:r2193_5, m2193_6 -# 2193| m2193_8(ClassWithDestructor) = InitializeIndirection[#this] : &:r2193_7 -# 2193| r2193_9(glval) = VariableAddress[#return] : -# 2193| r2193_10(glval) = VariableAddress[#this] : -# 2193| r2193_11(ClassWithDestructor *) = Load[#this] : &:r2193_10, m2193_6 -# 2193| r2193_12(glval) = FieldAddress[x] : r2193_11 -# 2193| r2193_13(char *) = Load[?] : &:r2193_12, ~m2193_8 -# 2193| r2193_14(char) = Load[?] : &:r2193_13, ~m2193_4 -# 2193| m2193_15(char) = Store[#return] : &:r2193_9, r2193_14 -# 2193| v2193_16(void) = ReturnIndirection[#this] : &:r2193_7, m2193_8 -# 2193| r2193_17(glval) = VariableAddress[#return] : -# 2193| v2193_18(void) = ReturnValue : &:r2193_17, m2193_15 -# 2193| v2193_19(void) = AliasedUse : m2193_3 -# 2193| v2193_20(void) = ExitFunction : +# 2194| void ClassWithDestructor::set_x(char) +# 2194| Block 0 +# 2194| v2194_1(void) = EnterFunction : +# 2194| m2194_2(unknown) = AliasedDefinition : +# 2194| m2194_3(unknown) = InitializeNonLocal : +# 2194| m2194_4(unknown) = Chi : total:m2194_2, partial:m2194_3 +# 2194| r2194_5(glval) = VariableAddress[#this] : +# 2194| m2194_6(glval) = InitializeParameter[#this] : &:r2194_5 +# 2194| r2194_7(glval) = Load[#this] : &:r2194_5, m2194_6 +# 2194| m2194_8(ClassWithDestructor) = InitializeIndirection[#this] : &:r2194_7 +# 2194| r2194_9(glval) = VariableAddress[y] : +# 2194| m2194_10(char) = InitializeParameter[y] : &:r2194_9 +# 2194| r2194_11(glval) = VariableAddress[y] : +# 2194| r2194_12(char) = Load[y] : &:r2194_11, m2194_10 +# 2194| r2194_13(glval) = VariableAddress[#this] : +# 2194| r2194_14(ClassWithDestructor *) = Load[#this] : &:r2194_13, m2194_6 +# 2194| r2194_15(glval) = FieldAddress[x] : r2194_14 +# 2194| r2194_16(char *) = Load[?] : &:r2194_15, ~m2194_8 +# 2194| r2194_17(glval) = CopyValue : r2194_16 +# 2194| m2194_18(char) = Store[?] : &:r2194_17, r2194_12 +# 2194| m2194_19(unknown) = Chi : total:m2194_4, partial:m2194_18 +# 2194| v2194_20(void) = NoOp : +# 2194| v2194_21(void) = ReturnIndirection[#this] : &:r2194_7, m2194_8 +# 2194| v2194_22(void) = ReturnVoid : +# 2194| v2194_23(void) = AliasedUse : ~m2194_19 +# 2194| v2194_24(void) = ExitFunction : -# 2197| bool initialization_with_destructor_bool -# 2197| Block 0 -# 2197| v2197_1(void) = EnterFunction : -# 2197| m2197_2(unknown) = AliasedDefinition : -# 2197| r2197_3(glval) = VariableAddress[initialization_with_destructor_bool] : -# 2197| r2197_4(bool) = Constant[1] : -# 2197| m2197_5(bool) = Store[initialization_with_destructor_bool] : &:r2197_3, r2197_4 -# 2197| m2197_6(unknown) = Chi : total:m2197_2, partial:m2197_5 -# 2197| v2197_7(void) = ReturnVoid : -# 2197| v2197_8(void) = AliasedUse : ~m2197_6 -# 2197| v2197_9(void) = ExitFunction : +# 2195| char ClassWithDestructor::get_x() +# 2195| Block 0 +# 2195| v2195_1(void) = EnterFunction : +# 2195| m2195_2(unknown) = AliasedDefinition : +# 2195| m2195_3(unknown) = InitializeNonLocal : +# 2195| m2195_4(unknown) = Chi : total:m2195_2, partial:m2195_3 +# 2195| r2195_5(glval) = VariableAddress[#this] : +# 2195| m2195_6(glval) = InitializeParameter[#this] : &:r2195_5 +# 2195| r2195_7(glval) = Load[#this] : &:r2195_5, m2195_6 +# 2195| m2195_8(ClassWithDestructor) = InitializeIndirection[#this] : &:r2195_7 +# 2195| r2195_9(glval) = VariableAddress[#return] : +# 2195| r2195_10(glval) = VariableAddress[#this] : +# 2195| r2195_11(ClassWithDestructor *) = Load[#this] : &:r2195_10, m2195_6 +# 2195| r2195_12(glval) = FieldAddress[x] : r2195_11 +# 2195| r2195_13(char *) = Load[?] : &:r2195_12, ~m2195_8 +# 2195| r2195_14(char) = Load[?] : &:r2195_13, ~m2195_4 +# 2195| m2195_15(char) = Store[#return] : &:r2195_9, r2195_14 +# 2195| v2195_16(void) = ReturnIndirection[#this] : &:r2195_7, m2195_8 +# 2195| r2195_17(glval) = VariableAddress[#return] : +# 2195| v2195_18(void) = ReturnValue : &:r2195_17, m2195_15 +# 2195| v2195_19(void) = AliasedUse : m2195_3 +# 2195| v2195_20(void) = ExitFunction : -# 2199| void initialization_with_destructor(bool, char) +# 2199| bool initialization_with_destructor_bool # 2199| Block 0 -# 2199| v2199_1(void) = EnterFunction : -# 2199| m2199_2(unknown) = AliasedDefinition : -# 2199| m2199_3(unknown) = InitializeNonLocal : -# 2199| m2199_4(unknown) = Chi : total:m2199_2, partial:m2199_3 -# 2199| r2199_5(glval) = VariableAddress[b] : -# 2199| m2199_6(bool) = InitializeParameter[b] : &:r2199_5 -# 2199| r2199_7(glval) = VariableAddress[c] : -# 2199| m2199_8(char) = InitializeParameter[c] : &:r2199_7 -# 2200| r2200_1(glval) = VariableAddress[x] : -# 2200| m2200_2(ClassWithDestructor) = Uninitialized[x] : &:r2200_1 -# 2200| r2200_3(glval) = FunctionAddress[ClassWithDestructor] : -# 2200| v2200_4(void) = Call[ClassWithDestructor] : func:r2200_3, this:r2200_1 -# 2200| m2200_5(unknown) = ^CallSideEffect : ~m2199_4 -# 2200| m2200_6(unknown) = Chi : total:m2199_4, partial:m2200_5 -# 2200| m2200_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2200_1 -# 2200| m2200_8(ClassWithDestructor) = Chi : total:m2200_2, partial:m2200_7 -# 2200| r2200_9(glval) = VariableAddress[b] : -# 2200| r2200_10(bool) = Load[b] : &:r2200_9, m2199_6 -# 2200| v2200_11(void) = ConditionalBranch : r2200_10 +# 2199| v2199_1(void) = EnterFunction : +# 2199| m2199_2(unknown) = AliasedDefinition : +# 2199| r2199_3(glval) = VariableAddress[initialization_with_destructor_bool] : +# 2199| r2199_4(bool) = Constant[1] : +# 2199| m2199_5(bool) = Store[initialization_with_destructor_bool] : &:r2199_3, r2199_4 +# 2199| m2199_6(unknown) = Chi : total:m2199_2, partial:m2199_5 +# 2199| v2199_7(void) = ReturnVoid : +# 2199| v2199_8(void) = AliasedUse : ~m2199_6 +# 2199| v2199_9(void) = ExitFunction : + +# 2201| void initialization_with_destructor(bool, char) +# 2201| Block 0 +# 2201| v2201_1(void) = EnterFunction : +# 2201| m2201_2(unknown) = AliasedDefinition : +# 2201| m2201_3(unknown) = InitializeNonLocal : +# 2201| m2201_4(unknown) = Chi : total:m2201_2, partial:m2201_3 +# 2201| r2201_5(glval) = VariableAddress[b] : +# 2201| m2201_6(bool) = InitializeParameter[b] : &:r2201_5 +# 2201| r2201_7(glval) = VariableAddress[c] : +# 2201| m2201_8(char) = InitializeParameter[c] : &:r2201_7 +# 2202| r2202_1(glval) = VariableAddress[x] : +# 2202| m2202_2(ClassWithDestructor) = Uninitialized[x] : &:r2202_1 +# 2202| r2202_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2202| v2202_4(void) = Call[ClassWithDestructor] : func:r2202_3, this:r2202_1 +# 2202| m2202_5(unknown) = ^CallSideEffect : ~m2201_4 +# 2202| m2202_6(unknown) = Chi : total:m2201_4, partial:m2202_5 +# 2202| m2202_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2202_1 +# 2202| m2202_8(ClassWithDestructor) = Chi : total:m2202_2, partial:m2202_7 +# 2202| r2202_9(glval) = VariableAddress[b] : +# 2202| r2202_10(bool) = Load[b] : &:r2202_9, m2201_6 +# 2202| v2202_11(void) = ConditionalBranch : r2202_10 #-----| False -> Block 3 #-----| True -> Block 2 -# 2199| Block 1 -# 2199| m2199_9(unknown) = Phi : from 14:~m2234_5, from 19:~m2234_13, from 23:~m2234_22 -# 2199| v2199_10(void) = ReturnVoid : -# 2199| v2199_11(void) = AliasedUse : ~m2199_9 -# 2199| v2199_12(void) = ExitFunction : +# 2201| Block 1 +# 2201| m2201_9(unknown) = Phi : from 14:~m2236_5, from 19:~m2236_13, from 23:~m2236_22 +# 2201| v2201_10(void) = ReturnVoid : +# 2201| v2201_11(void) = AliasedUse : ~m2201_9 +# 2201| v2201_12(void) = ExitFunction : -# 2201| Block 2 -# 2201| r2201_1(glval) = VariableAddress[x] : -# 2201| r2201_2(glval) = FunctionAddress[set_x] : -# 2201| r2201_3(char) = Constant[97] : -# 2201| v2201_4(void) = Call[set_x] : func:r2201_2, this:r2201_1, 0:r2201_3 -# 2201| m2201_5(unknown) = ^CallSideEffect : ~m2200_6 -# 2201| m2201_6(unknown) = Chi : total:m2200_6, partial:m2201_5 -# 2201| v2201_7(void) = ^IndirectReadSideEffect[-1] : &:r2201_1, m2200_8 -# 2201| m2201_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2201_1 -# 2201| m2201_9(ClassWithDestructor) = Chi : total:m2200_8, partial:m2201_8 +# 2203| Block 2 +# 2203| r2203_1(glval) = VariableAddress[x] : +# 2203| r2203_2(glval) = FunctionAddress[set_x] : +# 2203| r2203_3(char) = Constant[97] : +# 2203| v2203_4(void) = Call[set_x] : func:r2203_2, this:r2203_1, 0:r2203_3 +# 2203| m2203_5(unknown) = ^CallSideEffect : ~m2202_6 +# 2203| m2203_6(unknown) = Chi : total:m2202_6, partial:m2203_5 +# 2203| v2203_7(void) = ^IndirectReadSideEffect[-1] : &:r2203_1, m2202_8 +# 2203| m2203_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2203_1 +# 2203| m2203_9(ClassWithDestructor) = Chi : total:m2202_8, partial:m2203_8 #-----| Goto -> Block 3 -# 2201| Block 3 -# 2201| m2201_10(ClassWithDestructor) = Phi : from 0:m2200_8, from 2:m2201_9 -# 2201| m2201_11(unknown) = Phi : from 0:~m2200_6, from 2:~m2201_6 -# 2201| r2201_12(glval) = VariableAddress[x] : -# 2201| r2201_13(glval) = FunctionAddress[~ClassWithDestructor] : -# 2201| v2201_14(void) = Call[~ClassWithDestructor] : func:r2201_13, this:r2201_12 -# 2201| m2201_15(unknown) = ^CallSideEffect : ~m2201_11 -# 2201| m2201_16(unknown) = Chi : total:m2201_11, partial:m2201_15 -# 2201| v2201_17(void) = ^IndirectReadSideEffect[-1] : &:r2201_12, m2201_10 -# 2201| m2201_18(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2201_12 -# 2201| m2201_19(ClassWithDestructor) = Chi : total:m2201_10, partial:m2201_18 -# 2203| r2203_1(glval) = VariableAddress[x] : -# 2203| m2203_2(ClassWithDestructor) = Uninitialized[x] : &:r2203_1 -# 2203| r2203_3(glval) = FunctionAddress[ClassWithDestructor] : -# 2203| v2203_4(void) = Call[ClassWithDestructor] : func:r2203_3, this:r2203_1 -# 2203| m2203_5(unknown) = ^CallSideEffect : ~m2201_16 -# 2203| m2203_6(unknown) = Chi : total:m2201_16, partial:m2203_5 -# 2203| m2203_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2203_1 -# 2203| m2203_8(ClassWithDestructor) = Chi : total:m2203_2, partial:m2203_7 -# 2203| r2203_9(bool) = Constant[1] : -# 2203| v2203_10(void) = ConditionalBranch : r2203_9 +# 2203| Block 3 +# 2203| m2203_10(ClassWithDestructor) = Phi : from 0:m2202_8, from 2:m2203_9 +# 2203| m2203_11(unknown) = Phi : from 0:~m2202_6, from 2:~m2203_6 +# 2203| r2203_12(glval) = VariableAddress[x] : +# 2203| r2203_13(glval) = FunctionAddress[~ClassWithDestructor] : +# 2203| v2203_14(void) = Call[~ClassWithDestructor] : func:r2203_13, this:r2203_12 +# 2203| m2203_15(unknown) = ^CallSideEffect : ~m2203_11 +# 2203| m2203_16(unknown) = Chi : total:m2203_11, partial:m2203_15 +# 2203| v2203_17(void) = ^IndirectReadSideEffect[-1] : &:r2203_12, m2203_10 +# 2203| m2203_18(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2203_12 +# 2203| m2203_19(ClassWithDestructor) = Chi : total:m2203_10, partial:m2203_18 +# 2205| r2205_1(glval) = VariableAddress[x] : +# 2205| m2205_2(ClassWithDestructor) = Uninitialized[x] : &:r2205_1 +# 2205| r2205_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2205| v2205_4(void) = Call[ClassWithDestructor] : func:r2205_3, this:r2205_1 +# 2205| m2205_5(unknown) = ^CallSideEffect : ~m2203_16 +# 2205| m2205_6(unknown) = Chi : total:m2203_16, partial:m2205_5 +# 2205| m2205_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2205_1 +# 2205| m2205_8(ClassWithDestructor) = Chi : total:m2205_2, partial:m2205_7 +# 2205| r2205_9(bool) = Constant[1] : +# 2205| v2205_10(void) = ConditionalBranch : r2205_9 #-----| False -> Block 24 #-----| True -> Block 4 -# 2204| Block 4 -# 2204| r2204_1(glval) = VariableAddress[x] : -# 2204| r2204_2(glval) = FunctionAddress[set_x] : -# 2204| r2204_3(char) = Constant[97] : -# 2204| v2204_4(void) = Call[set_x] : func:r2204_2, this:r2204_1, 0:r2204_3 -# 2204| m2204_5(unknown) = ^CallSideEffect : ~m2203_6 -# 2204| m2204_6(unknown) = Chi : total:m2203_6, partial:m2204_5 -# 2204| v2204_7(void) = ^IndirectReadSideEffect[-1] : &:r2204_1, m2203_8 -# 2204| m2204_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2204_1 -# 2204| m2204_9(ClassWithDestructor) = Chi : total:m2203_8, partial:m2204_8 -# 2204| r2204_10(glval) = VariableAddress[x] : -# 2204| r2204_11(glval) = FunctionAddress[~ClassWithDestructor] : -# 2204| v2204_12(void) = Call[~ClassWithDestructor] : func:r2204_11, this:r2204_10 -# 2204| m2204_13(unknown) = ^CallSideEffect : ~m2204_6 -# 2204| m2204_14(unknown) = Chi : total:m2204_6, partial:m2204_13 -# 2204| v2204_15(void) = ^IndirectReadSideEffect[-1] : &:r2204_10, m2204_9 -# 2204| m2204_16(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2204_10 -# 2204| m2204_17(ClassWithDestructor) = Chi : total:m2204_9, partial:m2204_16 +# 2206| Block 4 # 2206| r2206_1(glval) = VariableAddress[x] : -# 2206| m2206_2(ClassWithDestructor) = Uninitialized[x] : &:r2206_1 -# 2206| r2206_3(glval) = FunctionAddress[ClassWithDestructor] : -# 2206| v2206_4(void) = Call[ClassWithDestructor] : func:r2206_3, this:r2206_1 -# 2206| m2206_5(unknown) = ^CallSideEffect : ~m2204_14 -# 2206| m2206_6(unknown) = Chi : total:m2204_14, partial:m2206_5 -# 2206| m2206_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2206_1 -# 2206| m2206_8(ClassWithDestructor) = Chi : total:m2206_2, partial:m2206_7 -# 2206| r2206_9(glval) = VariableAddress[c] : -# 2206| r2206_10(char) = Load[c] : &:r2206_9, m2199_8 -# 2206| r2206_11(int) = Convert : r2206_10 -# 2206| v2206_12(void) = Switch : r2206_11 +# 2206| r2206_2(glval) = FunctionAddress[set_x] : +# 2206| r2206_3(char) = Constant[97] : +# 2206| v2206_4(void) = Call[set_x] : func:r2206_2, this:r2206_1, 0:r2206_3 +# 2206| m2206_5(unknown) = ^CallSideEffect : ~m2205_6 +# 2206| m2206_6(unknown) = Chi : total:m2205_6, partial:m2206_5 +# 2206| v2206_7(void) = ^IndirectReadSideEffect[-1] : &:r2206_1, m2205_8 +# 2206| m2206_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2206_1 +# 2206| m2206_9(ClassWithDestructor) = Chi : total:m2205_8, partial:m2206_8 +# 2206| r2206_10(glval) = VariableAddress[x] : +# 2206| r2206_11(glval) = FunctionAddress[~ClassWithDestructor] : +# 2206| v2206_12(void) = Call[~ClassWithDestructor] : func:r2206_11, this:r2206_10 +# 2206| m2206_13(unknown) = ^CallSideEffect : ~m2206_6 +# 2206| m2206_14(unknown) = Chi : total:m2206_6, partial:m2206_13 +# 2206| v2206_15(void) = ^IndirectReadSideEffect[-1] : &:r2206_10, m2206_9 +# 2206| m2206_16(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2206_10 +# 2206| m2206_17(ClassWithDestructor) = Chi : total:m2206_9, partial:m2206_16 +# 2208| r2208_1(glval) = VariableAddress[x] : +# 2208| m2208_2(ClassWithDestructor) = Uninitialized[x] : &:r2208_1 +# 2208| r2208_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2208| v2208_4(void) = Call[ClassWithDestructor] : func:r2208_3, this:r2208_1 +# 2208| m2208_5(unknown) = ^CallSideEffect : ~m2206_14 +# 2208| m2208_6(unknown) = Chi : total:m2206_14, partial:m2208_5 +# 2208| m2208_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2208_1 +# 2208| m2208_8(ClassWithDestructor) = Chi : total:m2208_2, partial:m2208_7 +# 2208| r2208_9(glval) = VariableAddress[c] : +# 2208| r2208_10(char) = Load[c] : &:r2208_9, m2201_8 +# 2208| r2208_11(int) = Convert : r2208_10 +# 2208| v2208_12(void) = Switch : r2208_11 #-----| Case[97] -> Block 5 #-----| Default -> Block 6 -# 2207| Block 5 -# 2207| v2207_1(void) = NoOp : -# 2208| r2208_1(glval) = VariableAddress[x] : -# 2208| r2208_2(glval) = FunctionAddress[set_x] : -# 2208| r2208_3(char) = Constant[97] : -# 2208| v2208_4(void) = Call[set_x] : func:r2208_2, this:r2208_1, 0:r2208_3 -# 2208| m2208_5(unknown) = ^CallSideEffect : ~m2206_6 -# 2208| m2208_6(unknown) = Chi : total:m2206_6, partial:m2208_5 -# 2208| v2208_7(void) = ^IndirectReadSideEffect[-1] : &:r2208_1, m2206_8 -# 2208| m2208_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2208_1 -# 2208| m2208_9(ClassWithDestructor) = Chi : total:m2206_8, partial:m2208_8 -# 2213| r2213_1(glval) = VariableAddress[x] : -# 2213| r2213_2(glval) = FunctionAddress[~ClassWithDestructor] : -# 2213| v2213_3(void) = Call[~ClassWithDestructor] : func:r2213_2, this:r2213_1 -# 2213| m2213_4(unknown) = ^CallSideEffect : ~m2208_6 -# 2213| m2213_5(unknown) = Chi : total:m2208_6, partial:m2213_4 -# 2213| v2213_6(void) = ^IndirectReadSideEffect[-1] : &:r2213_1, m2208_9 -# 2213| m2213_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2213_1 -# 2213| m2213_8(ClassWithDestructor) = Chi : total:m2208_9, partial:m2213_7 +# 2209| Block 5 # 2209| v2209_1(void) = NoOp : +# 2210| r2210_1(glval) = VariableAddress[x] : +# 2210| r2210_2(glval) = FunctionAddress[set_x] : +# 2210| r2210_3(char) = Constant[97] : +# 2210| v2210_4(void) = Call[set_x] : func:r2210_2, this:r2210_1, 0:r2210_3 +# 2210| m2210_5(unknown) = ^CallSideEffect : ~m2208_6 +# 2210| m2210_6(unknown) = Chi : total:m2208_6, partial:m2210_5 +# 2210| v2210_7(void) = ^IndirectReadSideEffect[-1] : &:r2210_1, m2208_8 +# 2210| m2210_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2210_1 +# 2210| m2210_9(ClassWithDestructor) = Chi : total:m2208_8, partial:m2210_8 +# 2215| r2215_1(glval) = VariableAddress[x] : +# 2215| r2215_2(glval) = FunctionAddress[~ClassWithDestructor] : +# 2215| v2215_3(void) = Call[~ClassWithDestructor] : func:r2215_2, this:r2215_1 +# 2215| m2215_4(unknown) = ^CallSideEffect : ~m2210_6 +# 2215| m2215_5(unknown) = Chi : total:m2210_6, partial:m2215_4 +# 2215| v2215_6(void) = ^IndirectReadSideEffect[-1] : &:r2215_1, m2210_9 +# 2215| m2215_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2215_1 +# 2215| m2215_8(ClassWithDestructor) = Chi : total:m2210_9, partial:m2215_7 +# 2211| v2211_1(void) = NoOp : #-----| Goto -> Block 7 -# 2210| Block 6 -# 2210| v2210_1(void) = NoOp : -# 2211| r2211_1(glval) = VariableAddress[x] : -# 2211| r2211_2(glval) = FunctionAddress[set_x] : -# 2211| r2211_3(char) = Constant[98] : -# 2211| v2211_4(void) = Call[set_x] : func:r2211_2, this:r2211_1, 0:r2211_3 -# 2211| m2211_5(unknown) = ^CallSideEffect : ~m2206_6 -# 2211| m2211_6(unknown) = Chi : total:m2206_6, partial:m2211_5 -# 2211| v2211_7(void) = ^IndirectReadSideEffect[-1] : &:r2211_1, m2206_8 -# 2211| m2211_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2211_1 -# 2211| m2211_9(ClassWithDestructor) = Chi : total:m2206_8, partial:m2211_8 -# 2213| r2213_9(glval) = VariableAddress[x] : -# 2213| r2213_10(glval) = FunctionAddress[~ClassWithDestructor] : -# 2213| v2213_11(void) = Call[~ClassWithDestructor] : func:r2213_10, this:r2213_9 -# 2213| m2213_12(unknown) = ^CallSideEffect : ~m2211_6 -# 2213| m2213_13(unknown) = Chi : total:m2211_6, partial:m2213_12 -# 2213| v2213_14(void) = ^IndirectReadSideEffect[-1] : &:r2213_9, m2211_9 -# 2213| m2213_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2213_9 -# 2213| m2213_16(ClassWithDestructor) = Chi : total:m2211_9, partial:m2213_15 +# 2212| Block 6 # 2212| v2212_1(void) = NoOp : +# 2213| r2213_1(glval) = VariableAddress[x] : +# 2213| r2213_2(glval) = FunctionAddress[set_x] : +# 2213| r2213_3(char) = Constant[98] : +# 2213| v2213_4(void) = Call[set_x] : func:r2213_2, this:r2213_1, 0:r2213_3 +# 2213| m2213_5(unknown) = ^CallSideEffect : ~m2208_6 +# 2213| m2213_6(unknown) = Chi : total:m2208_6, partial:m2213_5 +# 2213| v2213_7(void) = ^IndirectReadSideEffect[-1] : &:r2213_1, m2208_8 +# 2213| m2213_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2213_1 +# 2213| m2213_9(ClassWithDestructor) = Chi : total:m2208_8, partial:m2213_8 +# 2215| r2215_9(glval) = VariableAddress[x] : +# 2215| r2215_10(glval) = FunctionAddress[~ClassWithDestructor] : +# 2215| v2215_11(void) = Call[~ClassWithDestructor] : func:r2215_10, this:r2215_9 +# 2215| m2215_12(unknown) = ^CallSideEffect : ~m2213_6 +# 2215| m2215_13(unknown) = Chi : total:m2213_6, partial:m2215_12 +# 2215| v2215_14(void) = ^IndirectReadSideEffect[-1] : &:r2215_9, m2213_9 +# 2215| m2215_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2215_9 +# 2215| m2215_16(ClassWithDestructor) = Chi : total:m2213_9, partial:m2215_15 +# 2214| v2214_1(void) = NoOp : #-----| Goto -> Block 7 -# 2213| Block 7 -# 2213| m2213_17(unknown) = Phi : from 5:~m2213_5, from 6:~m2213_13 -# 2213| v2213_18(void) = NoOp : -# 2215| r2215_1(glval) = VariableAddress[x] : -# 2215| m2215_2(ClassWithDestructor) = Uninitialized[x] : &:r2215_1 -# 2215| r2215_3(glval) = FunctionAddress[ClassWithDestructor] : -# 2215| v2215_4(void) = Call[ClassWithDestructor] : func:r2215_3, this:r2215_1 -# 2215| m2215_5(unknown) = ^CallSideEffect : ~m2213_17 -# 2215| m2215_6(unknown) = Chi : total:m2213_17, partial:m2215_5 -# 2215| m2215_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2215_1 -# 2215| m2215_8(ClassWithDestructor) = Chi : total:m2215_2, partial:m2215_7 -# 2216| r2216_1(glval>) = VariableAddress[ys] : -# 2216| m2216_2(vector) = Uninitialized[ys] : &:r2216_1 -# 2216| r2216_3(glval) = FunctionAddress[vector] : -# 2216| r2216_4(glval) = VariableAddress[#temp2216:45] : -# 2216| r2216_5(glval) = VariableAddress[x] : -# 2216| r2216_6(ClassWithDestructor) = Load[x] : &:r2216_5, m2215_8 -# 2216| m2216_7(ClassWithDestructor) = Store[#temp2216:45] : &:r2216_4, r2216_6 -# 2216| r2216_8(ClassWithDestructor) = Load[#temp2216:45] : &:r2216_4, m2216_7 -# 2216| v2216_9(void) = Call[vector] : func:r2216_3, this:r2216_1, 0:r2216_8 -# 2216| m2216_10(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2216_1 -# 2216| r2216_11(glval) = CopyValue : r2216_4 -# 2216| r2216_12(glval) = FunctionAddress[~ClassWithDestructor] : -# 2216| v2216_13(void) = Call[~ClassWithDestructor] : func:r2216_12, this:r2216_11 -# 2216| m2216_14(unknown) = ^CallSideEffect : ~m2215_6 -# 2216| m2216_15(unknown) = Chi : total:m2215_6, partial:m2216_14 -# 2216| v2216_16(void) = ^IndirectReadSideEffect[-1] : &:r2216_11, m2216_7 -# 2216| m2216_17(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2216_11 -# 2216| m2216_18(ClassWithDestructor) = Chi : total:m2216_7, partial:m2216_17 -# 2216| r2216_19(glval &>) = VariableAddress[(__range)] : -# 2216| r2216_20(glval>) = VariableAddress[ys] : -# 2216| r2216_21(vector &) = CopyValue : r2216_20 -# 2216| m2216_22(vector &) = Store[(__range)] : &:r2216_19, r2216_21 -# 2216| r2216_23(glval>) = VariableAddress[(__begin)] : -# 2216| r2216_24(glval &>) = VariableAddress[(__range)] : -# 2216| r2216_25(vector &) = Load[(__range)] : &:r2216_24, m2216_22 -#-----| r0_1(glval>) = CopyValue : r2216_25 +# 2215| Block 7 +# 2215| m2215_17(unknown) = Phi : from 5:~m2215_5, from 6:~m2215_13 +# 2215| v2215_18(void) = NoOp : +# 2217| r2217_1(glval) = VariableAddress[x] : +# 2217| m2217_2(ClassWithDestructor) = Uninitialized[x] : &:r2217_1 +# 2217| r2217_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2217| v2217_4(void) = Call[ClassWithDestructor] : func:r2217_3, this:r2217_1 +# 2217| m2217_5(unknown) = ^CallSideEffect : ~m2215_17 +# 2217| m2217_6(unknown) = Chi : total:m2215_17, partial:m2217_5 +# 2217| m2217_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2217_1 +# 2217| m2217_8(ClassWithDestructor) = Chi : total:m2217_2, partial:m2217_7 +# 2218| r2218_1(glval>) = VariableAddress[ys] : +# 2218| m2218_2(vector) = Uninitialized[ys] : &:r2218_1 +# 2218| r2218_3(glval) = FunctionAddress[vector] : +# 2218| r2218_4(glval) = VariableAddress[#temp2218:45] : +# 2218| r2218_5(glval) = VariableAddress[x] : +# 2218| r2218_6(ClassWithDestructor) = Load[x] : &:r2218_5, m2217_8 +# 2218| m2218_7(ClassWithDestructor) = Store[#temp2218:45] : &:r2218_4, r2218_6 +# 2218| r2218_8(ClassWithDestructor) = Load[#temp2218:45] : &:r2218_4, m2218_7 +# 2218| v2218_9(void) = Call[vector] : func:r2218_3, this:r2218_1, 0:r2218_8 +# 2218| m2218_10(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2218_1 +# 2218| r2218_11(glval) = CopyValue : r2218_4 +# 2218| r2218_12(glval) = FunctionAddress[~ClassWithDestructor] : +# 2218| v2218_13(void) = Call[~ClassWithDestructor] : func:r2218_12, this:r2218_11 +# 2218| m2218_14(unknown) = ^CallSideEffect : ~m2217_6 +# 2218| m2218_15(unknown) = Chi : total:m2217_6, partial:m2218_14 +# 2218| v2218_16(void) = ^IndirectReadSideEffect[-1] : &:r2218_11, m2218_7 +# 2218| m2218_17(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2218_11 +# 2218| m2218_18(ClassWithDestructor) = Chi : total:m2218_7, partial:m2218_17 +# 2218| r2218_19(glval &>) = VariableAddress[(__range)] : +# 2218| r2218_20(glval>) = VariableAddress[ys] : +# 2218| r2218_21(vector &) = CopyValue : r2218_20 +# 2218| m2218_22(vector &) = Store[(__range)] : &:r2218_19, r2218_21 +# 2218| r2218_23(glval>) = VariableAddress[(__begin)] : +# 2218| r2218_24(glval &>) = VariableAddress[(__range)] : +# 2218| r2218_25(vector &) = Load[(__range)] : &:r2218_24, m2218_22 +#-----| r0_1(glval>) = CopyValue : r2218_25 #-----| r0_2(glval>) = Convert : r0_1 -# 2216| r2216_26(glval) = FunctionAddress[begin] : -# 2216| r2216_27(iterator) = Call[begin] : func:r2216_26, this:r0_2 -#-----| v0_3(void) = ^IndirectReadSideEffect[-1] : &:r0_2, m2216_10 -# 2216| m2216_28(iterator) = Store[(__begin)] : &:r2216_23, r2216_27 -# 2216| r2216_29(glval>) = VariableAddress[(__end)] : -# 2216| r2216_30(glval &>) = VariableAddress[(__range)] : -# 2216| r2216_31(vector &) = Load[(__range)] : &:r2216_30, m2216_22 -#-----| r0_4(glval>) = CopyValue : r2216_31 +# 2218| r2218_26(glval) = FunctionAddress[begin] : +# 2218| r2218_27(iterator) = Call[begin] : func:r2218_26, this:r0_2 +#-----| v0_3(void) = ^IndirectReadSideEffect[-1] : &:r0_2, m2218_10 +# 2218| m2218_28(iterator) = Store[(__begin)] : &:r2218_23, r2218_27 +# 2218| r2218_29(glval>) = VariableAddress[(__end)] : +# 2218| r2218_30(glval &>) = VariableAddress[(__range)] : +# 2218| r2218_31(vector &) = Load[(__range)] : &:r2218_30, m2218_22 +#-----| r0_4(glval>) = CopyValue : r2218_31 #-----| r0_5(glval>) = Convert : r0_4 -# 2216| r2216_32(glval) = FunctionAddress[end] : -# 2216| r2216_33(iterator) = Call[end] : func:r2216_32, this:r0_5 -#-----| v0_6(void) = ^IndirectReadSideEffect[-1] : &:r0_5, m2216_10 -# 2216| m2216_34(iterator) = Store[(__end)] : &:r2216_29, r2216_33 -# 2216| m2216_35(unknown) = Chi : total:m2216_15, partial:m2216_34 +# 2218| r2218_32(glval) = FunctionAddress[end] : +# 2218| r2218_33(iterator) = Call[end] : func:r2218_32, this:r0_5 +#-----| v0_6(void) = ^IndirectReadSideEffect[-1] : &:r0_5, m2218_10 +# 2218| m2218_34(iterator) = Store[(__end)] : &:r2218_29, r2218_33 +# 2218| m2218_35(unknown) = Chi : total:m2218_15, partial:m2218_34 #-----| Goto -> Block 8 -# 2216| Block 8 -# 2216| m2216_36(iterator) = Phi : from 7:m2216_28, from 9:m2216_60 -# 2216| m2216_37(unknown) = Phi : from 7:~m2216_35, from 9:~m2216_65 -# 2216| r2216_38(glval>) = VariableAddress[(__begin)] : -#-----| r0_7(glval>) = Convert : r2216_38 -# 2216| r2216_39(glval) = FunctionAddress[operator!=] : +# 2218| Block 8 +# 2218| m2218_36(iterator) = Phi : from 7:m2218_28, from 9:m2218_60 +# 2218| m2218_37(unknown) = Phi : from 7:~m2218_35, from 9:~m2218_65 +# 2218| r2218_38(glval>) = VariableAddress[(__begin)] : +#-----| r0_7(glval>) = Convert : r2218_38 +# 2218| r2218_39(glval) = FunctionAddress[operator!=] : #-----| r0_8(glval>) = VariableAddress[#temp0:0] : #-----| m0_9(iterator) = Uninitialized[#temp0:0] : &:r0_8 -#-----| m0_10(unknown) = Chi : total:m2216_37, partial:m0_9 -# 2216| r2216_40(glval) = FunctionAddress[iterator] : -# 2216| r2216_41(glval>) = VariableAddress[(__end)] : -#-----| r0_11(glval>) = Convert : r2216_41 +#-----| m0_10(unknown) = Chi : total:m2218_37, partial:m0_9 +# 2218| r2218_40(glval) = FunctionAddress[iterator] : +# 2218| r2218_41(glval>) = VariableAddress[(__end)] : +#-----| r0_11(glval>) = Convert : r2218_41 #-----| r0_12(iterator &) = CopyValue : r0_11 -# 2216| v2216_42(void) = Call[iterator] : func:r2216_40, this:r0_8, 0:r0_12 -# 2216| m2216_43(unknown) = ^CallSideEffect : ~m0_10 -# 2216| m2216_44(unknown) = Chi : total:m0_10, partial:m2216_43 -#-----| v0_13(void) = ^BufferReadSideEffect[0] : &:r0_12, ~m2216_44 -# 2216| m2216_45(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r0_8 -# 2216| m2216_46(unknown) = Chi : total:m2216_44, partial:m2216_45 -#-----| r0_14(iterator) = Load[#temp0:0] : &:r0_8, ~m2216_46 -# 2216| r2216_47(bool) = Call[operator!=] : func:r2216_39, this:r0_7, 0:r0_14 -#-----| v0_15(void) = ^IndirectReadSideEffect[-1] : &:r0_7, m2216_36 -# 2216| v2216_48(void) = ConditionalBranch : r2216_47 +# 2218| v2218_42(void) = Call[iterator] : func:r2218_40, this:r0_8, 0:r0_12 +# 2218| m2218_43(unknown) = ^CallSideEffect : ~m0_10 +# 2218| m2218_44(unknown) = Chi : total:m0_10, partial:m2218_43 +#-----| v0_13(void) = ^BufferReadSideEffect[0] : &:r0_12, ~m2218_44 +# 2218| m2218_45(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r0_8 +# 2218| m2218_46(unknown) = Chi : total:m2218_44, partial:m2218_45 +#-----| r0_14(iterator) = Load[#temp0:0] : &:r0_8, ~m2218_46 +# 2218| r2218_47(bool) = Call[operator!=] : func:r2218_39, this:r0_7, 0:r0_14 +#-----| v0_15(void) = ^IndirectReadSideEffect[-1] : &:r0_7, m2218_36 +# 2218| v2218_48(void) = ConditionalBranch : r2218_47 #-----| False -> Block 10 #-----| True -> Block 9 -# 2216| Block 9 -# 2216| r2216_49(glval) = VariableAddress[y] : -# 2216| r2216_50(glval>) = VariableAddress[(__begin)] : -#-----| r0_16(glval>) = Convert : r2216_50 -# 2216| r2216_51(glval) = FunctionAddress[operator*] : -# 2216| r2216_52(ClassWithDestructor &) = Call[operator*] : func:r2216_51, this:r0_16 -#-----| v0_17(void) = ^IndirectReadSideEffect[-1] : &:r0_16, m2216_36 -# 2216| r2216_53(ClassWithDestructor) = Load[?] : &:r2216_52, ~m2216_46 -# 2216| m2216_54(ClassWithDestructor) = Store[y] : &:r2216_49, r2216_53 -# 2217| r2217_1(glval) = VariableAddress[y] : -# 2217| r2217_2(glval) = FunctionAddress[set_x] : -# 2217| r2217_3(char) = Constant[97] : -# 2217| v2217_4(void) = Call[set_x] : func:r2217_2, this:r2217_1, 0:r2217_3 -# 2217| m2217_5(unknown) = ^CallSideEffect : ~m2216_46 -# 2217| m2217_6(unknown) = Chi : total:m2216_46, partial:m2217_5 -# 2217| v2217_7(void) = ^IndirectReadSideEffect[-1] : &:r2217_1, m2216_54 -# 2217| m2217_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2217_1 -# 2217| m2217_9(ClassWithDestructor) = Chi : total:m2216_54, partial:m2217_8 -# 2216| r2216_55(glval>) = VariableAddress[(__begin)] : -# 2216| r2216_56(glval) = FunctionAddress[operator++] : -# 2216| r2216_57(iterator &) = Call[operator++] : func:r2216_56, this:r2216_55 -# 2216| v2216_58(void) = ^IndirectReadSideEffect[-1] : &:r2216_55, m2216_36 -# 2216| m2216_59(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r2216_55 -# 2216| m2216_60(iterator) = Chi : total:m2216_36, partial:m2216_59 -# 2216| r2216_61(glval) = VariableAddress[y] : -# 2216| r2216_62(glval) = FunctionAddress[~ClassWithDestructor] : -# 2216| v2216_63(void) = Call[~ClassWithDestructor] : func:r2216_62, this:r2216_61 -# 2216| m2216_64(unknown) = ^CallSideEffect : ~m2217_6 -# 2216| m2216_65(unknown) = Chi : total:m2217_6, partial:m2216_64 -# 2216| v2216_66(void) = ^IndirectReadSideEffect[-1] : &:r2216_61, m2217_9 -# 2216| m2216_67(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2216_61 -# 2216| m2216_68(ClassWithDestructor) = Chi : total:m2217_9, partial:m2216_67 -# 2216| r2216_69(glval>) = CopyValue : r2216_57 +# 2218| Block 9 +# 2218| r2218_49(glval) = VariableAddress[y] : +# 2218| r2218_50(glval>) = VariableAddress[(__begin)] : +#-----| r0_16(glval>) = Convert : r2218_50 +# 2218| r2218_51(glval) = FunctionAddress[operator*] : +# 2218| r2218_52(ClassWithDestructor &) = Call[operator*] : func:r2218_51, this:r0_16 +#-----| v0_17(void) = ^IndirectReadSideEffect[-1] : &:r0_16, m2218_36 +# 2218| r2218_53(ClassWithDestructor) = Load[?] : &:r2218_52, ~m2218_46 +# 2218| m2218_54(ClassWithDestructor) = Store[y] : &:r2218_49, r2218_53 +# 2219| r2219_1(glval) = VariableAddress[y] : +# 2219| r2219_2(glval) = FunctionAddress[set_x] : +# 2219| r2219_3(char) = Constant[97] : +# 2219| v2219_4(void) = Call[set_x] : func:r2219_2, this:r2219_1, 0:r2219_3 +# 2219| m2219_5(unknown) = ^CallSideEffect : ~m2218_46 +# 2219| m2219_6(unknown) = Chi : total:m2218_46, partial:m2219_5 +# 2219| v2219_7(void) = ^IndirectReadSideEffect[-1] : &:r2219_1, m2218_54 +# 2219| m2219_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2219_1 +# 2219| m2219_9(ClassWithDestructor) = Chi : total:m2218_54, partial:m2219_8 +# 2218| r2218_55(glval>) = VariableAddress[(__begin)] : +# 2218| r2218_56(glval) = FunctionAddress[operator++] : +# 2218| r2218_57(iterator &) = Call[operator++] : func:r2218_56, this:r2218_55 +# 2218| v2218_58(void) = ^IndirectReadSideEffect[-1] : &:r2218_55, m2218_36 +# 2218| m2218_59(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r2218_55 +# 2218| m2218_60(iterator) = Chi : total:m2218_36, partial:m2218_59 +# 2218| r2218_61(glval) = VariableAddress[y] : +# 2218| r2218_62(glval) = FunctionAddress[~ClassWithDestructor] : +# 2218| v2218_63(void) = Call[~ClassWithDestructor] : func:r2218_62, this:r2218_61 +# 2218| m2218_64(unknown) = ^CallSideEffect : ~m2219_6 +# 2218| m2218_65(unknown) = Chi : total:m2219_6, partial:m2218_64 +# 2218| v2218_66(void) = ^IndirectReadSideEffect[-1] : &:r2218_61, m2219_9 +# 2218| m2218_67(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2218_61 +# 2218| m2218_68(ClassWithDestructor) = Chi : total:m2219_9, partial:m2218_67 +# 2218| r2218_69(glval>) = CopyValue : r2218_57 #-----| Goto (back edge) -> Block 8 -# 2216| Block 10 -# 2216| r2216_70(glval>) = VariableAddress[ys] : -# 2216| r2216_71(glval) = FunctionAddress[~vector] : -# 2216| v2216_72(void) = Call[~vector] : func:r2216_71, this:r2216_70 -# 2216| v2216_73(void) = ^IndirectReadSideEffect[-1] : &:r2216_70, m2216_10 -# 2216| m2216_74(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2216_70 -# 2219| r2219_1(glval>) = VariableAddress[ys] : -# 2219| m2219_2(vector) = Uninitialized[ys] : &:r2219_1 -# 2219| r2219_3(glval) = FunctionAddress[vector] : -# 2219| r2219_4(glval) = VariableAddress[#temp2219:45] : -# 2219| r2219_5(glval) = VariableAddress[x] : -# 2219| r2219_6(ClassWithDestructor) = Load[x] : &:r2219_5, m2215_8 -# 2219| m2219_7(ClassWithDestructor) = Store[#temp2219:45] : &:r2219_4, r2219_6 -# 2219| r2219_8(ClassWithDestructor) = Load[#temp2219:45] : &:r2219_4, m2219_7 -# 2219| v2219_9(void) = Call[vector] : func:r2219_3, this:r2219_1, 0:r2219_8 -# 2219| m2219_10(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2219_1 -# 2219| r2219_11(glval) = CopyValue : r2219_4 -# 2219| r2219_12(glval) = FunctionAddress[~ClassWithDestructor] : -# 2219| v2219_13(void) = Call[~ClassWithDestructor] : func:r2219_12, this:r2219_11 -# 2219| m2219_14(unknown) = ^CallSideEffect : ~m2216_46 -# 2219| m2219_15(unknown) = Chi : total:m2216_46, partial:m2219_14 -# 2219| v2219_16(void) = ^IndirectReadSideEffect[-1] : &:r2219_11, m2219_7 -# 2219| m2219_17(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2219_11 -# 2219| m2219_18(ClassWithDestructor) = Chi : total:m2219_7, partial:m2219_17 -# 2219| r2219_19(glval &>) = VariableAddress[(__range)] : -# 2219| r2219_20(glval>) = VariableAddress[ys] : -# 2219| r2219_21(vector &) = CopyValue : r2219_20 -# 2219| m2219_22(vector &) = Store[(__range)] : &:r2219_19, r2219_21 -# 2219| r2219_23(glval>) = VariableAddress[(__begin)] : -# 2219| r2219_24(glval &>) = VariableAddress[(__range)] : -# 2219| r2219_25(vector &) = Load[(__range)] : &:r2219_24, m2219_22 -#-----| r0_18(glval>) = CopyValue : r2219_25 +# 2218| Block 10 +# 2218| r2218_70(glval>) = VariableAddress[ys] : +# 2218| r2218_71(glval) = FunctionAddress[~vector] : +# 2218| v2218_72(void) = Call[~vector] : func:r2218_71, this:r2218_70 +# 2218| v2218_73(void) = ^IndirectReadSideEffect[-1] : &:r2218_70, m2218_10 +# 2218| m2218_74(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2218_70 +# 2221| r2221_1(glval>) = VariableAddress[ys] : +# 2221| m2221_2(vector) = Uninitialized[ys] : &:r2221_1 +# 2221| r2221_3(glval) = FunctionAddress[vector] : +# 2221| r2221_4(glval) = VariableAddress[#temp2221:45] : +# 2221| r2221_5(glval) = VariableAddress[x] : +# 2221| r2221_6(ClassWithDestructor) = Load[x] : &:r2221_5, m2217_8 +# 2221| m2221_7(ClassWithDestructor) = Store[#temp2221:45] : &:r2221_4, r2221_6 +# 2221| r2221_8(ClassWithDestructor) = Load[#temp2221:45] : &:r2221_4, m2221_7 +# 2221| v2221_9(void) = Call[vector] : func:r2221_3, this:r2221_1, 0:r2221_8 +# 2221| m2221_10(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2221_1 +# 2221| r2221_11(glval) = CopyValue : r2221_4 +# 2221| r2221_12(glval) = FunctionAddress[~ClassWithDestructor] : +# 2221| v2221_13(void) = Call[~ClassWithDestructor] : func:r2221_12, this:r2221_11 +# 2221| m2221_14(unknown) = ^CallSideEffect : ~m2218_46 +# 2221| m2221_15(unknown) = Chi : total:m2218_46, partial:m2221_14 +# 2221| v2221_16(void) = ^IndirectReadSideEffect[-1] : &:r2221_11, m2221_7 +# 2221| m2221_17(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2221_11 +# 2221| m2221_18(ClassWithDestructor) = Chi : total:m2221_7, partial:m2221_17 +# 2221| r2221_19(glval &>) = VariableAddress[(__range)] : +# 2221| r2221_20(glval>) = VariableAddress[ys] : +# 2221| r2221_21(vector &) = CopyValue : r2221_20 +# 2221| m2221_22(vector &) = Store[(__range)] : &:r2221_19, r2221_21 +# 2221| r2221_23(glval>) = VariableAddress[(__begin)] : +# 2221| r2221_24(glval &>) = VariableAddress[(__range)] : +# 2221| r2221_25(vector &) = Load[(__range)] : &:r2221_24, m2221_22 +#-----| r0_18(glval>) = CopyValue : r2221_25 #-----| r0_19(glval>) = Convert : r0_18 -# 2219| r2219_26(glval) = FunctionAddress[begin] : -# 2219| r2219_27(iterator) = Call[begin] : func:r2219_26, this:r0_19 -#-----| v0_20(void) = ^IndirectReadSideEffect[-1] : &:r0_19, m2219_10 -# 2219| m2219_28(iterator) = Store[(__begin)] : &:r2219_23, r2219_27 -# 2219| r2219_29(glval>) = VariableAddress[(__end)] : -# 2219| r2219_30(glval &>) = VariableAddress[(__range)] : -# 2219| r2219_31(vector &) = Load[(__range)] : &:r2219_30, m2219_22 -#-----| r0_21(glval>) = CopyValue : r2219_31 +# 2221| r2221_26(glval) = FunctionAddress[begin] : +# 2221| r2221_27(iterator) = Call[begin] : func:r2221_26, this:r0_19 +#-----| v0_20(void) = ^IndirectReadSideEffect[-1] : &:r0_19, m2221_10 +# 2221| m2221_28(iterator) = Store[(__begin)] : &:r2221_23, r2221_27 +# 2221| r2221_29(glval>) = VariableAddress[(__end)] : +# 2221| r2221_30(glval &>) = VariableAddress[(__range)] : +# 2221| r2221_31(vector &) = Load[(__range)] : &:r2221_30, m2221_22 +#-----| r0_21(glval>) = CopyValue : r2221_31 #-----| r0_22(glval>) = Convert : r0_21 -# 2219| r2219_32(glval) = FunctionAddress[end] : -# 2219| r2219_33(iterator) = Call[end] : func:r2219_32, this:r0_22 -#-----| v0_23(void) = ^IndirectReadSideEffect[-1] : &:r0_22, m2219_10 -# 2219| m2219_34(iterator) = Store[(__end)] : &:r2219_29, r2219_33 -# 2219| m2219_35(unknown) = Chi : total:m2219_15, partial:m2219_34 +# 2221| r2221_32(glval) = FunctionAddress[end] : +# 2221| r2221_33(iterator) = Call[end] : func:r2221_32, this:r0_22 +#-----| v0_23(void) = ^IndirectReadSideEffect[-1] : &:r0_22, m2221_10 +# 2221| m2221_34(iterator) = Store[(__end)] : &:r2221_29, r2221_33 +# 2221| m2221_35(unknown) = Chi : total:m2221_15, partial:m2221_34 #-----| Goto -> Block 11 -# 2219| Block 11 -# 2219| m2219_36(iterator) = Phi : from 10:m2219_28, from 12:m2219_54 -# 2219| m2219_37(unknown) = Phi : from 10:~m2219_35, from 12:~m2219_59 -# 2219| r2219_38(glval>) = VariableAddress[(__begin)] : -#-----| r0_24(glval>) = Convert : r2219_38 -# 2219| r2219_39(glval) = FunctionAddress[operator!=] : +# 2221| Block 11 +# 2221| m2221_36(iterator) = Phi : from 10:m2221_28, from 12:m2221_54 +# 2221| m2221_37(unknown) = Phi : from 10:~m2221_35, from 12:~m2221_59 +# 2221| r2221_38(glval>) = VariableAddress[(__begin)] : +#-----| r0_24(glval>) = Convert : r2221_38 +# 2221| r2221_39(glval) = FunctionAddress[operator!=] : #-----| r0_25(glval>) = VariableAddress[#temp0:0] : #-----| m0_26(iterator) = Uninitialized[#temp0:0] : &:r0_25 -#-----| m0_27(unknown) = Chi : total:m2219_37, partial:m0_26 -# 2219| r2219_40(glval) = FunctionAddress[iterator] : -# 2219| r2219_41(glval>) = VariableAddress[(__end)] : -#-----| r0_28(glval>) = Convert : r2219_41 +#-----| m0_27(unknown) = Chi : total:m2221_37, partial:m0_26 +# 2221| r2221_40(glval) = FunctionAddress[iterator] : +# 2221| r2221_41(glval>) = VariableAddress[(__end)] : +#-----| r0_28(glval>) = Convert : r2221_41 #-----| r0_29(iterator &) = CopyValue : r0_28 -# 2219| v2219_42(void) = Call[iterator] : func:r2219_40, this:r0_25, 0:r0_29 -# 2219| m2219_43(unknown) = ^CallSideEffect : ~m0_27 -# 2219| m2219_44(unknown) = Chi : total:m0_27, partial:m2219_43 -#-----| v0_30(void) = ^BufferReadSideEffect[0] : &:r0_29, ~m2219_44 -# 2219| m2219_45(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r0_25 -# 2219| m2219_46(unknown) = Chi : total:m2219_44, partial:m2219_45 -#-----| r0_31(iterator) = Load[#temp0:0] : &:r0_25, ~m2219_46 -# 2219| r2219_47(bool) = Call[operator!=] : func:r2219_39, this:r0_24, 0:r0_31 -#-----| v0_32(void) = ^IndirectReadSideEffect[-1] : &:r0_24, m2219_36 -# 2219| v2219_48(void) = ConditionalBranch : r2219_47 +# 2221| v2221_42(void) = Call[iterator] : func:r2221_40, this:r0_25, 0:r0_29 +# 2221| m2221_43(unknown) = ^CallSideEffect : ~m0_27 +# 2221| m2221_44(unknown) = Chi : total:m0_27, partial:m2221_43 +#-----| v0_30(void) = ^BufferReadSideEffect[0] : &:r0_29, ~m2221_44 +# 2221| m2221_45(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r0_25 +# 2221| m2221_46(unknown) = Chi : total:m2221_44, partial:m2221_45 +#-----| r0_31(iterator) = Load[#temp0:0] : &:r0_25, ~m2221_46 +# 2221| r2221_47(bool) = Call[operator!=] : func:r2221_39, this:r0_24, 0:r0_31 +#-----| v0_32(void) = ^IndirectReadSideEffect[-1] : &:r0_24, m2221_36 +# 2221| v2221_48(void) = ConditionalBranch : r2221_47 #-----| False -> Block 15 #-----| True -> Block 13 -# 2219| Block 12 -# 2219| r2219_49(glval>) = VariableAddress[(__begin)] : -# 2219| r2219_50(glval) = FunctionAddress[operator++] : -# 2219| r2219_51(iterator &) = Call[operator++] : func:r2219_50, this:r2219_49 -# 2219| v2219_52(void) = ^IndirectReadSideEffect[-1] : &:r2219_49, m2219_36 -# 2219| m2219_53(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r2219_49 -# 2219| m2219_54(iterator) = Chi : total:m2219_36, partial:m2219_53 -# 2219| r2219_55(glval) = VariableAddress[y] : -# 2219| r2219_56(glval) = FunctionAddress[~ClassWithDestructor] : -# 2219| v2219_57(void) = Call[~ClassWithDestructor] : func:r2219_56, this:r2219_55 -# 2219| m2219_58(unknown) = ^CallSideEffect : ~m2221_5 -# 2219| m2219_59(unknown) = Chi : total:m2221_5, partial:m2219_58 -# 2219| v2219_60(void) = ^IndirectReadSideEffect[-1] : &:r2219_55, m2221_8 -# 2219| m2219_61(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2219_55 -# 2219| m2219_62(ClassWithDestructor) = Chi : total:m2221_8, partial:m2219_61 -# 2219| r2219_63(glval>) = CopyValue : r2219_51 +# 2221| Block 12 +# 2221| r2221_49(glval>) = VariableAddress[(__begin)] : +# 2221| r2221_50(glval) = FunctionAddress[operator++] : +# 2221| r2221_51(iterator &) = Call[operator++] : func:r2221_50, this:r2221_49 +# 2221| v2221_52(void) = ^IndirectReadSideEffect[-1] : &:r2221_49, m2221_36 +# 2221| m2221_53(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r2221_49 +# 2221| m2221_54(iterator) = Chi : total:m2221_36, partial:m2221_53 +# 2221| r2221_55(glval) = VariableAddress[y] : +# 2221| r2221_56(glval) = FunctionAddress[~ClassWithDestructor] : +# 2221| v2221_57(void) = Call[~ClassWithDestructor] : func:r2221_56, this:r2221_55 +# 2221| m2221_58(unknown) = ^CallSideEffect : ~m2223_5 +# 2221| m2221_59(unknown) = Chi : total:m2223_5, partial:m2221_58 +# 2221| v2221_60(void) = ^IndirectReadSideEffect[-1] : &:r2221_55, m2223_8 +# 2221| m2221_61(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2221_55 +# 2221| m2221_62(ClassWithDestructor) = Chi : total:m2223_8, partial:m2221_61 +# 2221| r2221_63(glval>) = CopyValue : r2221_51 #-----| Goto (back edge) -> Block 11 -# 2219| Block 13 -# 2219| r2219_64(glval) = VariableAddress[y] : -# 2219| r2219_65(glval>) = VariableAddress[(__begin)] : -#-----| r0_33(glval>) = Convert : r2219_65 -# 2219| r2219_66(glval) = FunctionAddress[operator*] : -# 2219| r2219_67(ClassWithDestructor &) = Call[operator*] : func:r2219_66, this:r0_33 -#-----| v0_34(void) = ^IndirectReadSideEffect[-1] : &:r0_33, m2219_36 -# 2219| r2219_68(ClassWithDestructor) = Load[?] : &:r2219_67, ~m2219_46 -# 2219| m2219_69(ClassWithDestructor) = Store[y] : &:r2219_64, r2219_68 -# 2220| r2220_1(glval) = VariableAddress[y] : -# 2220| r2220_2(glval) = FunctionAddress[set_x] : -# 2220| r2220_3(char) = Constant[97] : -# 2220| v2220_4(void) = Call[set_x] : func:r2220_2, this:r2220_1, 0:r2220_3 -# 2220| m2220_5(unknown) = ^CallSideEffect : ~m2219_46 -# 2220| m2220_6(unknown) = Chi : total:m2219_46, partial:m2220_5 -# 2220| v2220_7(void) = ^IndirectReadSideEffect[-1] : &:r2220_1, m2219_69 -# 2220| m2220_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2220_1 -# 2220| m2220_9(ClassWithDestructor) = Chi : total:m2219_69, partial:m2220_8 -# 2221| r2221_1(glval) = VariableAddress[y] : -# 2221| r2221_2(glval) = FunctionAddress[get_x] : -# 2221| r2221_3(char) = Call[get_x] : func:r2221_2, this:r2221_1 -# 2221| m2221_4(unknown) = ^CallSideEffect : ~m2220_6 -# 2221| m2221_5(unknown) = Chi : total:m2220_6, partial:m2221_4 -# 2221| v2221_6(void) = ^IndirectReadSideEffect[-1] : &:r2221_1, m2220_9 -# 2221| m2221_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2221_1 -# 2221| m2221_8(ClassWithDestructor) = Chi : total:m2220_9, partial:m2221_7 -# 2221| r2221_9(int) = Convert : r2221_3 -# 2221| r2221_10(int) = Constant[98] : -# 2221| r2221_11(bool) = CompareEQ : r2221_9, r2221_10 -# 2221| v2221_12(void) = ConditionalBranch : r2221_11 +# 2221| Block 13 +# 2221| r2221_64(glval) = VariableAddress[y] : +# 2221| r2221_65(glval>) = VariableAddress[(__begin)] : +#-----| r0_33(glval>) = Convert : r2221_65 +# 2221| r2221_66(glval) = FunctionAddress[operator*] : +# 2221| r2221_67(ClassWithDestructor &) = Call[operator*] : func:r2221_66, this:r0_33 +#-----| v0_34(void) = ^IndirectReadSideEffect[-1] : &:r0_33, m2221_36 +# 2221| r2221_68(ClassWithDestructor) = Load[?] : &:r2221_67, ~m2221_46 +# 2221| m2221_69(ClassWithDestructor) = Store[y] : &:r2221_64, r2221_68 +# 2222| r2222_1(glval) = VariableAddress[y] : +# 2222| r2222_2(glval) = FunctionAddress[set_x] : +# 2222| r2222_3(char) = Constant[97] : +# 2222| v2222_4(void) = Call[set_x] : func:r2222_2, this:r2222_1, 0:r2222_3 +# 2222| m2222_5(unknown) = ^CallSideEffect : ~m2221_46 +# 2222| m2222_6(unknown) = Chi : total:m2221_46, partial:m2222_5 +# 2222| v2222_7(void) = ^IndirectReadSideEffect[-1] : &:r2222_1, m2221_69 +# 2222| m2222_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2222_1 +# 2222| m2222_9(ClassWithDestructor) = Chi : total:m2221_69, partial:m2222_8 +# 2223| r2223_1(glval) = VariableAddress[y] : +# 2223| r2223_2(glval) = FunctionAddress[get_x] : +# 2223| r2223_3(char) = Call[get_x] : func:r2223_2, this:r2223_1 +# 2223| m2223_4(unknown) = ^CallSideEffect : ~m2222_6 +# 2223| m2223_5(unknown) = Chi : total:m2222_6, partial:m2223_4 +# 2223| v2223_6(void) = ^IndirectReadSideEffect[-1] : &:r2223_1, m2222_9 +# 2223| m2223_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2223_1 +# 2223| m2223_8(ClassWithDestructor) = Chi : total:m2222_9, partial:m2223_7 +# 2223| r2223_9(int) = Convert : r2223_3 +# 2223| r2223_10(int) = Constant[98] : +# 2223| r2223_11(bool) = CompareEQ : r2223_9, r2223_10 +# 2223| v2223_12(void) = ConditionalBranch : r2223_11 #-----| False -> Block 12 #-----| True -> Block 14 -# 2222| Block 14 -# 2222| v2222_1(void) = NoOp : -# 2219| r2219_70(glval) = VariableAddress[y] : -# 2219| r2219_71(glval) = FunctionAddress[~ClassWithDestructor] : -# 2219| v2219_72(void) = Call[~ClassWithDestructor] : func:r2219_71, this:r2219_70 -# 2219| m2219_73(unknown) = ^CallSideEffect : ~m2221_5 -# 2219| m2219_74(unknown) = Chi : total:m2221_5, partial:m2219_73 -# 2219| v2219_75(void) = ^IndirectReadSideEffect[-1] : &:r2219_70, m2221_8 -# 2219| m2219_76(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2219_70 -# 2219| m2219_77(ClassWithDestructor) = Chi : total:m2221_8, partial:m2219_76 -# 2219| r2219_78(glval>) = VariableAddress[ys] : -# 2219| r2219_79(glval) = FunctionAddress[~vector] : -# 2219| v2219_80(void) = Call[~vector] : func:r2219_79, this:r2219_78 -# 2219| v2219_81(void) = ^IndirectReadSideEffect[-1] : &:r2219_78, m2219_10 -# 2219| m2219_82(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2219_78 -# 2234| r2234_1(glval) = VariableAddress[x] : -# 2234| r2234_2(glval) = FunctionAddress[~ClassWithDestructor] : -# 2234| v2234_3(void) = Call[~ClassWithDestructor] : func:r2234_2, this:r2234_1 -# 2234| m2234_4(unknown) = ^CallSideEffect : ~m2219_74 -# 2234| m2234_5(unknown) = Chi : total:m2219_74, partial:m2234_4 -# 2234| v2234_6(void) = ^IndirectReadSideEffect[-1] : &:r2234_1, m2215_8 -# 2234| m2234_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2234_1 -# 2234| m2234_8(ClassWithDestructor) = Chi : total:m2215_8, partial:m2234_7 +# 2224| Block 14 +# 2224| v2224_1(void) = NoOp : +# 2221| r2221_70(glval) = VariableAddress[y] : +# 2221| r2221_71(glval) = FunctionAddress[~ClassWithDestructor] : +# 2221| v2221_72(void) = Call[~ClassWithDestructor] : func:r2221_71, this:r2221_70 +# 2221| m2221_73(unknown) = ^CallSideEffect : ~m2223_5 +# 2221| m2221_74(unknown) = Chi : total:m2223_5, partial:m2221_73 +# 2221| v2221_75(void) = ^IndirectReadSideEffect[-1] : &:r2221_70, m2223_8 +# 2221| m2221_76(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2221_70 +# 2221| m2221_77(ClassWithDestructor) = Chi : total:m2223_8, partial:m2221_76 +# 2221| r2221_78(glval>) = VariableAddress[ys] : +# 2221| r2221_79(glval) = FunctionAddress[~vector] : +# 2221| v2221_80(void) = Call[~vector] : func:r2221_79, this:r2221_78 +# 2221| v2221_81(void) = ^IndirectReadSideEffect[-1] : &:r2221_78, m2221_10 +# 2221| m2221_82(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2221_78 +# 2236| r2236_1(glval) = VariableAddress[x] : +# 2236| r2236_2(glval) = FunctionAddress[~ClassWithDestructor] : +# 2236| v2236_3(void) = Call[~ClassWithDestructor] : func:r2236_2, this:r2236_1 +# 2236| m2236_4(unknown) = ^CallSideEffect : ~m2221_74 +# 2236| m2236_5(unknown) = Chi : total:m2221_74, partial:m2236_4 +# 2236| v2236_6(void) = ^IndirectReadSideEffect[-1] : &:r2236_1, m2217_8 +# 2236| m2236_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2236_1 +# 2236| m2236_8(ClassWithDestructor) = Chi : total:m2217_8, partial:m2236_7 #-----| Goto -> Block 1 -# 2219| Block 15 -# 2219| r2219_83(glval>) = VariableAddress[ys] : -# 2219| r2219_84(glval) = FunctionAddress[~vector] : -# 2219| v2219_85(void) = Call[~vector] : func:r2219_84, this:r2219_83 -# 2219| v2219_86(void) = ^IndirectReadSideEffect[-1] : &:r2219_83, m2219_10 -# 2219| m2219_87(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2219_83 -# 2225| r2225_1(glval>) = VariableAddress[ys] : -# 2225| m2225_2(vector) = Uninitialized[ys] : &:r2225_1 -# 2225| r2225_3(glval) = FunctionAddress[vector] : -# 2225| r2225_4(int) = Constant[1] : -# 2225| v2225_5(void) = Call[vector] : func:r2225_3, this:r2225_1, 0:r2225_4 -# 2225| m2225_6(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2225_1 -# 2225| r2225_7(glval &>) = VariableAddress[(__range)] : -# 2225| r2225_8(glval>) = VariableAddress[ys] : -# 2225| r2225_9(vector &) = CopyValue : r2225_8 -# 2225| m2225_10(vector &) = Store[(__range)] : &:r2225_7, r2225_9 -# 2225| r2225_11(glval>) = VariableAddress[(__begin)] : -# 2225| r2225_12(glval &>) = VariableAddress[(__range)] : -# 2225| r2225_13(vector &) = Load[(__range)] : &:r2225_12, m2225_10 -#-----| r0_35(glval>) = CopyValue : r2225_13 +# 2221| Block 15 +# 2221| r2221_83(glval>) = VariableAddress[ys] : +# 2221| r2221_84(glval) = FunctionAddress[~vector] : +# 2221| v2221_85(void) = Call[~vector] : func:r2221_84, this:r2221_83 +# 2221| v2221_86(void) = ^IndirectReadSideEffect[-1] : &:r2221_83, m2221_10 +# 2221| m2221_87(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2221_83 +# 2227| r2227_1(glval>) = VariableAddress[ys] : +# 2227| m2227_2(vector) = Uninitialized[ys] : &:r2227_1 +# 2227| r2227_3(glval) = FunctionAddress[vector] : +# 2227| r2227_4(int) = Constant[1] : +# 2227| v2227_5(void) = Call[vector] : func:r2227_3, this:r2227_1, 0:r2227_4 +# 2227| m2227_6(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2227_1 +# 2227| r2227_7(glval &>) = VariableAddress[(__range)] : +# 2227| r2227_8(glval>) = VariableAddress[ys] : +# 2227| r2227_9(vector &) = CopyValue : r2227_8 +# 2227| m2227_10(vector &) = Store[(__range)] : &:r2227_7, r2227_9 +# 2227| r2227_11(glval>) = VariableAddress[(__begin)] : +# 2227| r2227_12(glval &>) = VariableAddress[(__range)] : +# 2227| r2227_13(vector &) = Load[(__range)] : &:r2227_12, m2227_10 +#-----| r0_35(glval>) = CopyValue : r2227_13 #-----| r0_36(glval>) = Convert : r0_35 -# 2225| r2225_14(glval) = FunctionAddress[begin] : -# 2225| r2225_15(iterator) = Call[begin] : func:r2225_14, this:r0_36 -#-----| v0_37(void) = ^IndirectReadSideEffect[-1] : &:r0_36, m2225_6 -# 2225| m2225_16(iterator) = Store[(__begin)] : &:r2225_11, r2225_15 -# 2225| r2225_17(glval>) = VariableAddress[(__end)] : -# 2225| r2225_18(glval &>) = VariableAddress[(__range)] : -# 2225| r2225_19(vector &) = Load[(__range)] : &:r2225_18, m2225_10 -#-----| r0_38(glval>) = CopyValue : r2225_19 +# 2227| r2227_14(glval) = FunctionAddress[begin] : +# 2227| r2227_15(iterator) = Call[begin] : func:r2227_14, this:r0_36 +#-----| v0_37(void) = ^IndirectReadSideEffect[-1] : &:r0_36, m2227_6 +# 2227| m2227_16(iterator) = Store[(__begin)] : &:r2227_11, r2227_15 +# 2227| r2227_17(glval>) = VariableAddress[(__end)] : +# 2227| r2227_18(glval &>) = VariableAddress[(__range)] : +# 2227| r2227_19(vector &) = Load[(__range)] : &:r2227_18, m2227_10 +#-----| r0_38(glval>) = CopyValue : r2227_19 #-----| r0_39(glval>) = Convert : r0_38 -# 2225| r2225_20(glval) = FunctionAddress[end] : -# 2225| r2225_21(iterator) = Call[end] : func:r2225_20, this:r0_39 -#-----| v0_40(void) = ^IndirectReadSideEffect[-1] : &:r0_39, m2225_6 -# 2225| m2225_22(iterator) = Store[(__end)] : &:r2225_17, r2225_21 -# 2225| m2225_23(unknown) = Chi : total:m2219_46, partial:m2225_22 +# 2227| r2227_20(glval) = FunctionAddress[end] : +# 2227| r2227_21(iterator) = Call[end] : func:r2227_20, this:r0_39 +#-----| v0_40(void) = ^IndirectReadSideEffect[-1] : &:r0_39, m2227_6 +# 2227| m2227_22(iterator) = Store[(__end)] : &:r2227_17, r2227_21 +# 2227| m2227_23(unknown) = Chi : total:m2221_46, partial:m2227_22 #-----| Goto -> Block 16 -# 2225| Block 16 -# 2225| m2225_24(iterator) = Phi : from 15:m2225_16, from 17:m2225_42 -# 2225| m2225_25(unknown) = Phi : from 15:~m2225_23, from 17:~m2225_34 -# 2225| r2225_26(glval>) = VariableAddress[(__begin)] : -#-----| r0_41(glval>) = Convert : r2225_26 -# 2225| r2225_27(glval) = FunctionAddress[operator!=] : +# 2227| Block 16 +# 2227| m2227_24(iterator) = Phi : from 15:m2227_16, from 17:m2227_42 +# 2227| m2227_25(unknown) = Phi : from 15:~m2227_23, from 17:~m2227_34 +# 2227| r2227_26(glval>) = VariableAddress[(__begin)] : +#-----| r0_41(glval>) = Convert : r2227_26 +# 2227| r2227_27(glval) = FunctionAddress[operator!=] : #-----| r0_42(glval>) = VariableAddress[#temp0:0] : #-----| m0_43(iterator) = Uninitialized[#temp0:0] : &:r0_42 -#-----| m0_44(unknown) = Chi : total:m2225_25, partial:m0_43 -# 2225| r2225_28(glval) = FunctionAddress[iterator] : -# 2225| r2225_29(glval>) = VariableAddress[(__end)] : -#-----| r0_45(glval>) = Convert : r2225_29 +#-----| m0_44(unknown) = Chi : total:m2227_25, partial:m0_43 +# 2227| r2227_28(glval) = FunctionAddress[iterator] : +# 2227| r2227_29(glval>) = VariableAddress[(__end)] : +#-----| r0_45(glval>) = Convert : r2227_29 #-----| r0_46(iterator &) = CopyValue : r0_45 -# 2225| v2225_30(void) = Call[iterator] : func:r2225_28, this:r0_42, 0:r0_46 -# 2225| m2225_31(unknown) = ^CallSideEffect : ~m0_44 -# 2225| m2225_32(unknown) = Chi : total:m0_44, partial:m2225_31 -#-----| v0_47(void) = ^BufferReadSideEffect[0] : &:r0_46, ~m2225_32 -# 2225| m2225_33(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r0_42 -# 2225| m2225_34(unknown) = Chi : total:m2225_32, partial:m2225_33 -#-----| r0_48(iterator) = Load[#temp0:0] : &:r0_42, ~m2225_34 -# 2225| r2225_35(bool) = Call[operator!=] : func:r2225_27, this:r0_41, 0:r0_48 -#-----| v0_49(void) = ^IndirectReadSideEffect[-1] : &:r0_41, m2225_24 -# 2225| v2225_36(void) = ConditionalBranch : r2225_35 +# 2227| v2227_30(void) = Call[iterator] : func:r2227_28, this:r0_42, 0:r0_46 +# 2227| m2227_31(unknown) = ^CallSideEffect : ~m0_44 +# 2227| m2227_32(unknown) = Chi : total:m0_44, partial:m2227_31 +#-----| v0_47(void) = ^BufferReadSideEffect[0] : &:r0_46, ~m2227_32 +# 2227| m2227_33(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r0_42 +# 2227| m2227_34(unknown) = Chi : total:m2227_32, partial:m2227_33 +#-----| r0_48(iterator) = Load[#temp0:0] : &:r0_42, ~m2227_34 +# 2227| r2227_35(bool) = Call[operator!=] : func:r2227_27, this:r0_41, 0:r0_48 +#-----| v0_49(void) = ^IndirectReadSideEffect[-1] : &:r0_41, m2227_24 +# 2227| v2227_36(void) = ConditionalBranch : r2227_35 #-----| False -> Block 20 #-----| True -> Block 18 -# 2225| Block 17 -# 2225| r2225_37(glval>) = VariableAddress[(__begin)] : -# 2225| r2225_38(glval) = FunctionAddress[operator++] : -# 2225| r2225_39(iterator &) = Call[operator++] : func:r2225_38, this:r2225_37 -# 2225| v2225_40(void) = ^IndirectReadSideEffect[-1] : &:r2225_37, m2225_24 -# 2225| m2225_41(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r2225_37 -# 2225| m2225_42(iterator) = Chi : total:m2225_24, partial:m2225_41 -# 2225| r2225_43(glval>) = CopyValue : r2225_39 +# 2227| Block 17 +# 2227| r2227_37(glval>) = VariableAddress[(__begin)] : +# 2227| r2227_38(glval) = FunctionAddress[operator++] : +# 2227| r2227_39(iterator &) = Call[operator++] : func:r2227_38, this:r2227_37 +# 2227| v2227_40(void) = ^IndirectReadSideEffect[-1] : &:r2227_37, m2227_24 +# 2227| m2227_41(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r2227_37 +# 2227| m2227_42(iterator) = Chi : total:m2227_24, partial:m2227_41 +# 2227| r2227_43(glval>) = CopyValue : r2227_39 #-----| Goto (back edge) -> Block 16 -# 2225| Block 18 -# 2225| r2225_44(glval) = VariableAddress[y] : -# 2225| r2225_45(glval>) = VariableAddress[(__begin)] : -#-----| r0_50(glval>) = Convert : r2225_45 -# 2225| r2225_46(glval) = FunctionAddress[operator*] : -# 2225| r2225_47(int &) = Call[operator*] : func:r2225_46, this:r0_50 -#-----| v0_51(void) = ^IndirectReadSideEffect[-1] : &:r0_50, m2225_24 -# 2225| r2225_48(int) = Load[?] : &:r2225_47, ~m2225_34 -# 2225| m2225_49(int) = Store[y] : &:r2225_44, r2225_48 -# 2226| r2226_1(glval) = VariableAddress[y] : -# 2226| r2226_2(int) = Load[y] : &:r2226_1, m2225_49 -# 2226| r2226_3(int) = Constant[1] : -# 2226| r2226_4(bool) = CompareEQ : r2226_2, r2226_3 -# 2226| v2226_5(void) = ConditionalBranch : r2226_4 +# 2227| Block 18 +# 2227| r2227_44(glval) = VariableAddress[y] : +# 2227| r2227_45(glval>) = VariableAddress[(__begin)] : +#-----| r0_50(glval>) = Convert : r2227_45 +# 2227| r2227_46(glval) = FunctionAddress[operator*] : +# 2227| r2227_47(int &) = Call[operator*] : func:r2227_46, this:r0_50 +#-----| v0_51(void) = ^IndirectReadSideEffect[-1] : &:r0_50, m2227_24 +# 2227| r2227_48(int) = Load[?] : &:r2227_47, ~m2227_34 +# 2227| m2227_49(int) = Store[y] : &:r2227_44, r2227_48 +# 2228| r2228_1(glval) = VariableAddress[y] : +# 2228| r2228_2(int) = Load[y] : &:r2228_1, m2227_49 +# 2228| r2228_3(int) = Constant[1] : +# 2228| r2228_4(bool) = CompareEQ : r2228_2, r2228_3 +# 2228| v2228_5(void) = ConditionalBranch : r2228_4 #-----| False -> Block 17 #-----| True -> Block 19 -# 2227| Block 19 -# 2227| v2227_1(void) = NoOp : -# 2225| r2225_50(glval>) = VariableAddress[ys] : -# 2225| r2225_51(glval) = FunctionAddress[~vector] : -# 2225| v2225_52(void) = Call[~vector] : func:r2225_51, this:r2225_50 -# 2225| v2225_53(void) = ^IndirectReadSideEffect[-1] : &:r2225_50, m2225_6 -# 2225| m2225_54(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2225_50 -# 2234| r2234_9(glval) = VariableAddress[x] : -# 2234| r2234_10(glval) = FunctionAddress[~ClassWithDestructor] : -# 2234| v2234_11(void) = Call[~ClassWithDestructor] : func:r2234_10, this:r2234_9 -# 2234| m2234_12(unknown) = ^CallSideEffect : ~m2225_34 -# 2234| m2234_13(unknown) = Chi : total:m2225_34, partial:m2234_12 -# 2234| v2234_14(void) = ^IndirectReadSideEffect[-1] : &:r2234_9, m2215_8 -# 2234| m2234_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2234_9 -# 2234| m2234_16(ClassWithDestructor) = Chi : total:m2215_8, partial:m2234_15 +# 2229| Block 19 +# 2229| v2229_1(void) = NoOp : +# 2227| r2227_50(glval>) = VariableAddress[ys] : +# 2227| r2227_51(glval) = FunctionAddress[~vector] : +# 2227| v2227_52(void) = Call[~vector] : func:r2227_51, this:r2227_50 +# 2227| v2227_53(void) = ^IndirectReadSideEffect[-1] : &:r2227_50, m2227_6 +# 2227| m2227_54(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2227_50 +# 2236| r2236_9(glval) = VariableAddress[x] : +# 2236| r2236_10(glval) = FunctionAddress[~ClassWithDestructor] : +# 2236| v2236_11(void) = Call[~ClassWithDestructor] : func:r2236_10, this:r2236_9 +# 2236| m2236_12(unknown) = ^CallSideEffect : ~m2227_34 +# 2236| m2236_13(unknown) = Chi : total:m2227_34, partial:m2236_12 +# 2236| v2236_14(void) = ^IndirectReadSideEffect[-1] : &:r2236_9, m2217_8 +# 2236| m2236_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2236_9 +# 2236| m2236_16(ClassWithDestructor) = Chi : total:m2217_8, partial:m2236_15 #-----| Goto -> Block 1 -# 2225| Block 20 -# 2225| r2225_55(glval>) = VariableAddress[ys] : -# 2225| r2225_56(glval) = FunctionAddress[~vector] : -# 2225| v2225_57(void) = Call[~vector] : func:r2225_56, this:r2225_55 -# 2225| v2225_58(void) = ^IndirectReadSideEffect[-1] : &:r2225_55, m2225_6 -# 2225| m2225_59(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2225_55 -# 2230| r2230_1(glval>) = VariableAddress[ys] : -# 2230| m2230_2(vector) = Uninitialized[ys] : &:r2230_1 -# 2230| r2230_3(glval) = FunctionAddress[vector] : -# 2230| r2230_4(glval) = VariableAddress[#temp2230:45] : -# 2230| r2230_5(glval) = VariableAddress[x] : -# 2230| r2230_6(ClassWithDestructor) = Load[x] : &:r2230_5, m2215_8 -# 2230| m2230_7(ClassWithDestructor) = Store[#temp2230:45] : &:r2230_4, r2230_6 -# 2230| r2230_8(ClassWithDestructor) = Load[#temp2230:45] : &:r2230_4, m2230_7 -# 2230| v2230_9(void) = Call[vector] : func:r2230_3, this:r2230_1, 0:r2230_8 -# 2230| m2230_10(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2230_1 -# 2230| r2230_11(glval) = CopyValue : r2230_4 -# 2230| r2230_12(glval) = FunctionAddress[~ClassWithDestructor] : -# 2230| v2230_13(void) = Call[~ClassWithDestructor] : func:r2230_12, this:r2230_11 -# 2230| m2230_14(unknown) = ^CallSideEffect : ~m2225_34 -# 2230| m2230_15(unknown) = Chi : total:m2225_34, partial:m2230_14 -# 2230| v2230_16(void) = ^IndirectReadSideEffect[-1] : &:r2230_11, m2230_7 -# 2230| m2230_17(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2230_11 -# 2230| m2230_18(ClassWithDestructor) = Chi : total:m2230_7, partial:m2230_17 -# 2230| r2230_19(glval &>) = VariableAddress[(__range)] : -# 2230| r2230_20(glval>) = VariableAddress[ys] : -# 2230| r2230_21(vector &) = CopyValue : r2230_20 -# 2230| m2230_22(vector &) = Store[(__range)] : &:r2230_19, r2230_21 -# 2230| r2230_23(glval>) = VariableAddress[(__begin)] : -# 2230| r2230_24(glval &>) = VariableAddress[(__range)] : -# 2230| r2230_25(vector &) = Load[(__range)] : &:r2230_24, m2230_22 -#-----| r0_52(glval>) = CopyValue : r2230_25 +# 2227| Block 20 +# 2227| r2227_55(glval>) = VariableAddress[ys] : +# 2227| r2227_56(glval) = FunctionAddress[~vector] : +# 2227| v2227_57(void) = Call[~vector] : func:r2227_56, this:r2227_55 +# 2227| v2227_58(void) = ^IndirectReadSideEffect[-1] : &:r2227_55, m2227_6 +# 2227| m2227_59(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2227_55 +# 2232| r2232_1(glval>) = VariableAddress[ys] : +# 2232| m2232_2(vector) = Uninitialized[ys] : &:r2232_1 +# 2232| r2232_3(glval) = FunctionAddress[vector] : +# 2232| r2232_4(glval) = VariableAddress[#temp2232:45] : +# 2232| r2232_5(glval) = VariableAddress[x] : +# 2232| r2232_6(ClassWithDestructor) = Load[x] : &:r2232_5, m2217_8 +# 2232| m2232_7(ClassWithDestructor) = Store[#temp2232:45] : &:r2232_4, r2232_6 +# 2232| r2232_8(ClassWithDestructor) = Load[#temp2232:45] : &:r2232_4, m2232_7 +# 2232| v2232_9(void) = Call[vector] : func:r2232_3, this:r2232_1, 0:r2232_8 +# 2232| m2232_10(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2232_1 +# 2232| r2232_11(glval) = CopyValue : r2232_4 +# 2232| r2232_12(glval) = FunctionAddress[~ClassWithDestructor] : +# 2232| v2232_13(void) = Call[~ClassWithDestructor] : func:r2232_12, this:r2232_11 +# 2232| m2232_14(unknown) = ^CallSideEffect : ~m2227_34 +# 2232| m2232_15(unknown) = Chi : total:m2227_34, partial:m2232_14 +# 2232| v2232_16(void) = ^IndirectReadSideEffect[-1] : &:r2232_11, m2232_7 +# 2232| m2232_17(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2232_11 +# 2232| m2232_18(ClassWithDestructor) = Chi : total:m2232_7, partial:m2232_17 +# 2232| r2232_19(glval &>) = VariableAddress[(__range)] : +# 2232| r2232_20(glval>) = VariableAddress[ys] : +# 2232| r2232_21(vector &) = CopyValue : r2232_20 +# 2232| m2232_22(vector &) = Store[(__range)] : &:r2232_19, r2232_21 +# 2232| r2232_23(glval>) = VariableAddress[(__begin)] : +# 2232| r2232_24(glval &>) = VariableAddress[(__range)] : +# 2232| r2232_25(vector &) = Load[(__range)] : &:r2232_24, m2232_22 +#-----| r0_52(glval>) = CopyValue : r2232_25 #-----| r0_53(glval>) = Convert : r0_52 -# 2230| r2230_26(glval) = FunctionAddress[begin] : -# 2230| r2230_27(iterator) = Call[begin] : func:r2230_26, this:r0_53 -#-----| v0_54(void) = ^IndirectReadSideEffect[-1] : &:r0_53, m2230_10 -# 2230| m2230_28(iterator) = Store[(__begin)] : &:r2230_23, r2230_27 -# 2230| r2230_29(glval>) = VariableAddress[(__end)] : -# 2230| r2230_30(glval &>) = VariableAddress[(__range)] : -# 2230| r2230_31(vector &) = Load[(__range)] : &:r2230_30, m2230_22 -#-----| r0_55(glval>) = CopyValue : r2230_31 +# 2232| r2232_26(glval) = FunctionAddress[begin] : +# 2232| r2232_27(iterator) = Call[begin] : func:r2232_26, this:r0_53 +#-----| v0_54(void) = ^IndirectReadSideEffect[-1] : &:r0_53, m2232_10 +# 2232| m2232_28(iterator) = Store[(__begin)] : &:r2232_23, r2232_27 +# 2232| r2232_29(glval>) = VariableAddress[(__end)] : +# 2232| r2232_30(glval &>) = VariableAddress[(__range)] : +# 2232| r2232_31(vector &) = Load[(__range)] : &:r2232_30, m2232_22 +#-----| r0_55(glval>) = CopyValue : r2232_31 #-----| r0_56(glval>) = Convert : r0_55 -# 2230| r2230_32(glval) = FunctionAddress[end] : -# 2230| r2230_33(iterator) = Call[end] : func:r2230_32, this:r0_56 -#-----| v0_57(void) = ^IndirectReadSideEffect[-1] : &:r0_56, m2230_10 -# 2230| m2230_34(iterator) = Store[(__end)] : &:r2230_29, r2230_33 -# 2230| m2230_35(unknown) = Chi : total:m2230_15, partial:m2230_34 +# 2232| r2232_32(glval) = FunctionAddress[end] : +# 2232| r2232_33(iterator) = Call[end] : func:r2232_32, this:r0_56 +#-----| v0_57(void) = ^IndirectReadSideEffect[-1] : &:r0_56, m2232_10 +# 2232| m2232_34(iterator) = Store[(__end)] : &:r2232_29, r2232_33 +# 2232| m2232_35(unknown) = Chi : total:m2232_15, partial:m2232_34 #-----| Goto -> Block 21 -# 2230| Block 21 -# 2230| m2230_36(iterator) = Phi : from 20:m2230_28, from 22:m2230_60 -# 2230| m2230_37(unknown) = Phi : from 20:~m2230_35, from 22:~m2230_65 -# 2230| r2230_38(glval>) = VariableAddress[(__begin)] : -#-----| r0_58(glval>) = Convert : r2230_38 -# 2230| r2230_39(glval) = FunctionAddress[operator!=] : +# 2232| Block 21 +# 2232| m2232_36(iterator) = Phi : from 20:m2232_28, from 22:m2232_60 +# 2232| m2232_37(unknown) = Phi : from 20:~m2232_35, from 22:~m2232_65 +# 2232| r2232_38(glval>) = VariableAddress[(__begin)] : +#-----| r0_58(glval>) = Convert : r2232_38 +# 2232| r2232_39(glval) = FunctionAddress[operator!=] : #-----| r0_59(glval>) = VariableAddress[#temp0:0] : #-----| m0_60(iterator) = Uninitialized[#temp0:0] : &:r0_59 -#-----| m0_61(unknown) = Chi : total:m2230_37, partial:m0_60 -# 2230| r2230_40(glval) = FunctionAddress[iterator] : -# 2230| r2230_41(glval>) = VariableAddress[(__end)] : -#-----| r0_62(glval>) = Convert : r2230_41 +#-----| m0_61(unknown) = Chi : total:m2232_37, partial:m0_60 +# 2232| r2232_40(glval) = FunctionAddress[iterator] : +# 2232| r2232_41(glval>) = VariableAddress[(__end)] : +#-----| r0_62(glval>) = Convert : r2232_41 #-----| r0_63(iterator &) = CopyValue : r0_62 -# 2230| v2230_42(void) = Call[iterator] : func:r2230_40, this:r0_59, 0:r0_63 -# 2230| m2230_43(unknown) = ^CallSideEffect : ~m0_61 -# 2230| m2230_44(unknown) = Chi : total:m0_61, partial:m2230_43 -#-----| v0_64(void) = ^BufferReadSideEffect[0] : &:r0_63, ~m2230_44 -# 2230| m2230_45(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r0_59 -# 2230| m2230_46(unknown) = Chi : total:m2230_44, partial:m2230_45 -#-----| r0_65(iterator) = Load[#temp0:0] : &:r0_59, ~m2230_46 -# 2230| r2230_47(bool) = Call[operator!=] : func:r2230_39, this:r0_58, 0:r0_65 -#-----| v0_66(void) = ^IndirectReadSideEffect[-1] : &:r0_58, m2230_36 -# 2230| v2230_48(void) = ConditionalBranch : r2230_47 +# 2232| v2232_42(void) = Call[iterator] : func:r2232_40, this:r0_59, 0:r0_63 +# 2232| m2232_43(unknown) = ^CallSideEffect : ~m0_61 +# 2232| m2232_44(unknown) = Chi : total:m0_61, partial:m2232_43 +#-----| v0_64(void) = ^BufferReadSideEffect[0] : &:r0_63, ~m2232_44 +# 2232| m2232_45(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r0_59 +# 2232| m2232_46(unknown) = Chi : total:m2232_44, partial:m2232_45 +#-----| r0_65(iterator) = Load[#temp0:0] : &:r0_59, ~m2232_46 +# 2232| r2232_47(bool) = Call[operator!=] : func:r2232_39, this:r0_58, 0:r0_65 +#-----| v0_66(void) = ^IndirectReadSideEffect[-1] : &:r0_58, m2232_36 +# 2232| v2232_48(void) = ConditionalBranch : r2232_47 #-----| False -> Block 23 #-----| True -> Block 22 -# 2230| Block 22 -# 2230| r2230_49(glval) = VariableAddress[y] : -# 2230| r2230_50(glval>) = VariableAddress[(__begin)] : -#-----| r0_67(glval>) = Convert : r2230_50 -# 2230| r2230_51(glval) = FunctionAddress[operator*] : -# 2230| r2230_52(ClassWithDestructor &) = Call[operator*] : func:r2230_51, this:r0_67 -#-----| v0_68(void) = ^IndirectReadSideEffect[-1] : &:r0_67, m2230_36 -# 2230| r2230_53(ClassWithDestructor) = Load[?] : &:r2230_52, ~m2230_46 -# 2230| m2230_54(ClassWithDestructor) = Store[y] : &:r2230_49, r2230_53 -# 2231| r2231_1(glval) = VariableAddress[z1] : -# 2231| m2231_2(ClassWithDestructor) = Uninitialized[z1] : &:r2231_1 -# 2231| r2231_3(glval) = FunctionAddress[ClassWithDestructor] : -# 2231| v2231_4(void) = Call[ClassWithDestructor] : func:r2231_3, this:r2231_1 -# 2231| m2231_5(unknown) = ^CallSideEffect : ~m2230_46 -# 2231| m2231_6(unknown) = Chi : total:m2230_46, partial:m2231_5 -# 2231| m2231_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2231_1 -# 2231| m2231_8(ClassWithDestructor) = Chi : total:m2231_2, partial:m2231_7 -# 2232| r2232_1(glval) = VariableAddress[z2] : -# 2232| m2232_2(ClassWithDestructor) = Uninitialized[z2] : &:r2232_1 -# 2232| r2232_3(glval) = FunctionAddress[ClassWithDestructor] : -# 2232| v2232_4(void) = Call[ClassWithDestructor] : func:r2232_3, this:r2232_1 -# 2232| m2232_5(unknown) = ^CallSideEffect : ~m2231_6 -# 2232| m2232_6(unknown) = Chi : total:m2231_6, partial:m2232_5 -# 2232| m2232_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2232_1 -# 2232| m2232_8(ClassWithDestructor) = Chi : total:m2232_2, partial:m2232_7 -# 2233| r2233_1(glval) = VariableAddress[z2] : -# 2233| r2233_2(glval) = FunctionAddress[~ClassWithDestructor] : -# 2233| v2233_3(void) = Call[~ClassWithDestructor] : func:r2233_2, this:r2233_1 -# 2233| m2233_4(unknown) = ^CallSideEffect : ~m2232_6 -# 2233| m2233_5(unknown) = Chi : total:m2232_6, partial:m2233_4 -# 2233| v2233_6(void) = ^IndirectReadSideEffect[-1] : &:r2233_1, m2232_8 +# 2232| Block 22 +# 2232| r2232_49(glval) = VariableAddress[y] : +# 2232| r2232_50(glval>) = VariableAddress[(__begin)] : +#-----| r0_67(glval>) = Convert : r2232_50 +# 2232| r2232_51(glval) = FunctionAddress[operator*] : +# 2232| r2232_52(ClassWithDestructor &) = Call[operator*] : func:r2232_51, this:r0_67 +#-----| v0_68(void) = ^IndirectReadSideEffect[-1] : &:r0_67, m2232_36 +# 2232| r2232_53(ClassWithDestructor) = Load[?] : &:r2232_52, ~m2232_46 +# 2232| m2232_54(ClassWithDestructor) = Store[y] : &:r2232_49, r2232_53 +# 2233| r2233_1(glval) = VariableAddress[z1] : +# 2233| m2233_2(ClassWithDestructor) = Uninitialized[z1] : &:r2233_1 +# 2233| r2233_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2233| v2233_4(void) = Call[ClassWithDestructor] : func:r2233_3, this:r2233_1 +# 2233| m2233_5(unknown) = ^CallSideEffect : ~m2232_46 +# 2233| m2233_6(unknown) = Chi : total:m2232_46, partial:m2233_5 # 2233| m2233_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2233_1 -# 2233| m2233_8(ClassWithDestructor) = Chi : total:m2232_8, partial:m2233_7 -# 2233| r2233_9(glval) = VariableAddress[z1] : -# 2233| r2233_10(glval) = FunctionAddress[~ClassWithDestructor] : -# 2233| v2233_11(void) = Call[~ClassWithDestructor] : func:r2233_10, this:r2233_9 -# 2233| m2233_12(unknown) = ^CallSideEffect : ~m2233_5 -# 2233| m2233_13(unknown) = Chi : total:m2233_5, partial:m2233_12 -# 2233| v2233_14(void) = ^IndirectReadSideEffect[-1] : &:r2233_9, m2231_8 -# 2233| m2233_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2233_9 -# 2233| m2233_16(ClassWithDestructor) = Chi : total:m2231_8, partial:m2233_15 -# 2230| r2230_55(glval>) = VariableAddress[(__begin)] : -# 2230| r2230_56(glval) = FunctionAddress[operator++] : -# 2230| r2230_57(iterator &) = Call[operator++] : func:r2230_56, this:r2230_55 -# 2230| v2230_58(void) = ^IndirectReadSideEffect[-1] : &:r2230_55, m2230_36 -# 2230| m2230_59(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r2230_55 -# 2230| m2230_60(iterator) = Chi : total:m2230_36, partial:m2230_59 -# 2230| r2230_61(glval) = VariableAddress[y] : -# 2230| r2230_62(glval) = FunctionAddress[~ClassWithDestructor] : -# 2230| v2230_63(void) = Call[~ClassWithDestructor] : func:r2230_62, this:r2230_61 -# 2230| m2230_64(unknown) = ^CallSideEffect : ~m2233_13 -# 2230| m2230_65(unknown) = Chi : total:m2233_13, partial:m2230_64 -# 2230| v2230_66(void) = ^IndirectReadSideEffect[-1] : &:r2230_61, m2230_54 -# 2230| m2230_67(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2230_61 -# 2230| m2230_68(ClassWithDestructor) = Chi : total:m2230_54, partial:m2230_67 -# 2230| r2230_69(glval>) = CopyValue : r2230_57 +# 2233| m2233_8(ClassWithDestructor) = Chi : total:m2233_2, partial:m2233_7 +# 2234| r2234_1(glval) = VariableAddress[z2] : +# 2234| m2234_2(ClassWithDestructor) = Uninitialized[z2] : &:r2234_1 +# 2234| r2234_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2234| v2234_4(void) = Call[ClassWithDestructor] : func:r2234_3, this:r2234_1 +# 2234| m2234_5(unknown) = ^CallSideEffect : ~m2233_6 +# 2234| m2234_6(unknown) = Chi : total:m2233_6, partial:m2234_5 +# 2234| m2234_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2234_1 +# 2234| m2234_8(ClassWithDestructor) = Chi : total:m2234_2, partial:m2234_7 +# 2235| r2235_1(glval) = VariableAddress[z2] : +# 2235| r2235_2(glval) = FunctionAddress[~ClassWithDestructor] : +# 2235| v2235_3(void) = Call[~ClassWithDestructor] : func:r2235_2, this:r2235_1 +# 2235| m2235_4(unknown) = ^CallSideEffect : ~m2234_6 +# 2235| m2235_5(unknown) = Chi : total:m2234_6, partial:m2235_4 +# 2235| v2235_6(void) = ^IndirectReadSideEffect[-1] : &:r2235_1, m2234_8 +# 2235| m2235_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2235_1 +# 2235| m2235_8(ClassWithDestructor) = Chi : total:m2234_8, partial:m2235_7 +# 2235| r2235_9(glval) = VariableAddress[z1] : +# 2235| r2235_10(glval) = FunctionAddress[~ClassWithDestructor] : +# 2235| v2235_11(void) = Call[~ClassWithDestructor] : func:r2235_10, this:r2235_9 +# 2235| m2235_12(unknown) = ^CallSideEffect : ~m2235_5 +# 2235| m2235_13(unknown) = Chi : total:m2235_5, partial:m2235_12 +# 2235| v2235_14(void) = ^IndirectReadSideEffect[-1] : &:r2235_9, m2233_8 +# 2235| m2235_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2235_9 +# 2235| m2235_16(ClassWithDestructor) = Chi : total:m2233_8, partial:m2235_15 +# 2232| r2232_55(glval>) = VariableAddress[(__begin)] : +# 2232| r2232_56(glval) = FunctionAddress[operator++] : +# 2232| r2232_57(iterator &) = Call[operator++] : func:r2232_56, this:r2232_55 +# 2232| v2232_58(void) = ^IndirectReadSideEffect[-1] : &:r2232_55, m2232_36 +# 2232| m2232_59(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r2232_55 +# 2232| m2232_60(iterator) = Chi : total:m2232_36, partial:m2232_59 +# 2232| r2232_61(glval) = VariableAddress[y] : +# 2232| r2232_62(glval) = FunctionAddress[~ClassWithDestructor] : +# 2232| v2232_63(void) = Call[~ClassWithDestructor] : func:r2232_62, this:r2232_61 +# 2232| m2232_64(unknown) = ^CallSideEffect : ~m2235_13 +# 2232| m2232_65(unknown) = Chi : total:m2235_13, partial:m2232_64 +# 2232| v2232_66(void) = ^IndirectReadSideEffect[-1] : &:r2232_61, m2232_54 +# 2232| m2232_67(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2232_61 +# 2232| m2232_68(ClassWithDestructor) = Chi : total:m2232_54, partial:m2232_67 +# 2232| r2232_69(glval>) = CopyValue : r2232_57 #-----| Goto (back edge) -> Block 21 -# 2230| Block 23 -# 2230| r2230_70(glval>) = VariableAddress[ys] : -# 2230| r2230_71(glval) = FunctionAddress[~vector] : -# 2230| v2230_72(void) = Call[~vector] : func:r2230_71, this:r2230_70 -# 2230| v2230_73(void) = ^IndirectReadSideEffect[-1] : &:r2230_70, m2230_10 -# 2230| m2230_74(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2230_70 -# 2234| v2234_17(void) = NoOp : -# 2234| r2234_18(glval) = VariableAddress[x] : -# 2234| r2234_19(glval) = FunctionAddress[~ClassWithDestructor] : -# 2234| v2234_20(void) = Call[~ClassWithDestructor] : func:r2234_19, this:r2234_18 -# 2234| m2234_21(unknown) = ^CallSideEffect : ~m2230_46 -# 2234| m2234_22(unknown) = Chi : total:m2230_46, partial:m2234_21 -# 2234| v2234_23(void) = ^IndirectReadSideEffect[-1] : &:r2234_18, m2215_8 -# 2234| m2234_24(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2234_18 -# 2234| m2234_25(ClassWithDestructor) = Chi : total:m2215_8, partial:m2234_24 +# 2232| Block 23 +# 2232| r2232_70(glval>) = VariableAddress[ys] : +# 2232| r2232_71(glval) = FunctionAddress[~vector] : +# 2232| v2232_72(void) = Call[~vector] : func:r2232_71, this:r2232_70 +# 2232| v2232_73(void) = ^IndirectReadSideEffect[-1] : &:r2232_70, m2232_10 +# 2232| m2232_74(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2232_70 +# 2236| v2236_17(void) = NoOp : +# 2236| r2236_18(glval) = VariableAddress[x] : +# 2236| r2236_19(glval) = FunctionAddress[~ClassWithDestructor] : +# 2236| v2236_20(void) = Call[~ClassWithDestructor] : func:r2236_19, this:r2236_18 +# 2236| m2236_21(unknown) = ^CallSideEffect : ~m2232_46 +# 2236| m2236_22(unknown) = Chi : total:m2232_46, partial:m2236_21 +# 2236| v2236_23(void) = ^IndirectReadSideEffect[-1] : &:r2236_18, m2217_8 +# 2236| m2236_24(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2236_18 +# 2236| m2236_25(ClassWithDestructor) = Chi : total:m2217_8, partial:m2236_24 #-----| Goto -> Block 1 -# 2199| Block 24 -# 2199| v2199_13(void) = Unreached : +# 2201| Block 24 +# 2201| v2201_13(void) = Unreached : -# 2236| void static_variable_with_destructor_1() -# 2236| Block 0 -# 2236| v2236_1(void) = EnterFunction : -# 2236| m2236_2(unknown) = AliasedDefinition : -# 2236| m2236_3(unknown) = InitializeNonLocal : -# 2236| m2236_4(unknown) = Chi : total:m2236_2, partial:m2236_3 -# 2237| r2237_1(glval) = VariableAddress[a] : -# 2237| m2237_2(ClassWithDestructor) = Uninitialized[a] : &:r2237_1 -# 2237| r2237_3(glval) = FunctionAddress[ClassWithDestructor] : -# 2237| v2237_4(void) = Call[ClassWithDestructor] : func:r2237_3, this:r2237_1 -# 2237| m2237_5(unknown) = ^CallSideEffect : ~m2236_4 -# 2237| m2237_6(unknown) = Chi : total:m2236_4, partial:m2237_5 -# 2237| m2237_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2237_1 -# 2237| m2237_8(ClassWithDestructor) = Chi : total:m2237_2, partial:m2237_7 -# 2238| r2238_1(glval) = VariableAddress[b#init] : -# 2238| r2238_2(bool) = Load[b#init] : &:r2238_1, ~m2237_6 -# 2238| v2238_3(void) = ConditionalBranch : r2238_2 +# 2238| void static_variable_with_destructor_1() +# 2238| Block 0 +# 2238| v2238_1(void) = EnterFunction : +# 2238| m2238_2(unknown) = AliasedDefinition : +# 2238| m2238_3(unknown) = InitializeNonLocal : +# 2238| m2238_4(unknown) = Chi : total:m2238_2, partial:m2238_3 +# 2239| r2239_1(glval) = VariableAddress[a] : +# 2239| m2239_2(ClassWithDestructor) = Uninitialized[a] : &:r2239_1 +# 2239| r2239_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2239| v2239_4(void) = Call[ClassWithDestructor] : func:r2239_3, this:r2239_1 +# 2239| m2239_5(unknown) = ^CallSideEffect : ~m2238_4 +# 2239| m2239_6(unknown) = Chi : total:m2238_4, partial:m2239_5 +# 2239| m2239_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2239_1 +# 2239| m2239_8(ClassWithDestructor) = Chi : total:m2239_2, partial:m2239_7 +# 2240| r2240_1(glval) = VariableAddress[b#init] : +# 2240| r2240_2(bool) = Load[b#init] : &:r2240_1, ~m2239_6 +# 2240| v2240_3(void) = ConditionalBranch : r2240_2 #-----| False -> Block 1 #-----| True -> Block 2 -# 2238| Block 1 -# 2238| r2238_4(glval) = VariableAddress[b] : +# 2240| Block 1 +# 2240| r2240_4(glval) = VariableAddress[b] : #-----| r0_1(glval) = FunctionAddress[ClassWithDestructor] : -#-----| v0_2(void) = Call[ClassWithDestructor] : func:r0_1, this:r2238_4 -#-----| m0_3(unknown) = ^CallSideEffect : ~m2237_6 -#-----| m0_4(unknown) = Chi : total:m2237_6, partial:m0_3 -#-----| m0_5(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2238_4 +#-----| v0_2(void) = Call[ClassWithDestructor] : func:r0_1, this:r2240_4 +#-----| m0_3(unknown) = ^CallSideEffect : ~m2239_6 +#-----| m0_4(unknown) = Chi : total:m2239_6, partial:m0_3 +#-----| m0_5(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2240_4 #-----| m0_6(unknown) = Chi : total:m0_4, partial:m0_5 -# 2238| r2238_5(bool) = Constant[1] : -# 2238| m2238_6(bool) = Store[b#init] : &:r2238_1, r2238_5 -# 2238| m2238_7(unknown) = Chi : total:m0_6, partial:m2238_6 +# 2240| r2240_5(bool) = Constant[1] : +# 2240| m2240_6(bool) = Store[b#init] : &:r2240_1, r2240_5 +# 2240| m2240_7(unknown) = Chi : total:m0_6, partial:m2240_6 #-----| Goto -> Block 2 -# 2239| Block 2 -# 2239| m2239_1(unknown) = Phi : from 0:~m2237_6, from 1:~m2238_7 -# 2239| v2239_2(void) = NoOp : -# 2239| r2239_3(glval) = VariableAddress[a] : -# 2239| r2239_4(glval) = FunctionAddress[~ClassWithDestructor] : -# 2239| v2239_5(void) = Call[~ClassWithDestructor] : func:r2239_4, this:r2239_3 -# 2239| m2239_6(unknown) = ^CallSideEffect : ~m2239_1 -# 2239| m2239_7(unknown) = Chi : total:m2239_1, partial:m2239_6 -# 2239| v2239_8(void) = ^IndirectReadSideEffect[-1] : &:r2239_3, m2237_8 -# 2239| m2239_9(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2239_3 -# 2239| m2239_10(ClassWithDestructor) = Chi : total:m2237_8, partial:m2239_9 -# 2236| v2236_5(void) = ReturnVoid : -# 2236| v2236_6(void) = AliasedUse : ~m2239_7 -# 2236| v2236_7(void) = ExitFunction : +# 2241| Block 2 +# 2241| m2241_1(unknown) = Phi : from 0:~m2239_6, from 1:~m2240_7 +# 2241| v2241_2(void) = NoOp : +# 2241| r2241_3(glval) = VariableAddress[a] : +# 2241| r2241_4(glval) = FunctionAddress[~ClassWithDestructor] : +# 2241| v2241_5(void) = Call[~ClassWithDestructor] : func:r2241_4, this:r2241_3 +# 2241| m2241_6(unknown) = ^CallSideEffect : ~m2241_1 +# 2241| m2241_7(unknown) = Chi : total:m2241_1, partial:m2241_6 +# 2241| v2241_8(void) = ^IndirectReadSideEffect[-1] : &:r2241_3, m2239_8 +# 2241| m2241_9(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2241_3 +# 2241| m2241_10(ClassWithDestructor) = Chi : total:m2239_8, partial:m2241_9 +# 2238| v2238_5(void) = ReturnVoid : +# 2238| v2238_6(void) = AliasedUse : ~m2241_7 +# 2238| v2238_7(void) = ExitFunction : -# 2241| void static_variable_with_destructor_2() -# 2241| Block 0 -# 2241| v2241_1(void) = EnterFunction : -# 2241| m2241_2(unknown) = AliasedDefinition : -# 2241| m2241_3(unknown) = InitializeNonLocal : -# 2241| m2241_4(unknown) = Chi : total:m2241_2, partial:m2241_3 -# 2242| r2242_1(glval) = VariableAddress[a#init] : -# 2242| r2242_2(bool) = Load[a#init] : &:r2242_1, ~m2241_3 -# 2242| v2242_3(void) = ConditionalBranch : r2242_2 +# 2243| void static_variable_with_destructor_2() +# 2243| Block 0 +# 2243| v2243_1(void) = EnterFunction : +# 2243| m2243_2(unknown) = AliasedDefinition : +# 2243| m2243_3(unknown) = InitializeNonLocal : +# 2243| m2243_4(unknown) = Chi : total:m2243_2, partial:m2243_3 +# 2244| r2244_1(glval) = VariableAddress[a#init] : +# 2244| r2244_2(bool) = Load[a#init] : &:r2244_1, ~m2243_3 +# 2244| v2244_3(void) = ConditionalBranch : r2244_2 #-----| False -> Block 1 #-----| True -> Block 2 -# 2242| Block 1 -# 2242| r2242_4(glval) = VariableAddress[a] : +# 2244| Block 1 +# 2244| r2244_4(glval) = VariableAddress[a] : #-----| r0_1(glval) = FunctionAddress[ClassWithDestructor] : -#-----| v0_2(void) = Call[ClassWithDestructor] : func:r0_1, this:r2242_4 -#-----| m0_3(unknown) = ^CallSideEffect : ~m2241_4 -#-----| m0_4(unknown) = Chi : total:m2241_4, partial:m0_3 -#-----| m0_5(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2242_4 +#-----| v0_2(void) = Call[ClassWithDestructor] : func:r0_1, this:r2244_4 +#-----| m0_3(unknown) = ^CallSideEffect : ~m2243_4 +#-----| m0_4(unknown) = Chi : total:m2243_4, partial:m0_3 +#-----| m0_5(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2244_4 #-----| m0_6(unknown) = Chi : total:m0_4, partial:m0_5 -# 2242| r2242_5(bool) = Constant[1] : -# 2242| m2242_6(bool) = Store[a#init] : &:r2242_1, r2242_5 -# 2242| m2242_7(unknown) = Chi : total:m0_6, partial:m2242_6 +# 2244| r2244_5(bool) = Constant[1] : +# 2244| m2244_6(bool) = Store[a#init] : &:r2244_1, r2244_5 +# 2244| m2244_7(unknown) = Chi : total:m0_6, partial:m2244_6 #-----| Goto -> Block 2 -# 2243| Block 2 -# 2243| m2243_1(unknown) = Phi : from 0:~m2241_4, from 1:~m2242_7 -# 2243| r2243_2(glval) = VariableAddress[b] : -# 2243| m2243_3(ClassWithDestructor) = Uninitialized[b] : &:r2243_2 -# 2243| r2243_4(glval) = FunctionAddress[ClassWithDestructor] : -# 2243| v2243_5(void) = Call[ClassWithDestructor] : func:r2243_4, this:r2243_2 -# 2243| m2243_6(unknown) = ^CallSideEffect : ~m2243_1 -# 2243| m2243_7(unknown) = Chi : total:m2243_1, partial:m2243_6 -# 2243| m2243_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2243_2 -# 2243| m2243_9(ClassWithDestructor) = Chi : total:m2243_3, partial:m2243_8 -# 2244| v2244_1(void) = NoOp : -# 2244| r2244_2(glval) = VariableAddress[b] : -# 2244| r2244_3(glval) = FunctionAddress[~ClassWithDestructor] : -# 2244| v2244_4(void) = Call[~ClassWithDestructor] : func:r2244_3, this:r2244_2 -# 2244| m2244_5(unknown) = ^CallSideEffect : ~m2243_7 -# 2244| m2244_6(unknown) = Chi : total:m2243_7, partial:m2244_5 -# 2244| v2244_7(void) = ^IndirectReadSideEffect[-1] : &:r2244_2, m2243_9 -# 2244| m2244_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2244_2 -# 2244| m2244_9(ClassWithDestructor) = Chi : total:m2243_9, partial:m2244_8 -# 2241| v2241_5(void) = ReturnVoid : -# 2241| v2241_6(void) = AliasedUse : ~m2244_6 -# 2241| v2241_7(void) = ExitFunction : +# 2245| Block 2 +# 2245| m2245_1(unknown) = Phi : from 0:~m2243_4, from 1:~m2244_7 +# 2245| r2245_2(glval) = VariableAddress[b] : +# 2245| m2245_3(ClassWithDestructor) = Uninitialized[b] : &:r2245_2 +# 2245| r2245_4(glval) = FunctionAddress[ClassWithDestructor] : +# 2245| v2245_5(void) = Call[ClassWithDestructor] : func:r2245_4, this:r2245_2 +# 2245| m2245_6(unknown) = ^CallSideEffect : ~m2245_1 +# 2245| m2245_7(unknown) = Chi : total:m2245_1, partial:m2245_6 +# 2245| m2245_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2245_2 +# 2245| m2245_9(ClassWithDestructor) = Chi : total:m2245_3, partial:m2245_8 +# 2246| v2246_1(void) = NoOp : +# 2246| r2246_2(glval) = VariableAddress[b] : +# 2246| r2246_3(glval) = FunctionAddress[~ClassWithDestructor] : +# 2246| v2246_4(void) = Call[~ClassWithDestructor] : func:r2246_3, this:r2246_2 +# 2246| m2246_5(unknown) = ^CallSideEffect : ~m2245_7 +# 2246| m2246_6(unknown) = Chi : total:m2245_7, partial:m2246_5 +# 2246| v2246_7(void) = ^IndirectReadSideEffect[-1] : &:r2246_2, m2245_9 +# 2246| m2246_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2246_2 +# 2246| m2246_9(ClassWithDestructor) = Chi : total:m2245_9, partial:m2246_8 +# 2243| v2243_5(void) = ReturnVoid : +# 2243| v2243_6(void) = AliasedUse : ~m2246_6 +# 2243| v2243_7(void) = ExitFunction : -# 2246| void static_variable_with_destructor_3() -# 2246| Block 0 -# 2246| v2246_1(void) = EnterFunction : -# 2246| m2246_2(unknown) = AliasedDefinition : -# 2246| m2246_3(unknown) = InitializeNonLocal : -# 2246| m2246_4(unknown) = Chi : total:m2246_2, partial:m2246_3 -# 2247| r2247_1(glval) = VariableAddress[a] : -# 2247| m2247_2(ClassWithDestructor) = Uninitialized[a] : &:r2247_1 -# 2247| r2247_3(glval) = FunctionAddress[ClassWithDestructor] : -# 2247| v2247_4(void) = Call[ClassWithDestructor] : func:r2247_3, this:r2247_1 -# 2247| m2247_5(unknown) = ^CallSideEffect : ~m2246_4 -# 2247| m2247_6(unknown) = Chi : total:m2246_4, partial:m2247_5 -# 2247| m2247_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2247_1 -# 2247| m2247_8(ClassWithDestructor) = Chi : total:m2247_2, partial:m2247_7 -# 2248| r2248_1(glval) = VariableAddress[b] : -# 2248| m2248_2(ClassWithDestructor) = Uninitialized[b] : &:r2248_1 -# 2248| r2248_3(glval) = FunctionAddress[ClassWithDestructor] : -# 2248| v2248_4(void) = Call[ClassWithDestructor] : func:r2248_3, this:r2248_1 -# 2248| m2248_5(unknown) = ^CallSideEffect : ~m2247_6 -# 2248| m2248_6(unknown) = Chi : total:m2247_6, partial:m2248_5 -# 2248| m2248_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2248_1 -# 2248| m2248_8(ClassWithDestructor) = Chi : total:m2248_2, partial:m2248_7 -# 2249| r2249_1(glval) = VariableAddress[c#init] : -# 2249| r2249_2(bool) = Load[c#init] : &:r2249_1, ~m2248_6 -# 2249| v2249_3(void) = ConditionalBranch : r2249_2 +# 2248| void static_variable_with_destructor_3() +# 2248| Block 0 +# 2248| v2248_1(void) = EnterFunction : +# 2248| m2248_2(unknown) = AliasedDefinition : +# 2248| m2248_3(unknown) = InitializeNonLocal : +# 2248| m2248_4(unknown) = Chi : total:m2248_2, partial:m2248_3 +# 2249| r2249_1(glval) = VariableAddress[a] : +# 2249| m2249_2(ClassWithDestructor) = Uninitialized[a] : &:r2249_1 +# 2249| r2249_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2249| v2249_4(void) = Call[ClassWithDestructor] : func:r2249_3, this:r2249_1 +# 2249| m2249_5(unknown) = ^CallSideEffect : ~m2248_4 +# 2249| m2249_6(unknown) = Chi : total:m2248_4, partial:m2249_5 +# 2249| m2249_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2249_1 +# 2249| m2249_8(ClassWithDestructor) = Chi : total:m2249_2, partial:m2249_7 +# 2250| r2250_1(glval) = VariableAddress[b] : +# 2250| m2250_2(ClassWithDestructor) = Uninitialized[b] : &:r2250_1 +# 2250| r2250_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2250| v2250_4(void) = Call[ClassWithDestructor] : func:r2250_3, this:r2250_1 +# 2250| m2250_5(unknown) = ^CallSideEffect : ~m2249_6 +# 2250| m2250_6(unknown) = Chi : total:m2249_6, partial:m2250_5 +# 2250| m2250_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2250_1 +# 2250| m2250_8(ClassWithDestructor) = Chi : total:m2250_2, partial:m2250_7 +# 2251| r2251_1(glval) = VariableAddress[c#init] : +# 2251| r2251_2(bool) = Load[c#init] : &:r2251_1, ~m2250_6 +# 2251| v2251_3(void) = ConditionalBranch : r2251_2 #-----| False -> Block 1 #-----| True -> Block 2 -# 2249| Block 1 -# 2249| r2249_4(glval) = VariableAddress[c] : +# 2251| Block 1 +# 2251| r2251_4(glval) = VariableAddress[c] : #-----| r0_1(glval) = FunctionAddress[ClassWithDestructor] : -#-----| v0_2(void) = Call[ClassWithDestructor] : func:r0_1, this:r2249_4 -#-----| m0_3(unknown) = ^CallSideEffect : ~m2248_6 -#-----| m0_4(unknown) = Chi : total:m2248_6, partial:m0_3 -#-----| m0_5(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2249_4 +#-----| v0_2(void) = Call[ClassWithDestructor] : func:r0_1, this:r2251_4 +#-----| m0_3(unknown) = ^CallSideEffect : ~m2250_6 +#-----| m0_4(unknown) = Chi : total:m2250_6, partial:m0_3 +#-----| m0_5(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2251_4 #-----| m0_6(unknown) = Chi : total:m0_4, partial:m0_5 -# 2249| r2249_5(bool) = Constant[1] : -# 2249| m2249_6(bool) = Store[c#init] : &:r2249_1, r2249_5 -# 2249| m2249_7(unknown) = Chi : total:m0_6, partial:m2249_6 +# 2251| r2251_5(bool) = Constant[1] : +# 2251| m2251_6(bool) = Store[c#init] : &:r2251_1, r2251_5 +# 2251| m2251_7(unknown) = Chi : total:m0_6, partial:m2251_6 #-----| Goto -> Block 2 -# 2250| Block 2 -# 2250| m2250_1(unknown) = Phi : from 0:~m2248_6, from 1:~m2249_7 -# 2250| v2250_2(void) = NoOp : -# 2250| r2250_3(glval) = VariableAddress[b] : -# 2250| r2250_4(glval) = FunctionAddress[~ClassWithDestructor] : -# 2250| v2250_5(void) = Call[~ClassWithDestructor] : func:r2250_4, this:r2250_3 -# 2250| m2250_6(unknown) = ^CallSideEffect : ~m2250_1 -# 2250| m2250_7(unknown) = Chi : total:m2250_1, partial:m2250_6 -# 2250| v2250_8(void) = ^IndirectReadSideEffect[-1] : &:r2250_3, m2248_8 -# 2250| m2250_9(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2250_3 -# 2250| m2250_10(ClassWithDestructor) = Chi : total:m2248_8, partial:m2250_9 -# 2250| r2250_11(glval) = VariableAddress[a] : -# 2250| r2250_12(glval) = FunctionAddress[~ClassWithDestructor] : -# 2250| v2250_13(void) = Call[~ClassWithDestructor] : func:r2250_12, this:r2250_11 -# 2250| m2250_14(unknown) = ^CallSideEffect : ~m2250_7 -# 2250| m2250_15(unknown) = Chi : total:m2250_7, partial:m2250_14 -# 2250| v2250_16(void) = ^IndirectReadSideEffect[-1] : &:r2250_11, m2247_8 -# 2250| m2250_17(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2250_11 -# 2250| m2250_18(ClassWithDestructor) = Chi : total:m2247_8, partial:m2250_17 -# 2246| v2246_5(void) = ReturnVoid : -# 2246| v2246_6(void) = AliasedUse : ~m2250_15 -# 2246| v2246_7(void) = ExitFunction : +# 2252| Block 2 +# 2252| m2252_1(unknown) = Phi : from 0:~m2250_6, from 1:~m2251_7 +# 2252| v2252_2(void) = NoOp : +# 2252| r2252_3(glval) = VariableAddress[b] : +# 2252| r2252_4(glval) = FunctionAddress[~ClassWithDestructor] : +# 2252| v2252_5(void) = Call[~ClassWithDestructor] : func:r2252_4, this:r2252_3 +# 2252| m2252_6(unknown) = ^CallSideEffect : ~m2252_1 +# 2252| m2252_7(unknown) = Chi : total:m2252_1, partial:m2252_6 +# 2252| v2252_8(void) = ^IndirectReadSideEffect[-1] : &:r2252_3, m2250_8 +# 2252| m2252_9(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2252_3 +# 2252| m2252_10(ClassWithDestructor) = Chi : total:m2250_8, partial:m2252_9 +# 2252| r2252_11(glval) = VariableAddress[a] : +# 2252| r2252_12(glval) = FunctionAddress[~ClassWithDestructor] : +# 2252| v2252_13(void) = Call[~ClassWithDestructor] : func:r2252_12, this:r2252_11 +# 2252| m2252_14(unknown) = ^CallSideEffect : ~m2252_7 +# 2252| m2252_15(unknown) = Chi : total:m2252_7, partial:m2252_14 +# 2252| v2252_16(void) = ^IndirectReadSideEffect[-1] : &:r2252_11, m2249_8 +# 2252| m2252_17(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2252_11 +# 2252| m2252_18(ClassWithDestructor) = Chi : total:m2249_8, partial:m2252_17 +# 2248| v2248_5(void) = ReturnVoid : +# 2248| v2248_6(void) = AliasedUse : ~m2252_15 +# 2248| v2248_7(void) = ExitFunction : -# 2252| ClassWithDestructor global_class_with_destructor -# 2252| Block 0 -# 2252| v2252_1(void) = EnterFunction : -# 2252| m2252_2(unknown) = AliasedDefinition : -# 2252| r2252_3(glval) = VariableAddress[global_class_with_destructor] : -# 2252| r2252_4(glval) = FunctionAddress[ClassWithDestructor] : -# 2252| v2252_5(void) = Call[ClassWithDestructor] : func:r2252_4, this:r2252_3 -# 2252| m2252_6(unknown) = ^CallSideEffect : ~m2252_2 -# 2252| m2252_7(unknown) = Chi : total:m2252_2, partial:m2252_6 -# 2252| m2252_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2252_3 -# 2252| m2252_9(unknown) = Chi : total:m2252_7, partial:m2252_8 -# 2252| v2252_10(void) = ReturnVoid : -# 2252| v2252_11(void) = AliasedUse : ~m2252_9 -# 2252| v2252_12(void) = ExitFunction : +# 2254| ClassWithDestructor global_class_with_destructor +# 2254| Block 0 +# 2254| v2254_1(void) = EnterFunction : +# 2254| m2254_2(unknown) = AliasedDefinition : +# 2254| r2254_3(glval) = VariableAddress[global_class_with_destructor] : +# 2254| r2254_4(glval) = FunctionAddress[ClassWithDestructor] : +# 2254| v2254_5(void) = Call[ClassWithDestructor] : func:r2254_4, this:r2254_3 +# 2254| m2254_6(unknown) = ^CallSideEffect : ~m2254_2 +# 2254| m2254_7(unknown) = Chi : total:m2254_2, partial:m2254_6 +# 2254| m2254_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2254_3 +# 2254| m2254_9(unknown) = Chi : total:m2254_7, partial:m2254_8 +# 2254| v2254_10(void) = ReturnVoid : +# 2254| v2254_11(void) = AliasedUse : ~m2254_9 +# 2254| v2254_12(void) = ExitFunction : -# 2256| ClassWithDestructor& vacuous_destructor_call::get(ClassWithDestructor&) -# 2256| Block 0 -# 2256| v2256_1(void) = EnterFunction : -# 2256| m2256_2(unknown) = AliasedDefinition : -# 2256| m2256_3(unknown) = InitializeNonLocal : -# 2256| m2256_4(unknown) = Chi : total:m2256_2, partial:m2256_3 -# 2256| r2256_5(glval) = VariableAddress[t] : -# 2256| m2256_6(ClassWithDestructor &) = InitializeParameter[t] : &:r2256_5 -# 2256| r2256_7(ClassWithDestructor &) = Load[t] : &:r2256_5, m2256_6 -# 2256| m2256_8(unknown) = InitializeIndirection[t] : &:r2256_7 -# 2256| r2256_9(glval) = VariableAddress[#return] : -# 2256| r2256_10(glval) = VariableAddress[t] : -# 2256| r2256_11(ClassWithDestructor &) = Load[t] : &:r2256_10, m2256_6 -# 2256| r2256_12(glval) = CopyValue : r2256_11 -# 2256| r2256_13(ClassWithDestructor &) = CopyValue : r2256_12 -# 2256| m2256_14(ClassWithDestructor &) = Store[#return] : &:r2256_9, r2256_13 -# 2256| v2256_15(void) = ReturnIndirection[t] : &:r2256_7, m2256_8 -# 2256| r2256_16(glval) = VariableAddress[#return] : -# 2256| v2256_17(void) = ReturnValue : &:r2256_16, m2256_14 -# 2256| v2256_18(void) = AliasedUse : m2256_3 -# 2256| v2256_19(void) = ExitFunction : +# 2258| ClassWithDestructor& vacuous_destructor_call::get(ClassWithDestructor&) +# 2258| Block 0 +# 2258| v2258_1(void) = EnterFunction : +# 2258| m2258_2(unknown) = AliasedDefinition : +# 2258| m2258_3(unknown) = InitializeNonLocal : +# 2258| m2258_4(unknown) = Chi : total:m2258_2, partial:m2258_3 +# 2258| r2258_5(glval) = VariableAddress[t] : +# 2258| m2258_6(ClassWithDestructor &) = InitializeParameter[t] : &:r2258_5 +# 2258| r2258_7(ClassWithDestructor &) = Load[t] : &:r2258_5, m2258_6 +# 2258| m2258_8(unknown) = InitializeIndirection[t] : &:r2258_7 +# 2258| r2258_9(glval) = VariableAddress[#return] : +# 2258| r2258_10(glval) = VariableAddress[t] : +# 2258| r2258_11(ClassWithDestructor &) = Load[t] : &:r2258_10, m2258_6 +# 2258| r2258_12(glval) = CopyValue : r2258_11 +# 2258| r2258_13(ClassWithDestructor &) = CopyValue : r2258_12 +# 2258| m2258_14(ClassWithDestructor &) = Store[#return] : &:r2258_9, r2258_13 +# 2258| v2258_15(void) = ReturnIndirection[t] : &:r2258_7, m2258_8 +# 2258| r2258_16(glval) = VariableAddress[#return] : +# 2258| v2258_17(void) = ReturnValue : &:r2258_16, m2258_14 +# 2258| v2258_18(void) = AliasedUse : m2258_3 +# 2258| v2258_19(void) = ExitFunction : -# 2256| int& vacuous_destructor_call::get(int&) -# 2256| Block 0 -# 2256| v2256_1(void) = EnterFunction : -# 2256| m2256_2(unknown) = AliasedDefinition : -# 2256| m2256_3(unknown) = InitializeNonLocal : -# 2256| m2256_4(unknown) = Chi : total:m2256_2, partial:m2256_3 -# 2256| r2256_5(glval) = VariableAddress[t] : -# 2256| m2256_6(int &) = InitializeParameter[t] : &:r2256_5 -# 2256| r2256_7(int &) = Load[t] : &:r2256_5, m2256_6 -# 2256| m2256_8(unknown) = InitializeIndirection[t] : &:r2256_7 -# 2256| r2256_9(glval) = VariableAddress[#return] : -# 2256| r2256_10(glval) = VariableAddress[t] : -# 2256| r2256_11(int &) = Load[t] : &:r2256_10, m2256_6 -# 2256| r2256_12(glval) = CopyValue : r2256_11 -# 2256| r2256_13(int &) = CopyValue : r2256_12 -# 2256| m2256_14(int &) = Store[#return] : &:r2256_9, r2256_13 -# 2256| v2256_15(void) = ReturnIndirection[t] : &:r2256_7, m2256_8 -# 2256| r2256_16(glval) = VariableAddress[#return] : -# 2256| v2256_17(void) = ReturnValue : &:r2256_16, m2256_14 -# 2256| v2256_18(void) = AliasedUse : m2256_3 -# 2256| v2256_19(void) = ExitFunction : +# 2258| int& vacuous_destructor_call::get(int&) +# 2258| Block 0 +# 2258| v2258_1(void) = EnterFunction : +# 2258| m2258_2(unknown) = AliasedDefinition : +# 2258| m2258_3(unknown) = InitializeNonLocal : +# 2258| m2258_4(unknown) = Chi : total:m2258_2, partial:m2258_3 +# 2258| r2258_5(glval) = VariableAddress[t] : +# 2258| m2258_6(int &) = InitializeParameter[t] : &:r2258_5 +# 2258| r2258_7(int &) = Load[t] : &:r2258_5, m2258_6 +# 2258| m2258_8(unknown) = InitializeIndirection[t] : &:r2258_7 +# 2258| r2258_9(glval) = VariableAddress[#return] : +# 2258| r2258_10(glval) = VariableAddress[t] : +# 2258| r2258_11(int &) = Load[t] : &:r2258_10, m2258_6 +# 2258| r2258_12(glval) = CopyValue : r2258_11 +# 2258| r2258_13(int &) = CopyValue : r2258_12 +# 2258| m2258_14(int &) = Store[#return] : &:r2258_9, r2258_13 +# 2258| v2258_15(void) = ReturnIndirection[t] : &:r2258_7, m2258_8 +# 2258| r2258_16(glval) = VariableAddress[#return] : +# 2258| v2258_17(void) = ReturnValue : &:r2258_16, m2258_14 +# 2258| v2258_18(void) = AliasedUse : m2258_3 +# 2258| v2258_19(void) = ExitFunction : -# 2259| void vacuous_destructor_call::call_destructor(ClassWithDestructor&) -# 2259| Block 0 -# 2259| v2259_1(void) = EnterFunction : -# 2259| m2259_2(unknown) = AliasedDefinition : -# 2259| m2259_3(unknown) = InitializeNonLocal : -# 2259| m2259_4(unknown) = Chi : total:m2259_2, partial:m2259_3 -# 2259| r2259_5(glval) = VariableAddress[t] : -# 2259| m2259_6(ClassWithDestructor &) = InitializeParameter[t] : &:r2259_5 -# 2259| r2259_7(ClassWithDestructor &) = Load[t] : &:r2259_5, m2259_6 -# 2259| m2259_8(unknown) = InitializeIndirection[t] : &:r2259_7 -# 2260| r2260_1(glval) = FunctionAddress[get] : -# 2260| r2260_2(glval) = VariableAddress[t] : -# 2260| r2260_3(ClassWithDestructor &) = Load[t] : &:r2260_2, m2259_6 -# 2260| r2260_4(glval) = CopyValue : r2260_3 -# 2260| r2260_5(ClassWithDestructor &) = CopyValue : r2260_4 -# 2260| r2260_6(ClassWithDestructor &) = Call[get] : func:r2260_1, 0:r2260_5 -# 2260| m2260_7(unknown) = ^CallSideEffect : ~m2259_4 -# 2260| m2260_8(unknown) = Chi : total:m2259_4, partial:m2260_7 -# 2260| v2260_9(void) = ^BufferReadSideEffect[0] : &:r2260_5, ~m2259_8 -# 2260| m2260_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r2260_5 -# 2260| m2260_11(unknown) = Chi : total:m2259_8, partial:m2260_10 -# 2260| r2260_12(glval) = CopyValue : r2260_6 -# 2260| r2260_13(glval) = FunctionAddress[~ClassWithDestructor] : -# 2260| v2260_14(void) = Call[~ClassWithDestructor] : func:r2260_13 -# 2260| m2260_15(unknown) = ^CallSideEffect : ~m2260_8 -# 2260| m2260_16(unknown) = Chi : total:m2260_8, partial:m2260_15 -# 2260| v2260_17(void) = ^IndirectReadSideEffect[-1] : &:r2260_12, ~m2260_11 -# 2260| m2260_18(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2260_12 -# 2260| m2260_19(unknown) = Chi : total:m2260_11, partial:m2260_18 -# 2261| v2261_1(void) = NoOp : -# 2259| v2259_9(void) = ReturnIndirection[t] : &:r2259_7, m2260_19 -# 2259| v2259_10(void) = ReturnVoid : -# 2259| v2259_11(void) = AliasedUse : ~m2260_16 -# 2259| v2259_12(void) = ExitFunction : +# 2261| void vacuous_destructor_call::call_destructor(ClassWithDestructor&) +# 2261| Block 0 +# 2261| v2261_1(void) = EnterFunction : +# 2261| m2261_2(unknown) = AliasedDefinition : +# 2261| m2261_3(unknown) = InitializeNonLocal : +# 2261| m2261_4(unknown) = Chi : total:m2261_2, partial:m2261_3 +# 2261| r2261_5(glval) = VariableAddress[t] : +# 2261| m2261_6(ClassWithDestructor &) = InitializeParameter[t] : &:r2261_5 +# 2261| r2261_7(ClassWithDestructor &) = Load[t] : &:r2261_5, m2261_6 +# 2261| m2261_8(unknown) = InitializeIndirection[t] : &:r2261_7 +# 2262| r2262_1(glval) = FunctionAddress[get] : +# 2262| r2262_2(glval) = VariableAddress[t] : +# 2262| r2262_3(ClassWithDestructor &) = Load[t] : &:r2262_2, m2261_6 +# 2262| r2262_4(glval) = CopyValue : r2262_3 +# 2262| r2262_5(ClassWithDestructor &) = CopyValue : r2262_4 +# 2262| r2262_6(ClassWithDestructor &) = Call[get] : func:r2262_1, 0:r2262_5 +# 2262| m2262_7(unknown) = ^CallSideEffect : ~m2261_4 +# 2262| m2262_8(unknown) = Chi : total:m2261_4, partial:m2262_7 +# 2262| v2262_9(void) = ^BufferReadSideEffect[0] : &:r2262_5, ~m2261_8 +# 2262| m2262_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r2262_5 +# 2262| m2262_11(unknown) = Chi : total:m2261_8, partial:m2262_10 +# 2262| r2262_12(glval) = CopyValue : r2262_6 +# 2262| r2262_13(glval) = FunctionAddress[~ClassWithDestructor] : +# 2262| v2262_14(void) = Call[~ClassWithDestructor] : func:r2262_13 +# 2262| m2262_15(unknown) = ^CallSideEffect : ~m2262_8 +# 2262| m2262_16(unknown) = Chi : total:m2262_8, partial:m2262_15 +# 2262| v2262_17(void) = ^IndirectReadSideEffect[-1] : &:r2262_12, ~m2262_11 +# 2262| m2262_18(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2262_12 +# 2262| m2262_19(unknown) = Chi : total:m2262_11, partial:m2262_18 +# 2263| v2263_1(void) = NoOp : +# 2261| v2261_9(void) = ReturnIndirection[t] : &:r2261_7, m2262_19 +# 2261| v2261_10(void) = ReturnVoid : +# 2261| v2261_11(void) = AliasedUse : ~m2262_16 +# 2261| v2261_12(void) = ExitFunction : -# 2259| void vacuous_destructor_call::call_destructor(int&) -# 2259| Block 0 -# 2259| v2259_1(void) = EnterFunction : -# 2259| m2259_2(unknown) = AliasedDefinition : -# 2259| m2259_3(unknown) = InitializeNonLocal : -# 2259| m2259_4(unknown) = Chi : total:m2259_2, partial:m2259_3 -# 2259| r2259_5(glval) = VariableAddress[t] : -# 2259| m2259_6(int &) = InitializeParameter[t] : &:r2259_5 -# 2259| r2259_7(int &) = Load[t] : &:r2259_5, m2259_6 -# 2259| m2259_8(unknown) = InitializeIndirection[t] : &:r2259_7 -# 2260| r2260_1(glval) = FunctionAddress[get] : -# 2260| r2260_2(glval) = VariableAddress[t] : -# 2260| r2260_3(int &) = Load[t] : &:r2260_2, m2259_6 -# 2260| r2260_4(glval) = CopyValue : r2260_3 -# 2260| r2260_5(int &) = CopyValue : r2260_4 -# 2260| r2260_6(int &) = Call[get] : func:r2260_1, 0:r2260_5 -# 2260| m2260_7(unknown) = ^CallSideEffect : ~m2259_4 -# 2260| m2260_8(unknown) = Chi : total:m2259_4, partial:m2260_7 -# 2260| v2260_9(void) = ^BufferReadSideEffect[0] : &:r2260_5, ~m2259_8 -# 2260| m2260_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r2260_5 -# 2260| m2260_11(unknown) = Chi : total:m2259_8, partial:m2260_10 -# 2260| r2260_12(glval) = CopyValue : r2260_6 -# 2261| v2261_1(void) = NoOp : -# 2259| v2259_9(void) = ReturnIndirection[t] : &:r2259_7, m2260_11 -# 2259| v2259_10(void) = ReturnVoid : -# 2259| v2259_11(void) = AliasedUse : ~m2260_8 -# 2259| v2259_12(void) = ExitFunction : +# 2261| void vacuous_destructor_call::call_destructor(int&) +# 2261| Block 0 +# 2261| v2261_1(void) = EnterFunction : +# 2261| m2261_2(unknown) = AliasedDefinition : +# 2261| m2261_3(unknown) = InitializeNonLocal : +# 2261| m2261_4(unknown) = Chi : total:m2261_2, partial:m2261_3 +# 2261| r2261_5(glval) = VariableAddress[t] : +# 2261| m2261_6(int &) = InitializeParameter[t] : &:r2261_5 +# 2261| r2261_7(int &) = Load[t] : &:r2261_5, m2261_6 +# 2261| m2261_8(unknown) = InitializeIndirection[t] : &:r2261_7 +# 2262| r2262_1(glval) = FunctionAddress[get] : +# 2262| r2262_2(glval) = VariableAddress[t] : +# 2262| r2262_3(int &) = Load[t] : &:r2262_2, m2261_6 +# 2262| r2262_4(glval) = CopyValue : r2262_3 +# 2262| r2262_5(int &) = CopyValue : r2262_4 +# 2262| r2262_6(int &) = Call[get] : func:r2262_1, 0:r2262_5 +# 2262| m2262_7(unknown) = ^CallSideEffect : ~m2261_4 +# 2262| m2262_8(unknown) = Chi : total:m2261_4, partial:m2262_7 +# 2262| v2262_9(void) = ^BufferReadSideEffect[0] : &:r2262_5, ~m2261_8 +# 2262| m2262_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r2262_5 +# 2262| m2262_11(unknown) = Chi : total:m2261_8, partial:m2262_10 +# 2262| r2262_12(glval) = CopyValue : r2262_6 +# 2263| v2263_1(void) = NoOp : +# 2261| v2261_9(void) = ReturnIndirection[t] : &:r2261_7, m2262_11 +# 2261| v2261_10(void) = ReturnVoid : +# 2261| v2261_11(void) = AliasedUse : ~m2262_8 +# 2261| v2261_12(void) = ExitFunction : -# 2263| void vacuous_destructor_call::non_vacuous_destructor_call() -# 2263| Block 0 -# 2263| v2263_1(void) = EnterFunction : -# 2263| m2263_2(unknown) = AliasedDefinition : -# 2263| m2263_3(unknown) = InitializeNonLocal : -# 2263| m2263_4(unknown) = Chi : total:m2263_2, partial:m2263_3 -# 2264| r2264_1(glval) = VariableAddress[c] : -# 2264| m2264_2(ClassWithDestructor) = Uninitialized[c] : &:r2264_1 -# 2264| r2264_3(glval) = FunctionAddress[ClassWithDestructor] : -# 2264| v2264_4(void) = Call[ClassWithDestructor] : func:r2264_3, this:r2264_1 -# 2264| m2264_5(unknown) = ^CallSideEffect : ~m2263_4 -# 2264| m2264_6(unknown) = Chi : total:m2263_4, partial:m2264_5 -# 2264| m2264_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2264_1 -# 2264| m2264_8(ClassWithDestructor) = Chi : total:m2264_2, partial:m2264_7 -# 2265| r2265_1(glval) = FunctionAddress[call_destructor] : -# 2265| r2265_2(glval) = VariableAddress[c] : -# 2265| r2265_3(ClassWithDestructor &) = CopyValue : r2265_2 -# 2265| v2265_4(void) = Call[call_destructor] : func:r2265_1, 0:r2265_3 -# 2265| m2265_5(unknown) = ^CallSideEffect : ~m2264_6 -# 2265| m2265_6(unknown) = Chi : total:m2264_6, partial:m2265_5 -# 2265| v2265_7(void) = ^BufferReadSideEffect[0] : &:r2265_3, ~m2264_8 -# 2265| m2265_8(unknown) = ^BufferMayWriteSideEffect[0] : &:r2265_3 -# 2265| m2265_9(ClassWithDestructor) = Chi : total:m2264_8, partial:m2265_8 -# 2266| v2266_1(void) = NoOp : -# 2266| r2266_2(glval) = VariableAddress[c] : -# 2266| r2266_3(glval) = FunctionAddress[~ClassWithDestructor] : -# 2266| v2266_4(void) = Call[~ClassWithDestructor] : func:r2266_3, this:r2266_2 -# 2266| m2266_5(unknown) = ^CallSideEffect : ~m2265_6 -# 2266| m2266_6(unknown) = Chi : total:m2265_6, partial:m2266_5 -# 2266| v2266_7(void) = ^IndirectReadSideEffect[-1] : &:r2266_2, m2265_9 -# 2266| m2266_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2266_2 -# 2266| m2266_9(ClassWithDestructor) = Chi : total:m2265_9, partial:m2266_8 -# 2263| v2263_5(void) = ReturnVoid : -# 2263| v2263_6(void) = AliasedUse : ~m2266_6 -# 2263| v2263_7(void) = ExitFunction : +# 2265| void vacuous_destructor_call::non_vacuous_destructor_call() +# 2265| Block 0 +# 2265| v2265_1(void) = EnterFunction : +# 2265| m2265_2(unknown) = AliasedDefinition : +# 2265| m2265_3(unknown) = InitializeNonLocal : +# 2265| m2265_4(unknown) = Chi : total:m2265_2, partial:m2265_3 +# 2266| r2266_1(glval) = VariableAddress[c] : +# 2266| m2266_2(ClassWithDestructor) = Uninitialized[c] : &:r2266_1 +# 2266| r2266_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2266| v2266_4(void) = Call[ClassWithDestructor] : func:r2266_3, this:r2266_1 +# 2266| m2266_5(unknown) = ^CallSideEffect : ~m2265_4 +# 2266| m2266_6(unknown) = Chi : total:m2265_4, partial:m2266_5 +# 2266| m2266_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2266_1 +# 2266| m2266_8(ClassWithDestructor) = Chi : total:m2266_2, partial:m2266_7 +# 2267| r2267_1(glval) = FunctionAddress[call_destructor] : +# 2267| r2267_2(glval) = VariableAddress[c] : +# 2267| r2267_3(ClassWithDestructor &) = CopyValue : r2267_2 +# 2267| v2267_4(void) = Call[call_destructor] : func:r2267_1, 0:r2267_3 +# 2267| m2267_5(unknown) = ^CallSideEffect : ~m2266_6 +# 2267| m2267_6(unknown) = Chi : total:m2266_6, partial:m2267_5 +# 2267| v2267_7(void) = ^BufferReadSideEffect[0] : &:r2267_3, ~m2266_8 +# 2267| m2267_8(unknown) = ^BufferMayWriteSideEffect[0] : &:r2267_3 +# 2267| m2267_9(ClassWithDestructor) = Chi : total:m2266_8, partial:m2267_8 +# 2268| v2268_1(void) = NoOp : +# 2268| r2268_2(glval) = VariableAddress[c] : +# 2268| r2268_3(glval) = FunctionAddress[~ClassWithDestructor] : +# 2268| v2268_4(void) = Call[~ClassWithDestructor] : func:r2268_3, this:r2268_2 +# 2268| m2268_5(unknown) = ^CallSideEffect : ~m2267_6 +# 2268| m2268_6(unknown) = Chi : total:m2267_6, partial:m2268_5 +# 2268| v2268_7(void) = ^IndirectReadSideEffect[-1] : &:r2268_2, m2267_9 +# 2268| m2268_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2268_2 +# 2268| m2268_9(ClassWithDestructor) = Chi : total:m2267_9, partial:m2268_8 +# 2265| v2265_5(void) = ReturnVoid : +# 2265| v2265_6(void) = AliasedUse : ~m2268_6 +# 2265| v2265_7(void) = ExitFunction : -# 2268| void vacuous_destructor_call::vacuous_destructor_call() -# 2268| Block 0 -# 2268| v2268_1(void) = EnterFunction : -# 2268| m2268_2(unknown) = AliasedDefinition : -# 2268| m2268_3(unknown) = InitializeNonLocal : -# 2268| m2268_4(unknown) = Chi : total:m2268_2, partial:m2268_3 -# 2269| r2269_1(glval) = VariableAddress[i] : -# 2269| m2269_2(int) = Uninitialized[i] : &:r2269_1 -# 2270| r2270_1(glval) = FunctionAddress[call_destructor] : -# 2270| r2270_2(glval) = VariableAddress[i] : -# 2270| r2270_3(int &) = CopyValue : r2270_2 -# 2270| v2270_4(void) = Call[call_destructor] : func:r2270_1, 0:r2270_3 -# 2270| m2270_5(unknown) = ^CallSideEffect : ~m2268_4 -# 2270| m2270_6(unknown) = Chi : total:m2268_4, partial:m2270_5 -# 2270| v2270_7(void) = ^BufferReadSideEffect[0] : &:r2270_3, ~m2269_2 -# 2270| m2270_8(unknown) = ^BufferMayWriteSideEffect[0] : &:r2270_3 -# 2270| m2270_9(int) = Chi : total:m2269_2, partial:m2270_8 -# 2271| v2271_1(void) = NoOp : -# 2268| v2268_5(void) = ReturnVoid : -# 2268| v2268_6(void) = AliasedUse : ~m2270_6 -# 2268| v2268_7(void) = ExitFunction : +# 2270| void vacuous_destructor_call::vacuous_destructor_call() +# 2270| Block 0 +# 2270| v2270_1(void) = EnterFunction : +# 2270| m2270_2(unknown) = AliasedDefinition : +# 2270| m2270_3(unknown) = InitializeNonLocal : +# 2270| m2270_4(unknown) = Chi : total:m2270_2, partial:m2270_3 +# 2271| r2271_1(glval) = VariableAddress[i] : +# 2271| m2271_2(int) = Uninitialized[i] : &:r2271_1 +# 2272| r2272_1(glval) = FunctionAddress[call_destructor] : +# 2272| r2272_2(glval) = VariableAddress[i] : +# 2272| r2272_3(int &) = CopyValue : r2272_2 +# 2272| v2272_4(void) = Call[call_destructor] : func:r2272_1, 0:r2272_3 +# 2272| m2272_5(unknown) = ^CallSideEffect : ~m2270_4 +# 2272| m2272_6(unknown) = Chi : total:m2270_4, partial:m2272_5 +# 2272| v2272_7(void) = ^BufferReadSideEffect[0] : &:r2272_3, ~m2271_2 +# 2272| m2272_8(unknown) = ^BufferMayWriteSideEffect[0] : &:r2272_3 +# 2272| m2272_9(int) = Chi : total:m2271_2, partial:m2272_8 +# 2273| v2273_1(void) = NoOp : +# 2270| v2270_5(void) = ReturnVoid : +# 2270| v2270_6(void) = AliasedUse : ~m2272_6 +# 2270| v2270_7(void) = ExitFunction : -# 2274| void TryCatchDestructors(bool) -# 2274| Block 0 -# 2274| v2274_1(void) = EnterFunction : -# 2274| m2274_2(unknown) = AliasedDefinition : -# 2274| m2274_3(unknown) = InitializeNonLocal : -# 2274| m2274_4(unknown) = Chi : total:m2274_2, partial:m2274_3 -# 2274| r2274_5(glval) = VariableAddress[b] : -# 2274| m2274_6(bool) = InitializeParameter[b] : &:r2274_5 -# 2276| r2276_1(glval) = VariableAddress[s] : -# 2276| m2276_2(String) = Uninitialized[s] : &:r2276_1 -# 2276| m2276_3(unknown) = Chi : total:m2274_4, partial:m2276_2 -# 2276| r2276_4(glval) = FunctionAddress[String] : -# 2276| v2276_5(void) = Call[String] : func:r2276_4, this:r2276_1 -# 2276| m2276_6(unknown) = ^CallSideEffect : ~m2276_3 -# 2276| m2276_7(unknown) = Chi : total:m2276_3, partial:m2276_6 -# 2276| m2276_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r2276_1 -# 2276| m2276_9(unknown) = Chi : total:m2276_7, partial:m2276_8 +# 2276| void TryCatchDestructors(bool) +# 2276| Block 0 +# 2276| v2276_1(void) = EnterFunction : +# 2276| m2276_2(unknown) = AliasedDefinition : +# 2276| m2276_3(unknown) = InitializeNonLocal : +# 2276| m2276_4(unknown) = Chi : total:m2276_2, partial:m2276_3 +# 2276| r2276_5(glval) = VariableAddress[b] : +# 2276| m2276_6(bool) = InitializeParameter[b] : &:r2276_5 +# 2278| r2278_1(glval) = VariableAddress[s] : +# 2278| m2278_2(String) = Uninitialized[s] : &:r2278_1 +# 2278| m2278_3(unknown) = Chi : total:m2276_4, partial:m2278_2 +# 2278| r2278_4(glval) = FunctionAddress[String] : +# 2278| v2278_5(void) = Call[String] : func:r2278_4, this:r2278_1 +# 2278| m2278_6(unknown) = ^CallSideEffect : ~m2278_3 +# 2278| m2278_7(unknown) = Chi : total:m2278_3, partial:m2278_6 +# 2278| m2278_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r2278_1 +# 2278| m2278_9(unknown) = Chi : total:m2278_7, partial:m2278_8 #-----| C++ Exception -> Block 7 #-----| Goto -> Block 3 -# 2274| Block 1 -# 2274| m2274_7(unknown) = Phi : from 2:~m2274_10, from 12:~m2290_1 -# 2274| v2274_8(void) = AliasedUse : ~m2274_7 -# 2274| v2274_9(void) = ExitFunction : +# 2276| Block 1 +# 2276| m2276_7(unknown) = Phi : from 2:~m2276_10, from 12:~m2292_1 +# 2276| v2276_8(void) = AliasedUse : ~m2276_7 +# 2276| v2276_9(void) = ExitFunction : -# 2274| Block 2 -# 2274| m2274_10(unknown) = Phi : from 8:~m2283_12, from 11:~m2282_1 -# 2274| v2274_11(void) = Unwind : +# 2276| Block 2 +# 2276| m2276_10(unknown) = Phi : from 8:~m2285_12, from 11:~m2284_1 +# 2276| v2276_11(void) = Unwind : #-----| Goto -> Block 1 -# 2277| Block 3 -# 2277| r2277_1(glval) = VariableAddress[b] : -# 2277| r2277_2(bool) = Load[b] : &:r2277_1, m2274_6 -# 2277| v2277_3(void) = ConditionalBranch : r2277_2 +# 2279| Block 3 +# 2279| r2279_1(glval) = VariableAddress[b] : +# 2279| r2279_2(bool) = Load[b] : &:r2279_1, m2276_6 +# 2279| v2279_3(void) = ConditionalBranch : r2279_2 #-----| False -> Block 5 #-----| True -> Block 4 -# 2278| Block 4 -# 2278| r2278_1(glval) = VariableAddress[#throw2278:7] : -# 2278| r2278_2(glval) = StringConstant["string literal"] : -# 2278| r2278_3(char *) = Convert : r2278_2 -# 2278| m2278_4(char *) = Store[#throw2278:7] : &:r2278_1, r2278_3 -# 2278| v2278_5(void) = ThrowValue : &:r2278_1, m2278_4 -# 2281| r2281_1(glval) = VariableAddress[s] : -# 2281| r2281_2(glval) = FunctionAddress[~String] : -# 2281| v2281_3(void) = Call[~String] : func:r2281_2, this:r2281_1 -# 2281| m2281_4(unknown) = ^CallSideEffect : ~m2276_9 -# 2281| m2281_5(unknown) = Chi : total:m2276_9, partial:m2281_4 -# 2281| v2281_6(void) = ^IndirectReadSideEffect[-1] : &:r2281_1, ~m2281_5 -# 2281| m2281_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2281_1 -# 2281| m2281_8(unknown) = Chi : total:m2281_5, partial:m2281_7 +# 2280| Block 4 +# 2280| r2280_1(glval) = VariableAddress[#throw2280:7] : +# 2280| r2280_2(glval) = StringConstant["string literal"] : +# 2280| r2280_3(char *) = Convert : r2280_2 +# 2280| m2280_4(char *) = Store[#throw2280:7] : &:r2280_1, r2280_3 +# 2280| v2280_5(void) = ThrowValue : &:r2280_1, m2280_4 +# 2283| r2283_1(glval) = VariableAddress[s] : +# 2283| r2283_2(glval) = FunctionAddress[~String] : +# 2283| v2283_3(void) = Call[~String] : func:r2283_2, this:r2283_1 +# 2283| m2283_4(unknown) = ^CallSideEffect : ~m2278_9 +# 2283| m2283_5(unknown) = Chi : total:m2278_9, partial:m2283_4 +# 2283| v2283_6(void) = ^IndirectReadSideEffect[-1] : &:r2283_1, ~m2283_5 +# 2283| m2283_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2283_1 +# 2283| m2283_8(unknown) = Chi : total:m2283_5, partial:m2283_7 #-----| C++ Exception -> Block 7 -# 2280| Block 5 -# 2280| r2280_1(glval) = VariableAddress[s2] : -# 2280| m2280_2(String) = Uninitialized[s2] : &:r2280_1 -# 2280| m2280_3(unknown) = Chi : total:m2276_9, partial:m2280_2 -# 2280| r2280_4(glval) = FunctionAddress[String] : -# 2280| v2280_5(void) = Call[String] : func:r2280_4, this:r2280_1 -# 2280| m2280_6(unknown) = ^CallSideEffect : ~m2280_3 -# 2280| m2280_7(unknown) = Chi : total:m2280_3, partial:m2280_6 -# 2280| m2280_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r2280_1 -# 2280| m2280_9(unknown) = Chi : total:m2280_7, partial:m2280_8 +# 2282| Block 5 +# 2282| r2282_1(glval) = VariableAddress[s2] : +# 2282| m2282_2(String) = Uninitialized[s2] : &:r2282_1 +# 2282| m2282_3(unknown) = Chi : total:m2278_9, partial:m2282_2 +# 2282| r2282_4(glval) = FunctionAddress[String] : +# 2282| v2282_5(void) = Call[String] : func:r2282_4, this:r2282_1 +# 2282| m2282_6(unknown) = ^CallSideEffect : ~m2282_3 +# 2282| m2282_7(unknown) = Chi : total:m2282_3, partial:m2282_6 +# 2282| m2282_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r2282_1 +# 2282| m2282_9(unknown) = Chi : total:m2282_7, partial:m2282_8 #-----| C++ Exception -> Block 7 #-----| Goto -> Block 6 -# 2281| Block 6 -# 2281| r2281_9(glval) = VariableAddress[s2] : -# 2281| r2281_10(glval) = FunctionAddress[~String] : -# 2281| v2281_11(void) = Call[~String] : func:r2281_10, this:r2281_9 -# 2281| m2281_12(unknown) = ^CallSideEffect : ~m2280_9 -# 2281| m2281_13(unknown) = Chi : total:m2280_9, partial:m2281_12 -# 2281| v2281_14(void) = ^IndirectReadSideEffect[-1] : &:r2281_9, ~m2281_13 -# 2281| m2281_15(String) = ^IndirectMayWriteSideEffect[-1] : &:r2281_9 -# 2281| m2281_16(unknown) = Chi : total:m2281_13, partial:m2281_15 -# 2281| r2281_17(glval) = VariableAddress[s] : -# 2281| r2281_18(glval) = FunctionAddress[~String] : -# 2281| v2281_19(void) = Call[~String] : func:r2281_18, this:r2281_17 -# 2281| m2281_20(unknown) = ^CallSideEffect : ~m2281_16 -# 2281| m2281_21(unknown) = Chi : total:m2281_16, partial:m2281_20 -# 2281| v2281_22(void) = ^IndirectReadSideEffect[-1] : &:r2281_17, ~m2281_21 -# 2281| m2281_23(String) = ^IndirectMayWriteSideEffect[-1] : &:r2281_17 -# 2281| m2281_24(unknown) = Chi : total:m2281_21, partial:m2281_23 +# 2283| Block 6 +# 2283| r2283_9(glval) = VariableAddress[s2] : +# 2283| r2283_10(glval) = FunctionAddress[~String] : +# 2283| v2283_11(void) = Call[~String] : func:r2283_10, this:r2283_9 +# 2283| m2283_12(unknown) = ^CallSideEffect : ~m2282_9 +# 2283| m2283_13(unknown) = Chi : total:m2282_9, partial:m2283_12 +# 2283| v2283_14(void) = ^IndirectReadSideEffect[-1] : &:r2283_9, ~m2283_13 +# 2283| m2283_15(String) = ^IndirectMayWriteSideEffect[-1] : &:r2283_9 +# 2283| m2283_16(unknown) = Chi : total:m2283_13, partial:m2283_15 +# 2283| r2283_17(glval) = VariableAddress[s] : +# 2283| r2283_18(glval) = FunctionAddress[~String] : +# 2283| v2283_19(void) = Call[~String] : func:r2283_18, this:r2283_17 +# 2283| m2283_20(unknown) = ^CallSideEffect : ~m2283_16 +# 2283| m2283_21(unknown) = Chi : total:m2283_16, partial:m2283_20 +# 2283| v2283_22(void) = ^IndirectReadSideEffect[-1] : &:r2283_17, ~m2283_21 +# 2283| m2283_23(String) = ^IndirectMayWriteSideEffect[-1] : &:r2283_17 +# 2283| m2283_24(unknown) = Chi : total:m2283_21, partial:m2283_23 #-----| Goto -> Block 12 -# 2282| Block 7 -# 2282| m2282_1(unknown) = Phi : from 0:~m2276_9, from 4:~m2281_8, from 5:~m2280_9 -# 2282| v2282_2(void) = CatchByType[const char *] : +# 2284| Block 7 +# 2284| m2284_1(unknown) = Phi : from 0:~m2278_9, from 4:~m2283_8, from 5:~m2282_9 +# 2284| v2284_2(void) = CatchByType[const char *] : #-----| C++ Exception -> Block 9 #-----| Goto -> Block 8 -# 2282| Block 8 -# 2282| r2282_3(glval) = VariableAddress[s] : -# 2282| m2282_4(char *) = InitializeParameter[s] : &:r2282_3 -# 2282| r2282_5(char *) = Load[s] : &:r2282_3, m2282_4 -# 2282| m2282_6(unknown) = InitializeIndirection[s] : &:r2282_5 -# 2282| m2282_7(unknown) = Chi : total:m2282_1, partial:m2282_6 -# 2283| r2283_1(glval) = VariableAddress[#throw2283:5] : -# 2283| m2283_2(String) = Uninitialized[#throw2283:5] : &:r2283_1 -# 2283| m2283_3(unknown) = Chi : total:m2282_7, partial:m2283_2 -# 2283| r2283_4(glval) = FunctionAddress[String] : -# 2283| r2283_5(glval) = VariableAddress[s] : -# 2283| r2283_6(char *) = Load[s] : &:r2283_5, m2282_4 -# 2283| v2283_7(void) = Call[String] : func:r2283_4, this:r2283_1, 0:r2283_6 -# 2283| m2283_8(unknown) = ^CallSideEffect : ~m2283_3 -# 2283| m2283_9(unknown) = Chi : total:m2283_3, partial:m2283_8 -# 2283| v2283_10(void) = ^BufferReadSideEffect[0] : &:r2283_6, ~m2283_9 -# 2283| m2283_11(String) = ^IndirectMayWriteSideEffect[-1] : &:r2283_1 -# 2283| m2283_12(unknown) = Chi : total:m2283_9, partial:m2283_11 -# 2283| v2283_13(void) = ThrowValue : &:r2283_1, ~m2283_12 +# 2284| Block 8 +# 2284| r2284_3(glval) = VariableAddress[s] : +# 2284| m2284_4(char *) = InitializeParameter[s] : &:r2284_3 +# 2284| r2284_5(char *) = Load[s] : &:r2284_3, m2284_4 +# 2284| m2284_6(unknown) = InitializeIndirection[s] : &:r2284_5 +# 2284| m2284_7(unknown) = Chi : total:m2284_1, partial:m2284_6 +# 2285| r2285_1(glval) = VariableAddress[#throw2285:5] : +# 2285| m2285_2(String) = Uninitialized[#throw2285:5] : &:r2285_1 +# 2285| m2285_3(unknown) = Chi : total:m2284_7, partial:m2285_2 +# 2285| r2285_4(glval) = FunctionAddress[String] : +# 2285| r2285_5(glval) = VariableAddress[s] : +# 2285| r2285_6(char *) = Load[s] : &:r2285_5, m2284_4 +# 2285| v2285_7(void) = Call[String] : func:r2285_4, this:r2285_1, 0:r2285_6 +# 2285| m2285_8(unknown) = ^CallSideEffect : ~m2285_3 +# 2285| m2285_9(unknown) = Chi : total:m2285_3, partial:m2285_8 +# 2285| v2285_10(void) = ^BufferReadSideEffect[0] : &:r2285_6, ~m2285_9 +# 2285| m2285_11(String) = ^IndirectMayWriteSideEffect[-1] : &:r2285_1 +# 2285| m2285_12(unknown) = Chi : total:m2285_9, partial:m2285_11 +# 2285| v2285_13(void) = ThrowValue : &:r2285_1, ~m2285_12 #-----| C++ Exception -> Block 2 -# 2285| Block 9 -# 2285| v2285_1(void) = CatchByType[const String &] : +# 2287| Block 9 +# 2287| v2287_1(void) = CatchByType[const String &] : #-----| C++ Exception -> Block 11 #-----| Goto -> Block 10 -# 2285| Block 10 -# 2285| r2285_2(glval) = VariableAddress[e] : -# 2285| m2285_3(String &) = InitializeParameter[e] : &:r2285_2 -# 2285| r2285_4(String &) = Load[e] : &:r2285_2, m2285_3 -# 2285| m2285_5(unknown) = InitializeIndirection[e] : &:r2285_4 -# 2285| v2285_6(void) = NoOp : +# 2287| Block 10 +# 2287| r2287_2(glval) = VariableAddress[e] : +# 2287| m2287_3(String &) = InitializeParameter[e] : &:r2287_2 +# 2287| r2287_4(String &) = Load[e] : &:r2287_2, m2287_3 +# 2287| m2287_5(unknown) = InitializeIndirection[e] : &:r2287_4 +# 2287| v2287_6(void) = NoOp : #-----| Goto -> Block 12 -# 2287| Block 11 -# 2287| v2287_1(void) = CatchAny : -# 2288| v2288_1(void) = ReThrow : +# 2289| Block 11 +# 2289| v2289_1(void) = CatchAny : +# 2290| v2290_1(void) = ReThrow : #-----| C++ Exception -> Block 2 -# 2290| Block 12 -# 2290| m2290_1(unknown) = Phi : from 6:~m2281_24, from 10:~m2282_1 -# 2290| v2290_2(void) = NoOp : -# 2274| v2274_12(void) = ReturnVoid : +# 2292| Block 12 +# 2292| m2292_1(unknown) = Phi : from 6:~m2283_24, from 10:~m2284_1 +# 2292| v2292_2(void) = NoOp : +# 2276| v2276_12(void) = ReturnVoid : #-----| Goto -> Block 1 -# 2292| void IfDestructors(bool) -# 2292| Block 0 -# 2292| v2292_1(void) = EnterFunction : -# 2292| m2292_2(unknown) = AliasedDefinition : -# 2292| m2292_3(unknown) = InitializeNonLocal : -# 2292| m2292_4(unknown) = Chi : total:m2292_2, partial:m2292_3 -# 2292| r2292_5(glval) = VariableAddress[b] : -# 2292| m2292_6(bool) = InitializeParameter[b] : &:r2292_5 -# 2293| r2293_1(glval) = VariableAddress[s1] : -# 2293| m2293_2(String) = Uninitialized[s1] : &:r2293_1 -# 2293| m2293_3(unknown) = Chi : total:m2292_4, partial:m2293_2 -# 2293| r2293_4(glval) = FunctionAddress[String] : -# 2293| v2293_5(void) = Call[String] : func:r2293_4, this:r2293_1 -# 2293| m2293_6(unknown) = ^CallSideEffect : ~m2293_3 -# 2293| m2293_7(unknown) = Chi : total:m2293_3, partial:m2293_6 -# 2293| m2293_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r2293_1 -# 2293| m2293_9(unknown) = Chi : total:m2293_7, partial:m2293_8 -# 2294| r2294_1(glval) = VariableAddress[b] : -# 2294| r2294_2(bool) = Load[b] : &:r2294_1, m2292_6 -# 2294| v2294_3(void) = ConditionalBranch : r2294_2 -#-----| False -> Block 2 -#-----| True -> Block 1 - -# 2295| Block 1 -# 2295| r2295_1(glval) = VariableAddress[s2] : -# 2295| m2295_2(String) = Uninitialized[s2] : &:r2295_1 -# 2295| m2295_3(unknown) = Chi : total:m2293_9, partial:m2295_2 +# 2294| void IfDestructors(bool) +# 2294| Block 0 +# 2294| v2294_1(void) = EnterFunction : +# 2294| m2294_2(unknown) = AliasedDefinition : +# 2294| m2294_3(unknown) = InitializeNonLocal : +# 2294| m2294_4(unknown) = Chi : total:m2294_2, partial:m2294_3 +# 2294| r2294_5(glval) = VariableAddress[b] : +# 2294| m2294_6(bool) = InitializeParameter[b] : &:r2294_5 +# 2295| r2295_1(glval) = VariableAddress[s1] : +# 2295| m2295_2(String) = Uninitialized[s1] : &:r2295_1 +# 2295| m2295_3(unknown) = Chi : total:m2294_4, partial:m2295_2 # 2295| r2295_4(glval) = FunctionAddress[String] : # 2295| v2295_5(void) = Call[String] : func:r2295_4, this:r2295_1 # 2295| m2295_6(unknown) = ^CallSideEffect : ~m2295_3 # 2295| m2295_7(unknown) = Chi : total:m2295_3, partial:m2295_6 # 2295| m2295_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r2295_1 # 2295| m2295_9(unknown) = Chi : total:m2295_7, partial:m2295_8 -# 2296| r2296_1(glval) = VariableAddress[s2] : -# 2296| r2296_2(glval) = FunctionAddress[~String] : -# 2296| v2296_3(void) = Call[~String] : func:r2296_2, this:r2296_1 -# 2296| m2296_4(unknown) = ^CallSideEffect : ~m2295_9 -# 2296| m2296_5(unknown) = Chi : total:m2295_9, partial:m2296_4 -# 2296| v2296_6(void) = ^IndirectReadSideEffect[-1] : &:r2296_1, ~m2296_5 -# 2296| m2296_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2296_1 -# 2296| m2296_8(unknown) = Chi : total:m2296_5, partial:m2296_7 -#-----| Goto -> Block 3 +# 2296| r2296_1(glval) = VariableAddress[b] : +# 2296| r2296_2(bool) = Load[b] : &:r2296_1, m2294_6 +# 2296| v2296_3(void) = ConditionalBranch : r2296_2 +#-----| False -> Block 2 +#-----| True -> Block 1 -# 2297| Block 2 -# 2297| r2297_1(glval) = VariableAddress[s3] : -# 2297| m2297_2(String) = Uninitialized[s3] : &:r2297_1 -# 2297| m2297_3(unknown) = Chi : total:m2293_9, partial:m2297_2 +# 2297| Block 1 +# 2297| r2297_1(glval) = VariableAddress[s2] : +# 2297| m2297_2(String) = Uninitialized[s2] : &:r2297_1 +# 2297| m2297_3(unknown) = Chi : total:m2295_9, partial:m2297_2 # 2297| r2297_4(glval) = FunctionAddress[String] : # 2297| v2297_5(void) = Call[String] : func:r2297_4, this:r2297_1 # 2297| m2297_6(unknown) = ^CallSideEffect : ~m2297_3 # 2297| m2297_7(unknown) = Chi : total:m2297_3, partial:m2297_6 # 2297| m2297_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r2297_1 # 2297| m2297_9(unknown) = Chi : total:m2297_7, partial:m2297_8 -# 2298| r2298_1(glval) = VariableAddress[s3] : +# 2298| r2298_1(glval) = VariableAddress[s2] : # 2298| r2298_2(glval) = FunctionAddress[~String] : # 2298| v2298_3(void) = Call[~String] : func:r2298_2, this:r2298_1 # 2298| m2298_4(unknown) = ^CallSideEffect : ~m2297_9 @@ -17492,438 +17472,438 @@ ir.cpp: # 2298| m2298_8(unknown) = Chi : total:m2298_5, partial:m2298_7 #-----| Goto -> Block 3 -# 2299| Block 3 -# 2299| m2299_1(unknown) = Phi : from 1:~m2296_8, from 2:~m2298_8 -# 2299| r2299_2(glval) = VariableAddress[s4] : -# 2299| m2299_3(String) = Uninitialized[s4] : &:r2299_2 -# 2299| m2299_4(unknown) = Chi : total:m2299_1, partial:m2299_3 -# 2299| r2299_5(glval) = FunctionAddress[String] : -# 2299| v2299_6(void) = Call[String] : func:r2299_5, this:r2299_2 -# 2299| m2299_7(unknown) = ^CallSideEffect : ~m2299_4 -# 2299| m2299_8(unknown) = Chi : total:m2299_4, partial:m2299_7 -# 2299| m2299_9(String) = ^IndirectMayWriteSideEffect[-1] : &:r2299_2 -# 2299| m2299_10(unknown) = Chi : total:m2299_8, partial:m2299_9 -# 2300| v2300_1(void) = NoOp : -# 2300| r2300_2(glval) = VariableAddress[s4] : -# 2300| r2300_3(glval) = FunctionAddress[~String] : -# 2300| v2300_4(void) = Call[~String] : func:r2300_3, this:r2300_2 -# 2300| m2300_5(unknown) = ^CallSideEffect : ~m2299_10 -# 2300| m2300_6(unknown) = Chi : total:m2299_10, partial:m2300_5 -# 2300| v2300_7(void) = ^IndirectReadSideEffect[-1] : &:r2300_2, ~m2300_6 -# 2300| m2300_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r2300_2 -# 2300| m2300_9(unknown) = Chi : total:m2300_6, partial:m2300_8 -# 2300| r2300_10(glval) = VariableAddress[s1] : -# 2300| r2300_11(glval) = FunctionAddress[~String] : -# 2300| v2300_12(void) = Call[~String] : func:r2300_11, this:r2300_10 -# 2300| m2300_13(unknown) = ^CallSideEffect : ~m2300_9 -# 2300| m2300_14(unknown) = Chi : total:m2300_9, partial:m2300_13 -# 2300| v2300_15(void) = ^IndirectReadSideEffect[-1] : &:r2300_10, ~m2300_14 -# 2300| m2300_16(String) = ^IndirectMayWriteSideEffect[-1] : &:r2300_10 -# 2300| m2300_17(unknown) = Chi : total:m2300_14, partial:m2300_16 -# 2292| v2292_7(void) = ReturnVoid : -# 2292| v2292_8(void) = AliasedUse : ~m2300_14 -# 2292| v2292_9(void) = ExitFunction : +# 2299| Block 2 +# 2299| r2299_1(glval) = VariableAddress[s3] : +# 2299| m2299_2(String) = Uninitialized[s3] : &:r2299_1 +# 2299| m2299_3(unknown) = Chi : total:m2295_9, partial:m2299_2 +# 2299| r2299_4(glval) = FunctionAddress[String] : +# 2299| v2299_5(void) = Call[String] : func:r2299_4, this:r2299_1 +# 2299| m2299_6(unknown) = ^CallSideEffect : ~m2299_3 +# 2299| m2299_7(unknown) = Chi : total:m2299_3, partial:m2299_6 +# 2299| m2299_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r2299_1 +# 2299| m2299_9(unknown) = Chi : total:m2299_7, partial:m2299_8 +# 2300| r2300_1(glval) = VariableAddress[s3] : +# 2300| r2300_2(glval) = FunctionAddress[~String] : +# 2300| v2300_3(void) = Call[~String] : func:r2300_2, this:r2300_1 +# 2300| m2300_4(unknown) = ^CallSideEffect : ~m2299_9 +# 2300| m2300_5(unknown) = Chi : total:m2299_9, partial:m2300_4 +# 2300| v2300_6(void) = ^IndirectReadSideEffect[-1] : &:r2300_1, ~m2300_5 +# 2300| m2300_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2300_1 +# 2300| m2300_8(unknown) = Chi : total:m2300_5, partial:m2300_7 +#-----| Goto -> Block 3 -# 2302| void ForDestructors() -# 2302| Block 0 -# 2302| v2302_1(void) = EnterFunction : -# 2302| m2302_2(unknown) = AliasedDefinition : -# 2302| m2302_3(unknown) = InitializeNonLocal : -# 2302| m2302_4(unknown) = Chi : total:m2302_2, partial:m2302_3 -# 2303| r2303_1(glval) = VariableAddress[c] : -# 2303| r2303_2(char) = Constant[97] : -# 2303| m2303_3(char) = Store[c] : &:r2303_1, r2303_2 -# 2304| r2304_1(glval) = VariableAddress[s] : -# 2304| m2304_2(String) = Uninitialized[s] : &:r2304_1 -# 2304| m2304_3(unknown) = Chi : total:m2302_4, partial:m2304_2 -# 2304| r2304_4(glval) = FunctionAddress[String] : -# 2304| r2304_5(glval) = StringConstant["hello"] : -# 2304| r2304_6(char *) = Convert : r2304_5 -# 2304| v2304_7(void) = Call[String] : func:r2304_4, this:r2304_1, 0:r2304_6 -# 2304| m2304_8(unknown) = ^CallSideEffect : ~m2304_3 -# 2304| m2304_9(unknown) = Chi : total:m2304_3, partial:m2304_8 -# 2304| v2304_10(void) = ^BufferReadSideEffect[0] : &:r2304_6, ~m2302_3 -# 2304| m2304_11(String) = ^IndirectMayWriteSideEffect[-1] : &:r2304_1 -# 2304| m2304_12(unknown) = Chi : total:m2304_9, partial:m2304_11 +# 2301| Block 3 +# 2301| m2301_1(unknown) = Phi : from 1:~m2298_8, from 2:~m2300_8 +# 2301| r2301_2(glval) = VariableAddress[s4] : +# 2301| m2301_3(String) = Uninitialized[s4] : &:r2301_2 +# 2301| m2301_4(unknown) = Chi : total:m2301_1, partial:m2301_3 +# 2301| r2301_5(glval) = FunctionAddress[String] : +# 2301| v2301_6(void) = Call[String] : func:r2301_5, this:r2301_2 +# 2301| m2301_7(unknown) = ^CallSideEffect : ~m2301_4 +# 2301| m2301_8(unknown) = Chi : total:m2301_4, partial:m2301_7 +# 2301| m2301_9(String) = ^IndirectMayWriteSideEffect[-1] : &:r2301_2 +# 2301| m2301_10(unknown) = Chi : total:m2301_8, partial:m2301_9 +# 2302| v2302_1(void) = NoOp : +# 2302| r2302_2(glval) = VariableAddress[s4] : +# 2302| r2302_3(glval) = FunctionAddress[~String] : +# 2302| v2302_4(void) = Call[~String] : func:r2302_3, this:r2302_2 +# 2302| m2302_5(unknown) = ^CallSideEffect : ~m2301_10 +# 2302| m2302_6(unknown) = Chi : total:m2301_10, partial:m2302_5 +# 2302| v2302_7(void) = ^IndirectReadSideEffect[-1] : &:r2302_2, ~m2302_6 +# 2302| m2302_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r2302_2 +# 2302| m2302_9(unknown) = Chi : total:m2302_6, partial:m2302_8 +# 2302| r2302_10(glval) = VariableAddress[s1] : +# 2302| r2302_11(glval) = FunctionAddress[~String] : +# 2302| v2302_12(void) = Call[~String] : func:r2302_11, this:r2302_10 +# 2302| m2302_13(unknown) = ^CallSideEffect : ~m2302_9 +# 2302| m2302_14(unknown) = Chi : total:m2302_9, partial:m2302_13 +# 2302| v2302_15(void) = ^IndirectReadSideEffect[-1] : &:r2302_10, ~m2302_14 +# 2302| m2302_16(String) = ^IndirectMayWriteSideEffect[-1] : &:r2302_10 +# 2302| m2302_17(unknown) = Chi : total:m2302_14, partial:m2302_16 +# 2294| v2294_7(void) = ReturnVoid : +# 2294| v2294_8(void) = AliasedUse : ~m2302_14 +# 2294| v2294_9(void) = ExitFunction : + +# 2304| void ForDestructors() +# 2304| Block 0 +# 2304| v2304_1(void) = EnterFunction : +# 2304| m2304_2(unknown) = AliasedDefinition : +# 2304| m2304_3(unknown) = InitializeNonLocal : +# 2304| m2304_4(unknown) = Chi : total:m2304_2, partial:m2304_3 +# 2305| r2305_1(glval) = VariableAddress[c] : +# 2305| r2305_2(char) = Constant[97] : +# 2305| m2305_3(char) = Store[c] : &:r2305_1, r2305_2 +# 2306| r2306_1(glval) = VariableAddress[s] : +# 2306| m2306_2(String) = Uninitialized[s] : &:r2306_1 +# 2306| m2306_3(unknown) = Chi : total:m2304_4, partial:m2306_2 +# 2306| r2306_4(glval) = FunctionAddress[String] : +# 2306| r2306_5(glval) = StringConstant["hello"] : +# 2306| r2306_6(char *) = Convert : r2306_5 +# 2306| v2306_7(void) = Call[String] : func:r2306_4, this:r2306_1, 0:r2306_6 +# 2306| m2306_8(unknown) = ^CallSideEffect : ~m2306_3 +# 2306| m2306_9(unknown) = Chi : total:m2306_3, partial:m2306_8 +# 2306| v2306_10(void) = ^BufferReadSideEffect[0] : &:r2306_6, ~m2304_3 +# 2306| m2306_11(String) = ^IndirectMayWriteSideEffect[-1] : &:r2306_1 +# 2306| m2306_12(unknown) = Chi : total:m2306_9, partial:m2306_11 #-----| Goto -> Block 1 -# 2304| Block 1 -# 2304| m2304_13(unknown) = Phi : from 0:~m2304_12, from 2:~m2304_28 -# 2304| m2304_14(char) = Phi : from 0:m2303_3, from 2:m2304_30 -# 2304| r2304_15(glval) = VariableAddress[c] : -# 2304| r2304_16(char) = Load[c] : &:r2304_15, m2304_14 -# 2304| r2304_17(int) = Convert : r2304_16 -# 2304| r2304_18(int) = Constant[0] : -# 2304| r2304_19(bool) = CompareNE : r2304_17, r2304_18 -# 2304| v2304_20(void) = ConditionalBranch : r2304_19 +# 2306| Block 1 +# 2306| m2306_13(unknown) = Phi : from 0:~m2306_12, from 2:~m2306_28 +# 2306| m2306_14(char) = Phi : from 0:m2305_3, from 2:m2306_30 +# 2306| r2306_15(glval) = VariableAddress[c] : +# 2306| r2306_16(char) = Load[c] : &:r2306_15, m2306_14 +# 2306| r2306_17(int) = Convert : r2306_16 +# 2306| r2306_18(int) = Constant[0] : +# 2306| r2306_19(bool) = CompareNE : r2306_17, r2306_18 +# 2306| v2306_20(void) = ConditionalBranch : r2306_19 #-----| False -> Block 3 #-----| True -> Block 2 -# 2305| Block 2 -# 2305| r2305_1(glval) = VariableAddress[s2] : -# 2305| m2305_2(String) = Uninitialized[s2] : &:r2305_1 -# 2305| m2305_3(unknown) = Chi : total:m2304_13, partial:m2305_2 -# 2305| r2305_4(glval) = FunctionAddress[String] : -# 2305| v2305_5(void) = Call[String] : func:r2305_4, this:r2305_1 -# 2305| m2305_6(unknown) = ^CallSideEffect : ~m2305_3 -# 2305| m2305_7(unknown) = Chi : total:m2305_3, partial:m2305_6 -# 2305| m2305_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r2305_1 -# 2305| m2305_9(unknown) = Chi : total:m2305_7, partial:m2305_8 -# 2306| r2306_1(glval) = VariableAddress[s2] : -# 2306| r2306_2(glval) = FunctionAddress[~String] : -# 2306| v2306_3(void) = Call[~String] : func:r2306_2, this:r2306_1 -# 2306| m2306_4(unknown) = ^CallSideEffect : ~m2305_9 -# 2306| m2306_5(unknown) = Chi : total:m2305_9, partial:m2306_4 -# 2306| v2306_6(void) = ^IndirectReadSideEffect[-1] : &:r2306_1, ~m2306_5 -# 2306| m2306_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2306_1 -# 2306| m2306_8(unknown) = Chi : total:m2306_5, partial:m2306_7 -# 2304| r2304_21(glval) = VariableAddress[s] : -# 2304| r2304_22(glval) = FunctionAddress[pop_back] : -# 2304| r2304_23(char) = Call[pop_back] : func:r2304_22, this:r2304_21 -# 2304| m2304_24(unknown) = ^CallSideEffect : ~m2306_8 -# 2304| m2304_25(unknown) = Chi : total:m2306_8, partial:m2304_24 -# 2304| v2304_26(void) = ^IndirectReadSideEffect[-1] : &:r2304_21, ~m2304_25 -# 2304| m2304_27(String) = ^IndirectMayWriteSideEffect[-1] : &:r2304_21 -# 2304| m2304_28(unknown) = Chi : total:m2304_25, partial:m2304_27 -# 2304| r2304_29(glval) = VariableAddress[c] : -# 2304| m2304_30(char) = Store[c] : &:r2304_29, r2304_23 +# 2307| Block 2 +# 2307| r2307_1(glval) = VariableAddress[s2] : +# 2307| m2307_2(String) = Uninitialized[s2] : &:r2307_1 +# 2307| m2307_3(unknown) = Chi : total:m2306_13, partial:m2307_2 +# 2307| r2307_4(glval) = FunctionAddress[String] : +# 2307| v2307_5(void) = Call[String] : func:r2307_4, this:r2307_1 +# 2307| m2307_6(unknown) = ^CallSideEffect : ~m2307_3 +# 2307| m2307_7(unknown) = Chi : total:m2307_3, partial:m2307_6 +# 2307| m2307_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r2307_1 +# 2307| m2307_9(unknown) = Chi : total:m2307_7, partial:m2307_8 +# 2308| r2308_1(glval) = VariableAddress[s2] : +# 2308| r2308_2(glval) = FunctionAddress[~String] : +# 2308| v2308_3(void) = Call[~String] : func:r2308_2, this:r2308_1 +# 2308| m2308_4(unknown) = ^CallSideEffect : ~m2307_9 +# 2308| m2308_5(unknown) = Chi : total:m2307_9, partial:m2308_4 +# 2308| v2308_6(void) = ^IndirectReadSideEffect[-1] : &:r2308_1, ~m2308_5 +# 2308| m2308_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2308_1 +# 2308| m2308_8(unknown) = Chi : total:m2308_5, partial:m2308_7 +# 2306| r2306_21(glval) = VariableAddress[s] : +# 2306| r2306_22(glval) = FunctionAddress[pop_back] : +# 2306| r2306_23(char) = Call[pop_back] : func:r2306_22, this:r2306_21 +# 2306| m2306_24(unknown) = ^CallSideEffect : ~m2308_8 +# 2306| m2306_25(unknown) = Chi : total:m2308_8, partial:m2306_24 +# 2306| v2306_26(void) = ^IndirectReadSideEffect[-1] : &:r2306_21, ~m2306_25 +# 2306| m2306_27(String) = ^IndirectMayWriteSideEffect[-1] : &:r2306_21 +# 2306| m2306_28(unknown) = Chi : total:m2306_25, partial:m2306_27 +# 2306| r2306_29(glval) = VariableAddress[c] : +# 2306| m2306_30(char) = Store[c] : &:r2306_29, r2306_23 #-----| Goto (back edge) -> Block 1 -# 2304| Block 3 -# 2304| r2304_31(glval) = VariableAddress[s] : -# 2304| r2304_32(glval) = FunctionAddress[~String] : -# 2304| v2304_33(void) = Call[~String] : func:r2304_32, this:r2304_31 -# 2304| m2304_34(unknown) = ^CallSideEffect : ~m2304_13 -# 2304| m2304_35(unknown) = Chi : total:m2304_13, partial:m2304_34 -# 2304| v2304_36(void) = ^IndirectReadSideEffect[-1] : &:r2304_31, ~m2304_35 -# 2304| m2304_37(String) = ^IndirectMayWriteSideEffect[-1] : &:r2304_31 -# 2304| m2304_38(unknown) = Chi : total:m2304_35, partial:m2304_37 -# 2308| r2308_1(glval &&>) = VariableAddress[(__range)] : -# 2308| r2308_2(glval>) = VariableAddress[#temp2308:20] : -# 2308| m2308_3(vector) = Uninitialized[#temp2308:20] : &:r2308_2 -# 2308| r2308_4(glval) = FunctionAddress[vector] : -# 2308| r2308_5(glval) = VariableAddress[#temp2308:40] : -# 2308| m2308_6(String) = Uninitialized[#temp2308:40] : &:r2308_5 -# 2308| m2308_7(unknown) = Chi : total:m2304_38, partial:m2308_6 -# 2308| r2308_8(glval) = FunctionAddress[String] : -# 2308| r2308_9(glval) = StringConstant["hello"] : -# 2308| r2308_10(char *) = Convert : r2308_9 -# 2308| v2308_11(void) = Call[String] : func:r2308_8, this:r2308_5, 0:r2308_10 -# 2308| m2308_12(unknown) = ^CallSideEffect : ~m2308_7 -# 2308| m2308_13(unknown) = Chi : total:m2308_7, partial:m2308_12 -# 2308| v2308_14(void) = ^BufferReadSideEffect[0] : &:r2308_10, ~m2302_3 -# 2308| m2308_15(String) = ^IndirectMayWriteSideEffect[-1] : &:r2308_5 -# 2308| m2308_16(unknown) = Chi : total:m2308_13, partial:m2308_15 -# 2308| r2308_17(String) = Load[#temp2308:40] : &:r2308_5, ~m2308_16 -# 2308| v2308_18(void) = Call[vector] : func:r2308_4, this:r2308_2, 0:r2308_17 -# 2308| m2308_19(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2308_2 -# 2308| r2308_20(glval) = CopyValue : r2308_5 -# 2308| r2308_21(glval) = FunctionAddress[~String] : -# 2308| v2308_22(void) = Call[~String] : func:r2308_21, this:r2308_20 -# 2308| m2308_23(unknown) = ^CallSideEffect : ~m2308_16 -# 2308| m2308_24(unknown) = Chi : total:m2308_16, partial:m2308_23 -# 2308| v2308_25(void) = ^IndirectReadSideEffect[-1] : &:r2308_20, ~m2308_24 -# 2308| m2308_26(String) = ^IndirectMayWriteSideEffect[-1] : &:r2308_20 -# 2308| m2308_27(unknown) = Chi : total:m2308_24, partial:m2308_26 -# 2308| r2308_28(vector &) = CopyValue : r2308_2 -# 2308| m2308_29(vector &&) = Store[(__range)] : &:r2308_1, r2308_28 -# 2308| r2308_30(glval>) = VariableAddress[(__begin)] : -# 2308| r2308_31(glval &&>) = VariableAddress[(__range)] : -# 2308| r2308_32(vector &&) = Load[(__range)] : &:r2308_31, m2308_29 -#-----| r0_1(glval>) = CopyValue : r2308_32 +# 2306| Block 3 +# 2306| r2306_31(glval) = VariableAddress[s] : +# 2306| r2306_32(glval) = FunctionAddress[~String] : +# 2306| v2306_33(void) = Call[~String] : func:r2306_32, this:r2306_31 +# 2306| m2306_34(unknown) = ^CallSideEffect : ~m2306_13 +# 2306| m2306_35(unknown) = Chi : total:m2306_13, partial:m2306_34 +# 2306| v2306_36(void) = ^IndirectReadSideEffect[-1] : &:r2306_31, ~m2306_35 +# 2306| m2306_37(String) = ^IndirectMayWriteSideEffect[-1] : &:r2306_31 +# 2306| m2306_38(unknown) = Chi : total:m2306_35, partial:m2306_37 +# 2310| r2310_1(glval &&>) = VariableAddress[(__range)] : +# 2310| r2310_2(glval>) = VariableAddress[#temp2310:20] : +# 2310| m2310_3(vector) = Uninitialized[#temp2310:20] : &:r2310_2 +# 2310| r2310_4(glval) = FunctionAddress[vector] : +# 2310| r2310_5(glval) = VariableAddress[#temp2310:40] : +# 2310| m2310_6(String) = Uninitialized[#temp2310:40] : &:r2310_5 +# 2310| m2310_7(unknown) = Chi : total:m2306_38, partial:m2310_6 +# 2310| r2310_8(glval) = FunctionAddress[String] : +# 2310| r2310_9(glval) = StringConstant["hello"] : +# 2310| r2310_10(char *) = Convert : r2310_9 +# 2310| v2310_11(void) = Call[String] : func:r2310_8, this:r2310_5, 0:r2310_10 +# 2310| m2310_12(unknown) = ^CallSideEffect : ~m2310_7 +# 2310| m2310_13(unknown) = Chi : total:m2310_7, partial:m2310_12 +# 2310| v2310_14(void) = ^BufferReadSideEffect[0] : &:r2310_10, ~m2304_3 +# 2310| m2310_15(String) = ^IndirectMayWriteSideEffect[-1] : &:r2310_5 +# 2310| m2310_16(unknown) = Chi : total:m2310_13, partial:m2310_15 +# 2310| r2310_17(String) = Load[#temp2310:40] : &:r2310_5, ~m2310_16 +# 2310| v2310_18(void) = Call[vector] : func:r2310_4, this:r2310_2, 0:r2310_17 +# 2310| m2310_19(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2310_2 +# 2310| r2310_20(glval) = CopyValue : r2310_5 +# 2310| r2310_21(glval) = FunctionAddress[~String] : +# 2310| v2310_22(void) = Call[~String] : func:r2310_21, this:r2310_20 +# 2310| m2310_23(unknown) = ^CallSideEffect : ~m2310_16 +# 2310| m2310_24(unknown) = Chi : total:m2310_16, partial:m2310_23 +# 2310| v2310_25(void) = ^IndirectReadSideEffect[-1] : &:r2310_20, ~m2310_24 +# 2310| m2310_26(String) = ^IndirectMayWriteSideEffect[-1] : &:r2310_20 +# 2310| m2310_27(unknown) = Chi : total:m2310_24, partial:m2310_26 +# 2310| r2310_28(vector &) = CopyValue : r2310_2 +# 2310| m2310_29(vector &&) = Store[(__range)] : &:r2310_1, r2310_28 +# 2310| r2310_30(glval>) = VariableAddress[(__begin)] : +# 2310| r2310_31(glval &&>) = VariableAddress[(__range)] : +# 2310| r2310_32(vector &&) = Load[(__range)] : &:r2310_31, m2310_29 +#-----| r0_1(glval>) = CopyValue : r2310_32 #-----| r0_2(glval>) = Convert : r0_1 -# 2308| r2308_33(glval) = FunctionAddress[begin] : -# 2308| r2308_34(iterator) = Call[begin] : func:r2308_33, this:r0_2 -#-----| v0_3(void) = ^IndirectReadSideEffect[-1] : &:r0_2, m2308_19 -# 2308| m2308_35(iterator) = Store[(__begin)] : &:r2308_30, r2308_34 -# 2308| r2308_36(glval>) = VariableAddress[(__end)] : -# 2308| r2308_37(glval &&>) = VariableAddress[(__range)] : -# 2308| r2308_38(vector &&) = Load[(__range)] : &:r2308_37, m2308_29 -#-----| r0_4(glval>) = CopyValue : r2308_38 +# 2310| r2310_33(glval) = FunctionAddress[begin] : +# 2310| r2310_34(iterator) = Call[begin] : func:r2310_33, this:r0_2 +#-----| v0_3(void) = ^IndirectReadSideEffect[-1] : &:r0_2, m2310_19 +# 2310| m2310_35(iterator) = Store[(__begin)] : &:r2310_30, r2310_34 +# 2310| r2310_36(glval>) = VariableAddress[(__end)] : +# 2310| r2310_37(glval &&>) = VariableAddress[(__range)] : +# 2310| r2310_38(vector &&) = Load[(__range)] : &:r2310_37, m2310_29 +#-----| r0_4(glval>) = CopyValue : r2310_38 #-----| r0_5(glval>) = Convert : r0_4 -# 2308| r2308_39(glval) = FunctionAddress[end] : -# 2308| r2308_40(iterator) = Call[end] : func:r2308_39, this:r0_5 -#-----| v0_6(void) = ^IndirectReadSideEffect[-1] : &:r0_5, m2308_19 -# 2308| m2308_41(iterator) = Store[(__end)] : &:r2308_36, r2308_40 -# 2308| m2308_42(unknown) = Chi : total:m2308_27, partial:m2308_41 +# 2310| r2310_39(glval) = FunctionAddress[end] : +# 2310| r2310_40(iterator) = Call[end] : func:r2310_39, this:r0_5 +#-----| v0_6(void) = ^IndirectReadSideEffect[-1] : &:r0_5, m2310_19 +# 2310| m2310_41(iterator) = Store[(__end)] : &:r2310_36, r2310_40 +# 2310| m2310_42(unknown) = Chi : total:m2310_27, partial:m2310_41 #-----| Goto -> Block 4 -# 2308| Block 4 -# 2308| m2308_43(iterator) = Phi : from 3:m2308_35, from 5:m2308_77 -# 2308| m2308_44(unknown) = Phi : from 3:~m2308_42, from 5:~m2308_85 -# 2308| r2308_45(glval>) = VariableAddress[(__begin)] : -#-----| r0_7(glval>) = Convert : r2308_45 -# 2308| r2308_46(glval) = FunctionAddress[operator!=] : +# 2310| Block 4 +# 2310| m2310_43(iterator) = Phi : from 3:m2310_35, from 5:m2310_77 +# 2310| m2310_44(unknown) = Phi : from 3:~m2310_42, from 5:~m2310_85 +# 2310| r2310_45(glval>) = VariableAddress[(__begin)] : +#-----| r0_7(glval>) = Convert : r2310_45 +# 2310| r2310_46(glval) = FunctionAddress[operator!=] : #-----| r0_8(glval>) = VariableAddress[#temp0:0] : #-----| m0_9(iterator) = Uninitialized[#temp0:0] : &:r0_8 -#-----| m0_10(unknown) = Chi : total:m2308_44, partial:m0_9 -# 2308| r2308_47(glval) = FunctionAddress[iterator] : -# 2308| r2308_48(glval>) = VariableAddress[(__end)] : -#-----| r0_11(glval>) = Convert : r2308_48 +#-----| m0_10(unknown) = Chi : total:m2310_44, partial:m0_9 +# 2310| r2310_47(glval) = FunctionAddress[iterator] : +# 2310| r2310_48(glval>) = VariableAddress[(__end)] : +#-----| r0_11(glval>) = Convert : r2310_48 #-----| r0_12(iterator &) = CopyValue : r0_11 -# 2308| v2308_49(void) = Call[iterator] : func:r2308_47, this:r0_8, 0:r0_12 -# 2308| m2308_50(unknown) = ^CallSideEffect : ~m0_10 -# 2308| m2308_51(unknown) = Chi : total:m0_10, partial:m2308_50 -#-----| v0_13(void) = ^BufferReadSideEffect[0] : &:r0_12, ~m2308_51 -# 2308| m2308_52(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r0_8 -# 2308| m2308_53(unknown) = Chi : total:m2308_51, partial:m2308_52 -#-----| r0_14(iterator) = Load[#temp0:0] : &:r0_8, ~m2308_53 -# 2308| r2308_54(bool) = Call[operator!=] : func:r2308_46, this:r0_7, 0:r0_14 -#-----| v0_15(void) = ^IndirectReadSideEffect[-1] : &:r0_7, m2308_43 -# 2308| v2308_55(void) = ConditionalBranch : r2308_54 +# 2310| v2310_49(void) = Call[iterator] : func:r2310_47, this:r0_8, 0:r0_12 +# 2310| m2310_50(unknown) = ^CallSideEffect : ~m0_10 +# 2310| m2310_51(unknown) = Chi : total:m0_10, partial:m2310_50 +#-----| v0_13(void) = ^BufferReadSideEffect[0] : &:r0_12, ~m2310_51 +# 2310| m2310_52(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r0_8 +# 2310| m2310_53(unknown) = Chi : total:m2310_51, partial:m2310_52 +#-----| r0_14(iterator) = Load[#temp0:0] : &:r0_8, ~m2310_53 +# 2310| r2310_54(bool) = Call[operator!=] : func:r2310_46, this:r0_7, 0:r0_14 +#-----| v0_15(void) = ^IndirectReadSideEffect[-1] : &:r0_7, m2310_43 +# 2310| v2310_55(void) = ConditionalBranch : r2310_54 #-----| False -> Block 6 #-----| True -> Block 5 -# 2308| Block 5 -# 2308| r2308_56(glval) = VariableAddress[s] : -# 2308| m2308_57(String) = Uninitialized[s] : &:r2308_56 -# 2308| m2308_58(unknown) = Chi : total:m2308_53, partial:m2308_57 -# 2308| r2308_59(glval) = FunctionAddress[String] : -# 2308| r2308_60(glval>) = VariableAddress[(__begin)] : -#-----| r0_16(glval>) = Convert : r2308_60 -# 2308| r2308_61(glval) = FunctionAddress[operator*] : -# 2308| r2308_62(String &) = Call[operator*] : func:r2308_61, this:r0_16 -#-----| v0_17(void) = ^IndirectReadSideEffect[-1] : &:r0_16, m2308_43 -# 2308| r2308_63(glval) = CopyValue : r2308_62 -# 2308| r2308_64(glval) = Convert : r2308_63 -# 2308| r2308_65(String &) = CopyValue : r2308_64 -# 2308| v2308_66(void) = Call[String] : func:r2308_59, this:r2308_56, 0:r2308_65 -# 2308| m2308_67(unknown) = ^CallSideEffect : ~m2308_58 -# 2308| m2308_68(unknown) = Chi : total:m2308_58, partial:m2308_67 -# 2308| v2308_69(void) = ^BufferReadSideEffect[0] : &:r2308_65, ~m2308_68 -# 2308| m2308_70(String) = ^IndirectMayWriteSideEffect[-1] : &:r2308_56 -# 2308| m2308_71(unknown) = Chi : total:m2308_68, partial:m2308_70 -# 2309| r2309_1(glval) = VariableAddress[s2] : -# 2309| m2309_2(String) = Uninitialized[s2] : &:r2309_1 -# 2309| m2309_3(unknown) = Chi : total:m2308_71, partial:m2309_2 -# 2309| r2309_4(glval) = FunctionAddress[String] : -# 2309| v2309_5(void) = Call[String] : func:r2309_4, this:r2309_1 -# 2309| m2309_6(unknown) = ^CallSideEffect : ~m2309_3 -# 2309| m2309_7(unknown) = Chi : total:m2309_3, partial:m2309_6 -# 2309| m2309_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r2309_1 -# 2309| m2309_9(unknown) = Chi : total:m2309_7, partial:m2309_8 -# 2310| r2310_1(glval) = VariableAddress[s2] : -# 2310| r2310_2(glval) = FunctionAddress[~String] : -# 2310| v2310_3(void) = Call[~String] : func:r2310_2, this:r2310_1 -# 2310| m2310_4(unknown) = ^CallSideEffect : ~m2309_9 -# 2310| m2310_5(unknown) = Chi : total:m2309_9, partial:m2310_4 -# 2310| v2310_6(void) = ^IndirectReadSideEffect[-1] : &:r2310_1, ~m2310_5 -# 2310| m2310_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2310_1 -# 2310| m2310_8(unknown) = Chi : total:m2310_5, partial:m2310_7 -# 2308| r2308_72(glval>) = VariableAddress[(__begin)] : -# 2308| r2308_73(glval) = FunctionAddress[operator++] : -# 2308| r2308_74(iterator &) = Call[operator++] : func:r2308_73, this:r2308_72 -# 2308| v2308_75(void) = ^IndirectReadSideEffect[-1] : &:r2308_72, m2308_43 -# 2308| m2308_76(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r2308_72 -# 2308| m2308_77(iterator) = Chi : total:m2308_43, partial:m2308_76 -# 2308| r2308_78(glval) = VariableAddress[s] : -# 2308| r2308_79(glval) = FunctionAddress[~String] : -# 2308| v2308_80(void) = Call[~String] : func:r2308_79, this:r2308_78 -# 2308| m2308_81(unknown) = ^CallSideEffect : ~m2310_8 -# 2308| m2308_82(unknown) = Chi : total:m2310_8, partial:m2308_81 -# 2308| v2308_83(void) = ^IndirectReadSideEffect[-1] : &:r2308_78, ~m2308_82 -# 2308| m2308_84(String) = ^IndirectMayWriteSideEffect[-1] : &:r2308_78 -# 2308| m2308_85(unknown) = Chi : total:m2308_82, partial:m2308_84 -# 2308| r2308_86(glval>) = CopyValue : r2308_74 +# 2310| Block 5 +# 2310| r2310_56(glval) = VariableAddress[s] : +# 2310| m2310_57(String) = Uninitialized[s] : &:r2310_56 +# 2310| m2310_58(unknown) = Chi : total:m2310_53, partial:m2310_57 +# 2310| r2310_59(glval) = FunctionAddress[String] : +# 2310| r2310_60(glval>) = VariableAddress[(__begin)] : +#-----| r0_16(glval>) = Convert : r2310_60 +# 2310| r2310_61(glval) = FunctionAddress[operator*] : +# 2310| r2310_62(String &) = Call[operator*] : func:r2310_61, this:r0_16 +#-----| v0_17(void) = ^IndirectReadSideEffect[-1] : &:r0_16, m2310_43 +# 2310| r2310_63(glval) = CopyValue : r2310_62 +# 2310| r2310_64(glval) = Convert : r2310_63 +# 2310| r2310_65(String &) = CopyValue : r2310_64 +# 2310| v2310_66(void) = Call[String] : func:r2310_59, this:r2310_56, 0:r2310_65 +# 2310| m2310_67(unknown) = ^CallSideEffect : ~m2310_58 +# 2310| m2310_68(unknown) = Chi : total:m2310_58, partial:m2310_67 +# 2310| v2310_69(void) = ^BufferReadSideEffect[0] : &:r2310_65, ~m2310_68 +# 2310| m2310_70(String) = ^IndirectMayWriteSideEffect[-1] : &:r2310_56 +# 2310| m2310_71(unknown) = Chi : total:m2310_68, partial:m2310_70 +# 2311| r2311_1(glval) = VariableAddress[s2] : +# 2311| m2311_2(String) = Uninitialized[s2] : &:r2311_1 +# 2311| m2311_3(unknown) = Chi : total:m2310_71, partial:m2311_2 +# 2311| r2311_4(glval) = FunctionAddress[String] : +# 2311| v2311_5(void) = Call[String] : func:r2311_4, this:r2311_1 +# 2311| m2311_6(unknown) = ^CallSideEffect : ~m2311_3 +# 2311| m2311_7(unknown) = Chi : total:m2311_3, partial:m2311_6 +# 2311| m2311_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r2311_1 +# 2311| m2311_9(unknown) = Chi : total:m2311_7, partial:m2311_8 +# 2312| r2312_1(glval) = VariableAddress[s2] : +# 2312| r2312_2(glval) = FunctionAddress[~String] : +# 2312| v2312_3(void) = Call[~String] : func:r2312_2, this:r2312_1 +# 2312| m2312_4(unknown) = ^CallSideEffect : ~m2311_9 +# 2312| m2312_5(unknown) = Chi : total:m2311_9, partial:m2312_4 +# 2312| v2312_6(void) = ^IndirectReadSideEffect[-1] : &:r2312_1, ~m2312_5 +# 2312| m2312_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2312_1 +# 2312| m2312_8(unknown) = Chi : total:m2312_5, partial:m2312_7 +# 2310| r2310_72(glval>) = VariableAddress[(__begin)] : +# 2310| r2310_73(glval) = FunctionAddress[operator++] : +# 2310| r2310_74(iterator &) = Call[operator++] : func:r2310_73, this:r2310_72 +# 2310| v2310_75(void) = ^IndirectReadSideEffect[-1] : &:r2310_72, m2310_43 +# 2310| m2310_76(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r2310_72 +# 2310| m2310_77(iterator) = Chi : total:m2310_43, partial:m2310_76 +# 2310| r2310_78(glval) = VariableAddress[s] : +# 2310| r2310_79(glval) = FunctionAddress[~String] : +# 2310| v2310_80(void) = Call[~String] : func:r2310_79, this:r2310_78 +# 2310| m2310_81(unknown) = ^CallSideEffect : ~m2312_8 +# 2310| m2310_82(unknown) = Chi : total:m2312_8, partial:m2310_81 +# 2310| v2310_83(void) = ^IndirectReadSideEffect[-1] : &:r2310_78, ~m2310_82 +# 2310| m2310_84(String) = ^IndirectMayWriteSideEffect[-1] : &:r2310_78 +# 2310| m2310_85(unknown) = Chi : total:m2310_82, partial:m2310_84 +# 2310| r2310_86(glval>) = CopyValue : r2310_74 #-----| Goto (back edge) -> Block 4 -# 2308| Block 6 -# 2308| r2308_87(glval>) = CopyValue : r2308_2 -# 2308| r2308_88(glval) = FunctionAddress[~vector] : -# 2308| v2308_89(void) = Call[~vector] : func:r2308_88, this:r2308_87 -# 2308| v2308_90(void) = ^IndirectReadSideEffect[-1] : &:r2308_87, m2308_19 -# 2308| m2308_91(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2308_87 -# 2312| r2312_1(glval) = VariableAddress[s] : -# 2312| m2312_2(String) = Uninitialized[s] : &:r2312_1 -# 2312| m2312_3(unknown) = Chi : total:m2308_53, partial:m2312_2 -# 2312| r2312_4(glval) = FunctionAddress[String] : -# 2312| r2312_5(glval) = StringConstant["hello"] : -# 2312| r2312_6(char *) = Convert : r2312_5 -# 2312| v2312_7(void) = Call[String] : func:r2312_4, this:r2312_1, 0:r2312_6 -# 2312| m2312_8(unknown) = ^CallSideEffect : ~m2312_3 -# 2312| m2312_9(unknown) = Chi : total:m2312_3, partial:m2312_8 -# 2312| v2312_10(void) = ^BufferReadSideEffect[0] : &:r2312_6, ~m2302_3 -# 2312| m2312_11(String) = ^IndirectMayWriteSideEffect[-1] : &:r2312_1 -# 2312| m2312_12(unknown) = Chi : total:m2312_9, partial:m2312_11 -# 2312| r2312_13(glval) = VariableAddress[s2] : -# 2312| m2312_14(String) = Uninitialized[s2] : &:r2312_13 -# 2312| m2312_15(unknown) = Chi : total:m2312_12, partial:m2312_14 -# 2312| r2312_16(glval) = FunctionAddress[String] : -# 2312| r2312_17(glval) = StringConstant["world"] : -# 2312| r2312_18(char *) = Convert : r2312_17 -# 2312| v2312_19(void) = Call[String] : func:r2312_16, this:r2312_13, 0:r2312_18 -# 2312| m2312_20(unknown) = ^CallSideEffect : ~m2312_15 -# 2312| m2312_21(unknown) = Chi : total:m2312_15, partial:m2312_20 -# 2312| v2312_22(void) = ^BufferReadSideEffect[0] : &:r2312_18, ~m2302_3 -# 2312| m2312_23(String) = ^IndirectMayWriteSideEffect[-1] : &:r2312_13 -# 2312| m2312_24(unknown) = Chi : total:m2312_21, partial:m2312_23 +# 2310| Block 6 +# 2310| r2310_87(glval>) = CopyValue : r2310_2 +# 2310| r2310_88(glval) = FunctionAddress[~vector] : +# 2310| v2310_89(void) = Call[~vector] : func:r2310_88, this:r2310_87 +# 2310| v2310_90(void) = ^IndirectReadSideEffect[-1] : &:r2310_87, m2310_19 +# 2310| m2310_91(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2310_87 +# 2314| r2314_1(glval) = VariableAddress[s] : +# 2314| m2314_2(String) = Uninitialized[s] : &:r2314_1 +# 2314| m2314_3(unknown) = Chi : total:m2310_53, partial:m2314_2 +# 2314| r2314_4(glval) = FunctionAddress[String] : +# 2314| r2314_5(glval) = StringConstant["hello"] : +# 2314| r2314_6(char *) = Convert : r2314_5 +# 2314| v2314_7(void) = Call[String] : func:r2314_4, this:r2314_1, 0:r2314_6 +# 2314| m2314_8(unknown) = ^CallSideEffect : ~m2314_3 +# 2314| m2314_9(unknown) = Chi : total:m2314_3, partial:m2314_8 +# 2314| v2314_10(void) = ^BufferReadSideEffect[0] : &:r2314_6, ~m2304_3 +# 2314| m2314_11(String) = ^IndirectMayWriteSideEffect[-1] : &:r2314_1 +# 2314| m2314_12(unknown) = Chi : total:m2314_9, partial:m2314_11 +# 2314| r2314_13(glval) = VariableAddress[s2] : +# 2314| m2314_14(String) = Uninitialized[s2] : &:r2314_13 +# 2314| m2314_15(unknown) = Chi : total:m2314_12, partial:m2314_14 +# 2314| r2314_16(glval) = FunctionAddress[String] : +# 2314| r2314_17(glval) = StringConstant["world"] : +# 2314| r2314_18(char *) = Convert : r2314_17 +# 2314| v2314_19(void) = Call[String] : func:r2314_16, this:r2314_13, 0:r2314_18 +# 2314| m2314_20(unknown) = ^CallSideEffect : ~m2314_15 +# 2314| m2314_21(unknown) = Chi : total:m2314_15, partial:m2314_20 +# 2314| v2314_22(void) = ^BufferReadSideEffect[0] : &:r2314_18, ~m2304_3 +# 2314| m2314_23(String) = ^IndirectMayWriteSideEffect[-1] : &:r2314_13 +# 2314| m2314_24(unknown) = Chi : total:m2314_21, partial:m2314_23 #-----| Goto -> Block 7 -# 2312| Block 7 -# 2312| m2312_25(unknown) = Phi : from 6:~m2312_24, from 8:~m2312_40 -# 2312| m2312_26(char) = Phi : from 6:m2304_14, from 8:m2312_42 -# 2312| r2312_27(glval) = VariableAddress[c] : -# 2312| r2312_28(char) = Load[c] : &:r2312_27, m2312_26 -# 2312| r2312_29(int) = Convert : r2312_28 -# 2312| r2312_30(int) = Constant[0] : -# 2312| r2312_31(bool) = CompareNE : r2312_29, r2312_30 -# 2312| v2312_32(void) = ConditionalBranch : r2312_31 +# 2314| Block 7 +# 2314| m2314_25(unknown) = Phi : from 6:~m2314_24, from 8:~m2314_40 +# 2314| m2314_26(char) = Phi : from 6:m2306_14, from 8:m2314_42 +# 2314| r2314_27(glval) = VariableAddress[c] : +# 2314| r2314_28(char) = Load[c] : &:r2314_27, m2314_26 +# 2314| r2314_29(int) = Convert : r2314_28 +# 2314| r2314_30(int) = Constant[0] : +# 2314| r2314_31(bool) = CompareNE : r2314_29, r2314_30 +# 2314| v2314_32(void) = ConditionalBranch : r2314_31 #-----| False -> Block 9 #-----| True -> Block 8 -# 2313| Block 8 -# 2313| r2313_1(char) = Constant[0] : -# 2313| r2313_2(glval) = VariableAddress[c] : -# 2313| m2313_3(char) = Store[c] : &:r2313_2, r2313_1 -# 2312| r2312_33(glval) = VariableAddress[s] : -# 2312| r2312_34(glval) = FunctionAddress[pop_back] : -# 2312| r2312_35(char) = Call[pop_back] : func:r2312_34, this:r2312_33 -# 2312| m2312_36(unknown) = ^CallSideEffect : ~m2312_25 -# 2312| m2312_37(unknown) = Chi : total:m2312_25, partial:m2312_36 -# 2312| v2312_38(void) = ^IndirectReadSideEffect[-1] : &:r2312_33, ~m2312_37 -# 2312| m2312_39(String) = ^IndirectMayWriteSideEffect[-1] : &:r2312_33 -# 2312| m2312_40(unknown) = Chi : total:m2312_37, partial:m2312_39 -# 2312| r2312_41(glval) = VariableAddress[c] : -# 2312| m2312_42(char) = Store[c] : &:r2312_41, r2312_35 +# 2315| Block 8 +# 2315| r2315_1(char) = Constant[0] : +# 2315| r2315_2(glval) = VariableAddress[c] : +# 2315| m2315_3(char) = Store[c] : &:r2315_2, r2315_1 +# 2314| r2314_33(glval) = VariableAddress[s] : +# 2314| r2314_34(glval) = FunctionAddress[pop_back] : +# 2314| r2314_35(char) = Call[pop_back] : func:r2314_34, this:r2314_33 +# 2314| m2314_36(unknown) = ^CallSideEffect : ~m2314_25 +# 2314| m2314_37(unknown) = Chi : total:m2314_25, partial:m2314_36 +# 2314| v2314_38(void) = ^IndirectReadSideEffect[-1] : &:r2314_33, ~m2314_37 +# 2314| m2314_39(String) = ^IndirectMayWriteSideEffect[-1] : &:r2314_33 +# 2314| m2314_40(unknown) = Chi : total:m2314_37, partial:m2314_39 +# 2314| r2314_41(glval) = VariableAddress[c] : +# 2314| m2314_42(char) = Store[c] : &:r2314_41, r2314_35 #-----| Goto (back edge) -> Block 7 -# 2312| Block 9 -# 2312| r2312_43(glval) = VariableAddress[s2] : -# 2312| r2312_44(glval) = FunctionAddress[~String] : -# 2312| v2312_45(void) = Call[~String] : func:r2312_44, this:r2312_43 -# 2312| m2312_46(unknown) = ^CallSideEffect : ~m2312_25 -# 2312| m2312_47(unknown) = Chi : total:m2312_25, partial:m2312_46 -# 2312| v2312_48(void) = ^IndirectReadSideEffect[-1] : &:r2312_43, ~m2312_47 -# 2312| m2312_49(String) = ^IndirectMayWriteSideEffect[-1] : &:r2312_43 -# 2312| m2312_50(unknown) = Chi : total:m2312_47, partial:m2312_49 -# 2312| r2312_51(glval) = VariableAddress[s] : -# 2312| r2312_52(glval) = FunctionAddress[~String] : -# 2312| v2312_53(void) = Call[~String] : func:r2312_52, this:r2312_51 -# 2312| m2312_54(unknown) = ^CallSideEffect : ~m2312_50 -# 2312| m2312_55(unknown) = Chi : total:m2312_50, partial:m2312_54 -# 2312| v2312_56(void) = ^IndirectReadSideEffect[-1] : &:r2312_51, ~m2312_55 -# 2312| m2312_57(String) = ^IndirectMayWriteSideEffect[-1] : &:r2312_51 -# 2312| m2312_58(unknown) = Chi : total:m2312_55, partial:m2312_57 -# 2315| v2315_1(void) = NoOp : -# 2302| v2302_5(void) = ReturnVoid : -# 2302| v2302_6(void) = AliasedUse : ~m2312_55 -# 2302| v2302_7(void) = ExitFunction : +# 2314| Block 9 +# 2314| r2314_43(glval) = VariableAddress[s2] : +# 2314| r2314_44(glval) = FunctionAddress[~String] : +# 2314| v2314_45(void) = Call[~String] : func:r2314_44, this:r2314_43 +# 2314| m2314_46(unknown) = ^CallSideEffect : ~m2314_25 +# 2314| m2314_47(unknown) = Chi : total:m2314_25, partial:m2314_46 +# 2314| v2314_48(void) = ^IndirectReadSideEffect[-1] : &:r2314_43, ~m2314_47 +# 2314| m2314_49(String) = ^IndirectMayWriteSideEffect[-1] : &:r2314_43 +# 2314| m2314_50(unknown) = Chi : total:m2314_47, partial:m2314_49 +# 2314| r2314_51(glval) = VariableAddress[s] : +# 2314| r2314_52(glval) = FunctionAddress[~String] : +# 2314| v2314_53(void) = Call[~String] : func:r2314_52, this:r2314_51 +# 2314| m2314_54(unknown) = ^CallSideEffect : ~m2314_50 +# 2314| m2314_55(unknown) = Chi : total:m2314_50, partial:m2314_54 +# 2314| v2314_56(void) = ^IndirectReadSideEffect[-1] : &:r2314_51, ~m2314_55 +# 2314| m2314_57(String) = ^IndirectMayWriteSideEffect[-1] : &:r2314_51 +# 2314| m2314_58(unknown) = Chi : total:m2314_55, partial:m2314_57 +# 2317| v2317_1(void) = NoOp : +# 2304| v2304_5(void) = ReturnVoid : +# 2304| v2304_6(void) = AliasedUse : ~m2314_55 +# 2304| v2304_7(void) = ExitFunction : -# 2317| void IfDestructors2(bool) -# 2317| Block 0 -# 2317| v2317_1(void) = EnterFunction : -# 2317| m2317_2(unknown) = AliasedDefinition : -# 2317| m2317_3(unknown) = InitializeNonLocal : -# 2317| m2317_4(unknown) = Chi : total:m2317_2, partial:m2317_3 -# 2317| r2317_5(glval) = VariableAddress[b] : -# 2317| m2317_6(bool) = InitializeParameter[b] : &:r2317_5 -# 2318| r2318_1(glval) = VariableAddress[s] : -# 2318| m2318_2(String) = Uninitialized[s] : &:r2318_1 -# 2318| m2318_3(unknown) = Chi : total:m2317_4, partial:m2318_2 -# 2318| r2318_4(glval) = FunctionAddress[String] : -# 2318| r2318_5(glval) = StringConstant["hello"] : -# 2318| r2318_6(char *) = Convert : r2318_5 -# 2318| v2318_7(void) = Call[String] : func:r2318_4, this:r2318_1, 0:r2318_6 -# 2318| m2318_8(unknown) = ^CallSideEffect : ~m2318_3 -# 2318| m2318_9(unknown) = Chi : total:m2318_3, partial:m2318_8 -# 2318| v2318_10(void) = ^BufferReadSideEffect[0] : &:r2318_6, ~m2317_3 -# 2318| m2318_11(String) = ^IndirectMayWriteSideEffect[-1] : &:r2318_1 -# 2318| m2318_12(unknown) = Chi : total:m2318_9, partial:m2318_11 -# 2318| r2318_13(glval) = VariableAddress[b] : -# 2318| r2318_14(bool) = Load[b] : &:r2318_13, m2317_6 -# 2318| v2318_15(void) = ConditionalBranch : r2318_14 +# 2319| void IfDestructors2(bool) +# 2319| Block 0 +# 2319| v2319_1(void) = EnterFunction : +# 2319| m2319_2(unknown) = AliasedDefinition : +# 2319| m2319_3(unknown) = InitializeNonLocal : +# 2319| m2319_4(unknown) = Chi : total:m2319_2, partial:m2319_3 +# 2319| r2319_5(glval) = VariableAddress[b] : +# 2319| m2319_6(bool) = InitializeParameter[b] : &:r2319_5 +# 2320| r2320_1(glval) = VariableAddress[s] : +# 2320| m2320_2(String) = Uninitialized[s] : &:r2320_1 +# 2320| m2320_3(unknown) = Chi : total:m2319_4, partial:m2320_2 +# 2320| r2320_4(glval) = FunctionAddress[String] : +# 2320| r2320_5(glval) = StringConstant["hello"] : +# 2320| r2320_6(char *) = Convert : r2320_5 +# 2320| v2320_7(void) = Call[String] : func:r2320_4, this:r2320_1, 0:r2320_6 +# 2320| m2320_8(unknown) = ^CallSideEffect : ~m2320_3 +# 2320| m2320_9(unknown) = Chi : total:m2320_3, partial:m2320_8 +# 2320| v2320_10(void) = ^BufferReadSideEffect[0] : &:r2320_6, ~m2319_3 +# 2320| m2320_11(String) = ^IndirectMayWriteSideEffect[-1] : &:r2320_1 +# 2320| m2320_12(unknown) = Chi : total:m2320_9, partial:m2320_11 +# 2320| r2320_13(glval) = VariableAddress[b] : +# 2320| r2320_14(bool) = Load[b] : &:r2320_13, m2319_6 +# 2320| v2320_15(void) = ConditionalBranch : r2320_14 #-----| False -> Block 2 #-----| True -> Block 1 -# 2319| Block 1 -# 2319| r2319_1(glval) = VariableAddress[x] : -# 2319| r2319_2(int) = Constant[0] : -# 2319| m2319_3(int) = Store[x] : &:r2319_1, r2319_2 -#-----| Goto -> Block 3 - -# 2321| Block 2 -# 2321| r2321_1(glval) = VariableAddress[y] : +# 2321| Block 1 +# 2321| r2321_1(glval) = VariableAddress[x] : # 2321| r2321_2(int) = Constant[0] : -# 2321| m2321_3(int) = Store[y] : &:r2321_1, r2321_2 +# 2321| m2321_3(int) = Store[x] : &:r2321_1, r2321_2 #-----| Goto -> Block 3 -# 2322| Block 3 -# 2322| r2322_1(glval) = VariableAddress[s] : -# 2322| r2322_2(glval) = FunctionAddress[~String] : -# 2322| v2322_3(void) = Call[~String] : func:r2322_2, this:r2322_1 -# 2322| m2322_4(unknown) = ^CallSideEffect : ~m2318_12 -# 2322| m2322_5(unknown) = Chi : total:m2318_12, partial:m2322_4 -# 2322| v2322_6(void) = ^IndirectReadSideEffect[-1] : &:r2322_1, ~m2322_5 -# 2322| m2322_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2322_1 -# 2322| m2322_8(unknown) = Chi : total:m2322_5, partial:m2322_7 -# 2323| v2323_1(void) = NoOp : -# 2317| v2317_7(void) = ReturnVoid : -# 2317| v2317_8(void) = AliasedUse : ~m2322_5 -# 2317| v2317_9(void) = ExitFunction : +# 2323| Block 2 +# 2323| r2323_1(glval) = VariableAddress[y] : +# 2323| r2323_2(int) = Constant[0] : +# 2323| m2323_3(int) = Store[y] : &:r2323_1, r2323_2 +#-----| Goto -> Block 3 -# 2332| void IfDestructors3(bool) -# 2332| Block 0 -# 2332| v2332_1(void) = EnterFunction : -# 2332| m2332_2(unknown) = AliasedDefinition : -# 2332| m2332_3(unknown) = InitializeNonLocal : -# 2332| m2332_4(unknown) = Chi : total:m2332_2, partial:m2332_3 -# 2332| r2332_5(glval) = VariableAddress[b] : -# 2332| m2332_6(bool) = InitializeParameter[b] : &:r2332_5 -# 2333| r2333_1(glval) = VariableAddress[B] : -# 2333| m2333_2(Bool) = Uninitialized[B] : &:r2333_1 -# 2333| m2333_3(unknown) = Chi : total:m2332_4, partial:m2333_2 -# 2333| r2333_4(glval) = FunctionAddress[Bool] : -# 2333| r2333_5(glval) = VariableAddress[b] : -# 2333| r2333_6(bool) = Load[b] : &:r2333_5, m2332_6 -# 2333| v2333_7(void) = Call[Bool] : func:r2333_4, this:r2333_1, 0:r2333_6 -# 2333| m2333_8(unknown) = ^CallSideEffect : ~m2333_3 -# 2333| m2333_9(unknown) = Chi : total:m2333_3, partial:m2333_8 -# 2333| m2333_10(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2333_1 -# 2333| m2333_11(unknown) = Chi : total:m2333_9, partial:m2333_10 -# 2333| r2333_12(glval) = VariableAddress[B] : -# 2333| r2333_13(glval) = FunctionAddress[operator bool] : -# 2333| r2333_14(bool) = Call[operator bool] : func:r2333_13, this:r2333_12 -# 2333| m2333_15(unknown) = ^CallSideEffect : ~m2333_11 -# 2333| m2333_16(unknown) = Chi : total:m2333_11, partial:m2333_15 -# 2333| v2333_17(void) = ^IndirectReadSideEffect[-1] : &:r2333_12, ~m2333_16 -# 2333| m2333_18(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2333_12 -# 2333| m2333_19(unknown) = Chi : total:m2333_16, partial:m2333_18 -# 2333| r2333_20(bool) = CopyValue : r2333_14 -# 2333| v2333_21(void) = ConditionalBranch : r2333_20 +# 2324| Block 3 +# 2324| r2324_1(glval) = VariableAddress[s] : +# 2324| r2324_2(glval) = FunctionAddress[~String] : +# 2324| v2324_3(void) = Call[~String] : func:r2324_2, this:r2324_1 +# 2324| m2324_4(unknown) = ^CallSideEffect : ~m2320_12 +# 2324| m2324_5(unknown) = Chi : total:m2320_12, partial:m2324_4 +# 2324| v2324_6(void) = ^IndirectReadSideEffect[-1] : &:r2324_1, ~m2324_5 +# 2324| m2324_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2324_1 +# 2324| m2324_8(unknown) = Chi : total:m2324_5, partial:m2324_7 +# 2325| v2325_1(void) = NoOp : +# 2319| v2319_7(void) = ReturnVoid : +# 2319| v2319_8(void) = AliasedUse : ~m2324_5 +# 2319| v2319_9(void) = ExitFunction : + +# 2334| void IfDestructors3(bool) +# 2334| Block 0 +# 2334| v2334_1(void) = EnterFunction : +# 2334| m2334_2(unknown) = AliasedDefinition : +# 2334| m2334_3(unknown) = InitializeNonLocal : +# 2334| m2334_4(unknown) = Chi : total:m2334_2, partial:m2334_3 +# 2334| r2334_5(glval) = VariableAddress[b] : +# 2334| m2334_6(bool) = InitializeParameter[b] : &:r2334_5 +# 2335| r2335_1(glval) = VariableAddress[B] : +# 2335| m2335_2(Bool) = Uninitialized[B] : &:r2335_1 +# 2335| m2335_3(unknown) = Chi : total:m2334_4, partial:m2335_2 +# 2335| r2335_4(glval) = FunctionAddress[Bool] : +# 2335| r2335_5(glval) = VariableAddress[b] : +# 2335| r2335_6(bool) = Load[b] : &:r2335_5, m2334_6 +# 2335| v2335_7(void) = Call[Bool] : func:r2335_4, this:r2335_1, 0:r2335_6 +# 2335| m2335_8(unknown) = ^CallSideEffect : ~m2335_3 +# 2335| m2335_9(unknown) = Chi : total:m2335_3, partial:m2335_8 +# 2335| m2335_10(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2335_1 +# 2335| m2335_11(unknown) = Chi : total:m2335_9, partial:m2335_10 +# 2335| r2335_12(glval) = VariableAddress[B] : +# 2335| r2335_13(glval) = FunctionAddress[operator bool] : +# 2335| r2335_14(bool) = Call[operator bool] : func:r2335_13, this:r2335_12 +# 2335| m2335_15(unknown) = ^CallSideEffect : ~m2335_11 +# 2335| m2335_16(unknown) = Chi : total:m2335_11, partial:m2335_15 +# 2335| v2335_17(void) = ^IndirectReadSideEffect[-1] : &:r2335_12, ~m2335_16 +# 2335| m2335_18(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2335_12 +# 2335| m2335_19(unknown) = Chi : total:m2335_16, partial:m2335_18 +# 2335| r2335_20(bool) = CopyValue : r2335_14 +# 2335| v2335_21(void) = ConditionalBranch : r2335_20 #-----| False -> Block 2 #-----| True -> Block 1 -# 2334| Block 1 -# 2334| r2334_1(glval) = VariableAddress[s1] : -# 2334| m2334_2(String) = Uninitialized[s1] : &:r2334_1 -# 2334| m2334_3(unknown) = Chi : total:m2333_19, partial:m2334_2 -# 2334| r2334_4(glval) = FunctionAddress[String] : -# 2334| v2334_5(void) = Call[String] : func:r2334_4, this:r2334_1 -# 2334| m2334_6(unknown) = ^CallSideEffect : ~m2334_3 -# 2334| m2334_7(unknown) = Chi : total:m2334_3, partial:m2334_6 -# 2334| m2334_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r2334_1 -# 2334| m2334_9(unknown) = Chi : total:m2334_7, partial:m2334_8 -# 2335| r2335_1(glval) = VariableAddress[s1] : -# 2335| r2335_2(glval) = FunctionAddress[~String] : -# 2335| v2335_3(void) = Call[~String] : func:r2335_2, this:r2335_1 -# 2335| m2335_4(unknown) = ^CallSideEffect : ~m2334_9 -# 2335| m2335_5(unknown) = Chi : total:m2334_9, partial:m2335_4 -# 2335| v2335_6(void) = ^IndirectReadSideEffect[-1] : &:r2335_1, ~m2335_5 -# 2335| m2335_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2335_1 -# 2335| m2335_8(unknown) = Chi : total:m2335_5, partial:m2335_7 -#-----| Goto -> Block 3 - -# 2336| Block 2 -# 2336| r2336_1(glval) = VariableAddress[s2] : -# 2336| m2336_2(String) = Uninitialized[s2] : &:r2336_1 -# 2336| m2336_3(unknown) = Chi : total:m2333_19, partial:m2336_2 +# 2336| Block 1 +# 2336| r2336_1(glval) = VariableAddress[s1] : +# 2336| m2336_2(String) = Uninitialized[s1] : &:r2336_1 +# 2336| m2336_3(unknown) = Chi : total:m2335_19, partial:m2336_2 # 2336| r2336_4(glval) = FunctionAddress[String] : # 2336| v2336_5(void) = Call[String] : func:r2336_4, this:r2336_1 # 2336| m2336_6(unknown) = ^CallSideEffect : ~m2336_3 # 2336| m2336_7(unknown) = Chi : total:m2336_3, partial:m2336_6 # 2336| m2336_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r2336_1 # 2336| m2336_9(unknown) = Chi : total:m2336_7, partial:m2336_8 -# 2337| r2337_1(glval) = VariableAddress[s2] : +# 2337| r2337_1(glval) = VariableAddress[s1] : # 2337| r2337_2(glval) = FunctionAddress[~String] : # 2337| v2337_3(void) = Call[~String] : func:r2337_2, this:r2337_1 # 2337| m2337_4(unknown) = ^CallSideEffect : ~m2336_9 @@ -17933,2287 +17913,2293 @@ ir.cpp: # 2337| m2337_8(unknown) = Chi : total:m2337_5, partial:m2337_7 #-----| Goto -> Block 3 -# 2337| Block 3 -# 2337| m2337_9(unknown) = Phi : from 1:~m2335_8, from 2:~m2337_8 -# 2337| r2337_10(glval) = VariableAddress[B] : -# 2337| r2337_11(glval) = FunctionAddress[~Bool] : -# 2337| v2337_12(void) = Call[~Bool] : func:r2337_11, this:r2337_10 -# 2337| m2337_13(unknown) = ^CallSideEffect : ~m2337_9 -# 2337| m2337_14(unknown) = Chi : total:m2337_9, partial:m2337_13 -# 2337| v2337_15(void) = ^IndirectReadSideEffect[-1] : &:r2337_10, ~m2337_14 -# 2337| m2337_16(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2337_10 -# 2337| m2337_17(unknown) = Chi : total:m2337_14, partial:m2337_16 -# 2338| v2338_1(void) = NoOp : -# 2332| v2332_7(void) = ReturnVoid : -# 2332| v2332_8(void) = AliasedUse : ~m2337_14 -# 2332| v2332_9(void) = ExitFunction : +# 2338| Block 2 +# 2338| r2338_1(glval) = VariableAddress[s2] : +# 2338| m2338_2(String) = Uninitialized[s2] : &:r2338_1 +# 2338| m2338_3(unknown) = Chi : total:m2335_19, partial:m2338_2 +# 2338| r2338_4(glval) = FunctionAddress[String] : +# 2338| v2338_5(void) = Call[String] : func:r2338_4, this:r2338_1 +# 2338| m2338_6(unknown) = ^CallSideEffect : ~m2338_3 +# 2338| m2338_7(unknown) = Chi : total:m2338_3, partial:m2338_6 +# 2338| m2338_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r2338_1 +# 2338| m2338_9(unknown) = Chi : total:m2338_7, partial:m2338_8 +# 2339| r2339_1(glval) = VariableAddress[s2] : +# 2339| r2339_2(glval) = FunctionAddress[~String] : +# 2339| v2339_3(void) = Call[~String] : func:r2339_2, this:r2339_1 +# 2339| m2339_4(unknown) = ^CallSideEffect : ~m2338_9 +# 2339| m2339_5(unknown) = Chi : total:m2338_9, partial:m2339_4 +# 2339| v2339_6(void) = ^IndirectReadSideEffect[-1] : &:r2339_1, ~m2339_5 +# 2339| m2339_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2339_1 +# 2339| m2339_8(unknown) = Chi : total:m2339_5, partial:m2339_7 +#-----| Goto -> Block 3 -# 2340| void WhileLoopDestructors(bool) -# 2340| Block 0 -# 2340| v2340_1(void) = EnterFunction : -# 2340| m2340_2(unknown) = AliasedDefinition : -# 2340| m2340_3(unknown) = InitializeNonLocal : -# 2340| m2340_4(unknown) = Chi : total:m2340_2, partial:m2340_3 -# 2340| r2340_5(glval) = VariableAddress[b] : -# 2340| m2340_6(bool) = InitializeParameter[b] : &:r2340_5 -# 2342| r2342_1(glval) = VariableAddress[s] : -# 2342| m2342_2(String) = Uninitialized[s] : &:r2342_1 -# 2342| m2342_3(unknown) = Chi : total:m2340_4, partial:m2342_2 -# 2342| r2342_4(glval) = FunctionAddress[String] : -# 2342| v2342_5(void) = Call[String] : func:r2342_4, this:r2342_1 -# 2342| m2342_6(unknown) = ^CallSideEffect : ~m2342_3 -# 2342| m2342_7(unknown) = Chi : total:m2342_3, partial:m2342_6 -# 2342| m2342_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r2342_1 -# 2342| m2342_9(unknown) = Chi : total:m2342_7, partial:m2342_8 +# 2339| Block 3 +# 2339| m2339_9(unknown) = Phi : from 1:~m2337_8, from 2:~m2339_8 +# 2339| r2339_10(glval) = VariableAddress[B] : +# 2339| r2339_11(glval) = FunctionAddress[~Bool] : +# 2339| v2339_12(void) = Call[~Bool] : func:r2339_11, this:r2339_10 +# 2339| m2339_13(unknown) = ^CallSideEffect : ~m2339_9 +# 2339| m2339_14(unknown) = Chi : total:m2339_9, partial:m2339_13 +# 2339| v2339_15(void) = ^IndirectReadSideEffect[-1] : &:r2339_10, ~m2339_14 +# 2339| m2339_16(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2339_10 +# 2339| m2339_17(unknown) = Chi : total:m2339_14, partial:m2339_16 +# 2340| v2340_1(void) = NoOp : +# 2334| v2334_7(void) = ReturnVoid : +# 2334| v2334_8(void) = AliasedUse : ~m2339_14 +# 2334| v2334_9(void) = ExitFunction : + +# 2342| void WhileLoopDestructors(bool) +# 2342| Block 0 +# 2342| v2342_1(void) = EnterFunction : +# 2342| m2342_2(unknown) = AliasedDefinition : +# 2342| m2342_3(unknown) = InitializeNonLocal : +# 2342| m2342_4(unknown) = Chi : total:m2342_2, partial:m2342_3 +# 2342| r2342_5(glval) = VariableAddress[b] : +# 2342| m2342_6(bool) = InitializeParameter[b] : &:r2342_5 +# 2344| r2344_1(glval) = VariableAddress[s] : +# 2344| m2344_2(String) = Uninitialized[s] : &:r2344_1 +# 2344| m2344_3(unknown) = Chi : total:m2342_4, partial:m2344_2 +# 2344| r2344_4(glval) = FunctionAddress[String] : +# 2344| v2344_5(void) = Call[String] : func:r2344_4, this:r2344_1 +# 2344| m2344_6(unknown) = ^CallSideEffect : ~m2344_3 +# 2344| m2344_7(unknown) = Chi : total:m2344_3, partial:m2344_6 +# 2344| m2344_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r2344_1 +# 2344| m2344_9(unknown) = Chi : total:m2344_7, partial:m2344_8 #-----| Goto -> Block 1 -# 2343| Block 1 -# 2343| m2343_1(bool) = Phi : from 0:m2340_6, from 2:m2344_3 -# 2343| r2343_2(glval) = VariableAddress[b] : -# 2343| r2343_3(bool) = Load[b] : &:r2343_2, m2343_1 -# 2343| v2343_4(void) = ConditionalBranch : r2343_3 +# 2345| Block 1 +# 2345| m2345_1(bool) = Phi : from 0:m2342_6, from 2:m2346_3 +# 2345| r2345_2(glval) = VariableAddress[b] : +# 2345| r2345_3(bool) = Load[b] : &:r2345_2, m2345_1 +# 2345| v2345_4(void) = ConditionalBranch : r2345_3 #-----| False -> Block 3 #-----| True -> Block 2 -# 2344| Block 2 -# 2344| r2344_1(bool) = Constant[0] : -# 2344| r2344_2(glval) = VariableAddress[b] : -# 2344| m2344_3(bool) = Store[b] : &:r2344_2, r2344_1 +# 2346| Block 2 +# 2346| r2346_1(bool) = Constant[0] : +# 2346| r2346_2(glval) = VariableAddress[b] : +# 2346| m2346_3(bool) = Store[b] : &:r2346_2, r2346_1 #-----| Goto (back edge) -> Block 1 -# 2346| Block 3 -# 2346| r2346_1(glval) = VariableAddress[s] : -# 2346| r2346_2(glval) = FunctionAddress[~String] : -# 2346| v2346_3(void) = Call[~String] : func:r2346_2, this:r2346_1 -# 2346| m2346_4(unknown) = ^CallSideEffect : ~m2342_9 -# 2346| m2346_5(unknown) = Chi : total:m2342_9, partial:m2346_4 -# 2346| v2346_6(void) = ^IndirectReadSideEffect[-1] : &:r2346_1, ~m2346_5 -# 2346| m2346_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2346_1 -# 2346| m2346_8(unknown) = Chi : total:m2346_5, partial:m2346_7 +# 2348| Block 3 +# 2348| r2348_1(glval) = VariableAddress[s] : +# 2348| r2348_2(glval) = FunctionAddress[~String] : +# 2348| v2348_3(void) = Call[~String] : func:r2348_2, this:r2348_1 +# 2348| m2348_4(unknown) = ^CallSideEffect : ~m2344_9 +# 2348| m2348_5(unknown) = Chi : total:m2344_9, partial:m2348_4 +# 2348| v2348_6(void) = ^IndirectReadSideEffect[-1] : &:r2348_1, ~m2348_5 +# 2348| m2348_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2348_1 +# 2348| m2348_8(unknown) = Chi : total:m2348_5, partial:m2348_7 #-----| Goto -> Block 4 -# 2349| Block 4 -# 2349| m2349_1(unknown) = Phi : from 3:~m2346_8, from 5:~m2351_8 -# 2349| m2349_2(bool) = Phi : from 3:m2343_1, from 5:m2350_3 -# 2349| r2349_3(glval) = VariableAddress[B] : -# 2349| m2349_4(Bool) = Uninitialized[B] : &:r2349_3 -# 2349| m2349_5(unknown) = Chi : total:m2349_1, partial:m2349_4 -# 2349| r2349_6(glval) = FunctionAddress[Bool] : -# 2349| r2349_7(glval) = VariableAddress[b] : -# 2349| r2349_8(bool) = Load[b] : &:r2349_7, m2349_2 -# 2349| v2349_9(void) = Call[Bool] : func:r2349_6, this:r2349_3, 0:r2349_8 -# 2349| m2349_10(unknown) = ^CallSideEffect : ~m2349_5 -# 2349| m2349_11(unknown) = Chi : total:m2349_5, partial:m2349_10 -# 2349| m2349_12(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2349_3 -# 2349| m2349_13(unknown) = Chi : total:m2349_11, partial:m2349_12 -# 2349| r2349_14(glval) = VariableAddress[B] : -# 2349| r2349_15(glval) = FunctionAddress[operator bool] : -# 2349| r2349_16(bool) = Call[operator bool] : func:r2349_15, this:r2349_14 -# 2349| m2349_17(unknown) = ^CallSideEffect : ~m2349_13 -# 2349| m2349_18(unknown) = Chi : total:m2349_13, partial:m2349_17 -# 2349| v2349_19(void) = ^IndirectReadSideEffect[-1] : &:r2349_14, ~m2349_18 -# 2349| m2349_20(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2349_14 -# 2349| m2349_21(unknown) = Chi : total:m2349_18, partial:m2349_20 -# 2349| r2349_22(bool) = CopyValue : r2349_16 -# 2349| v2349_23(void) = ConditionalBranch : r2349_22 +# 2351| Block 4 +# 2351| m2351_1(unknown) = Phi : from 3:~m2348_8, from 5:~m2353_8 +# 2351| m2351_2(bool) = Phi : from 3:m2345_1, from 5:m2352_3 +# 2351| r2351_3(glval) = VariableAddress[B] : +# 2351| m2351_4(Bool) = Uninitialized[B] : &:r2351_3 +# 2351| m2351_5(unknown) = Chi : total:m2351_1, partial:m2351_4 +# 2351| r2351_6(glval) = FunctionAddress[Bool] : +# 2351| r2351_7(glval) = VariableAddress[b] : +# 2351| r2351_8(bool) = Load[b] : &:r2351_7, m2351_2 +# 2351| v2351_9(void) = Call[Bool] : func:r2351_6, this:r2351_3, 0:r2351_8 +# 2351| m2351_10(unknown) = ^CallSideEffect : ~m2351_5 +# 2351| m2351_11(unknown) = Chi : total:m2351_5, partial:m2351_10 +# 2351| m2351_12(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2351_3 +# 2351| m2351_13(unknown) = Chi : total:m2351_11, partial:m2351_12 +# 2351| r2351_14(glval) = VariableAddress[B] : +# 2351| r2351_15(glval) = FunctionAddress[operator bool] : +# 2351| r2351_16(bool) = Call[operator bool] : func:r2351_15, this:r2351_14 +# 2351| m2351_17(unknown) = ^CallSideEffect : ~m2351_13 +# 2351| m2351_18(unknown) = Chi : total:m2351_13, partial:m2351_17 +# 2351| v2351_19(void) = ^IndirectReadSideEffect[-1] : &:r2351_14, ~m2351_18 +# 2351| m2351_20(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2351_14 +# 2351| m2351_21(unknown) = Chi : total:m2351_18, partial:m2351_20 +# 2351| r2351_22(bool) = CopyValue : r2351_16 +# 2351| v2351_23(void) = ConditionalBranch : r2351_22 #-----| False -> Block 6 #-----| True -> Block 5 -# 2350| Block 5 -# 2350| r2350_1(bool) = Constant[0] : -# 2350| r2350_2(glval) = VariableAddress[b] : -# 2350| m2350_3(bool) = Store[b] : &:r2350_2, r2350_1 -# 2351| r2351_1(glval) = VariableAddress[B] : -# 2351| r2351_2(glval) = FunctionAddress[~Bool] : -# 2351| v2351_3(void) = Call[~Bool] : func:r2351_2, this:r2351_1 -# 2351| m2351_4(unknown) = ^CallSideEffect : ~m2349_21 -# 2351| m2351_5(unknown) = Chi : total:m2349_21, partial:m2351_4 -# 2351| v2351_6(void) = ^IndirectReadSideEffect[-1] : &:r2351_1, ~m2351_5 -# 2351| m2351_7(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2351_1 -# 2351| m2351_8(unknown) = Chi : total:m2351_5, partial:m2351_7 +# 2352| Block 5 +# 2352| r2352_1(bool) = Constant[0] : +# 2352| r2352_2(glval) = VariableAddress[b] : +# 2352| m2352_3(bool) = Store[b] : &:r2352_2, r2352_1 +# 2353| r2353_1(glval) = VariableAddress[B] : +# 2353| r2353_2(glval) = FunctionAddress[~Bool] : +# 2353| v2353_3(void) = Call[~Bool] : func:r2353_2, this:r2353_1 +# 2353| m2353_4(unknown) = ^CallSideEffect : ~m2351_21 +# 2353| m2353_5(unknown) = Chi : total:m2351_21, partial:m2353_4 +# 2353| v2353_6(void) = ^IndirectReadSideEffect[-1] : &:r2353_1, ~m2353_5 +# 2353| m2353_7(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2353_1 +# 2353| m2353_8(unknown) = Chi : total:m2353_5, partial:m2353_7 #-----| Goto (back edge) -> Block 4 -# 2351| Block 6 -# 2351| r2351_9(glval) = VariableAddress[B] : -# 2351| r2351_10(glval) = FunctionAddress[~Bool] : -# 2351| v2351_11(void) = Call[~Bool] : func:r2351_10, this:r2351_9 -# 2351| m2351_12(unknown) = ^CallSideEffect : ~m2349_21 -# 2351| m2351_13(unknown) = Chi : total:m2349_21, partial:m2351_12 -# 2351| v2351_14(void) = ^IndirectReadSideEffect[-1] : &:r2351_9, ~m2351_13 -# 2351| m2351_15(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2351_9 -# 2351| m2351_16(unknown) = Chi : total:m2351_13, partial:m2351_15 -# 2353| v2353_1(void) = NoOp : -# 2340| v2340_7(void) = ReturnVoid : -# 2340| v2340_8(void) = AliasedUse : ~m2351_13 -# 2340| v2340_9(void) = ExitFunction : +# 2353| Block 6 +# 2353| r2353_9(glval) = VariableAddress[B] : +# 2353| r2353_10(glval) = FunctionAddress[~Bool] : +# 2353| v2353_11(void) = Call[~Bool] : func:r2353_10, this:r2353_9 +# 2353| m2353_12(unknown) = ^CallSideEffect : ~m2351_21 +# 2353| m2353_13(unknown) = Chi : total:m2351_21, partial:m2353_12 +# 2353| v2353_14(void) = ^IndirectReadSideEffect[-1] : &:r2353_9, ~m2353_13 +# 2353| m2353_15(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2353_9 +# 2353| m2353_16(unknown) = Chi : total:m2353_13, partial:m2353_15 +# 2355| v2355_1(void) = NoOp : +# 2342| v2342_7(void) = ReturnVoid : +# 2342| v2342_8(void) = AliasedUse : ~m2353_13 +# 2342| v2342_9(void) = ExitFunction : -# 2355| void VoidFunc() -# 2355| Block 0 -# 2355| v2355_1(void) = EnterFunction : -# 2355| m2355_2(unknown) = AliasedDefinition : -# 2355| m2355_3(unknown) = InitializeNonLocal : -# 2355| m2355_4(unknown) = Chi : total:m2355_2, partial:m2355_3 -# 2355| v2355_5(void) = NoOp : -# 2355| v2355_6(void) = ReturnVoid : -# 2355| v2355_7(void) = AliasedUse : m2355_3 -# 2355| v2355_8(void) = ExitFunction : - -# 2357| void IfReturnDestructors(bool) +# 2357| void VoidFunc() # 2357| Block 0 -# 2357| v2357_1(void) = EnterFunction : -# 2357| m2357_2(unknown) = AliasedDefinition : -# 2357| m2357_3(unknown) = InitializeNonLocal : -# 2357| m2357_4(unknown) = Chi : total:m2357_2, partial:m2357_3 -# 2357| r2357_5(glval) = VariableAddress[b] : -# 2357| m2357_6(bool) = InitializeParameter[b] : &:r2357_5 -# 2358| r2358_1(glval) = VariableAddress[s] : -# 2358| m2358_2(String) = Uninitialized[s] : &:r2358_1 -# 2358| m2358_3(unknown) = Chi : total:m2357_4, partial:m2358_2 -# 2358| r2358_4(glval) = FunctionAddress[String] : -# 2358| v2358_5(void) = Call[String] : func:r2358_4, this:r2358_1 -# 2358| m2358_6(unknown) = ^CallSideEffect : ~m2358_3 -# 2358| m2358_7(unknown) = Chi : total:m2358_3, partial:m2358_6 -# 2358| m2358_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r2358_1 -# 2358| m2358_9(unknown) = Chi : total:m2358_7, partial:m2358_8 -# 2359| r2359_1(glval) = VariableAddress[b] : -# 2359| r2359_2(bool) = Load[b] : &:r2359_1, m2357_6 -# 2359| v2359_3(void) = ConditionalBranch : r2359_2 +# 2357| v2357_1(void) = EnterFunction : +# 2357| m2357_2(unknown) = AliasedDefinition : +# 2357| m2357_3(unknown) = InitializeNonLocal : +# 2357| m2357_4(unknown) = Chi : total:m2357_2, partial:m2357_3 +# 2357| v2357_5(void) = NoOp : +# 2357| v2357_6(void) = ReturnVoid : +# 2357| v2357_7(void) = AliasedUse : m2357_3 +# 2357| v2357_8(void) = ExitFunction : + +# 2359| void IfReturnDestructors(bool) +# 2359| Block 0 +# 2359| v2359_1(void) = EnterFunction : +# 2359| m2359_2(unknown) = AliasedDefinition : +# 2359| m2359_3(unknown) = InitializeNonLocal : +# 2359| m2359_4(unknown) = Chi : total:m2359_2, partial:m2359_3 +# 2359| r2359_5(glval) = VariableAddress[b] : +# 2359| m2359_6(bool) = InitializeParameter[b] : &:r2359_5 +# 2360| r2360_1(glval) = VariableAddress[s] : +# 2360| m2360_2(String) = Uninitialized[s] : &:r2360_1 +# 2360| m2360_3(unknown) = Chi : total:m2359_4, partial:m2360_2 +# 2360| r2360_4(glval) = FunctionAddress[String] : +# 2360| v2360_5(void) = Call[String] : func:r2360_4, this:r2360_1 +# 2360| m2360_6(unknown) = ^CallSideEffect : ~m2360_3 +# 2360| m2360_7(unknown) = Chi : total:m2360_3, partial:m2360_6 +# 2360| m2360_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r2360_1 +# 2360| m2360_9(unknown) = Chi : total:m2360_7, partial:m2360_8 +# 2361| r2361_1(glval) = VariableAddress[b] : +# 2361| r2361_2(bool) = Load[b] : &:r2361_1, m2359_6 +# 2361| v2361_3(void) = ConditionalBranch : r2361_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 2357| Block 1 -# 2357| m2357_7(unknown) = Phi : from 2:~m2366_8, from 4:~m2366_16, from 5:~m2366_25 -# 2357| v2357_8(void) = ReturnVoid : -# 2357| v2357_9(void) = AliasedUse : ~m2357_7 -# 2357| v2357_10(void) = ExitFunction : +# 2359| Block 1 +# 2359| m2359_7(unknown) = Phi : from 2:~m2368_8, from 4:~m2368_16, from 5:~m2368_25 +# 2359| v2359_8(void) = ReturnVoid : +# 2359| v2359_9(void) = AliasedUse : ~m2359_7 +# 2359| v2359_10(void) = ExitFunction : -# 2360| Block 2 -# 2360| v2360_1(void) = NoOp : -# 2366| r2366_1(glval) = VariableAddress[s] : -# 2366| r2366_2(glval) = FunctionAddress[~String] : -# 2366| v2366_3(void) = Call[~String] : func:r2366_2, this:r2366_1 -# 2366| m2366_4(unknown) = ^CallSideEffect : ~m2358_9 -# 2366| m2366_5(unknown) = Chi : total:m2358_9, partial:m2366_4 -# 2366| v2366_6(void) = ^IndirectReadSideEffect[-1] : &:r2366_1, ~m2366_5 -# 2366| m2366_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2366_1 -# 2366| m2366_8(unknown) = Chi : total:m2366_5, partial:m2366_7 +# 2362| Block 2 +# 2362| v2362_1(void) = NoOp : +# 2368| r2368_1(glval) = VariableAddress[s] : +# 2368| r2368_2(glval) = FunctionAddress[~String] : +# 2368| v2368_3(void) = Call[~String] : func:r2368_2, this:r2368_1 +# 2368| m2368_4(unknown) = ^CallSideEffect : ~m2360_9 +# 2368| m2368_5(unknown) = Chi : total:m2360_9, partial:m2368_4 +# 2368| v2368_6(void) = ^IndirectReadSideEffect[-1] : &:r2368_1, ~m2368_5 +# 2368| m2368_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2368_1 +# 2368| m2368_8(unknown) = Chi : total:m2368_5, partial:m2368_7 #-----| Goto -> Block 1 -# 2362| Block 3 -# 2362| r2362_1(glval) = VariableAddress[b] : -# 2362| r2362_2(bool) = Load[b] : &:r2362_1, m2357_6 -# 2362| v2362_3(void) = ConditionalBranch : r2362_2 +# 2364| Block 3 +# 2364| r2364_1(glval) = VariableAddress[b] : +# 2364| r2364_2(bool) = Load[b] : &:r2364_1, m2359_6 +# 2364| v2364_3(void) = ConditionalBranch : r2364_2 #-----| False -> Block 5 #-----| True -> Block 4 -# 2363| Block 4 -# 2363| r2363_1(glval) = FunctionAddress[VoidFunc] : -# 2363| v2363_2(void) = Call[VoidFunc] : func:r2363_1 -# 2363| m2363_3(unknown) = ^CallSideEffect : ~m2358_9 -# 2363| m2363_4(unknown) = Chi : total:m2358_9, partial:m2363_3 -# 2363| v2363_5(void) = NoOp : -# 2366| r2366_9(glval) = VariableAddress[s] : -# 2366| r2366_10(glval) = FunctionAddress[~String] : -# 2366| v2366_11(void) = Call[~String] : func:r2366_10, this:r2366_9 -# 2366| m2366_12(unknown) = ^CallSideEffect : ~m2363_4 -# 2366| m2366_13(unknown) = Chi : total:m2363_4, partial:m2366_12 -# 2366| v2366_14(void) = ^IndirectReadSideEffect[-1] : &:r2366_9, ~m2366_13 -# 2366| m2366_15(String) = ^IndirectMayWriteSideEffect[-1] : &:r2366_9 -# 2366| m2366_16(unknown) = Chi : total:m2366_13, partial:m2366_15 +# 2365| Block 4 +# 2365| r2365_1(glval) = FunctionAddress[VoidFunc] : +# 2365| v2365_2(void) = Call[VoidFunc] : func:r2365_1 +# 2365| m2365_3(unknown) = ^CallSideEffect : ~m2360_9 +# 2365| m2365_4(unknown) = Chi : total:m2360_9, partial:m2365_3 +# 2365| v2365_5(void) = NoOp : +# 2368| r2368_9(glval) = VariableAddress[s] : +# 2368| r2368_10(glval) = FunctionAddress[~String] : +# 2368| v2368_11(void) = Call[~String] : func:r2368_10, this:r2368_9 +# 2368| m2368_12(unknown) = ^CallSideEffect : ~m2365_4 +# 2368| m2368_13(unknown) = Chi : total:m2365_4, partial:m2368_12 +# 2368| v2368_14(void) = ^IndirectReadSideEffect[-1] : &:r2368_9, ~m2368_13 +# 2368| m2368_15(String) = ^IndirectMayWriteSideEffect[-1] : &:r2368_9 +# 2368| m2368_16(unknown) = Chi : total:m2368_13, partial:m2368_15 #-----| Goto -> Block 1 -# 2365| Block 5 -# 2365| r2365_1(glval) = VariableAddress[s] : -# 2366| v2366_17(void) = NoOp : -# 2366| r2366_18(glval) = VariableAddress[s] : -# 2366| r2366_19(glval) = FunctionAddress[~String] : -# 2366| v2366_20(void) = Call[~String] : func:r2366_19, this:r2366_18 -# 2366| m2366_21(unknown) = ^CallSideEffect : ~m2358_9 -# 2366| m2366_22(unknown) = Chi : total:m2358_9, partial:m2366_21 -# 2366| v2366_23(void) = ^IndirectReadSideEffect[-1] : &:r2366_18, ~m2366_22 -# 2366| m2366_24(String) = ^IndirectMayWriteSideEffect[-1] : &:r2366_18 -# 2366| m2366_25(unknown) = Chi : total:m2366_22, partial:m2366_24 +# 2367| Block 5 +# 2367| r2367_1(glval) = VariableAddress[s] : +# 2368| v2368_17(void) = NoOp : +# 2368| r2368_18(glval) = VariableAddress[s] : +# 2368| r2368_19(glval) = FunctionAddress[~String] : +# 2368| v2368_20(void) = Call[~String] : func:r2368_19, this:r2368_18 +# 2368| m2368_21(unknown) = ^CallSideEffect : ~m2360_9 +# 2368| m2368_22(unknown) = Chi : total:m2360_9, partial:m2368_21 +# 2368| v2368_23(void) = ^IndirectReadSideEffect[-1] : &:r2368_18, ~m2368_22 +# 2368| m2368_24(String) = ^IndirectMayWriteSideEffect[-1] : &:r2368_18 +# 2368| m2368_25(unknown) = Chi : total:m2368_22, partial:m2368_24 #-----| Goto -> Block 1 -# 2368| int IfReturnDestructors3(bool) -# 2368| Block 0 -# 2368| v2368_1(void) = EnterFunction : -# 2368| m2368_2(unknown) = AliasedDefinition : -# 2368| m2368_3(unknown) = InitializeNonLocal : -# 2368| m2368_4(unknown) = Chi : total:m2368_2, partial:m2368_3 -# 2368| r2368_5(glval) = VariableAddress[b] : -# 2368| m2368_6(bool) = InitializeParameter[b] : &:r2368_5 -# 2369| r2369_1(glval) = VariableAddress[s] : -# 2369| m2369_2(String) = Uninitialized[s] : &:r2369_1 -# 2369| m2369_3(unknown) = Chi : total:m2368_4, partial:m2369_2 -# 2369| r2369_4(glval) = FunctionAddress[String] : -# 2369| v2369_5(void) = Call[String] : func:r2369_4, this:r2369_1 -# 2369| m2369_6(unknown) = ^CallSideEffect : ~m2369_3 -# 2369| m2369_7(unknown) = Chi : total:m2369_3, partial:m2369_6 -# 2369| m2369_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r2369_1 -# 2369| m2369_9(unknown) = Chi : total:m2369_7, partial:m2369_8 -# 2370| r2370_1(glval) = VariableAddress[b] : -# 2370| r2370_2(bool) = Load[b] : &:r2370_1, m2368_6 -# 2370| v2370_3(void) = ConditionalBranch : r2370_2 +# 2370| int IfReturnDestructors3(bool) +# 2370| Block 0 +# 2370| v2370_1(void) = EnterFunction : +# 2370| m2370_2(unknown) = AliasedDefinition : +# 2370| m2370_3(unknown) = InitializeNonLocal : +# 2370| m2370_4(unknown) = Chi : total:m2370_2, partial:m2370_3 +# 2370| r2370_5(glval) = VariableAddress[b] : +# 2370| m2370_6(bool) = InitializeParameter[b] : &:r2370_5 +# 2371| r2371_1(glval) = VariableAddress[s] : +# 2371| m2371_2(String) = Uninitialized[s] : &:r2371_1 +# 2371| m2371_3(unknown) = Chi : total:m2370_4, partial:m2371_2 +# 2371| r2371_4(glval) = FunctionAddress[String] : +# 2371| v2371_5(void) = Call[String] : func:r2371_4, this:r2371_1 +# 2371| m2371_6(unknown) = ^CallSideEffect : ~m2371_3 +# 2371| m2371_7(unknown) = Chi : total:m2371_3, partial:m2371_6 +# 2371| m2371_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r2371_1 +# 2371| m2371_9(unknown) = Chi : total:m2371_7, partial:m2371_8 +# 2372| r2372_1(glval) = VariableAddress[b] : +# 2372| r2372_2(bool) = Load[b] : &:r2372_1, m2370_6 +# 2372| v2372_3(void) = ConditionalBranch : r2372_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 2368| Block 1 -# 2368| m2368_7(unknown) = Phi : from 2:~m2374_8, from 3:~m2374_16 -# 2368| m2368_8(int) = Phi : from 2:m2371_3, from 3:m2373_3 -# 2368| r2368_9(glval) = VariableAddress[#return] : -# 2368| v2368_10(void) = ReturnValue : &:r2368_9, m2368_8 -# 2368| v2368_11(void) = AliasedUse : ~m2368_7 -# 2368| v2368_12(void) = ExitFunction : +# 2370| Block 1 +# 2370| m2370_7(unknown) = Phi : from 2:~m2376_8, from 3:~m2376_16 +# 2370| m2370_8(int) = Phi : from 2:m2373_3, from 3:m2375_3 +# 2370| r2370_9(glval) = VariableAddress[#return] : +# 2370| v2370_10(void) = ReturnValue : &:r2370_9, m2370_8 +# 2370| v2370_11(void) = AliasedUse : ~m2370_7 +# 2370| v2370_12(void) = ExitFunction : -# 2371| Block 2 -# 2371| r2371_1(glval) = VariableAddress[#return] : -# 2371| r2371_2(int) = Constant[1] : -# 2371| m2371_3(int) = Store[#return] : &:r2371_1, r2371_2 -# 2374| r2374_1(glval) = VariableAddress[s] : -# 2374| r2374_2(glval) = FunctionAddress[~String] : -# 2374| v2374_3(void) = Call[~String] : func:r2374_2, this:r2374_1 -# 2374| m2374_4(unknown) = ^CallSideEffect : ~m2369_9 -# 2374| m2374_5(unknown) = Chi : total:m2369_9, partial:m2374_4 -# 2374| v2374_6(void) = ^IndirectReadSideEffect[-1] : &:r2374_1, ~m2374_5 -# 2374| m2374_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2374_1 -# 2374| m2374_8(unknown) = Chi : total:m2374_5, partial:m2374_7 +# 2373| Block 2 +# 2373| r2373_1(glval) = VariableAddress[#return] : +# 2373| r2373_2(int) = Constant[1] : +# 2373| m2373_3(int) = Store[#return] : &:r2373_1, r2373_2 +# 2376| r2376_1(glval) = VariableAddress[s] : +# 2376| r2376_2(glval) = FunctionAddress[~String] : +# 2376| v2376_3(void) = Call[~String] : func:r2376_2, this:r2376_1 +# 2376| m2376_4(unknown) = ^CallSideEffect : ~m2371_9 +# 2376| m2376_5(unknown) = Chi : total:m2371_9, partial:m2376_4 +# 2376| v2376_6(void) = ^IndirectReadSideEffect[-1] : &:r2376_1, ~m2376_5 +# 2376| m2376_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2376_1 +# 2376| m2376_8(unknown) = Chi : total:m2376_5, partial:m2376_7 #-----| Goto -> Block 1 -# 2373| Block 3 -# 2373| r2373_1(glval) = VariableAddress[#return] : -# 2373| r2373_2(int) = Constant[0] : -# 2373| m2373_3(int) = Store[#return] : &:r2373_1, r2373_2 -# 2374| r2374_9(glval) = VariableAddress[s] : -# 2374| r2374_10(glval) = FunctionAddress[~String] : -# 2374| v2374_11(void) = Call[~String] : func:r2374_10, this:r2374_9 -# 2374| m2374_12(unknown) = ^CallSideEffect : ~m2369_9 -# 2374| m2374_13(unknown) = Chi : total:m2369_9, partial:m2374_12 -# 2374| v2374_14(void) = ^IndirectReadSideEffect[-1] : &:r2374_9, ~m2374_13 -# 2374| m2374_15(String) = ^IndirectMayWriteSideEffect[-1] : &:r2374_9 -# 2374| m2374_16(unknown) = Chi : total:m2374_13, partial:m2374_15 +# 2375| Block 3 +# 2375| r2375_1(glval) = VariableAddress[#return] : +# 2375| r2375_2(int) = Constant[0] : +# 2375| m2375_3(int) = Store[#return] : &:r2375_1, r2375_2 +# 2376| r2376_9(glval) = VariableAddress[s] : +# 2376| r2376_10(glval) = FunctionAddress[~String] : +# 2376| v2376_11(void) = Call[~String] : func:r2376_10, this:r2376_9 +# 2376| m2376_12(unknown) = ^CallSideEffect : ~m2371_9 +# 2376| m2376_13(unknown) = Chi : total:m2371_9, partial:m2376_12 +# 2376| v2376_14(void) = ^IndirectReadSideEffect[-1] : &:r2376_9, ~m2376_13 +# 2376| m2376_15(String) = ^IndirectMayWriteSideEffect[-1] : &:r2376_9 +# 2376| m2376_16(unknown) = Chi : total:m2376_13, partial:m2376_15 #-----| Goto -> Block 1 -# 2376| void VoidReturnDestructors() -# 2376| Block 0 -# 2376| v2376_1(void) = EnterFunction : -# 2376| m2376_2(unknown) = AliasedDefinition : -# 2376| m2376_3(unknown) = InitializeNonLocal : -# 2376| m2376_4(unknown) = Chi : total:m2376_2, partial:m2376_3 -# 2377| r2377_1(glval) = VariableAddress[s] : -# 2377| m2377_2(String) = Uninitialized[s] : &:r2377_1 -# 2377| m2377_3(unknown) = Chi : total:m2376_4, partial:m2377_2 -# 2377| r2377_4(glval) = FunctionAddress[String] : -# 2377| v2377_5(void) = Call[String] : func:r2377_4, this:r2377_1 -# 2377| m2377_6(unknown) = ^CallSideEffect : ~m2377_3 -# 2377| m2377_7(unknown) = Chi : total:m2377_3, partial:m2377_6 -# 2377| m2377_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r2377_1 -# 2377| m2377_9(unknown) = Chi : total:m2377_7, partial:m2377_8 -# 2378| r2378_1(glval) = FunctionAddress[VoidFunc] : -# 2378| v2378_2(void) = Call[VoidFunc] : func:r2378_1 -# 2378| m2378_3(unknown) = ^CallSideEffect : ~m2377_9 -# 2378| m2378_4(unknown) = Chi : total:m2377_9, partial:m2378_3 -# 2378| v2378_5(void) = NoOp : +# 2378| void VoidReturnDestructors() +# 2378| Block 0 +# 2378| v2378_1(void) = EnterFunction : +# 2378| m2378_2(unknown) = AliasedDefinition : +# 2378| m2378_3(unknown) = InitializeNonLocal : +# 2378| m2378_4(unknown) = Chi : total:m2378_2, partial:m2378_3 # 2379| r2379_1(glval) = VariableAddress[s] : -# 2379| r2379_2(glval) = FunctionAddress[~String] : -# 2379| v2379_3(void) = Call[~String] : func:r2379_2, this:r2379_1 -# 2379| m2379_4(unknown) = ^CallSideEffect : ~m2378_4 -# 2379| m2379_5(unknown) = Chi : total:m2378_4, partial:m2379_4 -# 2379| v2379_6(void) = ^IndirectReadSideEffect[-1] : &:r2379_1, ~m2379_5 -# 2379| m2379_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2379_1 -# 2379| m2379_8(unknown) = Chi : total:m2379_5, partial:m2379_7 -# 2376| v2376_5(void) = ReturnVoid : -# 2376| v2376_6(void) = AliasedUse : ~m2379_5 -# 2376| v2376_7(void) = ExitFunction : +# 2379| m2379_2(String) = Uninitialized[s] : &:r2379_1 +# 2379| m2379_3(unknown) = Chi : total:m2378_4, partial:m2379_2 +# 2379| r2379_4(glval) = FunctionAddress[String] : +# 2379| v2379_5(void) = Call[String] : func:r2379_4, this:r2379_1 +# 2379| m2379_6(unknown) = ^CallSideEffect : ~m2379_3 +# 2379| m2379_7(unknown) = Chi : total:m2379_3, partial:m2379_6 +# 2379| m2379_8(String) = ^IndirectMayWriteSideEffect[-1] : &:r2379_1 +# 2379| m2379_9(unknown) = Chi : total:m2379_7, partial:m2379_8 +# 2380| r2380_1(glval) = FunctionAddress[VoidFunc] : +# 2380| v2380_2(void) = Call[VoidFunc] : func:r2380_1 +# 2380| m2380_3(unknown) = ^CallSideEffect : ~m2379_9 +# 2380| m2380_4(unknown) = Chi : total:m2379_9, partial:m2380_3 +# 2380| v2380_5(void) = NoOp : +# 2381| r2381_1(glval) = VariableAddress[s] : +# 2381| r2381_2(glval) = FunctionAddress[~String] : +# 2381| v2381_3(void) = Call[~String] : func:r2381_2, this:r2381_1 +# 2381| m2381_4(unknown) = ^CallSideEffect : ~m2380_4 +# 2381| m2381_5(unknown) = Chi : total:m2380_4, partial:m2381_4 +# 2381| v2381_6(void) = ^IndirectReadSideEffect[-1] : &:r2381_1, ~m2381_5 +# 2381| m2381_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2381_1 +# 2381| m2381_8(unknown) = Chi : total:m2381_5, partial:m2381_7 +# 2378| v2378_5(void) = ReturnVoid : +# 2378| v2378_6(void) = AliasedUse : ~m2381_5 +# 2378| v2378_7(void) = ExitFunction : -# 2389| return_routine_type::VoidToIntMemberFunc return_routine_type::GetVoidToIntFunc() -# 2389| Block 0 -# 2389| v2389_1(void) = EnterFunction : -# 2389| m2389_2(unknown) = AliasedDefinition : -# 2389| m2389_3(unknown) = InitializeNonLocal : -# 2389| m2389_4(unknown) = Chi : total:m2389_2, partial:m2389_3 -# 2391| r2391_1(glval<..:: *>) = VariableAddress[#return] : -# 2391| r2391_2(..()(..)) = FunctionAddress[VoidToInt] : -# 2391| m2391_3(..:: *) = Store[#return] : &:r2391_1, r2391_2 -# 2389| r2389_5(glval<..:: *>) = VariableAddress[#return] : -# 2389| v2389_6(void) = ReturnValue : &:r2389_5, m2391_3 -# 2389| v2389_7(void) = AliasedUse : m2389_3 -# 2389| v2389_8(void) = ExitFunction : +# 2391| return_routine_type::VoidToIntMemberFunc return_routine_type::GetVoidToIntFunc() +# 2391| Block 0 +# 2391| v2391_1(void) = EnterFunction : +# 2391| m2391_2(unknown) = AliasedDefinition : +# 2391| m2391_3(unknown) = InitializeNonLocal : +# 2391| m2391_4(unknown) = Chi : total:m2391_2, partial:m2391_3 +# 2393| r2393_1(glval<..:: *>) = VariableAddress[#return] : +# 2393| r2393_2(..()(..)) = FunctionAddress[VoidToInt] : +# 2393| m2393_3(..:: *) = Store[#return] : &:r2393_1, r2393_2 +# 2391| r2391_5(glval<..:: *>) = VariableAddress[#return] : +# 2391| v2391_6(void) = ReturnValue : &:r2391_5, m2393_3 +# 2391| v2391_7(void) = AliasedUse : m2391_3 +# 2391| v2391_8(void) = ExitFunction : -# 2396| int small_operation_should_not_be_constant_folded() -# 2396| Block 0 -# 2396| v2396_1(void) = EnterFunction : -# 2396| m2396_2(unknown) = AliasedDefinition : -# 2396| m2396_3(unknown) = InitializeNonLocal : -# 2396| m2396_4(unknown) = Chi : total:m2396_2, partial:m2396_3 -# 2397| r2397_1(glval) = VariableAddress[#return] : -# 2397| r2397_2(int) = Constant[1] : -# 2397| r2397_3(int) = Constant[2] : -# 2397| r2397_4(int) = BitXor : r2397_2, r2397_3 -# 2397| m2397_5(int) = Store[#return] : &:r2397_1, r2397_4 -# 2396| r2396_5(glval) = VariableAddress[#return] : -# 2396| v2396_6(void) = ReturnValue : &:r2396_5, m2397_5 -# 2396| v2396_7(void) = AliasedUse : m2396_3 -# 2396| v2396_8(void) = ExitFunction : +# 2398| int small_operation_should_not_be_constant_folded() +# 2398| Block 0 +# 2398| v2398_1(void) = EnterFunction : +# 2398| m2398_2(unknown) = AliasedDefinition : +# 2398| m2398_3(unknown) = InitializeNonLocal : +# 2398| m2398_4(unknown) = Chi : total:m2398_2, partial:m2398_3 +# 2399| r2399_1(glval) = VariableAddress[#return] : +# 2399| r2399_2(int) = Constant[1] : +# 2399| r2399_3(int) = Constant[2] : +# 2399| r2399_4(int) = BitXor : r2399_2, r2399_3 +# 2399| m2399_5(int) = Store[#return] : &:r2399_1, r2399_4 +# 2398| r2398_5(glval) = VariableAddress[#return] : +# 2398| v2398_6(void) = ReturnValue : &:r2398_5, m2399_5 +# 2398| v2398_7(void) = AliasedUse : m2398_3 +# 2398| v2398_8(void) = ExitFunction : -# 2407| int large_operation_should_be_constant_folded() -# 2407| Block 0 -# 2407| v2407_1(void) = EnterFunction : -# 2407| m2407_2(unknown) = AliasedDefinition : -# 2407| m2407_3(unknown) = InitializeNonLocal : -# 2407| m2407_4(unknown) = Chi : total:m2407_2, partial:m2407_3 -# 2408| r2408_1(glval) = VariableAddress[#return] : -# 2408| r2408_2(int) = Constant[0] : -# 2408| m2408_3(int) = Store[#return] : &:r2408_1, r2408_2 -# 2407| r2407_5(glval) = VariableAddress[#return] : -# 2407| v2407_6(void) = ReturnValue : &:r2407_5, m2408_3 -# 2407| v2407_7(void) = AliasedUse : m2407_3 -# 2407| v2407_8(void) = ExitFunction : +# 2409| int large_operation_should_be_constant_folded() +# 2409| Block 0 +# 2409| v2409_1(void) = EnterFunction : +# 2409| m2409_2(unknown) = AliasedDefinition : +# 2409| m2409_3(unknown) = InitializeNonLocal : +# 2409| m2409_4(unknown) = Chi : total:m2409_2, partial:m2409_3 +# 2410| r2410_1(glval) = VariableAddress[#return] : +# 2410| r2410_2(int) = Constant[0] : +# 2410| m2410_3(int) = Store[#return] : &:r2410_1, r2410_2 +# 2409| r2409_5(glval) = VariableAddress[#return] : +# 2409| v2409_6(void) = ReturnValue : &:r2409_5, m2410_3 +# 2409| v2409_7(void) = AliasedUse : m2409_3 +# 2409| v2409_8(void) = ExitFunction : -# 2411| void initialization_with_temp_destructor() -# 2411| Block 0 -# 2411| v2411_1(void) = EnterFunction : -# 2411| m2411_2(unknown) = AliasedDefinition : -# 2411| m2411_3(unknown) = InitializeNonLocal : -# 2411| m2411_4(unknown) = Chi : total:m2411_2, partial:m2411_3 -# 2412| r2412_1(glval) = VariableAddress[x] : -# 2412| r2412_2(glval) = VariableAddress[#temp2412:18] : -# 2412| m2412_3(ClassWithDestructor) = Uninitialized[#temp2412:18] : &:r2412_2 -# 2412| r2412_4(glval) = FunctionAddress[ClassWithDestructor] : -# 2412| v2412_5(void) = Call[ClassWithDestructor] : func:r2412_4, this:r2412_2 -# 2412| m2412_6(unknown) = ^CallSideEffect : ~m2411_4 -# 2412| m2412_7(unknown) = Chi : total:m2411_4, partial:m2412_6 -# 2412| m2412_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2412_2 -# 2412| m2412_9(ClassWithDestructor) = Chi : total:m2412_3, partial:m2412_8 -# 2412| r2412_10(glval) = FunctionAddress[get_x] : -# 2412| r2412_11(char) = Call[get_x] : func:r2412_10, this:r2412_2 -# 2412| m2412_12(unknown) = ^CallSideEffect : ~m2412_7 -# 2412| m2412_13(unknown) = Chi : total:m2412_7, partial:m2412_12 -# 2412| v2412_14(void) = ^IndirectReadSideEffect[-1] : &:r2412_2, m2412_9 -# 2412| m2412_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2412_2 -# 2412| m2412_16(ClassWithDestructor) = Chi : total:m2412_9, partial:m2412_15 -# 2412| r2412_17(glval) = CopyValue : r2412_2 -# 2412| r2412_18(glval) = FunctionAddress[~ClassWithDestructor] : -# 2412| v2412_19(void) = Call[~ClassWithDestructor] : func:r2412_18, this:r2412_17 -# 2412| m2412_20(unknown) = ^CallSideEffect : ~m2412_13 -# 2412| m2412_21(unknown) = Chi : total:m2412_13, partial:m2412_20 -# 2412| v2412_22(void) = ^IndirectReadSideEffect[-1] : &:r2412_17, m2412_16 -# 2412| m2412_23(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2412_17 -# 2412| m2412_24(ClassWithDestructor) = Chi : total:m2412_16, partial:m2412_23 -# 2412| m2412_25(char) = Store[x] : &:r2412_1, r2412_11 -# 2412| r2412_26(glval) = VariableAddress[x] : -# 2412| r2412_27(char) = Load[x] : &:r2412_26, m2412_25 -# 2412| r2412_28(char) = Constant[0] : -# 2412| r2412_29(bool) = CompareNE : r2412_27, r2412_28 -# 2412| r2412_30(bool) = CopyValue : r2412_29 -# 2412| v2412_31(void) = ConditionalBranch : r2412_30 +# 2413| void initialization_with_temp_destructor() +# 2413| Block 0 +# 2413| v2413_1(void) = EnterFunction : +# 2413| m2413_2(unknown) = AliasedDefinition : +# 2413| m2413_3(unknown) = InitializeNonLocal : +# 2413| m2413_4(unknown) = Chi : total:m2413_2, partial:m2413_3 +# 2414| r2414_1(glval) = VariableAddress[x] : +# 2414| r2414_2(glval) = VariableAddress[#temp2414:18] : +# 2414| m2414_3(ClassWithDestructor) = Uninitialized[#temp2414:18] : &:r2414_2 +# 2414| r2414_4(glval) = FunctionAddress[ClassWithDestructor] : +# 2414| v2414_5(void) = Call[ClassWithDestructor] : func:r2414_4, this:r2414_2 +# 2414| m2414_6(unknown) = ^CallSideEffect : ~m2413_4 +# 2414| m2414_7(unknown) = Chi : total:m2413_4, partial:m2414_6 +# 2414| m2414_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2414_2 +# 2414| m2414_9(ClassWithDestructor) = Chi : total:m2414_3, partial:m2414_8 +# 2414| r2414_10(glval) = FunctionAddress[get_x] : +# 2414| r2414_11(char) = Call[get_x] : func:r2414_10, this:r2414_2 +# 2414| m2414_12(unknown) = ^CallSideEffect : ~m2414_7 +# 2414| m2414_13(unknown) = Chi : total:m2414_7, partial:m2414_12 +# 2414| v2414_14(void) = ^IndirectReadSideEffect[-1] : &:r2414_2, m2414_9 +# 2414| m2414_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2414_2 +# 2414| m2414_16(ClassWithDestructor) = Chi : total:m2414_9, partial:m2414_15 +# 2414| r2414_17(glval) = CopyValue : r2414_2 +# 2414| r2414_18(glval) = FunctionAddress[~ClassWithDestructor] : +# 2414| v2414_19(void) = Call[~ClassWithDestructor] : func:r2414_18, this:r2414_17 +# 2414| m2414_20(unknown) = ^CallSideEffect : ~m2414_13 +# 2414| m2414_21(unknown) = Chi : total:m2414_13, partial:m2414_20 +# 2414| v2414_22(void) = ^IndirectReadSideEffect[-1] : &:r2414_17, m2414_16 +# 2414| m2414_23(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2414_17 +# 2414| m2414_24(ClassWithDestructor) = Chi : total:m2414_16, partial:m2414_23 +# 2414| m2414_25(char) = Store[x] : &:r2414_1, r2414_11 +# 2414| r2414_26(glval) = VariableAddress[x] : +# 2414| r2414_27(char) = Load[x] : &:r2414_26, m2414_25 +# 2414| r2414_28(char) = Constant[0] : +# 2414| r2414_29(bool) = CompareNE : r2414_27, r2414_28 +# 2414| r2414_30(bool) = CopyValue : r2414_29 +# 2414| v2414_31(void) = ConditionalBranch : r2414_30 #-----| False -> Block 2 #-----| True -> Block 1 -# 2413| Block 1 -# 2413| r2413_1(glval) = VariableAddress[x] : -# 2413| r2413_2(char) = Load[x] : &:r2413_1, m2412_25 -# 2413| r2413_3(char) = Constant[1] : -# 2413| r2413_4(char) = Add : r2413_2, r2413_3 -# 2413| m2413_5(char) = Store[x] : &:r2413_1, r2413_4 +# 2415| Block 1 +# 2415| r2415_1(glval) = VariableAddress[x] : +# 2415| r2415_2(char) = Load[x] : &:r2415_1, m2414_25 +# 2415| r2415_3(char) = Constant[1] : +# 2415| r2415_4(char) = Add : r2415_2, r2415_3 +# 2415| m2415_5(char) = Store[x] : &:r2415_1, r2415_4 #-----| Goto -> Block 2 -# 2415| Block 2 -# 2415| r2415_1(glval) = VariableAddress[x] : -# 2415| r2415_2(glval) = VariableAddress[#temp2415:18] : -# 2415| m2415_3(ClassWithDestructor) = Uninitialized[#temp2415:18] : &:r2415_2 -# 2415| r2415_4(glval) = FunctionAddress[ClassWithDestructor] : -# 2415| v2415_5(void) = Call[ClassWithDestructor] : func:r2415_4, this:r2415_2 -# 2415| m2415_6(unknown) = ^CallSideEffect : ~m2412_21 -# 2415| m2415_7(unknown) = Chi : total:m2412_21, partial:m2415_6 -# 2415| m2415_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2415_2 -# 2415| m2415_9(ClassWithDestructor) = Chi : total:m2415_3, partial:m2415_8 -# 2415| r2415_10(glval) = FunctionAddress[get_x] : -# 2415| r2415_11(char) = Call[get_x] : func:r2415_10, this:r2415_2 -# 2415| m2415_12(unknown) = ^CallSideEffect : ~m2415_7 -# 2415| m2415_13(unknown) = Chi : total:m2415_7, partial:m2415_12 -# 2415| v2415_14(void) = ^IndirectReadSideEffect[-1] : &:r2415_2, m2415_9 -# 2415| m2415_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2415_2 -# 2415| m2415_16(ClassWithDestructor) = Chi : total:m2415_9, partial:m2415_15 -# 2415| r2415_17(glval) = CopyValue : r2415_2 -# 2415| r2415_18(glval) = FunctionAddress[~ClassWithDestructor] : -# 2415| v2415_19(void) = Call[~ClassWithDestructor] : func:r2415_18, this:r2415_17 -# 2415| m2415_20(unknown) = ^CallSideEffect : ~m2415_13 -# 2415| m2415_21(unknown) = Chi : total:m2415_13, partial:m2415_20 -# 2415| v2415_22(void) = ^IndirectReadSideEffect[-1] : &:r2415_17, m2415_16 -# 2415| m2415_23(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2415_17 -# 2415| m2415_24(ClassWithDestructor) = Chi : total:m2415_16, partial:m2415_23 -# 2415| m2415_25(char) = Store[x] : &:r2415_1, r2415_11 -# 2415| r2415_26(glval) = VariableAddress[x] : -# 2415| r2415_27(char) = Load[x] : &:r2415_26, m2415_25 -# 2415| r2415_28(char) = Constant[0] : -# 2415| r2415_29(bool) = CompareNE : r2415_27, r2415_28 -# 2415| v2415_30(void) = ConditionalBranch : r2415_29 +# 2417| Block 2 +# 2417| r2417_1(glval) = VariableAddress[x] : +# 2417| r2417_2(glval) = VariableAddress[#temp2417:18] : +# 2417| m2417_3(ClassWithDestructor) = Uninitialized[#temp2417:18] : &:r2417_2 +# 2417| r2417_4(glval) = FunctionAddress[ClassWithDestructor] : +# 2417| v2417_5(void) = Call[ClassWithDestructor] : func:r2417_4, this:r2417_2 +# 2417| m2417_6(unknown) = ^CallSideEffect : ~m2414_21 +# 2417| m2417_7(unknown) = Chi : total:m2414_21, partial:m2417_6 +# 2417| m2417_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2417_2 +# 2417| m2417_9(ClassWithDestructor) = Chi : total:m2417_3, partial:m2417_8 +# 2417| r2417_10(glval) = FunctionAddress[get_x] : +# 2417| r2417_11(char) = Call[get_x] : func:r2417_10, this:r2417_2 +# 2417| m2417_12(unknown) = ^CallSideEffect : ~m2417_7 +# 2417| m2417_13(unknown) = Chi : total:m2417_7, partial:m2417_12 +# 2417| v2417_14(void) = ^IndirectReadSideEffect[-1] : &:r2417_2, m2417_9 +# 2417| m2417_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2417_2 +# 2417| m2417_16(ClassWithDestructor) = Chi : total:m2417_9, partial:m2417_15 +# 2417| r2417_17(glval) = CopyValue : r2417_2 +# 2417| r2417_18(glval) = FunctionAddress[~ClassWithDestructor] : +# 2417| v2417_19(void) = Call[~ClassWithDestructor] : func:r2417_18, this:r2417_17 +# 2417| m2417_20(unknown) = ^CallSideEffect : ~m2417_13 +# 2417| m2417_21(unknown) = Chi : total:m2417_13, partial:m2417_20 +# 2417| v2417_22(void) = ^IndirectReadSideEffect[-1] : &:r2417_17, m2417_16 +# 2417| m2417_23(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2417_17 +# 2417| m2417_24(ClassWithDestructor) = Chi : total:m2417_16, partial:m2417_23 +# 2417| m2417_25(char) = Store[x] : &:r2417_1, r2417_11 +# 2417| r2417_26(glval) = VariableAddress[x] : +# 2417| r2417_27(char) = Load[x] : &:r2417_26, m2417_25 +# 2417| r2417_28(char) = Constant[0] : +# 2417| r2417_29(bool) = CompareNE : r2417_27, r2417_28 +# 2417| v2417_30(void) = ConditionalBranch : r2417_29 #-----| False -> Block 4 #-----| True -> Block 3 -# 2416| Block 3 -# 2416| r2416_1(glval) = VariableAddress[x] : -# 2416| r2416_2(char) = Load[x] : &:r2416_1, m2415_25 -# 2416| r2416_3(char) = Constant[1] : -# 2416| r2416_4(char) = Add : r2416_2, r2416_3 -# 2416| m2416_5(char) = Store[x] : &:r2416_1, r2416_4 +# 2418| Block 3 +# 2418| r2418_1(glval) = VariableAddress[x] : +# 2418| r2418_2(char) = Load[x] : &:r2418_1, m2417_25 +# 2418| r2418_3(char) = Constant[1] : +# 2418| r2418_4(char) = Add : r2418_2, r2418_3 +# 2418| m2418_5(char) = Store[x] : &:r2418_1, r2418_4 #-----| Goto -> Block 4 -# 2418| Block 4 -# 2418| r2418_1(glval) = VariableAddress[x] : -# 2418| r2418_2(glval) = VariableAddress[#temp2418:28] : -# 2418| m2418_3(ClassWithDestructor) = Uninitialized[#temp2418:28] : &:r2418_2 -# 2418| r2418_4(glval) = FunctionAddress[ClassWithDestructor] : -# 2418| v2418_5(void) = Call[ClassWithDestructor] : func:r2418_4, this:r2418_2 -# 2418| m2418_6(unknown) = ^CallSideEffect : ~m2415_21 -# 2418| m2418_7(unknown) = Chi : total:m2415_21, partial:m2418_6 -# 2418| m2418_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2418_2 -# 2418| m2418_9(ClassWithDestructor) = Chi : total:m2418_3, partial:m2418_8 -# 2418| r2418_10(glval) = FunctionAddress[get_x] : -# 2418| r2418_11(char) = Call[get_x] : func:r2418_10, this:r2418_2 -# 2418| m2418_12(unknown) = ^CallSideEffect : ~m2418_7 -# 2418| m2418_13(unknown) = Chi : total:m2418_7, partial:m2418_12 -# 2418| v2418_14(void) = ^IndirectReadSideEffect[-1] : &:r2418_2, m2418_9 -# 2418| m2418_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2418_2 -# 2418| m2418_16(ClassWithDestructor) = Chi : total:m2418_9, partial:m2418_15 -# 2418| r2418_17(glval) = CopyValue : r2418_2 -# 2418| r2418_18(glval) = FunctionAddress[~ClassWithDestructor] : -# 2418| v2418_19(void) = Call[~ClassWithDestructor] : func:r2418_18, this:r2418_17 -# 2418| m2418_20(unknown) = ^CallSideEffect : ~m2418_13 -# 2418| m2418_21(unknown) = Chi : total:m2418_13, partial:m2418_20 -# 2418| v2418_22(void) = ^IndirectReadSideEffect[-1] : &:r2418_17, m2418_16 -# 2418| m2418_23(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2418_17 -# 2418| m2418_24(ClassWithDestructor) = Chi : total:m2418_16, partial:m2418_23 -# 2418| m2418_25(char) = Store[x] : &:r2418_1, r2418_11 -# 2418| r2418_26(bool) = Constant[1] : -# 2418| v2418_27(void) = ConditionalBranch : r2418_26 +# 2420| Block 4 +# 2420| r2420_1(glval) = VariableAddress[x] : +# 2420| r2420_2(glval) = VariableAddress[#temp2420:28] : +# 2420| m2420_3(ClassWithDestructor) = Uninitialized[#temp2420:28] : &:r2420_2 +# 2420| r2420_4(glval) = FunctionAddress[ClassWithDestructor] : +# 2420| v2420_5(void) = Call[ClassWithDestructor] : func:r2420_4, this:r2420_2 +# 2420| m2420_6(unknown) = ^CallSideEffect : ~m2417_21 +# 2420| m2420_7(unknown) = Chi : total:m2417_21, partial:m2420_6 +# 2420| m2420_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2420_2 +# 2420| m2420_9(ClassWithDestructor) = Chi : total:m2420_3, partial:m2420_8 +# 2420| r2420_10(glval) = FunctionAddress[get_x] : +# 2420| r2420_11(char) = Call[get_x] : func:r2420_10, this:r2420_2 +# 2420| m2420_12(unknown) = ^CallSideEffect : ~m2420_7 +# 2420| m2420_13(unknown) = Chi : total:m2420_7, partial:m2420_12 +# 2420| v2420_14(void) = ^IndirectReadSideEffect[-1] : &:r2420_2, m2420_9 +# 2420| m2420_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2420_2 +# 2420| m2420_16(ClassWithDestructor) = Chi : total:m2420_9, partial:m2420_15 +# 2420| r2420_17(glval) = CopyValue : r2420_2 +# 2420| r2420_18(glval) = FunctionAddress[~ClassWithDestructor] : +# 2420| v2420_19(void) = Call[~ClassWithDestructor] : func:r2420_18, this:r2420_17 +# 2420| m2420_20(unknown) = ^CallSideEffect : ~m2420_13 +# 2420| m2420_21(unknown) = Chi : total:m2420_13, partial:m2420_20 +# 2420| v2420_22(void) = ^IndirectReadSideEffect[-1] : &:r2420_17, m2420_16 +# 2420| m2420_23(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2420_17 +# 2420| m2420_24(ClassWithDestructor) = Chi : total:m2420_16, partial:m2420_23 +# 2420| m2420_25(char) = Store[x] : &:r2420_1, r2420_11 +# 2420| r2420_26(bool) = Constant[1] : +# 2420| v2420_27(void) = ConditionalBranch : r2420_26 #-----| False -> Block 13 #-----| True -> Block 5 -# 2419| Block 5 -# 2419| r2419_1(glval) = VariableAddress[x] : -# 2419| r2419_2(char) = Load[x] : &:r2419_1, m2418_25 -# 2419| r2419_3(char) = Constant[1] : -# 2419| r2419_4(char) = Add : r2419_2, r2419_3 -# 2419| m2419_5(char) = Store[x] : &:r2419_1, r2419_4 +# 2421| Block 5 # 2421| r2421_1(glval) = VariableAddress[x] : -# 2421| r2421_2(glval) = VariableAddress[#temp2421:21] : -# 2421| m2421_3(ClassWithDestructor) = Uninitialized[#temp2421:21] : &:r2421_2 -# 2421| r2421_4(glval) = FunctionAddress[ClassWithDestructor] : -# 2421| v2421_5(void) = Call[ClassWithDestructor] : func:r2421_4, this:r2421_2 -# 2421| m2421_6(unknown) = ^CallSideEffect : ~m2418_21 -# 2421| m2421_7(unknown) = Chi : total:m2418_21, partial:m2421_6 -# 2421| m2421_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2421_2 -# 2421| m2421_9(ClassWithDestructor) = Chi : total:m2421_3, partial:m2421_8 -# 2421| r2421_10(glval) = FunctionAddress[get_x] : -# 2421| r2421_11(char) = Call[get_x] : func:r2421_10, this:r2421_2 -# 2421| m2421_12(unknown) = ^CallSideEffect : ~m2421_7 -# 2421| m2421_13(unknown) = Chi : total:m2421_7, partial:m2421_12 -# 2421| v2421_14(void) = ^IndirectReadSideEffect[-1] : &:r2421_2, m2421_9 -# 2421| m2421_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2421_2 -# 2421| m2421_16(ClassWithDestructor) = Chi : total:m2421_9, partial:m2421_15 -# 2421| r2421_17(glval) = CopyValue : r2421_2 -# 2421| r2421_18(glval) = FunctionAddress[~ClassWithDestructor] : -# 2421| v2421_19(void) = Call[~ClassWithDestructor] : func:r2421_18, this:r2421_17 -# 2421| m2421_20(unknown) = ^CallSideEffect : ~m2421_13 -# 2421| m2421_21(unknown) = Chi : total:m2421_13, partial:m2421_20 -# 2421| v2421_22(void) = ^IndirectReadSideEffect[-1] : &:r2421_17, m2421_16 -# 2421| m2421_23(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2421_17 -# 2421| m2421_24(ClassWithDestructor) = Chi : total:m2421_16, partial:m2421_23 -# 2421| m2421_25(char) = Store[x] : &:r2421_1, r2421_11 -# 2421| r2421_26(glval) = VariableAddress[x] : -# 2421| r2421_27(char) = Load[x] : &:r2421_26, m2421_25 -# 2421| r2421_28(int) = Convert : r2421_27 -# 2421| r2421_29(int) = CopyValue : r2421_28 -# 2421| v2421_30(void) = Switch : r2421_29 +# 2421| r2421_2(char) = Load[x] : &:r2421_1, m2420_25 +# 2421| r2421_3(char) = Constant[1] : +# 2421| r2421_4(char) = Add : r2421_2, r2421_3 +# 2421| m2421_5(char) = Store[x] : &:r2421_1, r2421_4 +# 2423| r2423_1(glval) = VariableAddress[x] : +# 2423| r2423_2(glval) = VariableAddress[#temp2423:21] : +# 2423| m2423_3(ClassWithDestructor) = Uninitialized[#temp2423:21] : &:r2423_2 +# 2423| r2423_4(glval) = FunctionAddress[ClassWithDestructor] : +# 2423| v2423_5(void) = Call[ClassWithDestructor] : func:r2423_4, this:r2423_2 +# 2423| m2423_6(unknown) = ^CallSideEffect : ~m2420_21 +# 2423| m2423_7(unknown) = Chi : total:m2420_21, partial:m2423_6 +# 2423| m2423_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2423_2 +# 2423| m2423_9(ClassWithDestructor) = Chi : total:m2423_3, partial:m2423_8 +# 2423| r2423_10(glval) = FunctionAddress[get_x] : +# 2423| r2423_11(char) = Call[get_x] : func:r2423_10, this:r2423_2 +# 2423| m2423_12(unknown) = ^CallSideEffect : ~m2423_7 +# 2423| m2423_13(unknown) = Chi : total:m2423_7, partial:m2423_12 +# 2423| v2423_14(void) = ^IndirectReadSideEffect[-1] : &:r2423_2, m2423_9 +# 2423| m2423_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2423_2 +# 2423| m2423_16(ClassWithDestructor) = Chi : total:m2423_9, partial:m2423_15 +# 2423| r2423_17(glval) = CopyValue : r2423_2 +# 2423| r2423_18(glval) = FunctionAddress[~ClassWithDestructor] : +# 2423| v2423_19(void) = Call[~ClassWithDestructor] : func:r2423_18, this:r2423_17 +# 2423| m2423_20(unknown) = ^CallSideEffect : ~m2423_13 +# 2423| m2423_21(unknown) = Chi : total:m2423_13, partial:m2423_20 +# 2423| v2423_22(void) = ^IndirectReadSideEffect[-1] : &:r2423_17, m2423_16 +# 2423| m2423_23(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2423_17 +# 2423| m2423_24(ClassWithDestructor) = Chi : total:m2423_16, partial:m2423_23 +# 2423| m2423_25(char) = Store[x] : &:r2423_1, r2423_11 +# 2423| r2423_26(glval) = VariableAddress[x] : +# 2423| r2423_27(char) = Load[x] : &:r2423_26, m2423_25 +# 2423| r2423_28(int) = Convert : r2423_27 +# 2423| r2423_29(int) = CopyValue : r2423_28 +# 2423| v2423_30(void) = Switch : r2423_29 #-----| Case[97] -> Block 6 #-----| Default -> Block 7 -# 2422| Block 6 -# 2422| v2422_1(void) = NoOp : -# 2423| r2423_1(glval) = VariableAddress[x] : -# 2423| r2423_2(char) = Load[x] : &:r2423_1, m2421_25 -# 2423| r2423_3(char) = Constant[1] : -# 2423| r2423_4(char) = Add : r2423_2, r2423_3 -# 2423| m2423_5(char) = Store[x] : &:r2423_1, r2423_4 +# 2424| Block 6 +# 2424| v2424_1(void) = NoOp : +# 2425| r2425_1(glval) = VariableAddress[x] : +# 2425| r2425_2(char) = Load[x] : &:r2425_1, m2423_25 +# 2425| r2425_3(char) = Constant[1] : +# 2425| r2425_4(char) = Add : r2425_2, r2425_3 +# 2425| m2425_5(char) = Store[x] : &:r2425_1, r2425_4 #-----| Goto -> Block 7 -# 2426| Block 7 -# 2426| r2426_1(glval) = VariableAddress[x] : -# 2426| r2426_2(glval) = VariableAddress[#temp2426:21] : -# 2426| m2426_3(ClassWithDestructor) = Uninitialized[#temp2426:21] : &:r2426_2 -# 2426| r2426_4(glval) = FunctionAddress[ClassWithDestructor] : -# 2426| v2426_5(void) = Call[ClassWithDestructor] : func:r2426_4, this:r2426_2 -# 2426| m2426_6(unknown) = ^CallSideEffect : ~m2421_21 -# 2426| m2426_7(unknown) = Chi : total:m2421_21, partial:m2426_6 -# 2426| m2426_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2426_2 -# 2426| m2426_9(ClassWithDestructor) = Chi : total:m2426_3, partial:m2426_8 -# 2426| r2426_10(glval) = FunctionAddress[get_x] : -# 2426| r2426_11(char) = Call[get_x] : func:r2426_10, this:r2426_2 -# 2426| m2426_12(unknown) = ^CallSideEffect : ~m2426_7 -# 2426| m2426_13(unknown) = Chi : total:m2426_7, partial:m2426_12 -# 2426| v2426_14(void) = ^IndirectReadSideEffect[-1] : &:r2426_2, m2426_9 -# 2426| m2426_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2426_2 -# 2426| m2426_16(ClassWithDestructor) = Chi : total:m2426_9, partial:m2426_15 -# 2426| r2426_17(glval) = CopyValue : r2426_2 -# 2426| r2426_18(glval) = FunctionAddress[~ClassWithDestructor] : -# 2426| v2426_19(void) = Call[~ClassWithDestructor] : func:r2426_18, this:r2426_17 -# 2426| m2426_20(unknown) = ^CallSideEffect : ~m2426_13 -# 2426| m2426_21(unknown) = Chi : total:m2426_13, partial:m2426_20 -# 2426| v2426_22(void) = ^IndirectReadSideEffect[-1] : &:r2426_17, m2426_16 -# 2426| m2426_23(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2426_17 -# 2426| m2426_24(ClassWithDestructor) = Chi : total:m2426_16, partial:m2426_23 -# 2426| m2426_25(char) = Store[x] : &:r2426_1, r2426_11 -# 2426| r2426_26(glval) = VariableAddress[x] : -# 2426| r2426_27(char) = Load[x] : &:r2426_26, m2426_25 -# 2426| r2426_28(int) = Convert : r2426_27 -# 2426| v2426_29(void) = Switch : r2426_28 +# 2428| Block 7 +# 2428| r2428_1(glval) = VariableAddress[x] : +# 2428| r2428_2(glval) = VariableAddress[#temp2428:21] : +# 2428| m2428_3(ClassWithDestructor) = Uninitialized[#temp2428:21] : &:r2428_2 +# 2428| r2428_4(glval) = FunctionAddress[ClassWithDestructor] : +# 2428| v2428_5(void) = Call[ClassWithDestructor] : func:r2428_4, this:r2428_2 +# 2428| m2428_6(unknown) = ^CallSideEffect : ~m2423_21 +# 2428| m2428_7(unknown) = Chi : total:m2423_21, partial:m2428_6 +# 2428| m2428_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2428_2 +# 2428| m2428_9(ClassWithDestructor) = Chi : total:m2428_3, partial:m2428_8 +# 2428| r2428_10(glval) = FunctionAddress[get_x] : +# 2428| r2428_11(char) = Call[get_x] : func:r2428_10, this:r2428_2 +# 2428| m2428_12(unknown) = ^CallSideEffect : ~m2428_7 +# 2428| m2428_13(unknown) = Chi : total:m2428_7, partial:m2428_12 +# 2428| v2428_14(void) = ^IndirectReadSideEffect[-1] : &:r2428_2, m2428_9 +# 2428| m2428_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2428_2 +# 2428| m2428_16(ClassWithDestructor) = Chi : total:m2428_9, partial:m2428_15 +# 2428| r2428_17(glval) = CopyValue : r2428_2 +# 2428| r2428_18(glval) = FunctionAddress[~ClassWithDestructor] : +# 2428| v2428_19(void) = Call[~ClassWithDestructor] : func:r2428_18, this:r2428_17 +# 2428| m2428_20(unknown) = ^CallSideEffect : ~m2428_13 +# 2428| m2428_21(unknown) = Chi : total:m2428_13, partial:m2428_20 +# 2428| v2428_22(void) = ^IndirectReadSideEffect[-1] : &:r2428_17, m2428_16 +# 2428| m2428_23(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2428_17 +# 2428| m2428_24(ClassWithDestructor) = Chi : total:m2428_16, partial:m2428_23 +# 2428| m2428_25(char) = Store[x] : &:r2428_1, r2428_11 +# 2428| r2428_26(glval) = VariableAddress[x] : +# 2428| r2428_27(char) = Load[x] : &:r2428_26, m2428_25 +# 2428| r2428_28(int) = Convert : r2428_27 +# 2428| v2428_29(void) = Switch : r2428_28 #-----| Case[97] -> Block 8 #-----| Default -> Block 9 -# 2427| Block 8 -# 2427| v2427_1(void) = NoOp : -# 2428| r2428_1(glval) = VariableAddress[x] : -# 2428| r2428_2(char) = Load[x] : &:r2428_1, m2426_25 -# 2428| r2428_3(char) = Constant[1] : -# 2428| r2428_4(char) = Add : r2428_2, r2428_3 -# 2428| m2428_5(char) = Store[x] : &:r2428_1, r2428_4 +# 2429| Block 8 +# 2429| v2429_1(void) = NoOp : +# 2430| r2430_1(glval) = VariableAddress[x] : +# 2430| r2430_2(char) = Load[x] : &:r2430_1, m2428_25 +# 2430| r2430_3(char) = Constant[1] : +# 2430| r2430_4(char) = Add : r2430_2, r2430_3 +# 2430| m2430_5(char) = Store[x] : &:r2430_1, r2430_4 #-----| Goto -> Block 9 -# 2431| Block 9 -# 2431| r2431_1(glval) = VariableAddress[x] : -# 2431| r2431_2(glval) = VariableAddress[#temp2431:18] : -# 2431| m2431_3(ClassWithDestructor) = Uninitialized[#temp2431:18] : &:r2431_2 -# 2431| r2431_4(glval) = FunctionAddress[ClassWithDestructor] : -# 2431| v2431_5(void) = Call[ClassWithDestructor] : func:r2431_4, this:r2431_2 -# 2431| m2431_6(unknown) = ^CallSideEffect : ~m2426_21 -# 2431| m2431_7(unknown) = Chi : total:m2426_21, partial:m2431_6 -# 2431| m2431_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2431_2 -# 2431| m2431_9(ClassWithDestructor) = Chi : total:m2431_3, partial:m2431_8 -# 2431| r2431_10(glval) = FunctionAddress[get_x] : -# 2431| r2431_11(char) = Call[get_x] : func:r2431_10, this:r2431_2 -# 2431| m2431_12(unknown) = ^CallSideEffect : ~m2431_7 -# 2431| m2431_13(unknown) = Chi : total:m2431_7, partial:m2431_12 -# 2431| v2431_14(void) = ^IndirectReadSideEffect[-1] : &:r2431_2, m2431_9 -# 2431| m2431_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2431_2 -# 2431| m2431_16(ClassWithDestructor) = Chi : total:m2431_9, partial:m2431_15 -# 2431| r2431_17(glval) = CopyValue : r2431_2 -# 2431| r2431_18(glval) = FunctionAddress[~ClassWithDestructor] : -# 2431| v2431_19(void) = Call[~ClassWithDestructor] : func:r2431_18, this:r2431_17 -# 2431| m2431_20(unknown) = ^CallSideEffect : ~m2431_13 -# 2431| m2431_21(unknown) = Chi : total:m2431_13, partial:m2431_20 -# 2431| v2431_22(void) = ^IndirectReadSideEffect[-1] : &:r2431_17, m2431_16 -# 2431| m2431_23(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2431_17 -# 2431| m2431_24(ClassWithDestructor) = Chi : total:m2431_16, partial:m2431_23 -# 2431| m2431_25(char) = Store[x] : &:r2431_1, r2431_11 -# 2431| r2431_26(glval &&>) = VariableAddress[(__range)] : -# 2431| r2431_27(glval>) = VariableAddress[#temp2431:58] : -# 2431| m2431_28(vector) = Uninitialized[#temp2431:58] : &:r2431_27 -# 2431| r2431_29(glval) = FunctionAddress[vector] : -# 2431| r2431_30(glval) = VariableAddress[x] : -# 2431| r2431_31(char) = Load[x] : &:r2431_30, m2431_25 -# 2431| v2431_32(void) = Call[vector] : func:r2431_29, this:r2431_27, 0:r2431_31 -# 2431| m2431_33(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2431_27 -# 2431| r2431_34(vector &) = CopyValue : r2431_27 -# 2431| m2431_35(vector &&) = Store[(__range)] : &:r2431_26, r2431_34 -# 2431| r2431_36(glval>) = VariableAddress[(__begin)] : -# 2431| r2431_37(glval &&>) = VariableAddress[(__range)] : -# 2431| r2431_38(vector &&) = Load[(__range)] : &:r2431_37, m2431_35 -#-----| r0_1(glval>) = CopyValue : r2431_38 +# 2433| Block 9 +# 2433| r2433_1(glval) = VariableAddress[x] : +# 2433| r2433_2(glval) = VariableAddress[#temp2433:18] : +# 2433| m2433_3(ClassWithDestructor) = Uninitialized[#temp2433:18] : &:r2433_2 +# 2433| r2433_4(glval) = FunctionAddress[ClassWithDestructor] : +# 2433| v2433_5(void) = Call[ClassWithDestructor] : func:r2433_4, this:r2433_2 +# 2433| m2433_6(unknown) = ^CallSideEffect : ~m2428_21 +# 2433| m2433_7(unknown) = Chi : total:m2428_21, partial:m2433_6 +# 2433| m2433_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2433_2 +# 2433| m2433_9(ClassWithDestructor) = Chi : total:m2433_3, partial:m2433_8 +# 2433| r2433_10(glval) = FunctionAddress[get_x] : +# 2433| r2433_11(char) = Call[get_x] : func:r2433_10, this:r2433_2 +# 2433| m2433_12(unknown) = ^CallSideEffect : ~m2433_7 +# 2433| m2433_13(unknown) = Chi : total:m2433_7, partial:m2433_12 +# 2433| v2433_14(void) = ^IndirectReadSideEffect[-1] : &:r2433_2, m2433_9 +# 2433| m2433_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2433_2 +# 2433| m2433_16(ClassWithDestructor) = Chi : total:m2433_9, partial:m2433_15 +# 2433| r2433_17(glval) = CopyValue : r2433_2 +# 2433| r2433_18(glval) = FunctionAddress[~ClassWithDestructor] : +# 2433| v2433_19(void) = Call[~ClassWithDestructor] : func:r2433_18, this:r2433_17 +# 2433| m2433_20(unknown) = ^CallSideEffect : ~m2433_13 +# 2433| m2433_21(unknown) = Chi : total:m2433_13, partial:m2433_20 +# 2433| v2433_22(void) = ^IndirectReadSideEffect[-1] : &:r2433_17, m2433_16 +# 2433| m2433_23(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2433_17 +# 2433| m2433_24(ClassWithDestructor) = Chi : total:m2433_16, partial:m2433_23 +# 2433| m2433_25(char) = Store[x] : &:r2433_1, r2433_11 +# 2433| r2433_26(glval &&>) = VariableAddress[(__range)] : +# 2433| r2433_27(glval>) = VariableAddress[#temp2433:58] : +# 2433| m2433_28(vector) = Uninitialized[#temp2433:58] : &:r2433_27 +# 2433| r2433_29(glval) = FunctionAddress[vector] : +# 2433| r2433_30(glval) = VariableAddress[x] : +# 2433| r2433_31(char) = Load[x] : &:r2433_30, m2433_25 +# 2433| v2433_32(void) = Call[vector] : func:r2433_29, this:r2433_27, 0:r2433_31 +# 2433| m2433_33(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2433_27 +# 2433| r2433_34(vector &) = CopyValue : r2433_27 +# 2433| m2433_35(vector &&) = Store[(__range)] : &:r2433_26, r2433_34 +# 2433| r2433_36(glval>) = VariableAddress[(__begin)] : +# 2433| r2433_37(glval &&>) = VariableAddress[(__range)] : +# 2433| r2433_38(vector &&) = Load[(__range)] : &:r2433_37, m2433_35 +#-----| r0_1(glval>) = CopyValue : r2433_38 #-----| r0_2(glval>) = Convert : r0_1 -# 2431| r2431_39(glval) = FunctionAddress[begin] : -# 2431| r2431_40(iterator) = Call[begin] : func:r2431_39, this:r0_2 -#-----| v0_3(void) = ^IndirectReadSideEffect[-1] : &:r0_2, m2431_33 -# 2431| m2431_41(iterator) = Store[(__begin)] : &:r2431_36, r2431_40 -# 2431| r2431_42(glval>) = VariableAddress[(__end)] : -# 2431| r2431_43(glval &&>) = VariableAddress[(__range)] : -# 2431| r2431_44(vector &&) = Load[(__range)] : &:r2431_43, m2431_35 -#-----| r0_4(glval>) = CopyValue : r2431_44 +# 2433| r2433_39(glval) = FunctionAddress[begin] : +# 2433| r2433_40(iterator) = Call[begin] : func:r2433_39, this:r0_2 +#-----| v0_3(void) = ^IndirectReadSideEffect[-1] : &:r0_2, m2433_33 +# 2433| m2433_41(iterator) = Store[(__begin)] : &:r2433_36, r2433_40 +# 2433| r2433_42(glval>) = VariableAddress[(__end)] : +# 2433| r2433_43(glval &&>) = VariableAddress[(__range)] : +# 2433| r2433_44(vector &&) = Load[(__range)] : &:r2433_43, m2433_35 +#-----| r0_4(glval>) = CopyValue : r2433_44 #-----| r0_5(glval>) = Convert : r0_4 -# 2431| r2431_45(glval) = FunctionAddress[end] : -# 2431| r2431_46(iterator) = Call[end] : func:r2431_45, this:r0_5 -#-----| v0_6(void) = ^IndirectReadSideEffect[-1] : &:r0_5, m2431_33 -# 2431| m2431_47(iterator) = Store[(__end)] : &:r2431_42, r2431_46 -# 2431| m2431_48(unknown) = Chi : total:m2431_21, partial:m2431_47 +# 2433| r2433_45(glval) = FunctionAddress[end] : +# 2433| r2433_46(iterator) = Call[end] : func:r2433_45, this:r0_5 +#-----| v0_6(void) = ^IndirectReadSideEffect[-1] : &:r0_5, m2433_33 +# 2433| m2433_47(iterator) = Store[(__end)] : &:r2433_42, r2433_46 +# 2433| m2433_48(unknown) = Chi : total:m2433_21, partial:m2433_47 #-----| Goto -> Block 10 -# 2431| Block 10 -# 2431| m2431_49(iterator) = Phi : from 9:m2431_41, from 11:m2431_73 -# 2431| m2431_50(unknown) = Phi : from 9:~m2431_48, from 11:~m2431_59 -# 2431| r2431_51(glval>) = VariableAddress[(__begin)] : -#-----| r0_7(glval>) = Convert : r2431_51 -# 2431| r2431_52(glval) = FunctionAddress[operator!=] : +# 2433| Block 10 +# 2433| m2433_49(iterator) = Phi : from 9:m2433_41, from 11:m2433_73 +# 2433| m2433_50(unknown) = Phi : from 9:~m2433_48, from 11:~m2433_59 +# 2433| r2433_51(glval>) = VariableAddress[(__begin)] : +#-----| r0_7(glval>) = Convert : r2433_51 +# 2433| r2433_52(glval) = FunctionAddress[operator!=] : #-----| r0_8(glval>) = VariableAddress[#temp0:0] : #-----| m0_9(iterator) = Uninitialized[#temp0:0] : &:r0_8 -#-----| m0_10(unknown) = Chi : total:m2431_50, partial:m0_9 -# 2431| r2431_53(glval) = FunctionAddress[iterator] : -# 2431| r2431_54(glval>) = VariableAddress[(__end)] : -#-----| r0_11(glval>) = Convert : r2431_54 +#-----| m0_10(unknown) = Chi : total:m2433_50, partial:m0_9 +# 2433| r2433_53(glval) = FunctionAddress[iterator] : +# 2433| r2433_54(glval>) = VariableAddress[(__end)] : +#-----| r0_11(glval>) = Convert : r2433_54 #-----| r0_12(iterator &) = CopyValue : r0_11 -# 2431| v2431_55(void) = Call[iterator] : func:r2431_53, this:r0_8, 0:r0_12 -# 2431| m2431_56(unknown) = ^CallSideEffect : ~m0_10 -# 2431| m2431_57(unknown) = Chi : total:m0_10, partial:m2431_56 -#-----| v0_13(void) = ^BufferReadSideEffect[0] : &:r0_12, ~m2431_57 -# 2431| m2431_58(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r0_8 -# 2431| m2431_59(unknown) = Chi : total:m2431_57, partial:m2431_58 -#-----| r0_14(iterator) = Load[#temp0:0] : &:r0_8, ~m2431_59 -# 2431| r2431_60(bool) = Call[operator!=] : func:r2431_52, this:r0_7, 0:r0_14 -#-----| v0_15(void) = ^IndirectReadSideEffect[-1] : &:r0_7, m2431_49 -# 2431| v2431_61(void) = ConditionalBranch : r2431_60 +# 2433| v2433_55(void) = Call[iterator] : func:r2433_53, this:r0_8, 0:r0_12 +# 2433| m2433_56(unknown) = ^CallSideEffect : ~m0_10 +# 2433| m2433_57(unknown) = Chi : total:m0_10, partial:m2433_56 +#-----| v0_13(void) = ^BufferReadSideEffect[0] : &:r0_12, ~m2433_57 +# 2433| m2433_58(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r0_8 +# 2433| m2433_59(unknown) = Chi : total:m2433_57, partial:m2433_58 +#-----| r0_14(iterator) = Load[#temp0:0] : &:r0_8, ~m2433_59 +# 2433| r2433_60(bool) = Call[operator!=] : func:r2433_52, this:r0_7, 0:r0_14 +#-----| v0_15(void) = ^IndirectReadSideEffect[-1] : &:r0_7, m2433_49 +# 2433| v2433_61(void) = ConditionalBranch : r2433_60 #-----| False -> Block 12 #-----| True -> Block 11 -# 2431| Block 11 -# 2431| r2431_62(glval) = VariableAddress[y] : -# 2431| r2431_63(glval>) = VariableAddress[(__begin)] : -#-----| r0_16(glval>) = Convert : r2431_63 -# 2431| r2431_64(glval) = FunctionAddress[operator*] : -# 2431| r2431_65(char &) = Call[operator*] : func:r2431_64, this:r0_16 -#-----| v0_17(void) = ^IndirectReadSideEffect[-1] : &:r0_16, m2431_49 -# 2431| r2431_66(char) = Load[?] : &:r2431_65, ~m2431_59 -# 2431| m2431_67(char) = Store[y] : &:r2431_62, r2431_66 -# 2432| r2432_1(glval) = VariableAddress[x] : -# 2432| r2432_2(char) = Load[x] : &:r2432_1, m2431_25 -# 2432| r2432_3(int) = Convert : r2432_2 -# 2432| r2432_4(glval) = VariableAddress[y] : -# 2432| r2432_5(char) = Load[y] : &:r2432_4, m2431_67 -# 2432| r2432_6(int) = Convert : r2432_5 -# 2432| r2432_7(int) = Add : r2432_6, r2432_3 -# 2432| r2432_8(char) = Convert : r2432_7 -# 2432| m2432_9(char) = Store[y] : &:r2432_4, r2432_8 -# 2431| r2431_68(glval>) = VariableAddress[(__begin)] : -# 2431| r2431_69(glval) = FunctionAddress[operator++] : -# 2431| r2431_70(iterator &) = Call[operator++] : func:r2431_69, this:r2431_68 -# 2431| v2431_71(void) = ^IndirectReadSideEffect[-1] : &:r2431_68, m2431_49 -# 2431| m2431_72(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r2431_68 -# 2431| m2431_73(iterator) = Chi : total:m2431_49, partial:m2431_72 -# 2431| r2431_74(glval>) = CopyValue : r2431_70 +# 2433| Block 11 +# 2433| r2433_62(glval) = VariableAddress[y] : +# 2433| r2433_63(glval>) = VariableAddress[(__begin)] : +#-----| r0_16(glval>) = Convert : r2433_63 +# 2433| r2433_64(glval) = FunctionAddress[operator*] : +# 2433| r2433_65(char &) = Call[operator*] : func:r2433_64, this:r0_16 +#-----| v0_17(void) = ^IndirectReadSideEffect[-1] : &:r0_16, m2433_49 +# 2433| r2433_66(char) = Load[?] : &:r2433_65, ~m2433_59 +# 2433| m2433_67(char) = Store[y] : &:r2433_62, r2433_66 +# 2434| r2434_1(glval) = VariableAddress[x] : +# 2434| r2434_2(char) = Load[x] : &:r2434_1, m2433_25 +# 2434| r2434_3(int) = Convert : r2434_2 +# 2434| r2434_4(glval) = VariableAddress[y] : +# 2434| r2434_5(char) = Load[y] : &:r2434_4, m2433_67 +# 2434| r2434_6(int) = Convert : r2434_5 +# 2434| r2434_7(int) = Add : r2434_6, r2434_3 +# 2434| r2434_8(char) = Convert : r2434_7 +# 2434| m2434_9(char) = Store[y] : &:r2434_4, r2434_8 +# 2433| r2433_68(glval>) = VariableAddress[(__begin)] : +# 2433| r2433_69(glval) = FunctionAddress[operator++] : +# 2433| r2433_70(iterator &) = Call[operator++] : func:r2433_69, this:r2433_68 +# 2433| v2433_71(void) = ^IndirectReadSideEffect[-1] : &:r2433_68, m2433_49 +# 2433| m2433_72(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r2433_68 +# 2433| m2433_73(iterator) = Chi : total:m2433_49, partial:m2433_72 +# 2433| r2433_74(glval>) = CopyValue : r2433_70 #-----| Goto (back edge) -> Block 10 -# 2431| Block 12 -# 2431| r2431_75(glval>) = CopyValue : r2431_27 -# 2431| r2431_76(glval) = FunctionAddress[~vector] : -# 2431| v2431_77(void) = Call[~vector] : func:r2431_76, this:r2431_75 -# 2431| v2431_78(void) = ^IndirectReadSideEffect[-1] : &:r2431_75, m2431_33 -# 2431| m2431_79(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2431_75 -# 2433| v2433_1(void) = NoOp : -# 2411| v2411_5(void) = ReturnVoid : -# 2411| v2411_6(void) = AliasedUse : ~m2431_57 -# 2411| v2411_7(void) = ExitFunction : +# 2433| Block 12 +# 2433| r2433_75(glval>) = CopyValue : r2433_27 +# 2433| r2433_76(glval) = FunctionAddress[~vector] : +# 2433| v2433_77(void) = Call[~vector] : func:r2433_76, this:r2433_75 +# 2433| v2433_78(void) = ^IndirectReadSideEffect[-1] : &:r2433_75, m2433_33 +# 2433| m2433_79(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2433_75 +# 2435| v2435_1(void) = NoOp : +# 2413| v2413_5(void) = ReturnVoid : +# 2413| v2413_6(void) = AliasedUse : ~m2433_57 +# 2413| v2413_7(void) = ExitFunction : -# 2411| Block 13 -# 2411| v2411_8(void) = Unreached : +# 2413| Block 13 +# 2413| v2413_8(void) = Unreached : -# 2435| void param_with_destructor_by_value(ClassWithDestructor) -# 2435| Block 0 -# 2435| v2435_1(void) = EnterFunction : -# 2435| m2435_2(unknown) = AliasedDefinition : -# 2435| m2435_3(unknown) = InitializeNonLocal : -# 2435| m2435_4(unknown) = Chi : total:m2435_2, partial:m2435_3 -# 2435| r2435_5(glval) = VariableAddress[c] : -# 2435| m2435_6(ClassWithDestructor) = InitializeParameter[c] : &:r2435_5 -# 2437| v2437_1(void) = NoOp : -# 2435| v2435_7(void) = ReturnVoid : -# 2435| v2435_8(void) = AliasedUse : m2435_3 -# 2435| v2435_9(void) = ExitFunction : +# 2437| void param_with_destructor_by_value(ClassWithDestructor) +# 2437| Block 0 +# 2437| v2437_1(void) = EnterFunction : +# 2437| m2437_2(unknown) = AliasedDefinition : +# 2437| m2437_3(unknown) = InitializeNonLocal : +# 2437| m2437_4(unknown) = Chi : total:m2437_2, partial:m2437_3 +# 2437| r2437_5(glval) = VariableAddress[c] : +# 2437| m2437_6(ClassWithDestructor) = InitializeParameter[c] : &:r2437_5 +# 2439| v2439_1(void) = NoOp : +# 2437| v2437_7(void) = ReturnVoid : +# 2437| v2437_8(void) = AliasedUse : m2437_3 +# 2437| v2437_9(void) = ExitFunction : -# 2439| void param_with_destructor_by_pointer(ClassWithDestructor*) -# 2439| Block 0 -# 2439| v2439_1(void) = EnterFunction : -# 2439| m2439_2(unknown) = AliasedDefinition : -# 2439| m2439_3(unknown) = InitializeNonLocal : -# 2439| m2439_4(unknown) = Chi : total:m2439_2, partial:m2439_3 -# 2439| r2439_5(glval) = VariableAddress[c] : -# 2439| m2439_6(ClassWithDestructor *) = InitializeParameter[c] : &:r2439_5 -# 2439| r2439_7(ClassWithDestructor *) = Load[c] : &:r2439_5, m2439_6 -# 2439| m2439_8(unknown) = InitializeIndirection[c] : &:r2439_7 -# 2441| v2441_1(void) = NoOp : -# 2439| v2439_9(void) = ReturnIndirection[c] : &:r2439_7, m2439_8 -# 2439| v2439_10(void) = ReturnVoid : -# 2439| v2439_11(void) = AliasedUse : m2439_3 -# 2439| v2439_12(void) = ExitFunction : +# 2441| void param_with_destructor_by_pointer(ClassWithDestructor*) +# 2441| Block 0 +# 2441| v2441_1(void) = EnterFunction : +# 2441| m2441_2(unknown) = AliasedDefinition : +# 2441| m2441_3(unknown) = InitializeNonLocal : +# 2441| m2441_4(unknown) = Chi : total:m2441_2, partial:m2441_3 +# 2441| r2441_5(glval) = VariableAddress[c] : +# 2441| m2441_6(ClassWithDestructor *) = InitializeParameter[c] : &:r2441_5 +# 2441| r2441_7(ClassWithDestructor *) = Load[c] : &:r2441_5, m2441_6 +# 2441| m2441_8(unknown) = InitializeIndirection[c] : &:r2441_7 +# 2443| v2443_1(void) = NoOp : +# 2441| v2441_9(void) = ReturnIndirection[c] : &:r2441_7, m2441_8 +# 2441| v2441_10(void) = ReturnVoid : +# 2441| v2441_11(void) = AliasedUse : m2441_3 +# 2441| v2441_12(void) = ExitFunction : -# 2443| void param_with_destructor_by_ref(ClassWithDestructor&) -# 2443| Block 0 -# 2443| v2443_1(void) = EnterFunction : -# 2443| m2443_2(unknown) = AliasedDefinition : -# 2443| m2443_3(unknown) = InitializeNonLocal : -# 2443| m2443_4(unknown) = Chi : total:m2443_2, partial:m2443_3 -# 2443| r2443_5(glval) = VariableAddress[c] : -# 2443| m2443_6(ClassWithDestructor &) = InitializeParameter[c] : &:r2443_5 -# 2443| r2443_7(ClassWithDestructor &) = Load[c] : &:r2443_5, m2443_6 -# 2443| m2443_8(unknown) = InitializeIndirection[c] : &:r2443_7 -# 2445| v2445_1(void) = NoOp : -# 2443| v2443_9(void) = ReturnIndirection[c] : &:r2443_7, m2443_8 -# 2443| v2443_10(void) = ReturnVoid : -# 2443| v2443_11(void) = AliasedUse : m2443_3 -# 2443| v2443_12(void) = ExitFunction : +# 2445| void param_with_destructor_by_ref(ClassWithDestructor&) +# 2445| Block 0 +# 2445| v2445_1(void) = EnterFunction : +# 2445| m2445_2(unknown) = AliasedDefinition : +# 2445| m2445_3(unknown) = InitializeNonLocal : +# 2445| m2445_4(unknown) = Chi : total:m2445_2, partial:m2445_3 +# 2445| r2445_5(glval) = VariableAddress[c] : +# 2445| m2445_6(ClassWithDestructor &) = InitializeParameter[c] : &:r2445_5 +# 2445| r2445_7(ClassWithDestructor &) = Load[c] : &:r2445_5, m2445_6 +# 2445| m2445_8(unknown) = InitializeIndirection[c] : &:r2445_7 +# 2447| v2447_1(void) = NoOp : +# 2445| v2445_9(void) = ReturnIndirection[c] : &:r2445_7, m2445_8 +# 2445| v2445_10(void) = ReturnVoid : +# 2445| v2445_11(void) = AliasedUse : m2445_3 +# 2445| v2445_12(void) = ExitFunction : -# 2447| void param_with_destructor_by_rref(ClassWithDestructor&&) -# 2447| Block 0 -# 2447| v2447_1(void) = EnterFunction : -# 2447| m2447_2(unknown) = AliasedDefinition : -# 2447| m2447_3(unknown) = InitializeNonLocal : -# 2447| m2447_4(unknown) = Chi : total:m2447_2, partial:m2447_3 -# 2447| r2447_5(glval) = VariableAddress[c] : -# 2447| m2447_6(ClassWithDestructor &&) = InitializeParameter[c] : &:r2447_5 -# 2447| r2447_7(ClassWithDestructor &&) = Load[c] : &:r2447_5, m2447_6 -# 2447| m2447_8(unknown) = InitializeIndirection[c] : &:r2447_7 -# 2449| v2449_1(void) = NoOp : -# 2447| v2447_9(void) = ReturnIndirection[c] : &:r2447_7, m2447_8 -# 2447| v2447_10(void) = ReturnVoid : -# 2447| v2447_11(void) = AliasedUse : m2447_3 -# 2447| v2447_12(void) = ExitFunction : +# 2449| void param_with_destructor_by_rref(ClassWithDestructor&&) +# 2449| Block 0 +# 2449| v2449_1(void) = EnterFunction : +# 2449| m2449_2(unknown) = AliasedDefinition : +# 2449| m2449_3(unknown) = InitializeNonLocal : +# 2449| m2449_4(unknown) = Chi : total:m2449_2, partial:m2449_3 +# 2449| r2449_5(glval) = VariableAddress[c] : +# 2449| m2449_6(ClassWithDestructor &&) = InitializeParameter[c] : &:r2449_5 +# 2449| r2449_7(ClassWithDestructor &&) = Load[c] : &:r2449_5, m2449_6 +# 2449| m2449_8(unknown) = InitializeIndirection[c] : &:r2449_7 +# 2451| v2451_1(void) = NoOp : +# 2449| v2449_9(void) = ReturnIndirection[c] : &:r2449_7, m2449_8 +# 2449| v2449_10(void) = ReturnVoid : +# 2449| v2449_11(void) = AliasedUse : m2449_3 +# 2449| v2449_12(void) = ExitFunction : -# 2451| void rethrow_with_destruction(int) -# 2451| Block 0 -# 2451| v2451_1(void) = EnterFunction : -# 2451| m2451_2(unknown) = AliasedDefinition : -# 2451| m2451_3(unknown) = InitializeNonLocal : -# 2451| m2451_4(unknown) = Chi : total:m2451_2, partial:m2451_3 -# 2451| r2451_5(glval) = VariableAddress[x] : -# 2451| m2451_6(int) = InitializeParameter[x] : &:r2451_5 -# 2452| r2452_1(glval) = VariableAddress[c] : -# 2452| m2452_2(ClassWithDestructor) = Uninitialized[c] : &:r2452_1 -# 2452| r2452_3(glval) = FunctionAddress[ClassWithDestructor] : -# 2452| v2452_4(void) = Call[ClassWithDestructor] : func:r2452_3, this:r2452_1 -# 2452| m2452_5(unknown) = ^CallSideEffect : ~m2451_4 -# 2452| m2452_6(unknown) = Chi : total:m2451_4, partial:m2452_5 -# 2452| m2452_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2452_1 -# 2452| m2452_8(ClassWithDestructor) = Chi : total:m2452_2, partial:m2452_7 -# 2453| v2453_1(void) = ReThrow : +# 2453| void rethrow_with_destruction(int) +# 2453| Block 0 +# 2453| v2453_1(void) = EnterFunction : +# 2453| m2453_2(unknown) = AliasedDefinition : +# 2453| m2453_3(unknown) = InitializeNonLocal : +# 2453| m2453_4(unknown) = Chi : total:m2453_2, partial:m2453_3 +# 2453| r2453_5(glval) = VariableAddress[x] : +# 2453| m2453_6(int) = InitializeParameter[x] : &:r2453_5 # 2454| r2454_1(glval) = VariableAddress[c] : -# 2454| r2454_2(glval) = FunctionAddress[~ClassWithDestructor] : -# 2454| v2454_3(void) = Call[~ClassWithDestructor] : func:r2454_2, this:r2454_1 -# 2454| m2454_4(unknown) = ^CallSideEffect : ~m2452_6 -# 2454| m2454_5(unknown) = Chi : total:m2452_6, partial:m2454_4 -# 2454| v2454_6(void) = ^IndirectReadSideEffect[-1] : &:r2454_1, m2452_8 +# 2454| m2454_2(ClassWithDestructor) = Uninitialized[c] : &:r2454_1 +# 2454| r2454_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2454| v2454_4(void) = Call[ClassWithDestructor] : func:r2454_3, this:r2454_1 +# 2454| m2454_5(unknown) = ^CallSideEffect : ~m2453_4 +# 2454| m2454_6(unknown) = Chi : total:m2453_4, partial:m2454_5 # 2454| m2454_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2454_1 -# 2454| m2454_8(ClassWithDestructor) = Chi : total:m2452_8, partial:m2454_7 +# 2454| m2454_8(ClassWithDestructor) = Chi : total:m2454_2, partial:m2454_7 +# 2455| v2455_1(void) = ReThrow : +# 2456| r2456_1(glval) = VariableAddress[c] : +# 2456| r2456_2(glval) = FunctionAddress[~ClassWithDestructor] : +# 2456| v2456_3(void) = Call[~ClassWithDestructor] : func:r2456_2, this:r2456_1 +# 2456| m2456_4(unknown) = ^CallSideEffect : ~m2454_6 +# 2456| m2456_5(unknown) = Chi : total:m2454_6, partial:m2456_4 +# 2456| v2456_6(void) = ^IndirectReadSideEffect[-1] : &:r2456_1, m2454_8 +# 2456| m2456_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2456_1 +# 2456| m2456_8(ClassWithDestructor) = Chi : total:m2454_8, partial:m2456_7 #-----| C++ Exception -> Block 1 -# 2451| Block 1 -# 2451| v2451_7(void) = Unwind : -# 2451| v2451_8(void) = AliasedUse : ~m2454_5 -# 2451| v2451_9(void) = ExitFunction : +# 2453| Block 1 +# 2453| v2453_7(void) = Unwind : +# 2453| v2453_8(void) = AliasedUse : ~m2456_5 +# 2453| v2453_9(void) = ExitFunction : -# 2460| void new_with_destructor(ClassWithDestructor) -# 2460| Block 0 -# 2460| v2460_1(void) = EnterFunction : -# 2460| m2460_2(unknown) = AliasedDefinition : -# 2460| m2460_3(unknown) = InitializeNonLocal : -# 2460| m2460_4(unknown) = Chi : total:m2460_2, partial:m2460_3 -# 2460| r2460_5(glval) = VariableAddress[a] : -# 2460| m2460_6(ClassWithDestructor) = InitializeParameter[a] : &:r2460_5 -# 2462| r2462_1(glval) = VariableAddress[b] : -# 2462| r2462_2(glval) = FunctionAddress[operator new] : -# 2462| r2462_3(unsigned long) = Constant[1] : -# 2462| r2462_4(void *) = Call[operator new] : func:r2462_2, 0:r2462_3 -# 2462| m2462_5(unknown) = ^CallSideEffect : ~m2460_4 -# 2462| m2462_6(unknown) = Chi : total:m2460_4, partial:m2462_5 -# 2462| m2462_7(unknown) = ^InitializeDynamicAllocation : &:r2462_4 -# 2462| m2462_8(unknown) = Chi : total:m2462_6, partial:m2462_7 -# 2462| r2462_9(ByValueConstructor *) = Convert : r2462_4 -# 2462| r2462_10(glval) = FunctionAddress[ByValueConstructor] : -# 2462| r2462_11(glval) = VariableAddress[#temp2462:52] : -# 2462| r2462_12(glval) = VariableAddress[a] : -# 2462| r2462_13(ClassWithDestructor) = Load[a] : &:r2462_12, m2460_6 -# 2462| m2462_14(ClassWithDestructor) = Store[#temp2462:52] : &:r2462_11, r2462_13 -# 2462| r2462_15(ClassWithDestructor) = Load[#temp2462:52] : &:r2462_11, m2462_14 -# 2462| v2462_16(void) = Call[ByValueConstructor] : func:r2462_10, this:r2462_9, 0:r2462_15 -# 2462| m2462_17(unknown) = ^CallSideEffect : ~m2462_8 -# 2462| m2462_18(unknown) = Chi : total:m2462_8, partial:m2462_17 -# 2462| m2462_19(ByValueConstructor) = ^IndirectMayWriteSideEffect[-1] : &:r2462_9 -# 2462| m2462_20(unknown) = Chi : total:m2462_18, partial:m2462_19 -# 2462| r2462_21(glval) = CopyValue : r2462_11 -# 2462| r2462_22(glval) = FunctionAddress[~ClassWithDestructor] : -# 2462| v2462_23(void) = Call[~ClassWithDestructor] : func:r2462_22, this:r2462_21 -# 2462| m2462_24(unknown) = ^CallSideEffect : ~m2462_20 -# 2462| m2462_25(unknown) = Chi : total:m2462_20, partial:m2462_24 -# 2462| v2462_26(void) = ^IndirectReadSideEffect[-1] : &:r2462_21, m2462_14 -# 2462| m2462_27(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2462_21 -# 2462| m2462_28(ClassWithDestructor) = Chi : total:m2462_14, partial:m2462_27 -# 2462| m2462_29(ByValueConstructor *) = Store[b] : &:r2462_1, r2462_9 -# 2463| v2463_1(void) = NoOp : -# 2460| v2460_7(void) = ReturnVoid : -# 2460| v2460_8(void) = AliasedUse : ~m2462_25 -# 2460| v2460_9(void) = ExitFunction : +# 2462| void new_with_destructor(ClassWithDestructor) +# 2462| Block 0 +# 2462| v2462_1(void) = EnterFunction : +# 2462| m2462_2(unknown) = AliasedDefinition : +# 2462| m2462_3(unknown) = InitializeNonLocal : +# 2462| m2462_4(unknown) = Chi : total:m2462_2, partial:m2462_3 +# 2462| r2462_5(glval) = VariableAddress[a] : +# 2462| m2462_6(ClassWithDestructor) = InitializeParameter[a] : &:r2462_5 +# 2464| r2464_1(glval) = VariableAddress[b] : +# 2464| r2464_2(glval) = FunctionAddress[operator new] : +# 2464| r2464_3(unsigned long) = Constant[1] : +# 2464| r2464_4(void *) = Call[operator new] : func:r2464_2, 0:r2464_3 +# 2464| m2464_5(unknown) = ^CallSideEffect : ~m2462_4 +# 2464| m2464_6(unknown) = Chi : total:m2462_4, partial:m2464_5 +# 2464| m2464_7(unknown) = ^InitializeDynamicAllocation : &:r2464_4 +# 2464| m2464_8(unknown) = Chi : total:m2464_6, partial:m2464_7 +# 2464| r2464_9(ByValueConstructor *) = Convert : r2464_4 +# 2464| r2464_10(glval) = FunctionAddress[ByValueConstructor] : +# 2464| r2464_11(glval) = VariableAddress[#temp2464:52] : +# 2464| r2464_12(glval) = VariableAddress[a] : +# 2464| r2464_13(ClassWithDestructor) = Load[a] : &:r2464_12, m2462_6 +# 2464| m2464_14(ClassWithDestructor) = Store[#temp2464:52] : &:r2464_11, r2464_13 +# 2464| r2464_15(ClassWithDestructor) = Load[#temp2464:52] : &:r2464_11, m2464_14 +# 2464| v2464_16(void) = Call[ByValueConstructor] : func:r2464_10, this:r2464_9, 0:r2464_15 +# 2464| m2464_17(unknown) = ^CallSideEffect : ~m2464_8 +# 2464| m2464_18(unknown) = Chi : total:m2464_8, partial:m2464_17 +# 2464| m2464_19(ByValueConstructor) = ^IndirectMayWriteSideEffect[-1] : &:r2464_9 +# 2464| m2464_20(unknown) = Chi : total:m2464_18, partial:m2464_19 +# 2464| r2464_21(glval) = CopyValue : r2464_11 +# 2464| r2464_22(glval) = FunctionAddress[~ClassWithDestructor] : +# 2464| v2464_23(void) = Call[~ClassWithDestructor] : func:r2464_22, this:r2464_21 +# 2464| m2464_24(unknown) = ^CallSideEffect : ~m2464_20 +# 2464| m2464_25(unknown) = Chi : total:m2464_20, partial:m2464_24 +# 2464| v2464_26(void) = ^IndirectReadSideEffect[-1] : &:r2464_21, m2464_14 +# 2464| m2464_27(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2464_21 +# 2464| m2464_28(ClassWithDestructor) = Chi : total:m2464_14, partial:m2464_27 +# 2464| m2464_29(ByValueConstructor *) = Store[b] : &:r2464_1, r2464_9 +# 2465| v2465_1(void) = NoOp : +# 2462| v2462_7(void) = ReturnVoid : +# 2462| v2462_8(void) = AliasedUse : ~m2464_25 +# 2462| v2462_9(void) = ExitFunction : -# 2479| void rvalue_conversion_with_destructor::test() -# 2479| Block 0 -# 2479| v2479_1(void) = EnterFunction : -# 2479| m2479_2(unknown) = AliasedDefinition : -# 2479| m2479_3(unknown) = InitializeNonLocal : -# 2479| m2479_4(unknown) = Chi : total:m2479_2, partial:m2479_3 -# 2481| r2481_1(glval) = VariableAddress[a] : -# 2481| r2481_2(glval) = VariableAddress[#temp2481:18] : -# 2481| r2481_3(glval) = FunctionAddress[get] : -# 2481| r2481_4(B) = Call[get] : func:r2481_3 -# 2481| m2481_5(unknown) = ^CallSideEffect : ~m2479_4 -# 2481| m2481_6(unknown) = Chi : total:m2479_4, partial:m2481_5 -# 2481| m2481_7(B) = Store[#temp2481:18] : &:r2481_2, r2481_4 -# 2481| m2481_8(unknown) = Chi : total:m2481_6, partial:m2481_7 -# 2481| r2481_9(glval) = Convert : r2481_2 -# 2481| r2481_10(glval) = FunctionAddress[operator->] : -# 2481| r2481_11(A *) = Call[operator->] : func:r2481_10, this:r2481_9 -# 2481| m2481_12(unknown) = ^CallSideEffect : ~m2481_8 -# 2481| m2481_13(unknown) = Chi : total:m2481_8, partial:m2481_12 -# 2481| v2481_14(void) = ^IndirectReadSideEffect[-1] : &:r2481_9, ~m2481_13 -# 2481| r2481_15(glval) = FieldAddress[a] : r2481_11 -# 2481| r2481_16(glval) = CopyValue : r2481_2 -# 2481| r2481_17(glval) = FunctionAddress[~B] : -# 2481| v2481_18(void) = Call[~B] : func:r2481_17, this:r2481_16 -# 2481| m2481_19(unknown) = ^CallSideEffect : ~m2481_13 -# 2481| m2481_20(unknown) = Chi : total:m2481_13, partial:m2481_19 -# 2481| v2481_21(void) = ^IndirectReadSideEffect[-1] : &:r2481_16, ~m2481_20 -# 2481| m2481_22(B) = ^IndirectMayWriteSideEffect[-1] : &:r2481_16 -# 2481| m2481_23(unknown) = Chi : total:m2481_20, partial:m2481_22 -# 2481| r2481_24(unsigned int) = Load[?] : &:r2481_15, ~m2481_23 -# 2481| m2481_25(unsigned int) = Store[a] : &:r2481_1, r2481_24 -# 2482| v2482_1(void) = NoOp : -# 2479| v2479_5(void) = ReturnVoid : -# 2479| v2479_6(void) = AliasedUse : ~m2481_20 -# 2479| v2479_7(void) = ExitFunction : +# 2481| void rvalue_conversion_with_destructor::test() +# 2481| Block 0 +# 2481| v2481_1(void) = EnterFunction : +# 2481| m2481_2(unknown) = AliasedDefinition : +# 2481| m2481_3(unknown) = InitializeNonLocal : +# 2481| m2481_4(unknown) = Chi : total:m2481_2, partial:m2481_3 +# 2483| r2483_1(glval) = VariableAddress[a] : +# 2483| r2483_2(glval) = VariableAddress[#temp2483:18] : +# 2483| r2483_3(glval) = FunctionAddress[get] : +# 2483| r2483_4(B) = Call[get] : func:r2483_3 +# 2483| m2483_5(unknown) = ^CallSideEffect : ~m2481_4 +# 2483| m2483_6(unknown) = Chi : total:m2481_4, partial:m2483_5 +# 2483| m2483_7(B) = Store[#temp2483:18] : &:r2483_2, r2483_4 +# 2483| m2483_8(unknown) = Chi : total:m2483_6, partial:m2483_7 +# 2483| r2483_9(glval) = Convert : r2483_2 +# 2483| r2483_10(glval) = FunctionAddress[operator->] : +# 2483| r2483_11(A *) = Call[operator->] : func:r2483_10, this:r2483_9 +# 2483| m2483_12(unknown) = ^CallSideEffect : ~m2483_8 +# 2483| m2483_13(unknown) = Chi : total:m2483_8, partial:m2483_12 +# 2483| v2483_14(void) = ^IndirectReadSideEffect[-1] : &:r2483_9, ~m2483_13 +# 2483| r2483_15(glval) = FieldAddress[a] : r2483_11 +# 2483| r2483_16(glval) = CopyValue : r2483_2 +# 2483| r2483_17(glval) = FunctionAddress[~B] : +# 2483| v2483_18(void) = Call[~B] : func:r2483_17, this:r2483_16 +# 2483| m2483_19(unknown) = ^CallSideEffect : ~m2483_13 +# 2483| m2483_20(unknown) = Chi : total:m2483_13, partial:m2483_19 +# 2483| v2483_21(void) = ^IndirectReadSideEffect[-1] : &:r2483_16, ~m2483_20 +# 2483| m2483_22(B) = ^IndirectMayWriteSideEffect[-1] : &:r2483_16 +# 2483| m2483_23(unknown) = Chi : total:m2483_20, partial:m2483_22 +# 2483| r2483_24(unsigned int) = Load[?] : &:r2483_15, ~m2483_23 +# 2483| m2483_25(unsigned int) = Store[a] : &:r2483_1, r2483_24 +# 2484| v2484_1(void) = NoOp : +# 2481| v2481_5(void) = ReturnVoid : +# 2481| v2481_6(void) = AliasedUse : ~m2483_20 +# 2481| v2481_7(void) = ExitFunction : -# 2485| void destructor_without_block(bool) -# 2485| Block 0 -# 2485| v2485_1(void) = EnterFunction : -# 2485| m2485_2(unknown) = AliasedDefinition : -# 2485| m2485_3(unknown) = InitializeNonLocal : -# 2485| m2485_4(unknown) = Chi : total:m2485_2, partial:m2485_3 -# 2485| r2485_5(glval) = VariableAddress[b] : -# 2485| m2485_6(bool) = InitializeParameter[b] : &:r2485_5 -# 2487| r2487_1(glval) = VariableAddress[b] : -# 2487| r2487_2(bool) = Load[b] : &:r2487_1, m2485_6 -# 2487| v2487_3(void) = ConditionalBranch : r2487_2 +# 2487| void destructor_without_block(bool) +# 2487| Block 0 +# 2487| v2487_1(void) = EnterFunction : +# 2487| m2487_2(unknown) = AliasedDefinition : +# 2487| m2487_3(unknown) = InitializeNonLocal : +# 2487| m2487_4(unknown) = Chi : total:m2487_2, partial:m2487_3 +# 2487| r2487_5(glval) = VariableAddress[b] : +# 2487| m2487_6(bool) = InitializeParameter[b] : &:r2487_5 +# 2489| r2489_1(glval) = VariableAddress[b] : +# 2489| r2489_2(bool) = Load[b] : &:r2489_1, m2487_6 +# 2489| v2489_3(void) = ConditionalBranch : r2489_2 #-----| False -> Block 2 #-----| True -> Block 1 -# 2488| Block 1 -# 2488| r2488_1(glval) = VariableAddress[c] : -# 2488| m2488_2(ClassWithDestructor) = Uninitialized[c] : &:r2488_1 -# 2488| r2488_3(glval) = FunctionAddress[ClassWithDestructor] : -# 2488| v2488_4(void) = Call[ClassWithDestructor] : func:r2488_3, this:r2488_1 -# 2488| m2488_5(unknown) = ^CallSideEffect : ~m2485_4 -# 2488| m2488_6(unknown) = Chi : total:m2485_4, partial:m2488_5 -# 2488| m2488_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2488_1 -# 2488| m2488_8(ClassWithDestructor) = Chi : total:m2488_2, partial:m2488_7 +# 2490| Block 1 +# 2490| r2490_1(glval) = VariableAddress[c] : +# 2490| m2490_2(ClassWithDestructor) = Uninitialized[c] : &:r2490_1 +# 2490| r2490_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2490| v2490_4(void) = Call[ClassWithDestructor] : func:r2490_3, this:r2490_1 +# 2490| m2490_5(unknown) = ^CallSideEffect : ~m2487_4 +# 2490| m2490_6(unknown) = Chi : total:m2487_4, partial:m2490_5 +# 2490| m2490_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2490_1 +# 2490| m2490_8(ClassWithDestructor) = Chi : total:m2490_2, partial:m2490_7 #-----| r0_1(glval) = VariableAddress[c] : #-----| r0_2(glval) = FunctionAddress[~ClassWithDestructor] : #-----| v0_3(void) = Call[~ClassWithDestructor] : func:r0_2, this:r0_1 -#-----| m0_4(unknown) = ^CallSideEffect : ~m2488_6 -#-----| m0_5(unknown) = Chi : total:m2488_6, partial:m0_4 -#-----| v0_6(void) = ^IndirectReadSideEffect[-1] : &:r0_1, m2488_8 +#-----| m0_4(unknown) = ^CallSideEffect : ~m2490_6 +#-----| m0_5(unknown) = Chi : total:m2490_6, partial:m0_4 +#-----| v0_6(void) = ^IndirectReadSideEffect[-1] : &:r0_1, m2490_8 #-----| m0_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r0_1 -#-----| m0_8(ClassWithDestructor) = Chi : total:m2488_8, partial:m0_7 +#-----| m0_8(ClassWithDestructor) = Chi : total:m2490_8, partial:m0_7 #-----| Goto -> Block 2 -# 2490| Block 2 -# 2490| m2490_1(unknown) = Phi : from 0:~m2485_4, from 1:~m0_5 -# 2490| r2490_2(glval) = VariableAddress[b] : -# 2490| r2490_3(bool) = Load[b] : &:r2490_2, m2485_6 -# 2490| v2490_4(void) = ConditionalBranch : r2490_3 +# 2492| Block 2 +# 2492| m2492_1(unknown) = Phi : from 0:~m2487_4, from 1:~m0_5 +# 2492| r2492_2(glval) = VariableAddress[b] : +# 2492| r2492_3(bool) = Load[b] : &:r2492_2, m2487_6 +# 2492| v2492_4(void) = ConditionalBranch : r2492_3 #-----| False -> Block 4 #-----| True -> Block 3 -# 2491| Block 3 -# 2491| r2491_1(glval) = VariableAddress[d] : -# 2491| m2491_2(ClassWithDestructor) = Uninitialized[d] : &:r2491_1 -# 2491| r2491_3(glval) = FunctionAddress[ClassWithDestructor] : -# 2491| v2491_4(void) = Call[ClassWithDestructor] : func:r2491_3, this:r2491_1 -# 2491| m2491_5(unknown) = ^CallSideEffect : ~m2490_1 -# 2491| m2491_6(unknown) = Chi : total:m2490_1, partial:m2491_5 -# 2491| m2491_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2491_1 -# 2491| m2491_8(ClassWithDestructor) = Chi : total:m2491_2, partial:m2491_7 +# 2493| Block 3 +# 2493| r2493_1(glval) = VariableAddress[d] : +# 2493| m2493_2(ClassWithDestructor) = Uninitialized[d] : &:r2493_1 +# 2493| r2493_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2493| v2493_4(void) = Call[ClassWithDestructor] : func:r2493_3, this:r2493_1 +# 2493| m2493_5(unknown) = ^CallSideEffect : ~m2492_1 +# 2493| m2493_6(unknown) = Chi : total:m2492_1, partial:m2493_5 +# 2493| m2493_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2493_1 +# 2493| m2493_8(ClassWithDestructor) = Chi : total:m2493_2, partial:m2493_7 #-----| r0_9(glval) = VariableAddress[d] : #-----| r0_10(glval) = FunctionAddress[~ClassWithDestructor] : #-----| v0_11(void) = Call[~ClassWithDestructor] : func:r0_10, this:r0_9 -#-----| m0_12(unknown) = ^CallSideEffect : ~m2491_6 -#-----| m0_13(unknown) = Chi : total:m2491_6, partial:m0_12 -#-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_9, m2491_8 +#-----| m0_12(unknown) = ^CallSideEffect : ~m2493_6 +#-----| m0_13(unknown) = Chi : total:m2493_6, partial:m0_12 +#-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_9, m2493_8 #-----| m0_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r0_9 -#-----| m0_16(ClassWithDestructor) = Chi : total:m2491_8, partial:m0_15 +#-----| m0_16(ClassWithDestructor) = Chi : total:m2493_8, partial:m0_15 #-----| Goto -> Block 5 -# 2493| Block 4 -# 2493| r2493_1(glval) = VariableAddress[e] : -# 2493| m2493_2(ClassWithDestructor) = Uninitialized[e] : &:r2493_1 -# 2493| r2493_3(glval) = FunctionAddress[ClassWithDestructor] : -# 2493| v2493_4(void) = Call[ClassWithDestructor] : func:r2493_3, this:r2493_1 -# 2493| m2493_5(unknown) = ^CallSideEffect : ~m2490_1 -# 2493| m2493_6(unknown) = Chi : total:m2490_1, partial:m2493_5 -# 2493| m2493_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2493_1 -# 2493| m2493_8(ClassWithDestructor) = Chi : total:m2493_2, partial:m2493_7 +# 2495| Block 4 +# 2495| r2495_1(glval) = VariableAddress[e] : +# 2495| m2495_2(ClassWithDestructor) = Uninitialized[e] : &:r2495_1 +# 2495| r2495_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2495| v2495_4(void) = Call[ClassWithDestructor] : func:r2495_3, this:r2495_1 +# 2495| m2495_5(unknown) = ^CallSideEffect : ~m2492_1 +# 2495| m2495_6(unknown) = Chi : total:m2492_1, partial:m2495_5 +# 2495| m2495_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2495_1 +# 2495| m2495_8(ClassWithDestructor) = Chi : total:m2495_2, partial:m2495_7 #-----| r0_17(glval) = VariableAddress[e] : #-----| r0_18(glval) = FunctionAddress[~ClassWithDestructor] : #-----| v0_19(void) = Call[~ClassWithDestructor] : func:r0_18, this:r0_17 -#-----| m0_20(unknown) = ^CallSideEffect : ~m2493_6 -#-----| m0_21(unknown) = Chi : total:m2493_6, partial:m0_20 -#-----| v0_22(void) = ^IndirectReadSideEffect[-1] : &:r0_17, m2493_8 +#-----| m0_20(unknown) = ^CallSideEffect : ~m2495_6 +#-----| m0_21(unknown) = Chi : total:m2495_6, partial:m0_20 +#-----| v0_22(void) = ^IndirectReadSideEffect[-1] : &:r0_17, m2495_8 #-----| m0_23(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r0_17 -#-----| m0_24(ClassWithDestructor) = Chi : total:m2493_8, partial:m0_23 +#-----| m0_24(ClassWithDestructor) = Chi : total:m2495_8, partial:m0_23 #-----| Goto -> Block 5 -# 2495| Block 5 -# 2495| m2495_1(unknown) = Phi : from 3:~m0_13, from 4:~m0_21, from 6:~m0_29 -# 2495| r2495_2(glval) = VariableAddress[b] : -# 2495| r2495_3(bool) = Load[b] : &:r2495_2, m2485_6 -# 2495| v2495_4(void) = ConditionalBranch : r2495_3 +# 2497| Block 5 +# 2497| m2497_1(unknown) = Phi : from 3:~m0_13, from 4:~m0_21, from 6:~m0_29 +# 2497| r2497_2(glval) = VariableAddress[b] : +# 2497| r2497_3(bool) = Load[b] : &:r2497_2, m2487_6 +# 2497| v2497_4(void) = ConditionalBranch : r2497_3 #-----| False -> Block 7 #-----| True -> Block 6 -# 2496| Block 6 -# 2496| r2496_1(glval) = VariableAddress[f] : -# 2496| m2496_2(ClassWithDestructor) = Uninitialized[f] : &:r2496_1 -# 2496| r2496_3(glval) = FunctionAddress[ClassWithDestructor] : -# 2496| v2496_4(void) = Call[ClassWithDestructor] : func:r2496_3, this:r2496_1 -# 2496| m2496_5(unknown) = ^CallSideEffect : ~m2495_1 -# 2496| m2496_6(unknown) = Chi : total:m2495_1, partial:m2496_5 -# 2496| m2496_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2496_1 -# 2496| m2496_8(ClassWithDestructor) = Chi : total:m2496_2, partial:m2496_7 +# 2498| Block 6 +# 2498| r2498_1(glval) = VariableAddress[f] : +# 2498| m2498_2(ClassWithDestructor) = Uninitialized[f] : &:r2498_1 +# 2498| r2498_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2498| v2498_4(void) = Call[ClassWithDestructor] : func:r2498_3, this:r2498_1 +# 2498| m2498_5(unknown) = ^CallSideEffect : ~m2497_1 +# 2498| m2498_6(unknown) = Chi : total:m2497_1, partial:m2498_5 +# 2498| m2498_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2498_1 +# 2498| m2498_8(ClassWithDestructor) = Chi : total:m2498_2, partial:m2498_7 #-----| r0_25(glval) = VariableAddress[f] : #-----| r0_26(glval) = FunctionAddress[~ClassWithDestructor] : #-----| v0_27(void) = Call[~ClassWithDestructor] : func:r0_26, this:r0_25 -#-----| m0_28(unknown) = ^CallSideEffect : ~m2496_6 -#-----| m0_29(unknown) = Chi : total:m2496_6, partial:m0_28 -#-----| v0_30(void) = ^IndirectReadSideEffect[-1] : &:r0_25, m2496_8 +#-----| m0_28(unknown) = ^CallSideEffect : ~m2498_6 +#-----| m0_29(unknown) = Chi : total:m2498_6, partial:m0_28 +#-----| v0_30(void) = ^IndirectReadSideEffect[-1] : &:r0_25, m2498_8 #-----| m0_31(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r0_25 -#-----| m0_32(ClassWithDestructor) = Chi : total:m2496_8, partial:m0_31 +#-----| m0_32(ClassWithDestructor) = Chi : total:m2498_8, partial:m0_31 #-----| Goto (back edge) -> Block 5 -# 2498| Block 7 -# 2498| r2498_1(glval) = VariableAddress[i] : -# 2498| r2498_2(int) = Constant[0] : -# 2498| m2498_3(int) = Store[i] : &:r2498_1, r2498_2 +# 2500| Block 7 +# 2500| r2500_1(glval) = VariableAddress[i] : +# 2500| r2500_2(int) = Constant[0] : +# 2500| m2500_3(int) = Store[i] : &:r2500_1, r2500_2 #-----| Goto -> Block 8 -# 2498| Block 8 -# 2498| m2498_4(unknown) = Phi : from 7:~m2495_1, from 9:~m0_37 -# 2498| m2498_5(int) = Phi : from 7:m2498_3, from 9:m2498_15 -# 2498| r2498_6(glval) = VariableAddress[i] : -# 2498| r2498_7(int) = Load[i] : &:r2498_6, m2498_5 -# 2498| r2498_8(int) = Constant[42] : -# 2498| r2498_9(bool) = CompareLT : r2498_7, r2498_8 -# 2498| v2498_10(void) = ConditionalBranch : r2498_9 +# 2500| Block 8 +# 2500| m2500_4(unknown) = Phi : from 7:~m2497_1, from 9:~m0_37 +# 2500| m2500_5(int) = Phi : from 7:m2500_3, from 9:m2500_15 +# 2500| r2500_6(glval) = VariableAddress[i] : +# 2500| r2500_7(int) = Load[i] : &:r2500_6, m2500_5 +# 2500| r2500_8(int) = Constant[42] : +# 2500| r2500_9(bool) = CompareLT : r2500_7, r2500_8 +# 2500| v2500_10(void) = ConditionalBranch : r2500_9 #-----| False -> Block 10 #-----| True -> Block 9 -# 2499| Block 9 -# 2499| r2499_1(glval) = VariableAddress[g] : -# 2499| m2499_2(ClassWithDestructor) = Uninitialized[g] : &:r2499_1 -# 2499| r2499_3(glval) = FunctionAddress[ClassWithDestructor] : -# 2499| v2499_4(void) = Call[ClassWithDestructor] : func:r2499_3, this:r2499_1 -# 2499| m2499_5(unknown) = ^CallSideEffect : ~m2498_4 -# 2499| m2499_6(unknown) = Chi : total:m2498_4, partial:m2499_5 -# 2499| m2499_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2499_1 -# 2499| m2499_8(ClassWithDestructor) = Chi : total:m2499_2, partial:m2499_7 +# 2501| Block 9 +# 2501| r2501_1(glval) = VariableAddress[g] : +# 2501| m2501_2(ClassWithDestructor) = Uninitialized[g] : &:r2501_1 +# 2501| r2501_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2501| v2501_4(void) = Call[ClassWithDestructor] : func:r2501_3, this:r2501_1 +# 2501| m2501_5(unknown) = ^CallSideEffect : ~m2500_4 +# 2501| m2501_6(unknown) = Chi : total:m2500_4, partial:m2501_5 +# 2501| m2501_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2501_1 +# 2501| m2501_8(ClassWithDestructor) = Chi : total:m2501_2, partial:m2501_7 #-----| r0_33(glval) = VariableAddress[g] : #-----| r0_34(glval) = FunctionAddress[~ClassWithDestructor] : #-----| v0_35(void) = Call[~ClassWithDestructor] : func:r0_34, this:r0_33 -#-----| m0_36(unknown) = ^CallSideEffect : ~m2499_6 -#-----| m0_37(unknown) = Chi : total:m2499_6, partial:m0_36 -#-----| v0_38(void) = ^IndirectReadSideEffect[-1] : &:r0_33, m2499_8 +#-----| m0_36(unknown) = ^CallSideEffect : ~m2501_6 +#-----| m0_37(unknown) = Chi : total:m2501_6, partial:m0_36 +#-----| v0_38(void) = ^IndirectReadSideEffect[-1] : &:r0_33, m2501_8 #-----| m0_39(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r0_33 -#-----| m0_40(ClassWithDestructor) = Chi : total:m2499_8, partial:m0_39 -# 2498| r2498_11(glval) = VariableAddress[i] : -# 2498| r2498_12(int) = Load[i] : &:r2498_11, m2498_5 -# 2498| r2498_13(int) = Constant[1] : -# 2498| r2498_14(int) = Add : r2498_12, r2498_13 -# 2498| m2498_15(int) = Store[i] : &:r2498_11, r2498_14 +#-----| m0_40(ClassWithDestructor) = Chi : total:m2501_8, partial:m0_39 +# 2500| r2500_11(glval) = VariableAddress[i] : +# 2500| r2500_12(int) = Load[i] : &:r2500_11, m2500_5 +# 2500| r2500_13(int) = Constant[1] : +# 2500| r2500_14(int) = Add : r2500_12, r2500_13 +# 2500| m2500_15(int) = Store[i] : &:r2500_11, r2500_14 #-----| Goto (back edge) -> Block 8 -# 2500| Block 10 -# 2500| v2500_1(void) = NoOp : -# 2485| v2485_7(void) = ReturnVoid : -# 2485| v2485_8(void) = AliasedUse : ~m2498_4 -# 2485| v2485_9(void) = ExitFunction : +# 2502| Block 10 +# 2502| v2502_1(void) = NoOp : +# 2487| v2487_7(void) = ReturnVoid : +# 2487| v2487_8(void) = AliasedUse : ~m2500_4 +# 2487| v2487_9(void) = ExitFunction : -# 2502| void destruction_in_switch_1(int) -# 2502| Block 0 -# 2502| v2502_1(void) = EnterFunction : -# 2502| m2502_2(unknown) = AliasedDefinition : -# 2502| m2502_3(unknown) = InitializeNonLocal : -# 2502| m2502_4(unknown) = Chi : total:m2502_2, partial:m2502_3 -# 2502| r2502_5(glval) = VariableAddress[c] : -# 2502| m2502_6(int) = InitializeParameter[c] : &:r2502_5 -# 2503| r2503_1(glval) = VariableAddress[c] : -# 2503| r2503_2(int) = Load[c] : &:r2503_1, m2502_6 -# 2503| v2503_3(void) = Switch : r2503_2 +# 2504| void destruction_in_switch_1(int) +# 2504| Block 0 +# 2504| v2504_1(void) = EnterFunction : +# 2504| m2504_2(unknown) = AliasedDefinition : +# 2504| m2504_3(unknown) = InitializeNonLocal : +# 2504| m2504_4(unknown) = Chi : total:m2504_2, partial:m2504_3 +# 2504| r2504_5(glval) = VariableAddress[c] : +# 2504| m2504_6(int) = InitializeParameter[c] : &:r2504_5 +# 2505| r2505_1(glval) = VariableAddress[c] : +# 2505| r2505_2(int) = Load[c] : &:r2505_1, m2504_6 +# 2505| v2505_3(void) = Switch : r2505_2 #-----| Case[0] -> Block 1 #-----| Default -> Block 2 -# 2504| Block 1 -# 2504| v2504_1(void) = NoOp : -# 2505| r2505_1(glval) = VariableAddress[x] : -# 2505| m2505_2(ClassWithDestructor) = Uninitialized[x] : &:r2505_1 -# 2505| r2505_3(glval) = FunctionAddress[ClassWithDestructor] : -# 2505| v2505_4(void) = Call[ClassWithDestructor] : func:r2505_3, this:r2505_1 -# 2505| m2505_5(unknown) = ^CallSideEffect : ~m2502_4 -# 2505| m2505_6(unknown) = Chi : total:m2502_4, partial:m2505_5 -# 2505| m2505_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2505_1 -# 2505| m2505_8(ClassWithDestructor) = Chi : total:m2505_2, partial:m2505_7 -# 2507| r2507_1(glval) = VariableAddress[x] : -# 2507| r2507_2(glval) = FunctionAddress[~ClassWithDestructor] : -# 2507| v2507_3(void) = Call[~ClassWithDestructor] : func:r2507_2, this:r2507_1 -# 2507| m2507_4(unknown) = ^CallSideEffect : ~m2505_6 -# 2507| m2507_5(unknown) = Chi : total:m2505_6, partial:m2507_4 -# 2507| v2507_6(void) = ^IndirectReadSideEffect[-1] : &:r2507_1, m2505_8 -# 2507| m2507_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2507_1 -# 2507| m2507_8(ClassWithDestructor) = Chi : total:m2505_8, partial:m2507_7 +# 2506| Block 1 # 2506| v2506_1(void) = NoOp : +# 2507| r2507_1(glval) = VariableAddress[x] : +# 2507| m2507_2(ClassWithDestructor) = Uninitialized[x] : &:r2507_1 +# 2507| r2507_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2507| v2507_4(void) = Call[ClassWithDestructor] : func:r2507_3, this:r2507_1 +# 2507| m2507_5(unknown) = ^CallSideEffect : ~m2504_4 +# 2507| m2507_6(unknown) = Chi : total:m2504_4, partial:m2507_5 +# 2507| m2507_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2507_1 +# 2507| m2507_8(ClassWithDestructor) = Chi : total:m2507_2, partial:m2507_7 +# 2509| r2509_1(glval) = VariableAddress[x] : +# 2509| r2509_2(glval) = FunctionAddress[~ClassWithDestructor] : +# 2509| v2509_3(void) = Call[~ClassWithDestructor] : func:r2509_2, this:r2509_1 +# 2509| m2509_4(unknown) = ^CallSideEffect : ~m2507_6 +# 2509| m2509_5(unknown) = Chi : total:m2507_6, partial:m2509_4 +# 2509| v2509_6(void) = ^IndirectReadSideEffect[-1] : &:r2509_1, m2507_8 +# 2509| m2509_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2509_1 +# 2509| m2509_8(ClassWithDestructor) = Chi : total:m2507_8, partial:m2509_7 +# 2508| v2508_1(void) = NoOp : #-----| Goto -> Block 2 -# 2508| Block 2 -# 2508| m2508_1(unknown) = Phi : from 0:~m2502_4, from 1:~m2507_5 -# 2508| v2508_2(void) = NoOp : -# 2509| v2509_1(void) = NoOp : -# 2502| v2502_7(void) = ReturnVoid : -# 2502| v2502_8(void) = AliasedUse : ~m2508_1 -# 2502| v2502_9(void) = ExitFunction : +# 2510| Block 2 +# 2510| m2510_1(unknown) = Phi : from 0:~m2504_4, from 1:~m2509_5 +# 2510| v2510_2(void) = NoOp : +# 2511| v2511_1(void) = NoOp : +# 2504| v2504_7(void) = ReturnVoid : +# 2504| v2504_8(void) = AliasedUse : ~m2510_1 +# 2504| v2504_9(void) = ExitFunction : -# 2511| void destruction_in_switch_2(int) -# 2511| Block 0 -# 2511| v2511_1(void) = EnterFunction : -# 2511| m2511_2(unknown) = AliasedDefinition : -# 2511| m2511_3(unknown) = InitializeNonLocal : -# 2511| m2511_4(unknown) = Chi : total:m2511_2, partial:m2511_3 -# 2511| r2511_5(glval) = VariableAddress[c] : -# 2511| m2511_6(int) = InitializeParameter[c] : &:r2511_5 -# 2512| r2512_1(glval) = VariableAddress[y] : -# 2512| m2512_2(ClassWithDestructor) = Uninitialized[y] : &:r2512_1 -# 2512| r2512_3(glval) = FunctionAddress[ClassWithDestructor] : -# 2512| v2512_4(void) = Call[ClassWithDestructor] : func:r2512_3, this:r2512_1 -# 2512| m2512_5(unknown) = ^CallSideEffect : ~m2511_4 -# 2512| m2512_6(unknown) = Chi : total:m2511_4, partial:m2512_5 -# 2512| m2512_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2512_1 -# 2512| m2512_8(ClassWithDestructor) = Chi : total:m2512_2, partial:m2512_7 -# 2512| r2512_9(glval) = VariableAddress[c] : -# 2512| r2512_10(int) = Load[c] : &:r2512_9, m2511_6 -# 2512| v2512_11(void) = Switch : r2512_10 +# 2513| void destruction_in_switch_2(int) +# 2513| Block 0 +# 2513| v2513_1(void) = EnterFunction : +# 2513| m2513_2(unknown) = AliasedDefinition : +# 2513| m2513_3(unknown) = InitializeNonLocal : +# 2513| m2513_4(unknown) = Chi : total:m2513_2, partial:m2513_3 +# 2513| r2513_5(glval) = VariableAddress[c] : +# 2513| m2513_6(int) = InitializeParameter[c] : &:r2513_5 +# 2514| r2514_1(glval) = VariableAddress[y] : +# 2514| m2514_2(ClassWithDestructor) = Uninitialized[y] : &:r2514_1 +# 2514| r2514_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2514| v2514_4(void) = Call[ClassWithDestructor] : func:r2514_3, this:r2514_1 +# 2514| m2514_5(unknown) = ^CallSideEffect : ~m2513_4 +# 2514| m2514_6(unknown) = Chi : total:m2513_4, partial:m2514_5 +# 2514| m2514_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2514_1 +# 2514| m2514_8(ClassWithDestructor) = Chi : total:m2514_2, partial:m2514_7 +# 2514| r2514_9(glval) = VariableAddress[c] : +# 2514| r2514_10(int) = Load[c] : &:r2514_9, m2513_6 +# 2514| v2514_11(void) = Switch : r2514_10 #-----| Case[0] -> Block 1 #-----| Default -> Block 2 -# 2513| Block 1 -# 2513| v2513_1(void) = NoOp : -# 2519| r2519_1(glval) = VariableAddress[y] : -# 2519| r2519_2(glval) = FunctionAddress[~ClassWithDestructor] : -# 2519| v2519_3(void) = Call[~ClassWithDestructor] : func:r2519_2, this:r2519_1 -# 2519| m2519_4(unknown) = ^CallSideEffect : ~m2512_6 -# 2519| m2519_5(unknown) = Chi : total:m2512_6, partial:m2519_4 -# 2519| v2519_6(void) = ^IndirectReadSideEffect[-1] : &:r2519_1, m2512_8 -# 2519| m2519_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2519_1 -# 2519| m2519_8(ClassWithDestructor) = Chi : total:m2512_8, partial:m2519_7 -# 2514| v2514_1(void) = NoOp : -#-----| Goto -> Block 3 - -# 2516| Block 2 +# 2515| Block 1 +# 2515| v2515_1(void) = NoOp : +# 2521| r2521_1(glval) = VariableAddress[y] : +# 2521| r2521_2(glval) = FunctionAddress[~ClassWithDestructor] : +# 2521| v2521_3(void) = Call[~ClassWithDestructor] : func:r2521_2, this:r2521_1 +# 2521| m2521_4(unknown) = ^CallSideEffect : ~m2514_6 +# 2521| m2521_5(unknown) = Chi : total:m2514_6, partial:m2521_4 +# 2521| v2521_6(void) = ^IndirectReadSideEffect[-1] : &:r2521_1, m2514_8 +# 2521| m2521_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2521_1 +# 2521| m2521_8(ClassWithDestructor) = Chi : total:m2514_8, partial:m2521_7 # 2516| v2516_1(void) = NoOp : -# 2519| r2519_9(glval) = VariableAddress[y] : -# 2519| r2519_10(glval) = FunctionAddress[~ClassWithDestructor] : -# 2519| v2519_11(void) = Call[~ClassWithDestructor] : func:r2519_10, this:r2519_9 -# 2519| m2519_12(unknown) = ^CallSideEffect : ~m2512_6 -# 2519| m2519_13(unknown) = Chi : total:m2512_6, partial:m2519_12 -# 2519| v2519_14(void) = ^IndirectReadSideEffect[-1] : &:r2519_9, m2512_8 -# 2519| m2519_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2519_9 -# 2519| m2519_16(ClassWithDestructor) = Chi : total:m2512_8, partial:m2519_15 -# 2517| v2517_1(void) = NoOp : #-----| Goto -> Block 3 -# 2519| Block 3 -# 2519| m2519_17(unknown) = Phi : from 1:~m2519_5, from 2:~m2519_13 -# 2519| v2519_18(void) = NoOp : -# 2520| v2520_1(void) = NoOp : -# 2511| v2511_7(void) = ReturnVoid : -# 2511| v2511_8(void) = AliasedUse : ~m2519_17 -# 2511| v2511_9(void) = ExitFunction : +# 2518| Block 2 +# 2518| v2518_1(void) = NoOp : +# 2521| r2521_9(glval) = VariableAddress[y] : +# 2521| r2521_10(glval) = FunctionAddress[~ClassWithDestructor] : +# 2521| v2521_11(void) = Call[~ClassWithDestructor] : func:r2521_10, this:r2521_9 +# 2521| m2521_12(unknown) = ^CallSideEffect : ~m2514_6 +# 2521| m2521_13(unknown) = Chi : total:m2514_6, partial:m2521_12 +# 2521| v2521_14(void) = ^IndirectReadSideEffect[-1] : &:r2521_9, m2514_8 +# 2521| m2521_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2521_9 +# 2521| m2521_16(ClassWithDestructor) = Chi : total:m2514_8, partial:m2521_15 +# 2519| v2519_1(void) = NoOp : +#-----| Goto -> Block 3 -# 2522| void destruction_in_switch_3(int) -# 2522| Block 0 -# 2522| v2522_1(void) = EnterFunction : -# 2522| m2522_2(unknown) = AliasedDefinition : -# 2522| m2522_3(unknown) = InitializeNonLocal : -# 2522| m2522_4(unknown) = Chi : total:m2522_2, partial:m2522_3 -# 2522| r2522_5(glval) = VariableAddress[c] : -# 2522| m2522_6(int) = InitializeParameter[c] : &:r2522_5 -# 2523| r2523_1(glval) = VariableAddress[y] : -# 2523| m2523_2(ClassWithDestructor) = Uninitialized[y] : &:r2523_1 -# 2523| r2523_3(glval) = FunctionAddress[ClassWithDestructor] : -# 2523| v2523_4(void) = Call[ClassWithDestructor] : func:r2523_3, this:r2523_1 -# 2523| m2523_5(unknown) = ^CallSideEffect : ~m2522_4 -# 2523| m2523_6(unknown) = Chi : total:m2522_4, partial:m2523_5 -# 2523| m2523_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2523_1 -# 2523| m2523_8(ClassWithDestructor) = Chi : total:m2523_2, partial:m2523_7 -# 2523| r2523_9(glval) = VariableAddress[c] : -# 2523| r2523_10(int) = Load[c] : &:r2523_9, m2522_6 -# 2523| v2523_11(void) = Switch : r2523_10 +# 2521| Block 3 +# 2521| m2521_17(unknown) = Phi : from 1:~m2521_5, from 2:~m2521_13 +# 2521| v2521_18(void) = NoOp : +# 2522| v2522_1(void) = NoOp : +# 2513| v2513_7(void) = ReturnVoid : +# 2513| v2513_8(void) = AliasedUse : ~m2521_17 +# 2513| v2513_9(void) = ExitFunction : + +# 2524| void destruction_in_switch_3(int) +# 2524| Block 0 +# 2524| v2524_1(void) = EnterFunction : +# 2524| m2524_2(unknown) = AliasedDefinition : +# 2524| m2524_3(unknown) = InitializeNonLocal : +# 2524| m2524_4(unknown) = Chi : total:m2524_2, partial:m2524_3 +# 2524| r2524_5(glval) = VariableAddress[c] : +# 2524| m2524_6(int) = InitializeParameter[c] : &:r2524_5 +# 2525| r2525_1(glval) = VariableAddress[y] : +# 2525| m2525_2(ClassWithDestructor) = Uninitialized[y] : &:r2525_1 +# 2525| r2525_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2525| v2525_4(void) = Call[ClassWithDestructor] : func:r2525_3, this:r2525_1 +# 2525| m2525_5(unknown) = ^CallSideEffect : ~m2524_4 +# 2525| m2525_6(unknown) = Chi : total:m2524_4, partial:m2525_5 +# 2525| m2525_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2525_1 +# 2525| m2525_8(ClassWithDestructor) = Chi : total:m2525_2, partial:m2525_7 +# 2525| r2525_9(glval) = VariableAddress[c] : +# 2525| r2525_10(int) = Load[c] : &:r2525_9, m2524_6 +# 2525| v2525_11(void) = Switch : r2525_10 #-----| Case[0] -> Block 1 #-----| Default -> Block 2 -# 2524| Block 1 -# 2524| v2524_1(void) = NoOp : -# 2525| r2525_1(glval) = VariableAddress[x] : -# 2525| m2525_2(ClassWithDestructor) = Uninitialized[x] : &:r2525_1 -# 2525| r2525_3(glval) = FunctionAddress[ClassWithDestructor] : -# 2525| v2525_4(void) = Call[ClassWithDestructor] : func:r2525_3, this:r2525_1 -# 2525| m2525_5(unknown) = ^CallSideEffect : ~m2523_6 -# 2525| m2525_6(unknown) = Chi : total:m2523_6, partial:m2525_5 -# 2525| m2525_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2525_1 -# 2525| m2525_8(ClassWithDestructor) = Chi : total:m2525_2, partial:m2525_7 -# 2527| r2527_1(glval) = VariableAddress[x] : -# 2527| r2527_2(glval) = FunctionAddress[~ClassWithDestructor] : -# 2527| v2527_3(void) = Call[~ClassWithDestructor] : func:r2527_2, this:r2527_1 -# 2527| m2527_4(unknown) = ^CallSideEffect : ~m2525_6 -# 2527| m2527_5(unknown) = Chi : total:m2525_6, partial:m2527_4 -# 2527| v2527_6(void) = ^IndirectReadSideEffect[-1] : &:r2527_1, m2525_8 -# 2527| m2527_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2527_1 -# 2527| m2527_8(ClassWithDestructor) = Chi : total:m2525_8, partial:m2527_7 -# 2531| r2531_1(glval) = VariableAddress[y] : -# 2531| r2531_2(glval) = FunctionAddress[~ClassWithDestructor] : -# 2531| v2531_3(void) = Call[~ClassWithDestructor] : func:r2531_2, this:r2531_1 -# 2531| m2531_4(unknown) = ^CallSideEffect : ~m2527_5 -# 2531| m2531_5(unknown) = Chi : total:m2527_5, partial:m2531_4 -# 2531| v2531_6(void) = ^IndirectReadSideEffect[-1] : &:r2531_1, m2523_8 -# 2531| m2531_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2531_1 -# 2531| m2531_8(ClassWithDestructor) = Chi : total:m2523_8, partial:m2531_7 +# 2526| Block 1 # 2526| v2526_1(void) = NoOp : -#-----| Goto -> Block 3 - -# 2528| Block 2 +# 2527| r2527_1(glval) = VariableAddress[x] : +# 2527| m2527_2(ClassWithDestructor) = Uninitialized[x] : &:r2527_1 +# 2527| r2527_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2527| v2527_4(void) = Call[ClassWithDestructor] : func:r2527_3, this:r2527_1 +# 2527| m2527_5(unknown) = ^CallSideEffect : ~m2525_6 +# 2527| m2527_6(unknown) = Chi : total:m2525_6, partial:m2527_5 +# 2527| m2527_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2527_1 +# 2527| m2527_8(ClassWithDestructor) = Chi : total:m2527_2, partial:m2527_7 +# 2529| r2529_1(glval) = VariableAddress[x] : +# 2529| r2529_2(glval) = FunctionAddress[~ClassWithDestructor] : +# 2529| v2529_3(void) = Call[~ClassWithDestructor] : func:r2529_2, this:r2529_1 +# 2529| m2529_4(unknown) = ^CallSideEffect : ~m2527_6 +# 2529| m2529_5(unknown) = Chi : total:m2527_6, partial:m2529_4 +# 2529| v2529_6(void) = ^IndirectReadSideEffect[-1] : &:r2529_1, m2527_8 +# 2529| m2529_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2529_1 +# 2529| m2529_8(ClassWithDestructor) = Chi : total:m2527_8, partial:m2529_7 +# 2533| r2533_1(glval) = VariableAddress[y] : +# 2533| r2533_2(glval) = FunctionAddress[~ClassWithDestructor] : +# 2533| v2533_3(void) = Call[~ClassWithDestructor] : func:r2533_2, this:r2533_1 +# 2533| m2533_4(unknown) = ^CallSideEffect : ~m2529_5 +# 2533| m2533_5(unknown) = Chi : total:m2529_5, partial:m2533_4 +# 2533| v2533_6(void) = ^IndirectReadSideEffect[-1] : &:r2533_1, m2525_8 +# 2533| m2533_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2533_1 +# 2533| m2533_8(ClassWithDestructor) = Chi : total:m2525_8, partial:m2533_7 # 2528| v2528_1(void) = NoOp : -# 2531| r2531_9(glval) = VariableAddress[y] : -# 2531| r2531_10(glval) = FunctionAddress[~ClassWithDestructor] : -# 2531| v2531_11(void) = Call[~ClassWithDestructor] : func:r2531_10, this:r2531_9 -# 2531| m2531_12(unknown) = ^CallSideEffect : ~m2523_6 -# 2531| m2531_13(unknown) = Chi : total:m2523_6, partial:m2531_12 -# 2531| v2531_14(void) = ^IndirectReadSideEffect[-1] : &:r2531_9, m2523_8 -# 2531| m2531_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2531_9 -# 2531| m2531_16(ClassWithDestructor) = Chi : total:m2523_8, partial:m2531_15 -# 2529| v2529_1(void) = NoOp : #-----| Goto -> Block 3 -# 2531| Block 3 -# 2531| m2531_17(unknown) = Phi : from 1:~m2531_5, from 2:~m2531_13 -# 2531| v2531_18(void) = NoOp : -# 2532| v2532_1(void) = NoOp : -# 2522| v2522_7(void) = ReturnVoid : -# 2522| v2522_8(void) = AliasedUse : ~m2531_17 -# 2522| v2522_9(void) = ExitFunction : +# 2530| Block 2 +# 2530| v2530_1(void) = NoOp : +# 2533| r2533_9(glval) = VariableAddress[y] : +# 2533| r2533_10(glval) = FunctionAddress[~ClassWithDestructor] : +# 2533| v2533_11(void) = Call[~ClassWithDestructor] : func:r2533_10, this:r2533_9 +# 2533| m2533_12(unknown) = ^CallSideEffect : ~m2525_6 +# 2533| m2533_13(unknown) = Chi : total:m2525_6, partial:m2533_12 +# 2533| v2533_14(void) = ^IndirectReadSideEffect[-1] : &:r2533_9, m2525_8 +# 2533| m2533_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2533_9 +# 2533| m2533_16(ClassWithDestructor) = Chi : total:m2525_8, partial:m2533_15 +# 2531| v2531_1(void) = NoOp : +#-----| Goto -> Block 3 -# 2534| void destructor_possibly_not_handled() -# 2534| Block 0 -# 2534| v2534_1(void) = EnterFunction : -# 2534| m2534_2(unknown) = AliasedDefinition : -# 2534| m2534_3(unknown) = InitializeNonLocal : -# 2534| m2534_4(unknown) = Chi : total:m2534_2, partial:m2534_3 -# 2535| r2535_1(glval) = VariableAddress[x] : -# 2535| m2535_2(ClassWithDestructor) = Uninitialized[x] : &:r2535_1 -# 2535| r2535_3(glval) = FunctionAddress[ClassWithDestructor] : -# 2535| v2535_4(void) = Call[ClassWithDestructor] : func:r2535_3, this:r2535_1 -# 2535| m2535_5(unknown) = ^CallSideEffect : ~m2534_4 -# 2535| m2535_6(unknown) = Chi : total:m2534_4, partial:m2535_5 -# 2535| m2535_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2535_1 -# 2535| m2535_8(ClassWithDestructor) = Chi : total:m2535_2, partial:m2535_7 -# 2537| r2537_1(glval) = VariableAddress[#throw2537:5] : -# 2537| r2537_2(int) = Constant[42] : -# 2537| m2537_3(int) = Store[#throw2537:5] : &:r2537_1, r2537_2 -# 2537| v2537_4(void) = ThrowValue : &:r2537_1, m2537_3 +# 2533| Block 3 +# 2533| m2533_17(unknown) = Phi : from 1:~m2533_5, from 2:~m2533_13 +# 2533| v2533_18(void) = NoOp : +# 2534| v2534_1(void) = NoOp : +# 2524| v2524_7(void) = ReturnVoid : +# 2524| v2524_8(void) = AliasedUse : ~m2533_17 +# 2524| v2524_9(void) = ExitFunction : + +# 2536| void destructor_possibly_not_handled() +# 2536| Block 0 +# 2536| v2536_1(void) = EnterFunction : +# 2536| m2536_2(unknown) = AliasedDefinition : +# 2536| m2536_3(unknown) = InitializeNonLocal : +# 2536| m2536_4(unknown) = Chi : total:m2536_2, partial:m2536_3 +# 2537| r2537_1(glval) = VariableAddress[x] : +# 2537| m2537_2(ClassWithDestructor) = Uninitialized[x] : &:r2537_1 +# 2537| r2537_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2537| v2537_4(void) = Call[ClassWithDestructor] : func:r2537_3, this:r2537_1 +# 2537| m2537_5(unknown) = ^CallSideEffect : ~m2536_4 +# 2537| m2537_6(unknown) = Chi : total:m2536_4, partial:m2537_5 +# 2537| m2537_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2537_1 +# 2537| m2537_8(ClassWithDestructor) = Chi : total:m2537_2, partial:m2537_7 +# 2539| r2539_1(glval) = VariableAddress[#throw2539:5] : +# 2539| r2539_2(int) = Constant[42] : +# 2539| m2539_3(int) = Store[#throw2539:5] : &:r2539_1, r2539_2 +# 2539| v2539_4(void) = ThrowValue : &:r2539_1, m2539_3 #-----| C++ Exception -> Block 2 -# 2534| Block 1 -# 2534| m2534_5(unknown) = Phi : from 3:~m2541_6, from 4:~m2541_14 -# 2534| v2534_6(void) = AliasedUse : ~m2534_5 -# 2534| v2534_7(void) = ExitFunction : +# 2536| Block 1 +# 2536| m2536_5(unknown) = Phi : from 3:~m2543_6, from 4:~m2543_14 +# 2536| v2536_6(void) = AliasedUse : ~m2536_5 +# 2536| v2536_7(void) = ExitFunction : -# 2539| Block 2 -# 2539| v2539_1(void) = CatchByType[char] : +# 2541| Block 2 +# 2541| v2541_1(void) = CatchByType[char] : #-----| C++ Exception -> Block 4 #-----| Goto -> Block 3 -# 2539| Block 3 -# 2539| r2539_2(glval) = VariableAddress[(unnamed parameter 0)] : -# 2539| m2539_3(char) = InitializeParameter[(unnamed parameter 0)] : &:r2539_2 -# 2539| v2539_4(void) = NoOp : -# 2541| v2541_1(void) = NoOp : -# 2541| r2541_2(glval) = VariableAddress[x] : -# 2541| r2541_3(glval) = FunctionAddress[~ClassWithDestructor] : -# 2541| v2541_4(void) = Call[~ClassWithDestructor] : func:r2541_3, this:r2541_2 -# 2541| m2541_5(unknown) = ^CallSideEffect : ~m2535_6 -# 2541| m2541_6(unknown) = Chi : total:m2535_6, partial:m2541_5 -# 2541| v2541_7(void) = ^IndirectReadSideEffect[-1] : &:r2541_2, m2535_8 -# 2541| m2541_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2541_2 -# 2541| m2541_9(ClassWithDestructor) = Chi : total:m2535_8, partial:m2541_8 -# 2534| v2534_8(void) = ReturnVoid : +# 2541| Block 3 +# 2541| r2541_2(glval) = VariableAddress[(unnamed parameter 0)] : +# 2541| m2541_3(char) = InitializeParameter[(unnamed parameter 0)] : &:r2541_2 +# 2541| v2541_4(void) = NoOp : +# 2543| v2543_1(void) = NoOp : +# 2543| r2543_2(glval) = VariableAddress[x] : +# 2543| r2543_3(glval) = FunctionAddress[~ClassWithDestructor] : +# 2543| v2543_4(void) = Call[~ClassWithDestructor] : func:r2543_3, this:r2543_2 +# 2543| m2543_5(unknown) = ^CallSideEffect : ~m2537_6 +# 2543| m2543_6(unknown) = Chi : total:m2537_6, partial:m2543_5 +# 2543| v2543_7(void) = ^IndirectReadSideEffect[-1] : &:r2543_2, m2537_8 +# 2543| m2543_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2543_2 +# 2543| m2543_9(ClassWithDestructor) = Chi : total:m2537_8, partial:m2543_8 +# 2536| v2536_8(void) = ReturnVoid : #-----| Goto -> Block 1 -# 2541| Block 4 -# 2541| r2541_10(glval) = VariableAddress[x] : -# 2541| r2541_11(glval) = FunctionAddress[~ClassWithDestructor] : -# 2541| v2541_12(void) = Call[~ClassWithDestructor] : func:r2541_11, this:r2541_10 -# 2541| m2541_13(unknown) = ^CallSideEffect : ~m2535_6 -# 2541| m2541_14(unknown) = Chi : total:m2535_6, partial:m2541_13 -# 2541| v2541_15(void) = ^IndirectReadSideEffect[-1] : &:r2541_10, m2535_8 -# 2541| m2541_16(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2541_10 -# 2541| m2541_17(ClassWithDestructor) = Chi : total:m2535_8, partial:m2541_16 -# 2534| v2534_9(void) = Unwind : +# 2543| Block 4 +# 2543| r2543_10(glval) = VariableAddress[x] : +# 2543| r2543_11(glval) = FunctionAddress[~ClassWithDestructor] : +# 2543| v2543_12(void) = Call[~ClassWithDestructor] : func:r2543_11, this:r2543_10 +# 2543| m2543_13(unknown) = ^CallSideEffect : ~m2537_6 +# 2543| m2543_14(unknown) = Chi : total:m2537_6, partial:m2543_13 +# 2543| v2543_15(void) = ^IndirectReadSideEffect[-1] : &:r2543_10, m2537_8 +# 2543| m2543_16(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2543_10 +# 2543| m2543_17(ClassWithDestructor) = Chi : total:m2537_8, partial:m2543_16 +# 2536| v2536_9(void) = Unwind : #-----| Goto -> Block 1 -# 2545| void this_inconsistency(bool) -# 2545| Block 0 -# 2545| v2545_1(void) = EnterFunction : -# 2545| m2545_2(unknown) = AliasedDefinition : -# 2545| m2545_3(unknown) = InitializeNonLocal : -# 2545| m2545_4(unknown) = Chi : total:m2545_2, partial:m2545_3 -# 2545| r2545_5(glval) = VariableAddress[b] : -# 2545| m2545_6(bool) = InitializeParameter[b] : &:r2545_5 -# 2546| r2546_1(glval) = VariableAddress[a] : -# 2546| r2546_2(glval) = VariableAddress[#temp2546:38] : -# 2546| r2546_3(glval) = FunctionAddress[getClassWithDestructor] : -# 2546| r2546_4(ClassWithDestructor) = Call[getClassWithDestructor] : func:r2546_3 -# 2546| m2546_5(unknown) = ^CallSideEffect : ~m2545_4 -# 2546| m2546_6(unknown) = Chi : total:m2545_4, partial:m2546_5 -# 2546| m2546_7(ClassWithDestructor) = Store[#temp2546:38] : &:r2546_2, r2546_4 -# 2546| m2546_8(unknown) = Chi : total:m2546_6, partial:m2546_7 -# 2546| r2546_9(glval) = Convert : r2546_2 -# 2546| r2546_10(ClassWithDestructor &) = CopyValue : r2546_9 -# 2546| m2546_11(ClassWithDestructor &) = Store[a] : &:r2546_1, r2546_10 -# 2546| r2546_12(glval) = VariableAddress[a] : -# 2546| r2546_13(ClassWithDestructor &) = Load[a] : &:r2546_12, m2546_11 -# 2546| r2546_14(ClassWithDestructor) = CopyValue : r2546_13 -# 2546| r2546_15(glval) = FunctionAddress[operator bool] : -# 2546| r2546_16(bool) = Call[operator bool] : func:r2546_15, this:r2546_14 -# 2546| m2546_17(unknown) = ^CallSideEffect : ~m2546_8 -# 2546| m2546_18(unknown) = Chi : total:m2546_8, partial:m2546_17 -# 2546| v2546_19(void) = ^IndirectReadSideEffect[-1] : &:r2546_14, ~m2546_18 -# 2546| r2546_20(bool) = CopyValue : r2546_16 -# 2546| v2546_21(void) = ConditionalBranch : r2546_20 +# 2547| void this_inconsistency(bool) +# 2547| Block 0 +# 2547| v2547_1(void) = EnterFunction : +# 2547| m2547_2(unknown) = AliasedDefinition : +# 2547| m2547_3(unknown) = InitializeNonLocal : +# 2547| m2547_4(unknown) = Chi : total:m2547_2, partial:m2547_3 +# 2547| r2547_5(glval) = VariableAddress[b] : +# 2547| m2547_6(bool) = InitializeParameter[b] : &:r2547_5 +# 2548| r2548_1(glval) = VariableAddress[a] : +# 2548| r2548_2(glval) = VariableAddress[#temp2548:38] : +# 2548| r2548_3(glval) = FunctionAddress[getClassWithDestructor] : +# 2548| r2548_4(ClassWithDestructor) = Call[getClassWithDestructor] : func:r2548_3 +# 2548| m2548_5(unknown) = ^CallSideEffect : ~m2547_4 +# 2548| m2548_6(unknown) = Chi : total:m2547_4, partial:m2548_5 +# 2548| m2548_7(ClassWithDestructor) = Store[#temp2548:38] : &:r2548_2, r2548_4 +# 2548| m2548_8(unknown) = Chi : total:m2548_6, partial:m2548_7 +# 2548| r2548_9(glval) = Convert : r2548_2 +# 2548| r2548_10(ClassWithDestructor &) = CopyValue : r2548_9 +# 2548| m2548_11(ClassWithDestructor &) = Store[a] : &:r2548_1, r2548_10 +# 2548| r2548_12(glval) = VariableAddress[a] : +# 2548| r2548_13(ClassWithDestructor &) = Load[a] : &:r2548_12, m2548_11 +# 2548| r2548_14(ClassWithDestructor) = CopyValue : r2548_13 +# 2548| r2548_15(glval) = FunctionAddress[operator bool] : +# 2548| r2548_16(bool) = Call[operator bool] : func:r2548_15, this:r2548_14 +# 2548| m2548_17(unknown) = ^CallSideEffect : ~m2548_8 +# 2548| m2548_18(unknown) = Chi : total:m2548_8, partial:m2548_17 +# 2548| v2548_19(void) = ^IndirectReadSideEffect[-1] : &:r2548_14, ~m2548_18 +# 2548| r2548_20(bool) = CopyValue : r2548_16 +# 2548| v2548_21(void) = ConditionalBranch : r2548_20 #-----| False -> Block 2 #-----| True -> Block 1 -# 2547| Block 1 -# 2547| v2547_1(void) = NoOp : +# 2549| Block 1 +# 2549| v2549_1(void) = NoOp : #-----| Goto -> Block 2 -# 2547| Block 2 -# 2547| r2547_2(glval) = CopyValue : r2546_2 -# 2547| r2547_3(glval) = FunctionAddress[~ClassWithDestructor] : -# 2547| v2547_4(void) = Call[~ClassWithDestructor] : func:r2547_3, this:r2547_2 -# 2547| m2547_5(unknown) = ^CallSideEffect : ~m2546_18 -# 2547| m2547_6(unknown) = Chi : total:m2546_18, partial:m2547_5 -# 2547| v2547_7(void) = ^IndirectReadSideEffect[-1] : &:r2547_2, ~m2547_6 -# 2547| m2547_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2547_2 -# 2547| m2547_9(unknown) = Chi : total:m2547_6, partial:m2547_8 -# 2548| v2548_1(void) = NoOp : -# 2545| v2545_7(void) = ReturnVoid : -# 2545| v2545_8(void) = AliasedUse : ~m2547_6 -# 2545| v2545_9(void) = ExitFunction : +# 2549| Block 2 +# 2549| r2549_2(glval) = CopyValue : r2548_2 +# 2549| r2549_3(glval) = FunctionAddress[~ClassWithDestructor] : +# 2549| v2549_4(void) = Call[~ClassWithDestructor] : func:r2549_3, this:r2549_2 +# 2549| m2549_5(unknown) = ^CallSideEffect : ~m2548_18 +# 2549| m2549_6(unknown) = Chi : total:m2548_18, partial:m2549_5 +# 2549| v2549_7(void) = ^IndirectReadSideEffect[-1] : &:r2549_2, ~m2549_6 +# 2549| m2549_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2549_2 +# 2549| m2549_9(unknown) = Chi : total:m2549_6, partial:m2549_8 +# 2550| v2550_1(void) = NoOp : +# 2547| v2547_7(void) = ReturnVoid : +# 2547| v2547_8(void) = AliasedUse : ~m2549_6 +# 2547| v2547_9(void) = ExitFunction : -# 2550| void constexpr_inconsistency(bool) -# 2550| Block 0 -# 2550| v2550_1(void) = EnterFunction : -# 2550| m2550_2(unknown) = AliasedDefinition : -# 2550| m2550_3(unknown) = InitializeNonLocal : -# 2550| m2550_4(unknown) = Chi : total:m2550_2, partial:m2550_3 -# 2550| r2550_5(glval) = VariableAddress[b] : -# 2550| m2550_6(bool) = InitializeParameter[b] : &:r2550_5 -# 2551| r2551_1(glval) = VariableAddress[a] : -# 2551| r2551_2(glval) = VariableAddress[#temp2551:48] : -# 2551| r2551_3(glval) = FunctionAddress[getClassWithDestructor] : -# 2551| r2551_4(ClassWithDestructor) = Call[getClassWithDestructor] : func:r2551_3 -# 2551| m2551_5(unknown) = ^CallSideEffect : ~m2550_4 -# 2551| m2551_6(unknown) = Chi : total:m2550_4, partial:m2551_5 -# 2551| m2551_7(ClassWithDestructor) = Store[#temp2551:48] : &:r2551_2, r2551_4 -# 2551| r2551_8(glval) = Convert : r2551_2 -# 2551| r2551_9(ClassWithDestructor &) = CopyValue : r2551_8 -# 2551| m2551_10(ClassWithDestructor &) = Store[a] : &:r2551_1, r2551_9 -# 2551| r2551_11(bool) = Constant[1] : -# 2551| v2551_12(void) = ConditionalBranch : r2551_11 +# 2552| void constexpr_inconsistency(bool) +# 2552| Block 0 +# 2552| v2552_1(void) = EnterFunction : +# 2552| m2552_2(unknown) = AliasedDefinition : +# 2552| m2552_3(unknown) = InitializeNonLocal : +# 2552| m2552_4(unknown) = Chi : total:m2552_2, partial:m2552_3 +# 2552| r2552_5(glval) = VariableAddress[b] : +# 2552| m2552_6(bool) = InitializeParameter[b] : &:r2552_5 +# 2553| r2553_1(glval) = VariableAddress[a] : +# 2553| r2553_2(glval) = VariableAddress[#temp2553:48] : +# 2553| r2553_3(glval) = FunctionAddress[getClassWithDestructor] : +# 2553| r2553_4(ClassWithDestructor) = Call[getClassWithDestructor] : func:r2553_3 +# 2553| m2553_5(unknown) = ^CallSideEffect : ~m2552_4 +# 2553| m2553_6(unknown) = Chi : total:m2552_4, partial:m2553_5 +# 2553| m2553_7(ClassWithDestructor) = Store[#temp2553:48] : &:r2553_2, r2553_4 +# 2553| r2553_8(glval) = Convert : r2553_2 +# 2553| r2553_9(ClassWithDestructor &) = CopyValue : r2553_8 +# 2553| m2553_10(ClassWithDestructor &) = Store[a] : &:r2553_1, r2553_9 +# 2553| r2553_11(bool) = Constant[1] : +# 2553| v2553_12(void) = ConditionalBranch : r2553_11 #-----| False -> Block 2 #-----| True -> Block 1 -# 2552| Block 1 -# 2552| v2552_1(void) = NoOp : -# 2552| r2552_2(glval) = CopyValue : r2551_2 -# 2552| r2552_3(glval) = FunctionAddress[~ClassWithDestructor] : -# 2552| v2552_4(void) = Call[~ClassWithDestructor] : func:r2552_3, this:r2552_2 -# 2552| m2552_5(unknown) = ^CallSideEffect : ~m2551_6 -# 2552| m2552_6(unknown) = Chi : total:m2551_6, partial:m2552_5 -# 2552| v2552_7(void) = ^IndirectReadSideEffect[-1] : &:r2552_2, m2551_7 -# 2552| m2552_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2552_2 -# 2552| m2552_9(ClassWithDestructor) = Chi : total:m2551_7, partial:m2552_8 -# 2553| v2553_1(void) = NoOp : -# 2550| v2550_7(void) = ReturnVoid : -# 2550| v2550_8(void) = AliasedUse : ~m2552_6 -# 2550| v2550_9(void) = ExitFunction : +# 2554| Block 1 +# 2554| v2554_1(void) = NoOp : +# 2554| r2554_2(glval) = CopyValue : r2553_2 +# 2554| r2554_3(glval) = FunctionAddress[~ClassWithDestructor] : +# 2554| v2554_4(void) = Call[~ClassWithDestructor] : func:r2554_3, this:r2554_2 +# 2554| m2554_5(unknown) = ^CallSideEffect : ~m2553_6 +# 2554| m2554_6(unknown) = Chi : total:m2553_6, partial:m2554_5 +# 2554| v2554_7(void) = ^IndirectReadSideEffect[-1] : &:r2554_2, m2553_7 +# 2554| m2554_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2554_2 +# 2554| m2554_9(ClassWithDestructor) = Chi : total:m2553_7, partial:m2554_8 +# 2555| v2555_1(void) = NoOp : +# 2552| v2552_7(void) = ReturnVoid : +# 2552| v2552_8(void) = AliasedUse : ~m2554_6 +# 2552| v2552_9(void) = ExitFunction : -# 2550| Block 2 -# 2550| v2550_10(void) = Unreached : +# 2552| Block 2 +# 2552| v2552_10(void) = Unreached : -# 2555| void builtin_bitcast(unsigned long) -# 2555| Block 0 -# 2555| v2555_1(void) = EnterFunction : -# 2555| m2555_2(unknown) = AliasedDefinition : -# 2555| m2555_3(unknown) = InitializeNonLocal : -# 2555| m2555_4(unknown) = Chi : total:m2555_2, partial:m2555_3 -# 2555| r2555_5(glval) = VariableAddress[ul] : -# 2555| m2555_6(unsigned long) = InitializeParameter[ul] : &:r2555_5 -# 2556| r2556_1(glval) = VariableAddress[d] : -# 2556| r2556_2(glval) = VariableAddress[ul] : -# 2556| r2556_3(unsigned long) = Load[ul] : &:r2556_2, m2555_6 -# 2556| r2556_4(double) = BuiltIn[__builtin_bit_cast] : 0:r2556_3 -# 2556| m2556_5(double) = Store[d] : &:r2556_1, r2556_4 -# 2557| v2557_1(void) = NoOp : -# 2555| v2555_7(void) = ReturnVoid : -# 2555| v2555_8(void) = AliasedUse : m2555_3 -# 2555| v2555_9(void) = ExitFunction : +# 2557| void builtin_bitcast(unsigned long) +# 2557| Block 0 +# 2557| v2557_1(void) = EnterFunction : +# 2557| m2557_2(unknown) = AliasedDefinition : +# 2557| m2557_3(unknown) = InitializeNonLocal : +# 2557| m2557_4(unknown) = Chi : total:m2557_2, partial:m2557_3 +# 2557| r2557_5(glval) = VariableAddress[ul] : +# 2557| m2557_6(unsigned long) = InitializeParameter[ul] : &:r2557_5 +# 2558| r2558_1(glval) = VariableAddress[d] : +# 2558| r2558_2(glval) = VariableAddress[ul] : +# 2558| r2558_3(unsigned long) = Load[ul] : &:r2558_2, m2557_6 +# 2558| r2558_4(double) = BuiltIn[__builtin_bit_cast] : 0:r2558_3 +# 2558| m2558_5(double) = Store[d] : &:r2558_1, r2558_4 +# 2559| v2559_1(void) = NoOp : +# 2557| v2557_7(void) = ReturnVoid : +# 2557| v2557_8(void) = AliasedUse : m2557_3 +# 2557| v2557_9(void) = ExitFunction : -# 2559| void p_points_to_x_or_y(int, int) -# 2559| Block 0 -# 2559| v2559_1(void) = EnterFunction : -# 2559| m2559_2(unknown) = AliasedDefinition : -# 2559| m2559_3(unknown) = InitializeNonLocal : -# 2559| m2559_4(unknown) = Chi : total:m2559_2, partial:m2559_3 -# 2559| m2559_5(int) = UninitializedGroup[x,y] : -# 2559| r2559_6(glval) = VariableAddress[a] : -# 2559| m2559_7(int) = InitializeParameter[a] : &:r2559_6 -# 2559| r2559_8(glval) = VariableAddress[b] : -# 2559| m2559_9(int) = InitializeParameter[b] : &:r2559_8 -# 2560| r2560_1(glval) = VariableAddress[x] : -# 2560| m2560_2(int) = Uninitialized[x] : &:r2560_1 -# 2560| m2560_3(int) = Chi : total:m2559_5, partial:m2560_2 -# 2561| r2561_1(glval) = VariableAddress[y] : -# 2561| m2561_2(int) = Uninitialized[y] : &:r2561_1 -# 2561| m2561_3(int) = Chi : total:m2560_3, partial:m2561_2 -# 2562| r2562_1(glval) = VariableAddress[p] : -# 2562| m2562_2(int *) = Uninitialized[p] : &:r2562_1 -# 2563| r2563_1(glval) = VariableAddress[a] : -# 2563| r2563_2(int) = Load[a] : &:r2563_1, m2559_7 -# 2563| r2563_3(glval) = VariableAddress[b] : -# 2563| r2563_4(int) = Load[b] : &:r2563_3, m2559_9 -# 2563| r2563_5(bool) = CompareLT : r2563_2, r2563_4 -# 2563| v2563_6(void) = ConditionalBranch : r2563_5 +# 2561| void p_points_to_x_or_y(int, int) +# 2561| Block 0 +# 2561| v2561_1(void) = EnterFunction : +# 2561| m2561_2(unknown) = AliasedDefinition : +# 2561| m2561_3(unknown) = InitializeNonLocal : +# 2561| m2561_4(unknown) = Chi : total:m2561_2, partial:m2561_3 +# 2561| m2561_5(int) = UninitializedGroup[x,y] : +# 2561| r2561_6(glval) = VariableAddress[a] : +# 2561| m2561_7(int) = InitializeParameter[a] : &:r2561_6 +# 2561| r2561_8(glval) = VariableAddress[b] : +# 2561| m2561_9(int) = InitializeParameter[b] : &:r2561_8 +# 2562| r2562_1(glval) = VariableAddress[x] : +# 2562| m2562_2(int) = Uninitialized[x] : &:r2562_1 +# 2562| m2562_3(int) = Chi : total:m2561_5, partial:m2562_2 +# 2563| r2563_1(glval) = VariableAddress[y] : +# 2563| m2563_2(int) = Uninitialized[y] : &:r2563_1 +# 2563| m2563_3(int) = Chi : total:m2562_3, partial:m2563_2 +# 2564| r2564_1(glval) = VariableAddress[p] : +# 2564| m2564_2(int *) = Uninitialized[p] : &:r2564_1 +# 2565| r2565_1(glval) = VariableAddress[a] : +# 2565| r2565_2(int) = Load[a] : &:r2565_1, m2561_7 +# 2565| r2565_3(glval) = VariableAddress[b] : +# 2565| r2565_4(int) = Load[b] : &:r2565_3, m2561_9 +# 2565| r2565_5(bool) = CompareLT : r2565_2, r2565_4 +# 2565| v2565_6(void) = ConditionalBranch : r2565_5 #-----| False -> Block 2 #-----| True -> Block 1 -# 2564| Block 1 -# 2564| r2564_1(glval) = VariableAddress[x] : -# 2564| r2564_2(int *) = CopyValue : r2564_1 -# 2564| r2564_3(glval) = VariableAddress[p] : -# 2564| m2564_4(int *) = Store[p] : &:r2564_3, r2564_2 -#-----| Goto -> Block 3 - -# 2566| Block 2 -# 2566| r2566_1(glval) = VariableAddress[y] : +# 2566| Block 1 +# 2566| r2566_1(glval) = VariableAddress[x] : # 2566| r2566_2(int *) = CopyValue : r2566_1 # 2566| r2566_3(glval) = VariableAddress[p] : # 2566| m2566_4(int *) = Store[p] : &:r2566_3, r2566_2 #-----| Goto -> Block 3 -# 2568| Block 3 -# 2568| m2568_1(int *) = Phi : from 1:m2564_4, from 2:m2566_4 -# 2568| r2568_2(int) = Constant[5] : +# 2568| Block 2 +# 2568| r2568_1(glval) = VariableAddress[y] : +# 2568| r2568_2(int *) = CopyValue : r2568_1 # 2568| r2568_3(glval) = VariableAddress[p] : -# 2568| r2568_4(int *) = Load[p] : &:r2568_3, m2568_1 -# 2568| r2568_5(glval) = CopyValue : r2568_4 -# 2568| m2568_6(int) = Store[?] : &:r2568_5, r2568_2 -# 2568| m2568_7(int) = Chi : total:m2561_3, partial:m2568_6 -# 2569| r2569_1(glval) = VariableAddress[z] : -# 2569| r2569_2(glval) = VariableAddress[x] : -# 2569| r2569_3(int) = Load[x] : &:r2569_2, ~m2568_7 -# 2569| m2569_4(int) = Store[z] : &:r2569_1, r2569_3 -# 2570| r2570_1(glval) = VariableAddress[w] : -# 2570| r2570_2(glval) = VariableAddress[y] : -# 2570| r2570_3(int) = Load[y] : &:r2570_2, ~m2568_7 -# 2570| m2570_4(int) = Store[w] : &:r2570_1, r2570_3 -# 2571| v2571_1(void) = NoOp : -# 2559| v2559_10(void) = ReturnVoid : -# 2559| v2559_11(void) = AliasedUse : m2559_3 -# 2559| v2559_12(void) = ExitFunction : +# 2568| m2568_4(int *) = Store[p] : &:r2568_3, r2568_2 +#-----| Goto -> Block 3 -# 2573| int phi_after_while() -# 2573| Block 0 -# 2573| v2573_1(void) = EnterFunction : -# 2573| m2573_2(unknown) = AliasedDefinition : -# 2573| m2573_3(unknown) = InitializeNonLocal : -# 2573| m2573_4(unknown) = Chi : total:m2573_2, partial:m2573_3 -# 2573| m2573_5(int) = UninitializedGroup[r,s] : -# 2574| r2574_1(glval) = VariableAddress[r] : -# 2574| m2574_2(int) = Uninitialized[r] : &:r2574_1 -# 2574| m2574_3(int) = Chi : total:m2573_5, partial:m2574_2 -# 2575| r2575_1(glval) = VariableAddress[rP] : -# 2575| r2575_2(glval) = VariableAddress[r] : -# 2575| r2575_3(int *) = CopyValue : r2575_2 -# 2575| m2575_4(int *) = Store[rP] : &:r2575_1, r2575_3 +# 2570| Block 3 +# 2570| m2570_1(int *) = Phi : from 1:m2566_4, from 2:m2568_4 +# 2570| r2570_2(int) = Constant[5] : +# 2570| r2570_3(glval) = VariableAddress[p] : +# 2570| r2570_4(int *) = Load[p] : &:r2570_3, m2570_1 +# 2570| r2570_5(glval) = CopyValue : r2570_4 +# 2570| m2570_6(int) = Store[?] : &:r2570_5, r2570_2 +# 2570| m2570_7(int) = Chi : total:m2563_3, partial:m2570_6 +# 2571| r2571_1(glval) = VariableAddress[z] : +# 2571| r2571_2(glval) = VariableAddress[x] : +# 2571| r2571_3(int) = Load[x] : &:r2571_2, ~m2570_7 +# 2571| m2571_4(int) = Store[z] : &:r2571_1, r2571_3 +# 2572| r2572_1(glval) = VariableAddress[w] : +# 2572| r2572_2(glval) = VariableAddress[y] : +# 2572| r2572_3(int) = Load[y] : &:r2572_2, ~m2570_7 +# 2572| m2572_4(int) = Store[w] : &:r2572_1, r2572_3 +# 2573| v2573_1(void) = NoOp : +# 2561| v2561_10(void) = ReturnVoid : +# 2561| v2561_11(void) = AliasedUse : m2561_3 +# 2561| v2561_12(void) = ExitFunction : + +# 2575| int phi_after_while() +# 2575| Block 0 +# 2575| v2575_1(void) = EnterFunction : +# 2575| m2575_2(unknown) = AliasedDefinition : +# 2575| m2575_3(unknown) = InitializeNonLocal : +# 2575| m2575_4(unknown) = Chi : total:m2575_2, partial:m2575_3 +# 2575| m2575_5(int) = UninitializedGroup[r,s] : +# 2576| r2576_1(glval) = VariableAddress[r] : +# 2576| m2576_2(int) = Uninitialized[r] : &:r2576_1 +# 2576| m2576_3(int) = Chi : total:m2575_5, partial:m2576_2 +# 2577| r2577_1(glval) = VariableAddress[rP] : +# 2577| r2577_2(glval) = VariableAddress[r] : +# 2577| r2577_3(int *) = CopyValue : r2577_2 +# 2577| m2577_4(int *) = Store[rP] : &:r2577_1, r2577_3 #-----| Goto -> Block 1 -# 2577| Block 1 -# 2577| m2577_1(int) = Phi : from 0:m2574_3, from 2:m2579_7 -# 2577| m2577_2(unknown) = Phi : from 0:~m2573_4, from 2:~m2577_7 -# 2577| m2577_3(int *) = Phi : from 0:m2575_4, from 2:m2580_4 -# 2577| r2577_4(glval) = FunctionAddress[predicateA] : -# 2577| r2577_5(bool) = Call[predicateA] : func:r2577_4 -# 2577| m2577_6(unknown) = ^CallSideEffect : ~m2577_2 -# 2577| m2577_7(unknown) = Chi : total:m2577_2, partial:m2577_6 -# 2577| v2577_8(void) = ConditionalBranch : r2577_5 +# 2579| Block 1 +# 2579| m2579_1(int) = Phi : from 0:m2576_3, from 2:m2581_7 +# 2579| m2579_2(unknown) = Phi : from 0:~m2575_4, from 2:~m2579_7 +# 2579| m2579_3(int *) = Phi : from 0:m2577_4, from 2:m2582_4 +# 2579| r2579_4(glval) = FunctionAddress[predicateA] : +# 2579| r2579_5(bool) = Call[predicateA] : func:r2579_4 +# 2579| m2579_6(unknown) = ^CallSideEffect : ~m2579_2 +# 2579| m2579_7(unknown) = Chi : total:m2579_2, partial:m2579_6 +# 2579| v2579_8(void) = ConditionalBranch : r2579_5 #-----| False -> Block 3 #-----| True -> Block 2 -# 2578| Block 2 -# 2578| r2578_1(glval) = VariableAddress[s] : -# 2578| r2578_2(int) = Constant[0] : -# 2578| m2578_3(int) = Store[s] : &:r2578_1, r2578_2 -# 2578| m2578_4(int) = Chi : total:m2577_1, partial:m2578_3 -# 2579| r2579_1(glval) = VariableAddress[s] : -# 2579| r2579_2(int) = Load[s] : &:r2579_1, m2578_3 -# 2579| r2579_3(glval) = VariableAddress[rP] : -# 2579| r2579_4(int *) = Load[rP] : &:r2579_3, m2577_3 -# 2579| r2579_5(glval) = CopyValue : r2579_4 -# 2579| m2579_6(int) = Store[?] : &:r2579_5, r2579_2 -# 2579| m2579_7(int) = Chi : total:m2578_4, partial:m2579_6 +# 2580| Block 2 # 2580| r2580_1(glval) = VariableAddress[s] : -# 2580| r2580_2(int *) = CopyValue : r2580_1 -# 2580| r2580_3(glval) = VariableAddress[rP] : -# 2580| m2580_4(int *) = Store[rP] : &:r2580_3, r2580_2 +# 2580| r2580_2(int) = Constant[0] : +# 2580| m2580_3(int) = Store[s] : &:r2580_1, r2580_2 +# 2580| m2580_4(int) = Chi : total:m2579_1, partial:m2580_3 +# 2581| r2581_1(glval) = VariableAddress[s] : +# 2581| r2581_2(int) = Load[s] : &:r2581_1, m2580_3 +# 2581| r2581_3(glval) = VariableAddress[rP] : +# 2581| r2581_4(int *) = Load[rP] : &:r2581_3, m2579_3 +# 2581| r2581_5(glval) = CopyValue : r2581_4 +# 2581| m2581_6(int) = Store[?] : &:r2581_5, r2581_2 +# 2581| m2581_7(int) = Chi : total:m2580_4, partial:m2581_6 +# 2582| r2582_1(glval) = VariableAddress[s] : +# 2582| r2582_2(int *) = CopyValue : r2582_1 +# 2582| r2582_3(glval) = VariableAddress[rP] : +# 2582| m2582_4(int *) = Store[rP] : &:r2582_3, r2582_2 #-----| Goto (back edge) -> Block 1 -# 2583| Block 3 -# 2583| r2583_1(glval) = VariableAddress[#return] : -# 2583| r2583_2(glval) = VariableAddress[r] : -# 2583| r2583_3(int) = Load[r] : &:r2583_2, ~m2577_1 -# 2583| m2583_4(int) = Store[#return] : &:r2583_1, r2583_3 -# 2573| r2573_6(glval) = VariableAddress[#return] : -# 2573| v2573_7(void) = ReturnValue : &:r2573_6, m2583_4 -# 2573| v2573_8(void) = AliasedUse : ~m2577_7 -# 2573| v2573_9(void) = ExitFunction : +# 2585| Block 3 +# 2585| r2585_1(glval) = VariableAddress[#return] : +# 2585| r2585_2(glval) = VariableAddress[r] : +# 2585| r2585_3(int) = Load[r] : &:r2585_2, ~m2579_1 +# 2585| m2585_4(int) = Store[#return] : &:r2585_1, r2585_3 +# 2575| r2575_6(glval) = VariableAddress[#return] : +# 2575| v2575_7(void) = ReturnValue : &:r2575_6, m2585_4 +# 2575| v2575_8(void) = AliasedUse : ~m2579_7 +# 2575| v2575_9(void) = ExitFunction : -# 2588| char* recursive_conditional_call_with_increment(char*, bool) -# 2588| Block 0 -# 2588| v2588_1(void) = EnterFunction : -# 2588| m2588_2(unknown) = AliasedDefinition : -# 2588| m2588_3(unknown) = InitializeNonLocal : -# 2588| m2588_4(unknown) = Chi : total:m2588_2, partial:m2588_3 -# 2588| r2588_5(glval) = VariableAddress[d] : -# 2588| m2588_6(char *) = InitializeParameter[d] : &:r2588_5 -# 2588| r2588_7(char *) = Load[d] : &:r2588_5, m2588_6 -# 2588| m2588_8(unknown) = InitializeIndirection[d] : &:r2588_7 -# 2588| r2588_9(glval) = VariableAddress[b] : -# 2588| m2588_10(bool) = InitializeParameter[b] : &:r2588_9 -# 2590| r2590_1(glval) = VariableAddress[b] : -# 2590| r2590_2(bool) = Load[b] : &:r2590_1, m2588_10 -# 2590| v2590_3(void) = ConditionalBranch : r2590_2 +# 2590| char* recursive_conditional_call_with_increment(char*, bool) +# 2590| Block 0 +# 2590| v2590_1(void) = EnterFunction : +# 2590| m2590_2(unknown) = AliasedDefinition : +# 2590| m2590_3(unknown) = InitializeNonLocal : +# 2590| m2590_4(unknown) = Chi : total:m2590_2, partial:m2590_3 +# 2590| r2590_5(glval) = VariableAddress[d] : +# 2590| m2590_6(char *) = InitializeParameter[d] : &:r2590_5 +# 2590| r2590_7(char *) = Load[d] : &:r2590_5, m2590_6 +# 2590| m2590_8(unknown) = InitializeIndirection[d] : &:r2590_7 +# 2590| r2590_9(glval) = VariableAddress[b] : +# 2590| m2590_10(bool) = InitializeParameter[b] : &:r2590_9 +# 2592| r2592_1(glval) = VariableAddress[b] : +# 2592| r2592_2(bool) = Load[b] : &:r2592_1, m2590_10 +# 2592| v2592_3(void) = ConditionalBranch : r2592_2 #-----| False -> Block 2 #-----| True -> Block 1 -# 2591| Block 1 -# 2591| r2591_1(glval) = FunctionAddress[recursive_conditional_call_with_increment] : -# 2591| r2591_2(glval) = VariableAddress[d] : -# 2591| r2591_3(char *) = Load[d] : &:r2591_2, m2588_6 -# 2591| r2591_4(glval) = VariableAddress[b] : -# 2591| r2591_5(bool) = Load[b] : &:r2591_4, m2588_10 -# 2591| r2591_6(char *) = Call[recursive_conditional_call_with_increment] : func:r2591_1, 0:r2591_3, 1:r2591_5 -# 2591| m2591_7(unknown) = ^CallSideEffect : ~m2588_4 -# 2591| m2591_8(unknown) = Chi : total:m2588_4, partial:m2591_7 -# 2591| v2591_9(void) = ^BufferReadSideEffect[0] : &:r2591_3, ~m2588_8 -# 2591| m2591_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r2591_3 -# 2591| m2591_11(unknown) = Chi : total:m2588_8, partial:m2591_10 -# 2591| r2591_12(glval) = VariableAddress[d] : -# 2591| m2591_13(char *) = Store[d] : &:r2591_12, r2591_6 +# 2593| Block 1 +# 2593| r2593_1(glval) = FunctionAddress[recursive_conditional_call_with_increment] : +# 2593| r2593_2(glval) = VariableAddress[d] : +# 2593| r2593_3(char *) = Load[d] : &:r2593_2, m2590_6 +# 2593| r2593_4(glval) = VariableAddress[b] : +# 2593| r2593_5(bool) = Load[b] : &:r2593_4, m2590_10 +# 2593| r2593_6(char *) = Call[recursive_conditional_call_with_increment] : func:r2593_1, 0:r2593_3, 1:r2593_5 +# 2593| m2593_7(unknown) = ^CallSideEffect : ~m2590_4 +# 2593| m2593_8(unknown) = Chi : total:m2590_4, partial:m2593_7 +# 2593| v2593_9(void) = ^BufferReadSideEffect[0] : &:r2593_3, ~m2590_8 +# 2593| m2593_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r2593_3 +# 2593| m2593_11(unknown) = Chi : total:m2590_8, partial:m2593_10 +# 2593| r2593_12(glval) = VariableAddress[d] : +# 2593| m2593_13(char *) = Store[d] : &:r2593_12, r2593_6 #-----| Goto -> Block 2 -# 2593| Block 2 -# 2593| m2593_1(unknown) = Phi : from 0:m2588_8, from 1:m2591_11 -# 2593| m2593_2(unknown) = Phi : from 0:~m2588_4, from 1:~m2591_8 -# 2593| m2593_3(char *) = Phi : from 0:m2588_6, from 1:m2591_13 -# 2593| r2593_4(glval) = VariableAddress[d] : -# 2593| r2593_5(char *) = Load[d] : &:r2593_4, m2593_3 -# 2593| r2593_6(int) = Constant[1] : -# 2593| r2593_7(char *) = PointerAdd[1] : r2593_5, r2593_6 -# 2593| m2593_8(char *) = Store[d] : &:r2593_4, r2593_7 -# 2594| r2594_1(glval) = VariableAddress[#return] : -# 2594| r2594_2(glval) = VariableAddress[d] : -# 2594| r2594_3(char *) = Load[d] : &:r2594_2, m2593_8 -# 2594| m2594_4(char *) = Store[#return] : &:r2594_1, r2594_3 -# 2588| v2588_11(void) = ReturnIndirection[d] : &:r2588_7, m2593_1 -# 2588| r2588_12(glval) = VariableAddress[#return] : -# 2588| v2588_13(void) = ReturnValue : &:r2588_12, m2594_4 -# 2588| v2588_14(void) = AliasedUse : ~m2593_2 -# 2588| v2588_15(void) = ExitFunction : +# 2595| Block 2 +# 2595| m2595_1(unknown) = Phi : from 0:m2590_8, from 1:m2593_11 +# 2595| m2595_2(unknown) = Phi : from 0:~m2590_4, from 1:~m2593_8 +# 2595| m2595_3(char *) = Phi : from 0:m2590_6, from 1:m2593_13 +# 2595| r2595_4(glval) = VariableAddress[d] : +# 2595| r2595_5(char *) = Load[d] : &:r2595_4, m2595_3 +# 2595| r2595_6(int) = Constant[1] : +# 2595| r2595_7(char *) = PointerAdd[1] : r2595_5, r2595_6 +# 2595| m2595_8(char *) = Store[d] : &:r2595_4, r2595_7 +# 2596| r2596_1(glval) = VariableAddress[#return] : +# 2596| r2596_2(glval) = VariableAddress[d] : +# 2596| r2596_3(char *) = Load[d] : &:r2596_2, m2595_8 +# 2596| m2596_4(char *) = Store[#return] : &:r2596_1, r2596_3 +# 2590| v2590_11(void) = ReturnIndirection[d] : &:r2590_7, m2595_1 +# 2590| r2590_12(glval) = VariableAddress[#return] : +# 2590| v2590_13(void) = ReturnValue : &:r2590_12, m2596_4 +# 2590| v2590_14(void) = AliasedUse : ~m2595_2 +# 2590| v2590_15(void) = ExitFunction : -# 2602| Recursive* merge(Recursive*) -# 2602| Block 0 -# 2602| v2602_1(void) = EnterFunction : -# 2602| m2602_2(unknown) = AliasedDefinition : -# 2602| m2602_3(unknown) = InitializeNonLocal : -# 2602| m2602_4(unknown) = Chi : total:m2602_2, partial:m2602_3 -# 2602| m2602_5(Recursive *) = UninitializedGroup[a,b] : -# 2602| m2602_6(unknown) = Chi : total:m2602_4, partial:m2602_5 -# 2602| r2602_7(glval) = VariableAddress[a] : -# 2602| m2602_8(Recursive *) = InitializeParameter[a] : &:r2602_7 -# 2602| r2602_9(Recursive *) = Load[a] : &:r2602_7, m2602_8 -# 2602| m2602_10(unknown) = InitializeIndirection[a] : &:r2602_9 -# 2602| m2602_11(unknown) = Chi : total:m2602_6, partial:m2602_10 -# 2604| r2604_1(glval) = VariableAddress[b] : -# 2604| m2604_2(Recursive *) = Uninitialized[b] : &:r2604_1 -# 2604| m2604_3(unknown) = Chi : total:m2602_11, partial:m2604_2 -# 2605| r2605_1(glval) = VariableAddress[p] : -# 2605| r2605_2(glval) = VariableAddress[b] : -# 2605| r2605_3(Recursive **) = CopyValue : r2605_2 -# 2605| m2605_4(Recursive **) = Store[p] : &:r2605_1, r2605_3 +# 2604| Recursive* merge(Recursive*) +# 2604| Block 0 +# 2604| v2604_1(void) = EnterFunction : +# 2604| m2604_2(unknown) = AliasedDefinition : +# 2604| m2604_3(unknown) = InitializeNonLocal : +# 2604| m2604_4(unknown) = Chi : total:m2604_2, partial:m2604_3 +# 2604| m2604_5(Recursive *) = UninitializedGroup[a,b] : +# 2604| m2604_6(unknown) = Chi : total:m2604_4, partial:m2604_5 +# 2604| r2604_7(glval) = VariableAddress[a] : +# 2604| m2604_8(Recursive *) = InitializeParameter[a] : &:r2604_7 +# 2604| r2604_9(Recursive *) = Load[a] : &:r2604_7, m2604_8 +# 2604| m2604_10(unknown) = InitializeIndirection[a] : &:r2604_9 +# 2604| m2604_11(unknown) = Chi : total:m2604_6, partial:m2604_10 +# 2606| r2606_1(glval) = VariableAddress[b] : +# 2606| m2606_2(Recursive *) = Uninitialized[b] : &:r2606_1 +# 2606| m2606_3(unknown) = Chi : total:m2604_11, partial:m2606_2 +# 2607| r2607_1(glval) = VariableAddress[p] : +# 2607| r2607_2(glval) = VariableAddress[b] : +# 2607| r2607_3(Recursive **) = CopyValue : r2607_2 +# 2607| m2607_4(Recursive **) = Store[p] : &:r2607_1, r2607_3 #-----| Goto -> Block 1 -# 2607| Block 1 -# 2607| m2607_1(unknown) = Phi : from 0:~m2604_3, from 2:~m2609_7 -# 2607| m2607_2(Recursive **) = Phi : from 0:m2605_4, from 2:m2610_6 -# 2607| r2607_3(glval) = FunctionAddress[predicateA] : -# 2607| r2607_4(bool) = Call[predicateA] : func:r2607_3 -# 2607| m2607_5(unknown) = ^CallSideEffect : ~m2607_1 -# 2607| m2607_6(unknown) = Chi : total:m2607_1, partial:m2607_5 -# 2607| v2607_7(void) = ConditionalBranch : r2607_4 +# 2609| Block 1 +# 2609| m2609_1(unknown) = Phi : from 0:~m2606_3, from 2:~m2611_7 +# 2609| m2609_2(Recursive **) = Phi : from 0:m2607_4, from 2:m2612_6 +# 2609| r2609_3(glval) = FunctionAddress[predicateA] : +# 2609| r2609_4(bool) = Call[predicateA] : func:r2609_3 +# 2609| m2609_5(unknown) = ^CallSideEffect : ~m2609_1 +# 2609| m2609_6(unknown) = Chi : total:m2609_1, partial:m2609_5 +# 2609| v2609_7(void) = ConditionalBranch : r2609_4 #-----| False -> Block 3 #-----| True -> Block 2 -# 2609| Block 2 -# 2609| r2609_1(glval) = VariableAddress[a] : -# 2609| r2609_2(Recursive *) = Load[a] : &:r2609_1, m2602_8 -# 2609| r2609_3(glval) = VariableAddress[p] : -# 2609| r2609_4(Recursive **) = Load[p] : &:r2609_3, m2607_2 -# 2609| r2609_5(glval) = CopyValue : r2609_4 -# 2609| m2609_6(Recursive *) = Store[?] : &:r2609_5, r2609_2 -# 2609| m2609_7(unknown) = Chi : total:m2607_6, partial:m2609_6 -# 2610| r2610_1(glval) = VariableAddress[a] : -# 2610| r2610_2(Recursive *) = Load[a] : &:r2610_1, m2602_8 -# 2610| r2610_3(glval) = FieldAddress[next] : r2610_2 -# 2610| r2610_4(Recursive **) = CopyValue : r2610_3 -# 2610| r2610_5(glval) = VariableAddress[p] : -# 2610| m2610_6(Recursive **) = Store[p] : &:r2610_5, r2610_4 +# 2611| Block 2 +# 2611| r2611_1(glval) = VariableAddress[a] : +# 2611| r2611_2(Recursive *) = Load[a] : &:r2611_1, m2604_8 +# 2611| r2611_3(glval) = VariableAddress[p] : +# 2611| r2611_4(Recursive **) = Load[p] : &:r2611_3, m2609_2 +# 2611| r2611_5(glval) = CopyValue : r2611_4 +# 2611| m2611_6(Recursive *) = Store[?] : &:r2611_5, r2611_2 +# 2611| m2611_7(unknown) = Chi : total:m2609_6, partial:m2611_6 +# 2612| r2612_1(glval) = VariableAddress[a] : +# 2612| r2612_2(Recursive *) = Load[a] : &:r2612_1, m2604_8 +# 2612| r2612_3(glval) = FieldAddress[next] : r2612_2 +# 2612| r2612_4(Recursive **) = CopyValue : r2612_3 +# 2612| r2612_5(glval) = VariableAddress[p] : +# 2612| m2612_6(Recursive **) = Store[p] : &:r2612_5, r2612_4 #-----| Goto (back edge) -> Block 1 -# 2613| Block 3 -# 2613| r2613_1(glval) = VariableAddress[#return] : -# 2613| r2613_2(glval) = VariableAddress[b] : -# 2613| r2613_3(Recursive *) = Load[b] : &:r2613_2, ~m2607_6 -# 2613| m2613_4(Recursive *) = Store[#return] : &:r2613_1, r2613_3 -# 2602| v2602_12(void) = ReturnIndirection[a] : &:r2602_9, ~m2607_6 -# 2602| r2602_13(glval) = VariableAddress[#return] : -# 2602| v2602_14(void) = ReturnValue : &:r2602_13, m2613_4 -# 2602| v2602_15(void) = AliasedUse : ~m2607_6 -# 2602| v2602_16(void) = ExitFunction : +# 2615| Block 3 +# 2615| r2615_1(glval) = VariableAddress[#return] : +# 2615| r2615_2(glval) = VariableAddress[b] : +# 2615| r2615_3(Recursive *) = Load[b] : &:r2615_2, ~m2609_6 +# 2615| m2615_4(Recursive *) = Store[#return] : &:r2615_1, r2615_3 +# 2604| v2604_12(void) = ReturnIndirection[a] : &:r2604_9, ~m2609_6 +# 2604| r2604_13(glval) = VariableAddress[#return] : +# 2604| v2604_14(void) = ReturnValue : &:r2604_13, m2615_4 +# 2604| v2604_15(void) = AliasedUse : ~m2609_6 +# 2604| v2604_16(void) = ExitFunction : -# 2618| void escaping_pointer(bool) -# 2618| Block 0 -# 2618| v2618_1(void) = EnterFunction : -# 2618| m2618_2(unknown) = AliasedDefinition : -# 2618| m2618_3(unknown) = InitializeNonLocal : -# 2618| m2618_4(unknown) = Chi : total:m2618_2, partial:m2618_3 -# 2618| m2618_5(unknown) = UninitializedGroup[l1,l2] : -# 2618| m2618_6(unknown) = Chi : total:m2618_4, partial:m2618_5 -# 2618| r2618_7(glval) = VariableAddress[b] : -# 2618| m2618_8(bool) = InitializeParameter[b] : &:r2618_7 -# 2620| r2620_1(glval) = VariableAddress[data] : -# 2620| m2620_2(int *) = Uninitialized[data] : &:r2620_1 -# 2621| r2621_1(glval) = VariableAddress[l1] : -# 2621| m2621_2(int) = Uninitialized[l1] : &:r2621_1 -# 2621| m2621_3(unknown) = Chi : total:m2618_6, partial:m2621_2 -# 2621| r2621_4(glval) = VariableAddress[l2] : -# 2621| m2621_5(int) = Uninitialized[l2] : &:r2621_4 -# 2621| m2621_6(unknown) = Chi : total:m2621_3, partial:m2621_5 -# 2622| r2622_1(glval) = VariableAddress[b] : -# 2622| r2622_2(bool) = Load[b] : &:r2622_1, m2618_8 -# 2622| v2622_3(void) = ConditionalBranch : r2622_2 +# 2620| void escaping_pointer(bool) +# 2620| Block 0 +# 2620| v2620_1(void) = EnterFunction : +# 2620| m2620_2(unknown) = AliasedDefinition : +# 2620| m2620_3(unknown) = InitializeNonLocal : +# 2620| m2620_4(unknown) = Chi : total:m2620_2, partial:m2620_3 +# 2620| m2620_5(unknown) = UninitializedGroup[l1,l2] : +# 2620| m2620_6(unknown) = Chi : total:m2620_4, partial:m2620_5 +# 2620| r2620_7(glval) = VariableAddress[b] : +# 2620| m2620_8(bool) = InitializeParameter[b] : &:r2620_7 +# 2622| r2622_1(glval) = VariableAddress[data] : +# 2622| m2622_2(int *) = Uninitialized[data] : &:r2622_1 +# 2623| r2623_1(glval) = VariableAddress[l1] : +# 2623| m2623_2(int) = Uninitialized[l1] : &:r2623_1 +# 2623| m2623_3(unknown) = Chi : total:m2620_6, partial:m2623_2 +# 2623| r2623_4(glval) = VariableAddress[l2] : +# 2623| m2623_5(int) = Uninitialized[l2] : &:r2623_4 +# 2623| m2623_6(unknown) = Chi : total:m2623_3, partial:m2623_5 +# 2624| r2624_1(glval) = VariableAddress[b] : +# 2624| r2624_2(bool) = Load[b] : &:r2624_1, m2620_8 +# 2624| v2624_3(void) = ConditionalBranch : r2624_2 #-----| False -> Block 2 #-----| True -> Block 1 -# 2624| Block 1 -# 2624| r2624_1(glval) = VariableAddress[l1] : -# 2624| r2624_2(int *) = CopyValue : r2624_1 -# 2624| r2624_3(glval) = VariableAddress[data] : -# 2624| m2624_4(int *) = Store[data] : &:r2624_3, r2624_2 +# 2626| Block 1 +# 2626| r2626_1(glval) = VariableAddress[l1] : +# 2626| r2626_2(int *) = CopyValue : r2626_1 +# 2626| r2626_3(glval) = VariableAddress[data] : +# 2626| m2626_4(int *) = Store[data] : &:r2626_3, r2626_2 #-----| Goto -> Block 3 -# 2628| Block 2 -# 2628| r2628_1(glval) = VariableAddress[l2] : -# 2628| r2628_2(int *) = CopyValue : r2628_1 -# 2628| r2628_3(glval) = VariableAddress[data] : -# 2628| m2628_4(int *) = Store[data] : &:r2628_3, r2628_2 +# 2630| Block 2 +# 2630| r2630_1(glval) = VariableAddress[l2] : +# 2630| r2630_2(int *) = CopyValue : r2630_1 +# 2630| r2630_3(glval) = VariableAddress[data] : +# 2630| m2630_4(int *) = Store[data] : &:r2630_3, r2630_2 #-----| Goto -> Block 3 -# 2630| Block 3 -# 2630| m2630_1(int *) = Phi : from 1:m2624_4, from 2:m2628_4 -# 2630| r2630_2(glval) = FunctionAddress[use_const_int] : -# 2630| r2630_3(glval) = VariableAddress[data] : -# 2630| r2630_4(int *) = Load[data] : &:r2630_3, m2630_1 -# 2630| r2630_5(int *) = Convert : r2630_4 -# 2630| v2630_6(void) = Call[use_const_int] : func:r2630_2, 0:r2630_5 -# 2630| m2630_7(unknown) = ^CallSideEffect : ~m2621_6 -# 2630| m2630_8(unknown) = Chi : total:m2621_6, partial:m2630_7 -# 2630| v2630_9(void) = ^BufferReadSideEffect[0] : &:r2630_5, ~m2630_8 -# 2631| v2631_1(void) = NoOp : -# 2618| v2618_9(void) = ReturnVoid : -# 2618| v2618_10(void) = AliasedUse : ~m2630_8 -# 2618| v2618_11(void) = ExitFunction : +# 2632| Block 3 +# 2632| m2632_1(int *) = Phi : from 1:m2626_4, from 2:m2630_4 +# 2632| r2632_2(glval) = FunctionAddress[use_const_int] : +# 2632| r2632_3(glval) = VariableAddress[data] : +# 2632| r2632_4(int *) = Load[data] : &:r2632_3, m2632_1 +# 2632| r2632_5(int *) = Convert : r2632_4 +# 2632| v2632_6(void) = Call[use_const_int] : func:r2632_2, 0:r2632_5 +# 2632| m2632_7(unknown) = ^CallSideEffect : ~m2623_6 +# 2632| m2632_8(unknown) = Chi : total:m2623_6, partial:m2632_7 +# 2632| v2632_9(void) = ^BufferReadSideEffect[0] : &:r2632_5, ~m2632_8 +# 2633| v2633_1(void) = NoOp : +# 2620| v2620_9(void) = ReturnVoid : +# 2620| v2620_10(void) = AliasedUse : ~m2632_8 +# 2620| v2620_11(void) = ExitFunction : -# 2639| void needs_chi_for_initialize_groups() -# 2639| Block 0 -# 2639| v2639_1(void) = EnterFunction : -# 2639| m2639_2(unknown) = AliasedDefinition : -# 2639| m2639_3(unknown) = InitializeNonLocal : -# 2639| m2639_4(unknown) = Chi : total:m2639_2, partial:m2639_3 -# 2639| m2639_5(unknown) = UninitializedGroup : -# 2639| m2639_6(unknown) = Chi : total:m2639_4, partial:m2639_5 -# 2639| m2639_7(unknown) = UninitializedGroup : -# 2639| m2639_8(unknown) = Chi : total:m2639_6, partial:m2639_7 -# 2641| r2641_1(glval) = FunctionAddress[predicateA] : -# 2641| r2641_2(bool) = Call[predicateA] : func:r2641_1 -# 2641| m2641_3(unknown) = ^CallSideEffect : ~m2639_8 -# 2641| m2641_4(unknown) = Chi : total:m2639_8, partial:m2641_3 -# 2641| v2641_5(void) = ConditionalBranch : r2641_2 +# 2641| void needs_chi_for_initialize_groups() +# 2641| Block 0 +# 2641| v2641_1(void) = EnterFunction : +# 2641| m2641_2(unknown) = AliasedDefinition : +# 2641| m2641_3(unknown) = InitializeNonLocal : +# 2641| m2641_4(unknown) = Chi : total:m2641_2, partial:m2641_3 +# 2641| m2641_5(unknown) = UninitializedGroup : +# 2641| m2641_6(unknown) = Chi : total:m2641_4, partial:m2641_5 +# 2641| m2641_7(unknown) = UninitializedGroup : +# 2641| m2641_8(unknown) = Chi : total:m2641_6, partial:m2641_7 +# 2643| r2643_1(glval) = FunctionAddress[predicateA] : +# 2643| r2643_2(bool) = Call[predicateA] : func:r2643_1 +# 2643| m2643_3(unknown) = ^CallSideEffect : ~m2641_8 +# 2643| m2643_4(unknown) = Chi : total:m2641_8, partial:m2643_3 +# 2643| v2643_5(void) = ConditionalBranch : r2643_2 #-----| False -> Block 4 #-----| True -> Block 1 -# 2643| Block 1 -# 2643| r2643_1(glval) = VariableAddress[data] : -# 2643| r2643_2(glval) = FunctionAddress[malloc] : -# 2643| r2643_3(unsigned long) = Constant[100] : -# 2643| r2643_4(void *) = Call[malloc] : func:r2643_2, 0:r2643_3 -# 2643| m2643_5(unknown) = ^CallSideEffect : ~m2641_4 -# 2643| m2643_6(unknown) = Chi : total:m2641_4, partial:m2643_5 -# 2643| m2643_7(unknown) = ^InitializeDynamicAllocation : &:r2643_4 -# 2643| m2643_8(unknown) = Chi : total:m2643_6, partial:m2643_7 -# 2643| r2643_9(long long *) = Convert : r2643_4 -# 2643| m2643_10(long long *) = Store[data] : &:r2643_1, r2643_9 -# 2644| r2644_1(glval) = VariableAddress[data] : -# 2644| r2644_2(long long *) = Load[data] : &:r2644_1, m2643_10 -# 2644| r2644_3(void *) = Convert : r2644_2 -# 2644| r2644_4(void *) = Constant[0] : -# 2644| r2644_5(bool) = CompareNE : r2644_3, r2644_4 -# 2644| v2644_6(void) = ConditionalBranch : r2644_5 +# 2645| Block 1 +# 2645| r2645_1(glval) = VariableAddress[data] : +# 2645| r2645_2(glval) = FunctionAddress[malloc] : +# 2645| r2645_3(unsigned long) = Constant[100] : +# 2645| r2645_4(void *) = Call[malloc] : func:r2645_2, 0:r2645_3 +# 2645| m2645_5(unknown) = ^CallSideEffect : ~m2643_4 +# 2645| m2645_6(unknown) = Chi : total:m2643_4, partial:m2645_5 +# 2645| m2645_7(unknown) = ^InitializeDynamicAllocation : &:r2645_4 +# 2645| m2645_8(unknown) = Chi : total:m2645_6, partial:m2645_7 +# 2645| r2645_9(long long *) = Convert : r2645_4 +# 2645| m2645_10(long long *) = Store[data] : &:r2645_1, r2645_9 +# 2646| r2646_1(glval) = VariableAddress[data] : +# 2646| r2646_2(long long *) = Load[data] : &:r2646_1, m2645_10 +# 2646| r2646_3(void *) = Convert : r2646_2 +# 2646| r2646_4(void *) = Constant[0] : +# 2646| r2646_5(bool) = CompareNE : r2646_3, r2646_4 +# 2646| v2646_6(void) = ConditionalBranch : r2646_5 #-----| False -> Block 3 #-----| True -> Block 2 -# 2646| Block 2 -# 2646| r2646_1(glval) = FunctionAddress[malloc] : -# 2646| r2646_2(unsigned long) = Constant[100] : -# 2646| r2646_3(void *) = Call[malloc] : func:r2646_1, 0:r2646_2 -# 2646| m2646_4(unknown) = ^CallSideEffect : ~m2643_8 -# 2646| m2646_5(unknown) = Chi : total:m2643_8, partial:m2646_4 -# 2646| m2646_6(unknown) = ^InitializeDynamicAllocation : &:r2646_3 -# 2646| m2646_7(unknown) = Chi : total:m2646_5, partial:m2646_6 -# 2646| r2646_8(long long *) = Convert : r2646_3 -# 2646| r2646_9(glval) = VariableAddress[data] : -# 2646| m2646_10(long long *) = Store[data] : &:r2646_9, r2646_8 +# 2648| Block 2 +# 2648| r2648_1(glval) = FunctionAddress[malloc] : +# 2648| r2648_2(unsigned long) = Constant[100] : +# 2648| r2648_3(void *) = Call[malloc] : func:r2648_1, 0:r2648_2 +# 2648| m2648_4(unknown) = ^CallSideEffect : ~m2645_8 +# 2648| m2648_5(unknown) = Chi : total:m2645_8, partial:m2648_4 +# 2648| m2648_6(unknown) = ^InitializeDynamicAllocation : &:r2648_3 +# 2648| m2648_7(unknown) = Chi : total:m2648_5, partial:m2648_6 +# 2648| r2648_8(long long *) = Convert : r2648_3 +# 2648| r2648_9(glval) = VariableAddress[data] : +# 2648| m2648_10(long long *) = Store[data] : &:r2648_9, r2648_8 #-----| Goto -> Block 3 -# 2648| Block 3 -# 2648| m2648_1(unknown) = Phi : from 1:~m2643_8, from 2:~m2646_7 -# 2648| m2648_2(long long *) = Phi : from 1:m2643_10, from 2:m2646_10 -# 2648| r2648_3(glval) = FunctionAddress[use_const_void_pointer] : -# 2648| r2648_4(glval) = VariableAddress[data] : -# 2648| r2648_5(long long *) = Load[data] : &:r2648_4, m2648_2 -# 2648| r2648_6(void *) = Convert : r2648_5 -# 2648| v2648_7(void) = Call[use_const_void_pointer] : func:r2648_3, 0:r2648_6 -# 2648| m2648_8(unknown) = ^CallSideEffect : ~m2648_1 -# 2648| m2648_9(unknown) = Chi : total:m2648_1, partial:m2648_8 -# 2648| v2648_10(void) = ^BufferReadSideEffect[0] : &:r2648_6, ~m2648_9 +# 2650| Block 3 +# 2650| m2650_1(unknown) = Phi : from 1:~m2645_8, from 2:~m2648_7 +# 2650| m2650_2(long long *) = Phi : from 1:m2645_10, from 2:m2648_10 +# 2650| r2650_3(glval) = FunctionAddress[use_const_void_pointer] : +# 2650| r2650_4(glval) = VariableAddress[data] : +# 2650| r2650_5(long long *) = Load[data] : &:r2650_4, m2650_2 +# 2650| r2650_6(void *) = Convert : r2650_5 +# 2650| v2650_7(void) = Call[use_const_void_pointer] : func:r2650_3, 0:r2650_6 +# 2650| m2650_8(unknown) = ^CallSideEffect : ~m2650_1 +# 2650| m2650_9(unknown) = Chi : total:m2650_1, partial:m2650_8 +# 2650| v2650_10(void) = ^BufferReadSideEffect[0] : &:r2650_6, ~m2650_9 #-----| Goto -> Block 7 -# 2652| Block 4 -# 2652| r2652_1(glval) = VariableAddress[data] : -# 2652| r2652_2(glval) = FunctionAddress[malloc] : -# 2652| r2652_3(unsigned long) = Constant[100] : -# 2652| r2652_4(void *) = Call[malloc] : func:r2652_2, 0:r2652_3 -# 2652| m2652_5(unknown) = ^CallSideEffect : ~m2641_4 -# 2652| m2652_6(unknown) = Chi : total:m2641_4, partial:m2652_5 -# 2652| m2652_7(unknown) = ^InitializeDynamicAllocation : &:r2652_4 -# 2652| m2652_8(unknown) = Chi : total:m2652_6, partial:m2652_7 -# 2652| r2652_9(long long *) = Convert : r2652_4 -# 2652| m2652_10(long long *) = Store[data] : &:r2652_1, r2652_9 -# 2653| r2653_1(glval) = VariableAddress[data] : -# 2653| r2653_2(long long *) = Load[data] : &:r2653_1, m2652_10 -# 2653| r2653_3(void *) = Convert : r2653_2 -# 2653| r2653_4(void *) = Constant[0] : -# 2653| r2653_5(bool) = CompareNE : r2653_3, r2653_4 -# 2653| v2653_6(void) = ConditionalBranch : r2653_5 +# 2654| Block 4 +# 2654| r2654_1(glval) = VariableAddress[data] : +# 2654| r2654_2(glval) = FunctionAddress[malloc] : +# 2654| r2654_3(unsigned long) = Constant[100] : +# 2654| r2654_4(void *) = Call[malloc] : func:r2654_2, 0:r2654_3 +# 2654| m2654_5(unknown) = ^CallSideEffect : ~m2643_4 +# 2654| m2654_6(unknown) = Chi : total:m2643_4, partial:m2654_5 +# 2654| m2654_7(unknown) = ^InitializeDynamicAllocation : &:r2654_4 +# 2654| m2654_8(unknown) = Chi : total:m2654_6, partial:m2654_7 +# 2654| r2654_9(long long *) = Convert : r2654_4 +# 2654| m2654_10(long long *) = Store[data] : &:r2654_1, r2654_9 +# 2655| r2655_1(glval) = VariableAddress[data] : +# 2655| r2655_2(long long *) = Load[data] : &:r2655_1, m2654_10 +# 2655| r2655_3(void *) = Convert : r2655_2 +# 2655| r2655_4(void *) = Constant[0] : +# 2655| r2655_5(bool) = CompareNE : r2655_3, r2655_4 +# 2655| v2655_6(void) = ConditionalBranch : r2655_5 #-----| False -> Block 6 #-----| True -> Block 5 -# 2655| Block 5 -# 2655| r2655_1(glval) = FunctionAddress[malloc] : -# 2655| r2655_2(unsigned long) = Constant[200] : -# 2655| r2655_3(void *) = Call[malloc] : func:r2655_1, 0:r2655_2 -# 2655| m2655_4(unknown) = ^CallSideEffect : ~m2652_8 -# 2655| m2655_5(unknown) = Chi : total:m2652_8, partial:m2655_4 -# 2655| m2655_6(unknown) = ^InitializeDynamicAllocation : &:r2655_3 -# 2655| m2655_7(unknown) = Chi : total:m2655_5, partial:m2655_6 -# 2655| r2655_8(long long *) = Convert : r2655_3 -# 2655| r2655_9(glval) = VariableAddress[data] : -# 2655| m2655_10(long long *) = Store[data] : &:r2655_9, r2655_8 +# 2657| Block 5 +# 2657| r2657_1(glval) = FunctionAddress[malloc] : +# 2657| r2657_2(unsigned long) = Constant[200] : +# 2657| r2657_3(void *) = Call[malloc] : func:r2657_1, 0:r2657_2 +# 2657| m2657_4(unknown) = ^CallSideEffect : ~m2654_8 +# 2657| m2657_5(unknown) = Chi : total:m2654_8, partial:m2657_4 +# 2657| m2657_6(unknown) = ^InitializeDynamicAllocation : &:r2657_3 +# 2657| m2657_7(unknown) = Chi : total:m2657_5, partial:m2657_6 +# 2657| r2657_8(long long *) = Convert : r2657_3 +# 2657| r2657_9(glval) = VariableAddress[data] : +# 2657| m2657_10(long long *) = Store[data] : &:r2657_9, r2657_8 #-----| Goto -> Block 6 -# 2657| Block 6 -# 2657| m2657_1(unknown) = Phi : from 4:~m2652_8, from 5:~m2655_7 -# 2657| m2657_2(long long *) = Phi : from 4:m2652_10, from 5:m2655_10 -# 2657| r2657_3(glval) = FunctionAddress[use_const_void_pointer] : -# 2657| r2657_4(glval) = VariableAddress[data] : -# 2657| r2657_5(long long *) = Load[data] : &:r2657_4, m2657_2 -# 2657| r2657_6(void *) = Convert : r2657_5 -# 2657| v2657_7(void) = Call[use_const_void_pointer] : func:r2657_3, 0:r2657_6 -# 2657| m2657_8(unknown) = ^CallSideEffect : ~m2657_1 -# 2657| m2657_9(unknown) = Chi : total:m2657_1, partial:m2657_8 -# 2657| v2657_10(void) = ^BufferReadSideEffect[0] : &:r2657_6, ~m2657_9 +# 2659| Block 6 +# 2659| m2659_1(unknown) = Phi : from 4:~m2654_8, from 5:~m2657_7 +# 2659| m2659_2(long long *) = Phi : from 4:m2654_10, from 5:m2657_10 +# 2659| r2659_3(glval) = FunctionAddress[use_const_void_pointer] : +# 2659| r2659_4(glval) = VariableAddress[data] : +# 2659| r2659_5(long long *) = Load[data] : &:r2659_4, m2659_2 +# 2659| r2659_6(void *) = Convert : r2659_5 +# 2659| v2659_7(void) = Call[use_const_void_pointer] : func:r2659_3, 0:r2659_6 +# 2659| m2659_8(unknown) = ^CallSideEffect : ~m2659_1 +# 2659| m2659_9(unknown) = Chi : total:m2659_1, partial:m2659_8 +# 2659| v2659_10(void) = ^BufferReadSideEffect[0] : &:r2659_6, ~m2659_9 #-----| Goto -> Block 7 -# 2659| Block 7 -# 2659| m2659_1(unknown) = Phi : from 3:~m2648_9, from 6:~m2657_9 -# 2659| v2659_2(void) = NoOp : -# 2639| v2639_9(void) = ReturnVoid : -# 2639| v2639_10(void) = AliasedUse : ~m2659_1 -# 2639| v2639_11(void) = ExitFunction : +# 2661| Block 7 +# 2661| m2661_1(unknown) = Phi : from 3:~m2650_9, from 6:~m2659_9 +# 2661| v2661_2(void) = NoOp : +# 2641| v2641_9(void) = ReturnVoid : +# 2641| v2641_10(void) = AliasedUse : ~m2661_1 +# 2641| v2641_11(void) = ExitFunction : -# 2663| void phi_with_single_input_at_merge(bool) -# 2663| Block 0 -# 2663| v2663_1(void) = EnterFunction : -# 2663| m2663_2(unknown) = AliasedDefinition : -# 2663| m2663_3(unknown) = InitializeNonLocal : -# 2663| m2663_4(unknown) = Chi : total:m2663_2, partial:m2663_3 -# 2663| r2663_5(glval) = VariableAddress[b] : -# 2663| m2663_6(bool) = InitializeParameter[b] : &:r2663_5 -# 2665| r2665_1(glval) = VariableAddress[data] : -# 2665| r2665_2(int *) = Constant[0] : -# 2665| m2665_3(int *) = Store[data] : &:r2665_1, r2665_2 -# 2666| r2666_1(glval) = VariableAddress[b] : -# 2666| r2666_2(bool) = Load[b] : &:r2666_1, m2663_6 -# 2666| v2666_3(void) = ConditionalBranch : r2666_2 +# 2665| void phi_with_single_input_at_merge(bool) +# 2665| Block 0 +# 2665| v2665_1(void) = EnterFunction : +# 2665| m2665_2(unknown) = AliasedDefinition : +# 2665| m2665_3(unknown) = InitializeNonLocal : +# 2665| m2665_4(unknown) = Chi : total:m2665_2, partial:m2665_3 +# 2665| r2665_5(glval) = VariableAddress[b] : +# 2665| m2665_6(bool) = InitializeParameter[b] : &:r2665_5 +# 2667| r2667_1(glval) = VariableAddress[data] : +# 2667| r2667_2(int *) = Constant[0] : +# 2667| m2667_3(int *) = Store[data] : &:r2667_1, r2667_2 +# 2668| r2668_1(glval) = VariableAddress[b] : +# 2668| r2668_2(bool) = Load[b] : &:r2668_1, m2665_6 +# 2668| v2668_3(void) = ConditionalBranch : r2668_2 #-----| False -> Block 2 #-----| True -> Block 1 -# 2667| Block 1 -# 2667| r2667_1(glval) = VariableAddress[intBuffer] : -# 2667| r2667_2(int) = Constant[8] : -# 2667| m2667_3(int) = Store[intBuffer] : &:r2667_1, r2667_2 -# 2667| m2667_4(unknown) = Chi : total:m2663_4, partial:m2667_3 -# 2668| r2668_1(glval) = VariableAddress[intBuffer] : -# 2668| r2668_2(int *) = CopyValue : r2668_1 -# 2668| r2668_3(glval) = VariableAddress[data] : -# 2668| m2668_4(int *) = Store[data] : &:r2668_3, r2668_2 +# 2669| Block 1 +# 2669| r2669_1(glval) = VariableAddress[intBuffer] : +# 2669| r2669_2(int) = Constant[8] : +# 2669| m2669_3(int) = Store[intBuffer] : &:r2669_1, r2669_2 +# 2669| m2669_4(unknown) = Chi : total:m2665_4, partial:m2669_3 +# 2670| r2670_1(glval) = VariableAddress[intBuffer] : +# 2670| r2670_2(int *) = CopyValue : r2670_1 +# 2670| r2670_3(glval) = VariableAddress[data] : +# 2670| m2670_4(int *) = Store[data] : &:r2670_3, r2670_2 #-----| Goto -> Block 2 -# 2670| Block 2 -# 2670| m2670_1(unknown) = Phi : from 0:~m2663_4, from 1:~m2667_4 -# 2670| m2670_2(int *) = Phi : from 0:m2665_3, from 1:m2668_4 -# 2670| r2670_3(glval) = FunctionAddress[use_int] : -# 2670| r2670_4(glval) = VariableAddress[data] : -# 2670| r2670_5(int *) = Load[data] : &:r2670_4, m2670_2 -# 2670| r2670_6(int) = Load[?] : &:r2670_5, ~m2670_1 -# 2670| v2670_7(void) = Call[use_int] : func:r2670_3, 0:r2670_6 -# 2670| m2670_8(unknown) = ^CallSideEffect : ~m2670_1 -# 2670| m2670_9(unknown) = Chi : total:m2670_1, partial:m2670_8 -# 2671| v2671_1(void) = NoOp : -# 2663| v2663_7(void) = ReturnVoid : -# 2663| v2663_8(void) = AliasedUse : ~m2670_9 -# 2663| v2663_9(void) = ExitFunction : +# 2672| Block 2 +# 2672| m2672_1(unknown) = Phi : from 0:~m2665_4, from 1:~m2669_4 +# 2672| m2672_2(int *) = Phi : from 0:m2667_3, from 1:m2670_4 +# 2672| r2672_3(glval) = FunctionAddress[use_int] : +# 2672| r2672_4(glval) = VariableAddress[data] : +# 2672| r2672_5(int *) = Load[data] : &:r2672_4, m2672_2 +# 2672| r2672_6(int) = Load[?] : &:r2672_5, ~m2672_1 +# 2672| v2672_7(void) = Call[use_int] : func:r2672_3, 0:r2672_6 +# 2672| m2672_8(unknown) = ^CallSideEffect : ~m2672_1 +# 2672| m2672_9(unknown) = Chi : total:m2672_1, partial:m2672_8 +# 2673| v2673_1(void) = NoOp : +# 2665| v2665_7(void) = ReturnVoid : +# 2665| v2665_8(void) = AliasedUse : ~m2672_9 +# 2665| v2665_9(void) = ExitFunction : -# 2684| void test(bool) -# 2684| Block 0 -# 2684| v2684_1(void) = EnterFunction : -# 2684| m2684_2(unknown) = AliasedDefinition : -# 2684| m2684_3(unknown) = InitializeNonLocal : -# 2684| m2684_4(unknown) = Chi : total:m2684_2, partial:m2684_3 -# 2684| m2684_5(unknown) = UninitializedGroup[#string2686:22,#string2686:27] : -# 2684| m2684_6(unknown) = Chi : total:m2684_4, partial:m2684_5 -# 2684| m2684_7(unknown) = UninitializedGroup[#string2686:22,#string2686:27] : -# 2684| m2684_8(unknown) = Chi : total:m2684_6, partial:m2684_7 -# 2684| r2684_9(glval) = VariableAddress[b] : -# 2684| m2684_10(bool) = InitializeParameter[b] : &:r2684_9 -# 2686| r2686_1(glval) = FunctionAddress[use] : -# 2686| r2686_2(glval) = VariableAddress[b] : -# 2686| r2686_3(bool) = Load[b] : &:r2686_2, m2684_10 -# 2686| v2686_4(void) = ConditionalBranch : r2686_3 +# 2686| void test(bool) +# 2686| Block 0 +# 2686| v2686_1(void) = EnterFunction : +# 2686| m2686_2(unknown) = AliasedDefinition : +# 2686| m2686_3(unknown) = InitializeNonLocal : +# 2686| m2686_4(unknown) = Chi : total:m2686_2, partial:m2686_3 +# 2686| m2686_5(unknown) = UninitializedGroup[#string2688:22,#string2688:27] : +# 2686| m2686_6(unknown) = Chi : total:m2686_4, partial:m2686_5 +# 2686| m2686_7(unknown) = UninitializedGroup[#string2688:22,#string2688:27] : +# 2686| m2686_8(unknown) = Chi : total:m2686_6, partial:m2686_7 +# 2686| r2686_9(glval) = VariableAddress[b] : +# 2686| m2686_10(bool) = InitializeParameter[b] : &:r2686_9 +# 2688| r2688_1(glval) = FunctionAddress[use] : +# 2688| r2688_2(glval) = VariableAddress[b] : +# 2688| r2688_3(bool) = Load[b] : &:r2688_2, m2686_10 +# 2688| v2688_4(void) = ConditionalBranch : r2688_3 #-----| False -> Block 3 #-----| True -> Block 2 -# 2686| Block 1 -# 2686| m2686_5(char *) = Phi : from 2:m2686_19, from 3:m2686_23 -# 2686| r2686_6(glval) = VariableAddress[#temp2686:18] : -# 2686| r2686_7(char *) = Load[#temp2686:18] : &:r2686_6, m2686_5 -# 2686| v2686_8(void) = Call[use] : func:r2686_1, 0:r2686_7 -# 2686| m2686_9(unknown) = ^CallSideEffect : ~m2684_8 -# 2686| m2686_10(unknown) = Chi : total:m2684_8, partial:m2686_9 -# 2686| v2686_11(void) = ^BufferReadSideEffect[0] : &:r2686_7, ~m2686_10 -# 2686| r2686_12(glval) = FunctionAddress[use] : -# 2686| r2686_13(glval) = VariableAddress[b] : -# 2686| r2686_14(bool) = Load[b] : &:r2686_13, m2684_10 -# 2686| v2686_15(void) = ConditionalBranch : r2686_14 +# 2688| Block 1 +# 2688| m2688_5(char *) = Phi : from 2:m2688_19, from 3:m2688_23 +# 2688| r2688_6(glval) = VariableAddress[#temp2688:18] : +# 2688| r2688_7(char *) = Load[#temp2688:18] : &:r2688_6, m2688_5 +# 2688| v2688_8(void) = Call[use] : func:r2688_1, 0:r2688_7 +# 2688| m2688_9(unknown) = ^CallSideEffect : ~m2686_8 +# 2688| m2688_10(unknown) = Chi : total:m2686_8, partial:m2688_9 +# 2688| v2688_11(void) = ^BufferReadSideEffect[0] : &:r2688_7, ~m2688_10 +# 2688| r2688_12(glval) = FunctionAddress[use] : +# 2688| r2688_13(glval) = VariableAddress[b] : +# 2688| r2688_14(bool) = Load[b] : &:r2688_13, m2686_10 +# 2688| v2688_15(void) = ConditionalBranch : r2688_14 #-----| False -> Block 6 #-----| True -> Block 5 -# 2686| Block 2 -# 2686| r2686_16(glval) = StringConstant[] : -# 2686| r2686_17(char *) = Convert : r2686_16 -# 2686| r2686_18(glval) = VariableAddress[#temp2686:18] : -# 2686| m2686_19(char *) = Store[#temp2686:18] : &:r2686_18, r2686_17 +# 2688| Block 2 +# 2688| r2688_16(glval) = StringConstant[] : +# 2688| r2688_17(char *) = Convert : r2688_16 +# 2688| r2688_18(glval) = VariableAddress[#temp2688:18] : +# 2688| m2688_19(char *) = Store[#temp2688:18] : &:r2688_18, r2688_17 #-----| Goto -> Block 1 -# 2686| Block 3 -# 2686| r2686_20(glval) = StringConstant[] : -# 2686| r2686_21(char *) = Convert : r2686_20 -# 2686| r2686_22(glval) = VariableAddress[#temp2686:18] : -# 2686| m2686_23(char *) = Store[#temp2686:18] : &:r2686_22, r2686_21 +# 2688| Block 3 +# 2688| r2688_20(glval) = StringConstant[] : +# 2688| r2688_21(char *) = Convert : r2688_20 +# 2688| r2688_22(glval) = VariableAddress[#temp2688:18] : +# 2688| m2688_23(char *) = Store[#temp2688:18] : &:r2688_22, r2688_21 #-----| Goto -> Block 1 -# 2686| Block 4 -# 2686| m2686_24(char *) = Phi : from 5:m2686_36, from 6:m2686_40 -# 2686| r2686_25(glval) = VariableAddress[#temp2686:18] : -# 2686| r2686_26(char *) = Load[#temp2686:18] : &:r2686_25, m2686_24 -# 2686| v2686_27(void) = Call[use] : func:r2686_12, 0:r2686_26 -# 2686| m2686_28(unknown) = ^CallSideEffect : ~m2686_10 -# 2686| m2686_29(unknown) = Chi : total:m2686_10, partial:m2686_28 -# 2686| v2686_30(void) = ^BufferReadSideEffect[0] : &:r2686_26, ~m2686_29 -# 2686| r2686_31(bool) = Constant[0] : -# 2686| v2686_32(void) = ConditionalBranch : r2686_31 +# 2688| Block 4 +# 2688| m2688_24(char *) = Phi : from 5:m2688_36, from 6:m2688_40 +# 2688| r2688_25(glval) = VariableAddress[#temp2688:18] : +# 2688| r2688_26(char *) = Load[#temp2688:18] : &:r2688_25, m2688_24 +# 2688| v2688_27(void) = Call[use] : func:r2688_12, 0:r2688_26 +# 2688| m2688_28(unknown) = ^CallSideEffect : ~m2688_10 +# 2688| m2688_29(unknown) = Chi : total:m2688_10, partial:m2688_28 +# 2688| v2688_30(void) = ^BufferReadSideEffect[0] : &:r2688_26, ~m2688_29 +# 2688| r2688_31(bool) = Constant[0] : +# 2688| v2688_32(void) = ConditionalBranch : r2688_31 #-----| False -> Block 7 #-----| True -> Block 8 -# 2686| Block 5 -# 2686| r2686_33(glval) = StringConstant[] : -# 2686| r2686_34(char *) = Convert : r2686_33 -# 2686| r2686_35(glval) = VariableAddress[#temp2686:18] : -# 2686| m2686_36(char *) = Store[#temp2686:18] : &:r2686_35, r2686_34 +# 2688| Block 5 +# 2688| r2688_33(glval) = StringConstant[] : +# 2688| r2688_34(char *) = Convert : r2688_33 +# 2688| r2688_35(glval) = VariableAddress[#temp2688:18] : +# 2688| m2688_36(char *) = Store[#temp2688:18] : &:r2688_35, r2688_34 #-----| Goto -> Block 4 -# 2686| Block 6 -# 2686| r2686_37(glval) = StringConstant[] : -# 2686| r2686_38(char *) = Convert : r2686_37 -# 2686| r2686_39(glval) = VariableAddress[#temp2686:18] : -# 2686| m2686_40(char *) = Store[#temp2686:18] : &:r2686_39, r2686_38 +# 2688| Block 6 +# 2688| r2688_37(glval) = StringConstant[] : +# 2688| r2688_38(char *) = Convert : r2688_37 +# 2688| r2688_39(glval) = VariableAddress[#temp2688:18] : +# 2688| m2688_40(char *) = Store[#temp2688:18] : &:r2688_39, r2688_38 #-----| Goto -> Block 4 -# 2687| Block 7 -# 2687| v2687_1(void) = NoOp : -# 2684| v2684_11(void) = ReturnVoid : -# 2684| v2684_12(void) = AliasedUse : ~m2686_29 -# 2684| v2684_13(void) = ExitFunction : +# 2689| Block 7 +# 2689| v2689_1(void) = NoOp : +# 2686| v2686_11(void) = ReturnVoid : +# 2686| v2686_12(void) = AliasedUse : ~m2688_29 +# 2686| v2686_13(void) = ExitFunction : -# 2684| Block 8 -# 2684| v2684_14(void) = Unreached : +# 2686| Block 8 +# 2686| v2686_14(void) = Unreached : -# 2691| int concepts::requires_use() -# 2691| Block 0 -# 2691| v2691_1(void) = EnterFunction : -# 2691| m2691_2(unknown) = AliasedDefinition : -# 2691| m2691_3(unknown) = InitializeNonLocal : -# 2691| m2691_4(unknown) = Chi : total:m2691_2, partial:m2691_3 -# 2692| r2692_1(glval) = VariableAddress[y] : -# 2692| r2692_2(int) = Constant[1] : -# 2692| m2692_3(int) = Store[y] : &:r2692_1, r2692_2 -# 2693| r2693_1(glval) = VariableAddress[#return] : -# 2693| r2693_2(glval) = VariableAddress[y] : -# 2693| r2693_3(int) = Load[y] : &:r2693_2, m2692_3 -# 2693| m2693_4(int) = Store[#return] : &:r2693_1, r2693_3 -# 2691| r2691_5(glval) = VariableAddress[#return] : -# 2691| v2691_6(void) = ReturnValue : &:r2691_5, m2693_4 -# 2691| v2691_7(void) = AliasedUse : m2691_3 -# 2691| v2691_8(void) = ExitFunction : +# 2693| int concepts::requires_use() +# 2693| Block 0 +# 2693| v2693_1(void) = EnterFunction : +# 2693| m2693_2(unknown) = AliasedDefinition : +# 2693| m2693_3(unknown) = InitializeNonLocal : +# 2693| m2693_4(unknown) = Chi : total:m2693_2, partial:m2693_3 +# 2694| r2694_1(glval) = VariableAddress[y] : +# 2694| r2694_2(int) = Constant[1] : +# 2694| m2694_3(int) = Store[y] : &:r2694_1, r2694_2 +# 2695| r2695_1(glval) = VariableAddress[#return] : +# 2695| r2695_2(glval) = VariableAddress[y] : +# 2695| r2695_3(int) = Load[y] : &:r2695_2, m2694_3 +# 2695| m2695_4(int) = Store[#return] : &:r2695_1, r2695_3 +# 2693| r2693_5(glval) = VariableAddress[#return] : +# 2693| v2693_6(void) = ReturnValue : &:r2693_5, m2695_4 +# 2693| v2693_7(void) = AliasedUse : m2693_3 +# 2693| v2693_8(void) = ExitFunction : -# 2698| void branch_on_integral_in_cpp(int, int) -# 2698| Block 0 -# 2698| v2698_1(void) = EnterFunction : -# 2698| m2698_2(unknown) = AliasedDefinition : -# 2698| m2698_3(unknown) = InitializeNonLocal : -# 2698| m2698_4(unknown) = Chi : total:m2698_2, partial:m2698_3 -# 2698| r2698_5(glval) = VariableAddress[x1] : -# 2698| m2698_6(int) = InitializeParameter[x1] : &:r2698_5 -# 2698| r2698_7(glval) = VariableAddress[x2] : -# 2698| m2698_8(int) = InitializeParameter[x2] : &:r2698_7 -# 2699| r2699_1(glval) = VariableAddress[x1] : -# 2699| r2699_2(int) = Load[x1] : &:r2699_1, m2698_6 -# 2699| r2699_3(int) = Constant[0] : -# 2699| r2699_4(bool) = CompareNE : r2699_2, r2699_3 -# 2699| v2699_5(void) = ConditionalBranch : r2699_4 +# 2700| void branch_on_integral_in_cpp(int, int) +# 2700| Block 0 +# 2700| v2700_1(void) = EnterFunction : +# 2700| m2700_2(unknown) = AliasedDefinition : +# 2700| m2700_3(unknown) = InitializeNonLocal : +# 2700| m2700_4(unknown) = Chi : total:m2700_2, partial:m2700_3 +# 2700| r2700_5(glval) = VariableAddress[x1] : +# 2700| m2700_6(int) = InitializeParameter[x1] : &:r2700_5 +# 2700| r2700_7(glval) = VariableAddress[x2] : +# 2700| m2700_8(int) = InitializeParameter[x2] : &:r2700_7 +# 2701| r2701_1(glval) = VariableAddress[x1] : +# 2701| r2701_2(int) = Load[x1] : &:r2701_1, m2700_6 +# 2701| r2701_3(int) = Constant[0] : +# 2701| r2701_4(bool) = CompareNE : r2701_2, r2701_3 +# 2701| v2701_5(void) = ConditionalBranch : r2701_4 #-----| False -> Block 2 #-----| True -> Block 1 -# 2699| Block 1 -# 2699| v2699_6(void) = NoOp : +# 2701| Block 1 +# 2701| v2701_6(void) = NoOp : #-----| Goto -> Block 2 -# 2700| Block 2 -# 2700| r2700_1(glval) = VariableAddress[x1] : -# 2700| r2700_2(int) = Load[x1] : &:r2700_1, m2698_6 -# 2700| r2700_3(int) = Constant[0] : -# 2700| r2700_4(bool) = CompareNE : r2700_2, r2700_3 -# 2700| r2700_5(bool) = LogicalNot : r2700_4 -# 2700| v2700_6(void) = ConditionalBranch : r2700_5 +# 2702| Block 2 +# 2702| r2702_1(glval) = VariableAddress[x1] : +# 2702| r2702_2(int) = Load[x1] : &:r2702_1, m2700_6 +# 2702| r2702_3(int) = Constant[0] : +# 2702| r2702_4(bool) = CompareNE : r2702_2, r2702_3 +# 2702| r2702_5(bool) = LogicalNot : r2702_4 +# 2702| v2702_6(void) = ConditionalBranch : r2702_5 #-----| False -> Block 4 #-----| True -> Block 3 -# 2700| Block 3 -# 2700| v2700_7(void) = NoOp : +# 2702| Block 3 +# 2702| v2702_7(void) = NoOp : #-----| Goto -> Block 4 -# 2702| Block 4 -# 2702| r2702_1(glval) = VariableAddress[y] : -# 2702| r2702_2(glval) = VariableAddress[x1] : -# 2702| r2702_3(int) = Load[x1] : &:r2702_2, m2698_6 -# 2702| r2702_4(int) = Constant[0] : -# 2702| r2702_5(bool) = CompareNE : r2702_3, r2702_4 -# 2702| r2702_6(bool) = LogicalNot : r2702_5 -# 2702| r2702_7(int) = Convert : r2702_6 -# 2702| m2702_8(int) = Store[y] : &:r2702_1, r2702_7 -# 2703| r2703_1(glval) = VariableAddress[y] : -# 2703| r2703_2(int) = Load[y] : &:r2703_1, m2702_8 -# 2703| r2703_3(int) = Constant[0] : -# 2703| r2703_4(bool) = CompareNE : r2703_2, r2703_3 -# 2703| v2703_5(void) = ConditionalBranch : r2703_4 +# 2704| Block 4 +# 2704| r2704_1(glval) = VariableAddress[y] : +# 2704| r2704_2(glval) = VariableAddress[x1] : +# 2704| r2704_3(int) = Load[x1] : &:r2704_2, m2700_6 +# 2704| r2704_4(int) = Constant[0] : +# 2704| r2704_5(bool) = CompareNE : r2704_3, r2704_4 +# 2704| r2704_6(bool) = LogicalNot : r2704_5 +# 2704| r2704_7(int) = Convert : r2704_6 +# 2704| m2704_8(int) = Store[y] : &:r2704_1, r2704_7 +# 2705| r2705_1(glval) = VariableAddress[y] : +# 2705| r2705_2(int) = Load[y] : &:r2705_1, m2704_8 +# 2705| r2705_3(int) = Constant[0] : +# 2705| r2705_4(bool) = CompareNE : r2705_2, r2705_3 +# 2705| v2705_5(void) = ConditionalBranch : r2705_4 #-----| False -> Block 6 #-----| True -> Block 5 -# 2703| Block 5 -# 2703| v2703_6(void) = NoOp : +# 2705| Block 5 +# 2705| v2705_6(void) = NoOp : #-----| Goto -> Block 6 -# 2704| Block 6 -# 2704| r2704_1(glval) = VariableAddress[y] : -# 2704| r2704_2(int) = Load[y] : &:r2704_1, m2702_8 -# 2704| r2704_3(int) = Constant[0] : -# 2704| r2704_4(bool) = CompareNE : r2704_2, r2704_3 -# 2704| r2704_5(bool) = LogicalNot : r2704_4 -# 2704| v2704_6(void) = ConditionalBranch : r2704_5 +# 2706| Block 6 +# 2706| r2706_1(glval) = VariableAddress[y] : +# 2706| r2706_2(int) = Load[y] : &:r2706_1, m2704_8 +# 2706| r2706_3(int) = Constant[0] : +# 2706| r2706_4(bool) = CompareNE : r2706_2, r2706_3 +# 2706| r2706_5(bool) = LogicalNot : r2706_4 +# 2706| v2706_6(void) = ConditionalBranch : r2706_5 #-----| False -> Block 8 #-----| True -> Block 7 -# 2704| Block 7 -# 2704| v2704_7(void) = NoOp : +# 2706| Block 7 +# 2706| v2706_7(void) = NoOp : #-----| Goto -> Block 8 -# 2706| Block 8 -# 2706| r2706_1(glval) = VariableAddress[x1] : -# 2706| r2706_2(int) = Load[x1] : &:r2706_1, m2698_6 -# 2706| r2706_3(int) = Constant[0] : -# 2706| r2706_4(bool) = CompareNE : r2706_2, r2706_3 -# 2706| v2706_5(void) = ConditionalBranch : r2706_4 -#-----| False -> Block 11 -#-----| True -> Block 9 - -# 2706| Block 9 -# 2706| r2706_6(glval) = VariableAddress[x2] : -# 2706| r2706_7(int) = Load[x2] : &:r2706_6, m2698_8 -# 2706| r2706_8(int) = Constant[0] : -# 2706| r2706_9(bool) = CompareNE : r2706_7, r2706_8 -# 2706| v2706_10(void) = ConditionalBranch : r2706_9 -#-----| False -> Block 11 -#-----| True -> Block 10 - -# 2706| Block 10 -# 2706| v2706_11(void) = NoOp : -#-----| Goto -> Block 11 - -# 2707| Block 11 -# 2707| r2707_1(glval) = VariableAddress[x1] : -# 2707| r2707_2(int) = Load[x1] : &:r2707_1, m2698_6 -# 2707| r2707_3(int) = Constant[0] : -# 2707| r2707_4(bool) = CompareNE : r2707_2, r2707_3 -# 2707| r2707_5(bool) = LogicalNot : r2707_4 -# 2707| v2707_6(void) = ConditionalBranch : r2707_5 -#-----| False -> Block 14 -#-----| True -> Block 12 - -# 2707| Block 12 -# 2707| r2707_7(glval) = VariableAddress[x2] : -# 2707| r2707_8(int) = Load[x2] : &:r2707_7, m2698_8 -# 2707| r2707_9(int) = Constant[0] : -# 2707| r2707_10(bool) = CompareNE : r2707_8, r2707_9 -# 2707| v2707_11(void) = ConditionalBranch : r2707_10 -#-----| False -> Block 14 -#-----| True -> Block 13 - -# 2707| Block 13 -# 2707| v2707_12(void) = NoOp : -#-----| Goto -> Block 14 - -# 2708| Block 14 +# 2708| Block 8 # 2708| r2708_1(glval) = VariableAddress[x1] : -# 2708| r2708_2(int) = Load[x1] : &:r2708_1, m2698_6 +# 2708| r2708_2(int) = Load[x1] : &:r2708_1, m2700_6 # 2708| r2708_3(int) = Constant[0] : # 2708| r2708_4(bool) = CompareNE : r2708_2, r2708_3 # 2708| v2708_5(void) = ConditionalBranch : r2708_4 -#-----| False -> Block 17 -#-----| True -> Block 15 +#-----| False -> Block 11 +#-----| True -> Block 9 -# 2708| Block 15 +# 2708| Block 9 # 2708| r2708_6(glval) = VariableAddress[x2] : -# 2708| r2708_7(int) = Load[x2] : &:r2708_6, m2698_8 +# 2708| r2708_7(int) = Load[x2] : &:r2708_6, m2700_8 # 2708| r2708_8(int) = Constant[0] : # 2708| r2708_9(bool) = CompareNE : r2708_7, r2708_8 -# 2708| r2708_10(bool) = LogicalNot : r2708_9 -# 2708| v2708_11(void) = ConditionalBranch : r2708_10 -#-----| False -> Block 17 -#-----| True -> Block 16 +# 2708| v2708_10(void) = ConditionalBranch : r2708_9 +#-----| False -> Block 11 +#-----| True -> Block 10 -# 2708| Block 16 -# 2708| v2708_12(void) = NoOp : -#-----| Goto -> Block 17 +# 2708| Block 10 +# 2708| v2708_11(void) = NoOp : +#-----| Goto -> Block 11 -# 2709| Block 17 +# 2709| Block 11 # 2709| r2709_1(glval) = VariableAddress[x1] : -# 2709| r2709_2(int) = Load[x1] : &:r2709_1, m2698_6 +# 2709| r2709_2(int) = Load[x1] : &:r2709_1, m2700_6 # 2709| r2709_3(int) = Constant[0] : # 2709| r2709_4(bool) = CompareNE : r2709_2, r2709_3 # 2709| r2709_5(bool) = LogicalNot : r2709_4 # 2709| v2709_6(void) = ConditionalBranch : r2709_5 -#-----| False -> Block 20 -#-----| True -> Block 18 +#-----| False -> Block 14 +#-----| True -> Block 12 -# 2709| Block 18 +# 2709| Block 12 # 2709| r2709_7(glval) = VariableAddress[x2] : -# 2709| r2709_8(int) = Load[x2] : &:r2709_7, m2698_8 +# 2709| r2709_8(int) = Load[x2] : &:r2709_7, m2700_8 # 2709| r2709_9(int) = Constant[0] : # 2709| r2709_10(bool) = CompareNE : r2709_8, r2709_9 -# 2709| r2709_11(bool) = LogicalNot : r2709_10 -# 2709| v2709_12(void) = ConditionalBranch : r2709_11 -#-----| False -> Block 20 -#-----| True -> Block 19 +# 2709| v2709_11(void) = ConditionalBranch : r2709_10 +#-----| False -> Block 14 +#-----| True -> Block 13 -# 2709| Block 19 -# 2709| v2709_13(void) = NoOp : -#-----| Goto -> Block 20 +# 2709| Block 13 +# 2709| v2709_12(void) = NoOp : +#-----| Goto -> Block 14 -# 2710| Block 20 +# 2710| Block 14 # 2710| r2710_1(glval) = VariableAddress[x1] : -# 2710| r2710_2(int) = Load[x1] : &:r2710_1, m2698_6 +# 2710| r2710_2(int) = Load[x1] : &:r2710_1, m2700_6 # 2710| r2710_3(int) = Constant[0] : # 2710| r2710_4(bool) = CompareNE : r2710_2, r2710_3 # 2710| v2710_5(void) = ConditionalBranch : r2710_4 -#-----| False -> Block 21 -#-----| True -> Block 22 +#-----| False -> Block 17 +#-----| True -> Block 15 -# 2710| Block 21 +# 2710| Block 15 # 2710| r2710_6(glval) = VariableAddress[x2] : -# 2710| r2710_7(int) = Load[x2] : &:r2710_6, m2698_8 +# 2710| r2710_7(int) = Load[x2] : &:r2710_6, m2700_8 # 2710| r2710_8(int) = Constant[0] : # 2710| r2710_9(bool) = CompareNE : r2710_7, r2710_8 -# 2710| v2710_10(void) = ConditionalBranch : r2710_9 -#-----| False -> Block 23 -#-----| True -> Block 22 +# 2710| r2710_10(bool) = LogicalNot : r2710_9 +# 2710| v2710_11(void) = ConditionalBranch : r2710_10 +#-----| False -> Block 17 +#-----| True -> Block 16 -# 2710| Block 22 -# 2710| v2710_11(void) = NoOp : -#-----| Goto -> Block 23 +# 2710| Block 16 +# 2710| v2710_12(void) = NoOp : +#-----| Goto -> Block 17 -# 2711| Block 23 +# 2711| Block 17 # 2711| r2711_1(glval) = VariableAddress[x1] : -# 2711| r2711_2(int) = Load[x1] : &:r2711_1, m2698_6 +# 2711| r2711_2(int) = Load[x1] : &:r2711_1, m2700_6 # 2711| r2711_3(int) = Constant[0] : # 2711| r2711_4(bool) = CompareNE : r2711_2, r2711_3 # 2711| r2711_5(bool) = LogicalNot : r2711_4 # 2711| v2711_6(void) = ConditionalBranch : r2711_5 -#-----| False -> Block 24 -#-----| True -> Block 25 +#-----| False -> Block 20 +#-----| True -> Block 18 -# 2711| Block 24 +# 2711| Block 18 # 2711| r2711_7(glval) = VariableAddress[x2] : -# 2711| r2711_8(int) = Load[x2] : &:r2711_7, m2698_8 +# 2711| r2711_8(int) = Load[x2] : &:r2711_7, m2700_8 # 2711| r2711_9(int) = Constant[0] : # 2711| r2711_10(bool) = CompareNE : r2711_8, r2711_9 -# 2711| v2711_11(void) = ConditionalBranch : r2711_10 -#-----| False -> Block 26 -#-----| True -> Block 25 +# 2711| r2711_11(bool) = LogicalNot : r2711_10 +# 2711| v2711_12(void) = ConditionalBranch : r2711_11 +#-----| False -> Block 20 +#-----| True -> Block 19 -# 2711| Block 25 -# 2711| v2711_12(void) = NoOp : -#-----| Goto -> Block 26 +# 2711| Block 19 +# 2711| v2711_13(void) = NoOp : +#-----| Goto -> Block 20 -# 2712| Block 26 +# 2712| Block 20 # 2712| r2712_1(glval) = VariableAddress[x1] : -# 2712| r2712_2(int) = Load[x1] : &:r2712_1, m2698_6 +# 2712| r2712_2(int) = Load[x1] : &:r2712_1, m2700_6 # 2712| r2712_3(int) = Constant[0] : # 2712| r2712_4(bool) = CompareNE : r2712_2, r2712_3 # 2712| v2712_5(void) = ConditionalBranch : r2712_4 -#-----| False -> Block 27 -#-----| True -> Block 28 +#-----| False -> Block 21 +#-----| True -> Block 22 -# 2712| Block 27 +# 2712| Block 21 # 2712| r2712_6(glval) = VariableAddress[x2] : -# 2712| r2712_7(int) = Load[x2] : &:r2712_6, m2698_8 +# 2712| r2712_7(int) = Load[x2] : &:r2712_6, m2700_8 # 2712| r2712_8(int) = Constant[0] : # 2712| r2712_9(bool) = CompareNE : r2712_7, r2712_8 -# 2712| r2712_10(bool) = LogicalNot : r2712_9 -# 2712| v2712_11(void) = ConditionalBranch : r2712_10 -#-----| False -> Block 29 -#-----| True -> Block 28 +# 2712| v2712_10(void) = ConditionalBranch : r2712_9 +#-----| False -> Block 23 +#-----| True -> Block 22 -# 2712| Block 28 -# 2712| v2712_12(void) = NoOp : -#-----| Goto -> Block 29 +# 2712| Block 22 +# 2712| v2712_11(void) = NoOp : +#-----| Goto -> Block 23 -# 2713| Block 29 +# 2713| Block 23 # 2713| r2713_1(glval) = VariableAddress[x1] : -# 2713| r2713_2(int) = Load[x1] : &:r2713_1, m2698_6 +# 2713| r2713_2(int) = Load[x1] : &:r2713_1, m2700_6 # 2713| r2713_3(int) = Constant[0] : # 2713| r2713_4(bool) = CompareNE : r2713_2, r2713_3 # 2713| r2713_5(bool) = LogicalNot : r2713_4 # 2713| v2713_6(void) = ConditionalBranch : r2713_5 +#-----| False -> Block 24 +#-----| True -> Block 25 + +# 2713| Block 24 +# 2713| r2713_7(glval) = VariableAddress[x2] : +# 2713| r2713_8(int) = Load[x2] : &:r2713_7, m2700_8 +# 2713| r2713_9(int) = Constant[0] : +# 2713| r2713_10(bool) = CompareNE : r2713_8, r2713_9 +# 2713| v2713_11(void) = ConditionalBranch : r2713_10 +#-----| False -> Block 26 +#-----| True -> Block 25 + +# 2713| Block 25 +# 2713| v2713_12(void) = NoOp : +#-----| Goto -> Block 26 + +# 2714| Block 26 +# 2714| r2714_1(glval) = VariableAddress[x1] : +# 2714| r2714_2(int) = Load[x1] : &:r2714_1, m2700_6 +# 2714| r2714_3(int) = Constant[0] : +# 2714| r2714_4(bool) = CompareNE : r2714_2, r2714_3 +# 2714| v2714_5(void) = ConditionalBranch : r2714_4 +#-----| False -> Block 27 +#-----| True -> Block 28 + +# 2714| Block 27 +# 2714| r2714_6(glval) = VariableAddress[x2] : +# 2714| r2714_7(int) = Load[x2] : &:r2714_6, m2700_8 +# 2714| r2714_8(int) = Constant[0] : +# 2714| r2714_9(bool) = CompareNE : r2714_7, r2714_8 +# 2714| r2714_10(bool) = LogicalNot : r2714_9 +# 2714| v2714_11(void) = ConditionalBranch : r2714_10 +#-----| False -> Block 29 +#-----| True -> Block 28 + +# 2714| Block 28 +# 2714| v2714_12(void) = NoOp : +#-----| Goto -> Block 29 + +# 2715| Block 29 +# 2715| r2715_1(glval) = VariableAddress[x1] : +# 2715| r2715_2(int) = Load[x1] : &:r2715_1, m2700_6 +# 2715| r2715_3(int) = Constant[0] : +# 2715| r2715_4(bool) = CompareNE : r2715_2, r2715_3 +# 2715| r2715_5(bool) = LogicalNot : r2715_4 +# 2715| v2715_6(void) = ConditionalBranch : r2715_5 #-----| False -> Block 30 #-----| True -> Block 31 -# 2713| Block 30 -# 2713| r2713_7(glval) = VariableAddress[x2] : -# 2713| r2713_8(int) = Load[x2] : &:r2713_7, m2698_8 -# 2713| r2713_9(int) = Constant[0] : -# 2713| r2713_10(bool) = CompareNE : r2713_8, r2713_9 -# 2713| r2713_11(bool) = LogicalNot : r2713_10 -# 2713| v2713_12(void) = ConditionalBranch : r2713_11 +# 2715| Block 30 +# 2715| r2715_7(glval) = VariableAddress[x2] : +# 2715| r2715_8(int) = Load[x2] : &:r2715_7, m2700_8 +# 2715| r2715_9(int) = Constant[0] : +# 2715| r2715_10(bool) = CompareNE : r2715_8, r2715_9 +# 2715| r2715_11(bool) = LogicalNot : r2715_10 +# 2715| v2715_12(void) = ConditionalBranch : r2715_11 #-----| False -> Block 32 #-----| True -> Block 31 -# 2713| Block 31 -# 2713| v2713_13(void) = NoOp : +# 2715| Block 31 +# 2715| v2715_13(void) = NoOp : #-----| Goto -> Block 32 -# 2715| Block 32 -# 2715| r2715_1(glval) = VariableAddress[x_1_and_2] : -# 2715| r2715_2(glval) = VariableAddress[x1] : -# 2715| r2715_3(int) = Load[x1] : &:r2715_2, m2698_6 -# 2715| r2715_4(int) = Constant[0] : -# 2715| r2715_5(bool) = CompareNE : r2715_3, r2715_4 -# 2715| v2715_6(void) = ConditionalBranch : r2715_5 +# 2717| Block 32 +# 2717| r2717_1(glval) = VariableAddress[x_1_and_2] : +# 2717| r2717_2(glval) = VariableAddress[x1] : +# 2717| r2717_3(int) = Load[x1] : &:r2717_2, m2700_6 +# 2717| r2717_4(int) = Constant[0] : +# 2717| r2717_5(bool) = CompareNE : r2717_3, r2717_4 +# 2717| v2717_6(void) = ConditionalBranch : r2717_5 #-----| False -> Block 33 #-----| True -> Block 36 -# 2715| Block 33 -# 2715| r2715_7(glval) = VariableAddress[#temp2715:19] : -# 2715| r2715_8(bool) = Constant[0] : -# 2715| m2715_9(bool) = Store[#temp2715:19] : &:r2715_7, r2715_8 +# 2717| Block 33 +# 2717| r2717_7(glval) = VariableAddress[#temp2717:19] : +# 2717| r2717_8(bool) = Constant[0] : +# 2717| m2717_9(bool) = Store[#temp2717:19] : &:r2717_7, r2717_8 #-----| Goto -> Block 34 -# 2715| Block 34 -# 2715| m2715_10(bool) = Phi : from 33:m2715_9, from 35:m2715_17 -# 2715| r2715_11(glval) = VariableAddress[#temp2715:19] : -# 2715| r2715_12(bool) = Load[#temp2715:19] : &:r2715_11, m2715_10 -# 2715| r2715_13(int) = Convert : r2715_12 -# 2715| m2715_14(int) = Store[x_1_and_2] : &:r2715_1, r2715_13 -# 2716| r2716_1(glval) = VariableAddress[x_1_and_2] : -# 2716| r2716_2(int) = Load[x_1_and_2] : &:r2716_1, m2715_14 -# 2716| r2716_3(int) = Constant[0] : -# 2716| r2716_4(bool) = CompareNE : r2716_2, r2716_3 -# 2716| v2716_5(void) = ConditionalBranch : r2716_4 +# 2717| Block 34 +# 2717| m2717_10(bool) = Phi : from 33:m2717_9, from 35:m2717_17 +# 2717| r2717_11(glval) = VariableAddress[#temp2717:19] : +# 2717| r2717_12(bool) = Load[#temp2717:19] : &:r2717_11, m2717_10 +# 2717| r2717_13(int) = Convert : r2717_12 +# 2717| m2717_14(int) = Store[x_1_and_2] : &:r2717_1, r2717_13 +# 2718| r2718_1(glval) = VariableAddress[x_1_and_2] : +# 2718| r2718_2(int) = Load[x_1_and_2] : &:r2718_1, m2717_14 +# 2718| r2718_3(int) = Constant[0] : +# 2718| r2718_4(bool) = CompareNE : r2718_2, r2718_3 +# 2718| v2718_5(void) = ConditionalBranch : r2718_4 #-----| False -> Block 38 #-----| True -> Block 37 -# 2715| Block 35 -# 2715| r2715_15(glval) = VariableAddress[#temp2715:19] : -# 2715| r2715_16(bool) = Constant[1] : -# 2715| m2715_17(bool) = Store[#temp2715:19] : &:r2715_15, r2715_16 +# 2717| Block 35 +# 2717| r2717_15(glval) = VariableAddress[#temp2717:19] : +# 2717| r2717_16(bool) = Constant[1] : +# 2717| m2717_17(bool) = Store[#temp2717:19] : &:r2717_15, r2717_16 #-----| Goto -> Block 34 -# 2715| Block 36 -# 2715| r2715_18(glval) = VariableAddress[x2] : -# 2715| r2715_19(int) = Load[x2] : &:r2715_18, m2698_8 -# 2715| r2715_20(int) = Constant[0] : -# 2715| r2715_21(bool) = CompareNE : r2715_19, r2715_20 -# 2715| v2715_22(void) = ConditionalBranch : r2715_21 +# 2717| Block 36 +# 2717| r2717_18(glval) = VariableAddress[x2] : +# 2717| r2717_19(int) = Load[x2] : &:r2717_18, m2700_8 +# 2717| r2717_20(int) = Constant[0] : +# 2717| r2717_21(bool) = CompareNE : r2717_19, r2717_20 +# 2717| v2717_22(void) = ConditionalBranch : r2717_21 #-----| False -> Block 33 #-----| True -> Block 35 -# 2716| Block 37 -# 2716| v2716_6(void) = NoOp : +# 2718| Block 37 +# 2718| v2718_6(void) = NoOp : #-----| Goto -> Block 38 -# 2717| Block 38 -# 2717| r2717_1(glval) = VariableAddress[x_1_and_2] : -# 2717| r2717_2(int) = Load[x_1_and_2] : &:r2717_1, m2715_14 -# 2717| r2717_3(int) = Constant[0] : -# 2717| r2717_4(bool) = CompareNE : r2717_2, r2717_3 -# 2717| r2717_5(bool) = LogicalNot : r2717_4 -# 2717| v2717_6(void) = ConditionalBranch : r2717_5 +# 2719| Block 38 +# 2719| r2719_1(glval) = VariableAddress[x_1_and_2] : +# 2719| r2719_2(int) = Load[x_1_and_2] : &:r2719_1, m2717_14 +# 2719| r2719_3(int) = Constant[0] : +# 2719| r2719_4(bool) = CompareNE : r2719_2, r2719_3 +# 2719| r2719_5(bool) = LogicalNot : r2719_4 +# 2719| v2719_6(void) = ConditionalBranch : r2719_5 #-----| False -> Block 40 #-----| True -> Block 39 -# 2717| Block 39 -# 2717| v2717_7(void) = NoOp : +# 2719| Block 39 +# 2719| v2719_7(void) = NoOp : #-----| Goto -> Block 40 -# 2718| Block 40 -# 2718| v2718_1(void) = NoOp : -# 2698| v2698_9(void) = ReturnVoid : -# 2698| v2698_10(void) = AliasedUse : m2698_3 -# 2698| v2698_11(void) = ExitFunction : +# 2720| Block 40 +# 2720| v2720_1(void) = NoOp : +# 2700| v2700_9(void) = ReturnVoid : +# 2700| v2700_10(void) = AliasedUse : m2700_3 +# 2700| v2700_11(void) = ExitFunction : -# 2724| char UseBracketOperator(WithBracketOperator const, int) -# 2724| Block 0 -# 2724| v2724_1(void) = EnterFunction : -# 2724| m2724_2(unknown) = AliasedDefinition : -# 2724| m2724_3(unknown) = InitializeNonLocal : -# 2724| m2724_4(unknown) = Chi : total:m2724_2, partial:m2724_3 -# 2724| r2724_5(glval) = VariableAddress[x] : -# 2724| m2724_6(WithBracketOperator) = InitializeParameter[x] : &:r2724_5 -# 2724| m2724_7(unknown) = Chi : total:m2724_4, partial:m2724_6 -# 2724| r2724_8(glval) = VariableAddress[i] : -# 2724| m2724_9(int) = InitializeParameter[i] : &:r2724_8 -# 2725| r2725_1(glval) = VariableAddress[#return] : -# 2725| r2725_2(glval) = VariableAddress[x] : -# 2725| r2725_3(glval) = FunctionAddress[operator[]] : -# 2725| r2725_4(glval) = VariableAddress[i] : -# 2725| r2725_5(int) = Load[i] : &:r2725_4, m2724_9 -# 2725| r2725_6(char &) = Call[operator[]] : func:r2725_3, this:r2725_2, 0:r2725_5 -# 2725| m2725_7(unknown) = ^CallSideEffect : ~m2724_7 -# 2725| m2725_8(unknown) = Chi : total:m2724_7, partial:m2725_7 -# 2725| v2725_9(void) = ^IndirectReadSideEffect[-1] : &:r2725_2, ~m2725_8 -# 2725| r2725_10(char) = Load[?] : &:r2725_6, ~m2725_8 -# 2725| m2725_11(char) = Store[#return] : &:r2725_1, r2725_10 -# 2724| r2724_10(glval) = VariableAddress[#return] : -# 2724| v2724_11(void) = ReturnValue : &:r2724_10, m2725_11 -# 2724| v2724_12(void) = AliasedUse : ~m2725_8 -# 2724| v2724_13(void) = ExitFunction : +# 2726| char UseBracketOperator(WithBracketOperator const, int) +# 2726| Block 0 +# 2726| v2726_1(void) = EnterFunction : +# 2726| m2726_2(unknown) = AliasedDefinition : +# 2726| m2726_3(unknown) = InitializeNonLocal : +# 2726| m2726_4(unknown) = Chi : total:m2726_2, partial:m2726_3 +# 2726| r2726_5(glval) = VariableAddress[x] : +# 2726| m2726_6(WithBracketOperator) = InitializeParameter[x] : &:r2726_5 +# 2726| m2726_7(unknown) = Chi : total:m2726_4, partial:m2726_6 +# 2726| r2726_8(glval) = VariableAddress[i] : +# 2726| m2726_9(int) = InitializeParameter[i] : &:r2726_8 +# 2727| r2727_1(glval) = VariableAddress[#return] : +# 2727| r2727_2(glval) = VariableAddress[x] : +# 2727| r2727_3(glval) = FunctionAddress[operator[]] : +# 2727| r2727_4(glval) = VariableAddress[i] : +# 2727| r2727_5(int) = Load[i] : &:r2727_4, m2726_9 +# 2727| r2727_6(char &) = Call[operator[]] : func:r2727_3, this:r2727_2, 0:r2727_5 +# 2727| m2727_7(unknown) = ^CallSideEffect : ~m2726_7 +# 2727| m2727_8(unknown) = Chi : total:m2726_7, partial:m2727_7 +# 2727| v2727_9(void) = ^IndirectReadSideEffect[-1] : &:r2727_2, ~m2727_8 +# 2727| r2727_10(char) = Load[?] : &:r2727_6, ~m2727_8 +# 2727| m2727_11(char) = Store[#return] : &:r2727_1, r2727_10 +# 2726| r2726_10(glval) = VariableAddress[#return] : +# 2726| v2726_11(void) = ReturnValue : &:r2726_10, m2727_11 +# 2726| v2726_12(void) = AliasedUse : ~m2727_8 +# 2726| v2726_13(void) = ExitFunction : -# 2728| void test_postfix_crement(int*, int) -# 2728| Block 0 -# 2728| v2728_1(void) = EnterFunction : -# 2728| m2728_2(unknown) = AliasedDefinition : -# 2728| m2728_3(unknown) = InitializeNonLocal : -# 2728| m2728_4(unknown) = Chi : total:m2728_2, partial:m2728_3 -# 2728| r2728_5(glval) = VariableAddress[p] : -# 2728| m2728_6(int *) = InitializeParameter[p] : &:r2728_5 -# 2728| r2728_7(int *) = Load[p] : &:r2728_5, m2728_6 -# 2728| m2728_8(unknown) = InitializeIndirection[p] : &:r2728_7 -# 2728| m2728_9(unknown) = Chi : total:m2728_4, partial:m2728_8 -# 2728| r2728_10(glval) = VariableAddress[q] : -# 2728| m2728_11(int) = InitializeParameter[q] : &:r2728_10 -# 2729| r2729_1(glval) = VariableAddress[p] : -# 2729| r2729_2(int *) = Load[p] : &:r2729_1, m2728_6 -# 2729| r2729_3(int) = Constant[1] : -# 2729| r2729_4(int *) = PointerAdd[4] : r2729_2, r2729_3 -# 2729| m2729_5(int *) = Store[p] : &:r2729_1, r2729_4 -# 2730| r2730_1(glval) = VariableAddress[q] : -# 2730| r2730_2(int) = Load[q] : &:r2730_1, m2728_11 -# 2730| r2730_3(int) = Constant[1] : -# 2730| r2730_4(int) = Add : r2730_2, r2730_3 -# 2730| m2730_5(int) = Store[q] : &:r2730_1, r2730_4 +# 2730| void test_postfix_crement(int*, int) +# 2730| Block 0 +# 2730| v2730_1(void) = EnterFunction : +# 2730| m2730_2(unknown) = AliasedDefinition : +# 2730| m2730_3(unknown) = InitializeNonLocal : +# 2730| m2730_4(unknown) = Chi : total:m2730_2, partial:m2730_3 +# 2730| r2730_5(glval) = VariableAddress[p] : +# 2730| m2730_6(int *) = InitializeParameter[p] : &:r2730_5 +# 2730| r2730_7(int *) = Load[p] : &:r2730_5, m2730_6 +# 2730| m2730_8(unknown) = InitializeIndirection[p] : &:r2730_7 +# 2730| m2730_9(unknown) = Chi : total:m2730_4, partial:m2730_8 +# 2730| r2730_10(glval) = VariableAddress[q] : +# 2730| m2730_11(int) = InitializeParameter[q] : &:r2730_10 # 2731| r2731_1(glval) = VariableAddress[p] : -# 2731| r2731_2(int *) = Load[p] : &:r2731_1, m2729_5 +# 2731| r2731_2(int *) = Load[p] : &:r2731_1, m2730_6 # 2731| r2731_3(int) = Constant[1] : # 2731| r2731_4(int *) = PointerAdd[4] : r2731_2, r2731_3 # 2731| m2731_5(int *) = Store[p] : &:r2731_1, r2731_4 -# 2731| r2731_6(int *) = CopyValue : r2731_2 # 2732| r2732_1(glval) = VariableAddress[q] : -# 2732| r2732_2(int) = Load[q] : &:r2732_1, m2730_5 +# 2732| r2732_2(int) = Load[q] : &:r2732_1, m2730_11 # 2732| r2732_3(int) = Constant[1] : # 2732| r2732_4(int) = Add : r2732_2, r2732_3 # 2732| m2732_5(int) = Store[q] : &:r2732_1, r2732_4 -# 2732| r2732_6(int) = CopyValue : r2732_2 # 2733| r2733_1(glval) = VariableAddress[p] : # 2733| r2733_2(int *) = Load[p] : &:r2733_1, m2731_5 # 2733| r2733_3(int) = Constant[1] : # 2733| r2733_4(int *) = PointerAdd[4] : r2733_2, r2733_3 # 2733| m2733_5(int *) = Store[p] : &:r2733_1, r2733_4 # 2733| r2733_6(int *) = CopyValue : r2733_2 -# 2733| v2733_7(void) = Convert : r2733_6 # 2734| r2734_1(glval) = VariableAddress[q] : # 2734| r2734_2(int) = Load[q] : &:r2734_1, m2732_5 # 2734| r2734_3(int) = Constant[1] : # 2734| r2734_4(int) = Add : r2734_2, r2734_3 # 2734| m2734_5(int) = Store[q] : &:r2734_1, r2734_4 # 2734| r2734_6(int) = CopyValue : r2734_2 -# 2734| v2734_7(void) = Convert : r2734_6 # 2735| r2735_1(glval) = VariableAddress[p] : # 2735| r2735_2(int *) = Load[p] : &:r2735_1, m2733_5 # 2735| r2735_3(int) = Constant[1] : @@ -20228,448 +20214,462 @@ ir.cpp: # 2736| m2736_5(int) = Store[q] : &:r2736_1, r2736_4 # 2736| r2736_6(int) = CopyValue : r2736_2 # 2736| v2736_7(void) = Convert : r2736_6 -# 2737| r2737_1(glval) = VariableAddress[p1] : -# 2737| r2737_2(glval) = VariableAddress[p] : -# 2737| r2737_3(int *) = Load[p] : &:r2737_2, m2735_5 -# 2737| r2737_4(int) = Constant[1] : -# 2737| r2737_5(int *) = PointerAdd[4] : r2737_3, r2737_4 -# 2737| m2737_6(int *) = Store[p] : &:r2737_2, r2737_5 -# 2737| r2737_7(int *) = CopyValue : r2737_3 -# 2737| m2737_8(int *) = Store[p1] : &:r2737_1, r2737_7 -# 2738| r2738_1(glval) = VariableAddress[q1] : -# 2738| r2738_2(glval) = VariableAddress[q] : -# 2738| r2738_3(int) = Load[q] : &:r2738_2, m2736_5 -# 2738| r2738_4(int) = Constant[1] : -# 2738| r2738_5(int) = Add : r2738_3, r2738_4 -# 2738| m2738_6(int) = Store[q] : &:r2738_2, r2738_5 -# 2738| r2738_7(int) = CopyValue : r2738_3 -# 2738| m2738_8(int) = Store[q1] : &:r2738_1, r2738_7 -# 2739| r2739_1(glval) = VariableAddress[p] : -# 2739| r2739_2(int *) = Load[p] : &:r2739_1, m2737_6 -# 2739| r2739_3(int) = Constant[1] : -# 2739| r2739_4(int *) = PointerAdd[4] : r2739_2, r2739_3 -# 2739| m2739_5(int *) = Store[p] : &:r2739_1, r2739_4 -# 2739| r2739_6(int *) = CopyValue : r2739_2 -# 2739| r2739_7(int *) = Convert : r2739_6 -# 2740| r2740_1(glval) = VariableAddress[q] : -# 2740| r2740_2(int) = Load[q] : &:r2740_1, m2738_6 -# 2740| r2740_3(int) = Constant[1] : -# 2740| r2740_4(int) = Add : r2740_2, r2740_3 -# 2740| m2740_5(int) = Store[q] : &:r2740_1, r2740_4 -# 2740| r2740_6(int) = CopyValue : r2740_2 -# 2740| r2740_7(int) = Convert : r2740_6 -# 2741| r2741_1(glval) = VariableAddress[p2] : -# 2741| r2741_2(glval) = VariableAddress[p] : -# 2741| r2741_3(int *) = Load[p] : &:r2741_2, m2739_5 -# 2741| r2741_4(int) = Constant[1] : -# 2741| r2741_5(int *) = PointerAdd[4] : r2741_3, r2741_4 -# 2741| m2741_6(int *) = Store[p] : &:r2741_2, r2741_5 -# 2741| r2741_7(int *) = CopyValue : r2741_3 -# 2741| r2741_8(int *) = Convert : r2741_7 -# 2741| m2741_9(int *) = Store[p2] : &:r2741_1, r2741_8 -# 2742| r2742_1(glval) = VariableAddress[q2] : -# 2742| r2742_2(glval) = VariableAddress[q] : -# 2742| r2742_3(int) = Load[q] : &:r2742_2, m2740_5 -# 2742| r2742_4(int) = Constant[1] : -# 2742| r2742_5(int) = Add : r2742_3, r2742_4 -# 2742| m2742_6(int) = Store[q] : &:r2742_2, r2742_5 -# 2742| r2742_7(int) = CopyValue : r2742_3 -# 2742| r2742_8(int) = Convert : r2742_7 -# 2742| m2742_9(int) = Store[q2] : &:r2742_1, r2742_8 -# 2743| v2743_1(void) = NoOp : -# 2728| v2728_12(void) = ReturnIndirection[p] : &:r2728_7, m2728_8 -# 2728| v2728_13(void) = ReturnVoid : -# 2728| v2728_14(void) = AliasedUse : ~m2728_9 -# 2728| v2728_15(void) = ExitFunction : +# 2737| r2737_1(glval) = VariableAddress[p] : +# 2737| r2737_2(int *) = Load[p] : &:r2737_1, m2735_5 +# 2737| r2737_3(int) = Constant[1] : +# 2737| r2737_4(int *) = PointerAdd[4] : r2737_2, r2737_3 +# 2737| m2737_5(int *) = Store[p] : &:r2737_1, r2737_4 +# 2737| r2737_6(int *) = CopyValue : r2737_2 +# 2737| v2737_7(void) = Convert : r2737_6 +# 2738| r2738_1(glval) = VariableAddress[q] : +# 2738| r2738_2(int) = Load[q] : &:r2738_1, m2736_5 +# 2738| r2738_3(int) = Constant[1] : +# 2738| r2738_4(int) = Add : r2738_2, r2738_3 +# 2738| m2738_5(int) = Store[q] : &:r2738_1, r2738_4 +# 2738| r2738_6(int) = CopyValue : r2738_2 +# 2738| v2738_7(void) = Convert : r2738_6 +# 2739| r2739_1(glval) = VariableAddress[p1] : +# 2739| r2739_2(glval) = VariableAddress[p] : +# 2739| r2739_3(int *) = Load[p] : &:r2739_2, m2737_5 +# 2739| r2739_4(int) = Constant[1] : +# 2739| r2739_5(int *) = PointerAdd[4] : r2739_3, r2739_4 +# 2739| m2739_6(int *) = Store[p] : &:r2739_2, r2739_5 +# 2739| r2739_7(int *) = CopyValue : r2739_3 +# 2739| m2739_8(int *) = Store[p1] : &:r2739_1, r2739_7 +# 2740| r2740_1(glval) = VariableAddress[q1] : +# 2740| r2740_2(glval) = VariableAddress[q] : +# 2740| r2740_3(int) = Load[q] : &:r2740_2, m2738_5 +# 2740| r2740_4(int) = Constant[1] : +# 2740| r2740_5(int) = Add : r2740_3, r2740_4 +# 2740| m2740_6(int) = Store[q] : &:r2740_2, r2740_5 +# 2740| r2740_7(int) = CopyValue : r2740_3 +# 2740| m2740_8(int) = Store[q1] : &:r2740_1, r2740_7 +# 2741| r2741_1(glval) = VariableAddress[p] : +# 2741| r2741_2(int *) = Load[p] : &:r2741_1, m2739_6 +# 2741| r2741_3(int) = Constant[1] : +# 2741| r2741_4(int *) = PointerAdd[4] : r2741_2, r2741_3 +# 2741| m2741_5(int *) = Store[p] : &:r2741_1, r2741_4 +# 2741| r2741_6(int *) = CopyValue : r2741_2 +# 2741| r2741_7(int *) = Convert : r2741_6 +# 2742| r2742_1(glval) = VariableAddress[q] : +# 2742| r2742_2(int) = Load[q] : &:r2742_1, m2740_6 +# 2742| r2742_3(int) = Constant[1] : +# 2742| r2742_4(int) = Add : r2742_2, r2742_3 +# 2742| m2742_5(int) = Store[q] : &:r2742_1, r2742_4 +# 2742| r2742_6(int) = CopyValue : r2742_2 +# 2742| r2742_7(int) = Convert : r2742_6 +# 2743| r2743_1(glval) = VariableAddress[p2] : +# 2743| r2743_2(glval) = VariableAddress[p] : +# 2743| r2743_3(int *) = Load[p] : &:r2743_2, m2741_5 +# 2743| r2743_4(int) = Constant[1] : +# 2743| r2743_5(int *) = PointerAdd[4] : r2743_3, r2743_4 +# 2743| m2743_6(int *) = Store[p] : &:r2743_2, r2743_5 +# 2743| r2743_7(int *) = CopyValue : r2743_3 +# 2743| r2743_8(int *) = Convert : r2743_7 +# 2743| m2743_9(int *) = Store[p2] : &:r2743_1, r2743_8 +# 2744| r2744_1(glval) = VariableAddress[q2] : +# 2744| r2744_2(glval) = VariableAddress[q] : +# 2744| r2744_3(int) = Load[q] : &:r2744_2, m2742_5 +# 2744| r2744_4(int) = Constant[1] : +# 2744| r2744_5(int) = Add : r2744_3, r2744_4 +# 2744| m2744_6(int) = Store[q] : &:r2744_2, r2744_5 +# 2744| r2744_7(int) = CopyValue : r2744_3 +# 2744| r2744_8(int) = Convert : r2744_7 +# 2744| m2744_9(int) = Store[q2] : &:r2744_1, r2744_8 +# 2745| v2745_1(void) = NoOp : +# 2730| v2730_12(void) = ReturnIndirection[p] : &:r2730_7, m2730_8 +# 2730| v2730_13(void) = ReturnVoid : +# 2730| v2730_14(void) = AliasedUse : ~m2730_9 +# 2730| v2730_15(void) = ExitFunction : -# 2747| void std::strong_ordering::strong_ordering(std::strong_ordering&&) -# 2747| Block 0 -# 2747| v2747_1(void) = EnterFunction : -# 2747| m2747_2(unknown) = AliasedDefinition : -# 2747| m2747_3(unknown) = InitializeNonLocal : -# 2747| m2747_4(unknown) = Chi : total:m2747_2, partial:m2747_3 -# 2747| r2747_5(glval) = VariableAddress[#this] : -# 2747| m2747_6(glval) = InitializeParameter[#this] : &:r2747_5 -# 2747| r2747_7(glval) = Load[#this] : &:r2747_5, m2747_6 -# 2747| m2747_8(strong_ordering) = InitializeIndirection[#this] : &:r2747_7 +# 2749| void std::strong_ordering::strong_ordering(std::strong_ordering&&) +# 2749| Block 0 +# 2749| v2749_1(void) = EnterFunction : +# 2749| m2749_2(unknown) = AliasedDefinition : +# 2749| m2749_3(unknown) = InitializeNonLocal : +# 2749| m2749_4(unknown) = Chi : total:m2749_2, partial:m2749_3 +# 2749| r2749_5(glval) = VariableAddress[#this] : +# 2749| m2749_6(glval) = InitializeParameter[#this] : &:r2749_5 +# 2749| r2749_7(glval) = Load[#this] : &:r2749_5, m2749_6 +# 2749| m2749_8(strong_ordering) = InitializeIndirection[#this] : &:r2749_7 #-----| r0_1(glval) = VariableAddress[(unnamed parameter 0)] : #-----| m0_2(strong_ordering &&) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(strong_ordering &&) = Load[(unnamed parameter 0)] : &:r0_1, m0_2 #-----| m0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 2747| v2747_9(void) = NoOp : -# 2747| v2747_10(void) = ReturnIndirection[#this] : &:r2747_7, m2747_8 +# 2749| v2749_9(void) = NoOp : +# 2749| v2749_10(void) = ReturnIndirection[#this] : &:r2749_7, m2749_8 #-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, m0_4 -# 2747| v2747_11(void) = ReturnVoid : -# 2747| v2747_12(void) = AliasedUse : m2747_3 -# 2747| v2747_13(void) = ExitFunction : +# 2749| v2749_11(void) = ReturnVoid : +# 2749| v2749_12(void) = AliasedUse : m2749_3 +# 2749| v2749_13(void) = ExitFunction : -# 2748| void std::strong_ordering::strong_ordering(std::_Order) -# 2748| Block 0 -# 2748| v2748_1(void) = EnterFunction : -# 2748| m2748_2(unknown) = AliasedDefinition : -# 2748| m2748_3(unknown) = InitializeNonLocal : -# 2748| m2748_4(unknown) = Chi : total:m2748_2, partial:m2748_3 -# 2748| r2748_5(glval) = VariableAddress[#this] : -# 2748| m2748_6(glval) = InitializeParameter[#this] : &:r2748_5 -# 2748| r2748_7(glval) = Load[#this] : &:r2748_5, m2748_6 -# 2748| m2748_8(strong_ordering) = InitializeIndirection[#this] : &:r2748_7 -# 2748| r2748_9(glval<_Order>) = VariableAddress[v] : -# 2748| m2748_10(_Order) = InitializeParameter[v] : &:r2748_9 -# 2748| v2748_11(void) = NoOp : -# 2748| v2748_12(void) = ReturnIndirection[#this] : &:r2748_7, m2748_8 -# 2748| v2748_13(void) = ReturnVoid : -# 2748| v2748_14(void) = AliasedUse : m2748_3 -# 2748| v2748_15(void) = ExitFunction : +# 2750| void std::strong_ordering::strong_ordering(std::_Order) +# 2750| Block 0 +# 2750| v2750_1(void) = EnterFunction : +# 2750| m2750_2(unknown) = AliasedDefinition : +# 2750| m2750_3(unknown) = InitializeNonLocal : +# 2750| m2750_4(unknown) = Chi : total:m2750_2, partial:m2750_3 +# 2750| r2750_5(glval) = VariableAddress[#this] : +# 2750| m2750_6(glval) = InitializeParameter[#this] : &:r2750_5 +# 2750| r2750_7(glval) = Load[#this] : &:r2750_5, m2750_6 +# 2750| m2750_8(strong_ordering) = InitializeIndirection[#this] : &:r2750_7 +# 2750| r2750_9(glval<_Order>) = VariableAddress[v] : +# 2750| m2750_10(_Order) = InitializeParameter[v] : &:r2750_9 +# 2750| v2750_11(void) = NoOp : +# 2750| v2750_12(void) = ReturnIndirection[#this] : &:r2750_7, m2750_8 +# 2750| v2750_13(void) = ReturnVoid : +# 2750| v2750_14(void) = AliasedUse : m2750_3 +# 2750| v2750_15(void) = ExitFunction : -# 2766| std::strong_ordering ThreeWay::operator<=>(ThreeWay&) -# 2766| Block 0 -# 2766| v2766_1(void) = EnterFunction : -# 2766| m2766_2(unknown) = AliasedDefinition : -# 2766| m2766_3(unknown) = InitializeNonLocal : -# 2766| m2766_4(unknown) = Chi : total:m2766_2, partial:m2766_3 -# 2766| r2766_5(glval) = VariableAddress[#this] : -# 2766| m2766_6(glval) = InitializeParameter[#this] : &:r2766_5 -# 2766| r2766_7(glval) = Load[#this] : &:r2766_5, m2766_6 -# 2766| m2766_8(ThreeWay) = InitializeIndirection[#this] : &:r2766_7 -# 2766| r2766_9(glval) = VariableAddress[y] : -# 2766| m2766_10(ThreeWay &) = InitializeParameter[y] : &:r2766_9 -# 2766| r2766_11(ThreeWay &) = Load[y] : &:r2766_9, m2766_10 -# 2766| m2766_12(unknown) = InitializeIndirection[y] : &:r2766_11 -# 2766| r2766_13(glval) = VariableAddress[#return] : -# 2766| r2766_14(glval) = VariableAddress[#this] : -# 2766| r2766_15(ThreeWay *) = Load[#this] : &:r2766_14, m2766_6 -# 2766| r2766_16(glval) = FieldAddress[x] : r2766_15 -# 2766| r2766_17(int) = Load[?] : &:r2766_16, ~m2766_8 -# 2766| r2766_18(glval) = VariableAddress[y] : -# 2766| r2766_19(ThreeWay &) = Load[y] : &:r2766_18, m2766_10 -# 2766| r2766_20(glval) = CopyValue : r2766_19 -# 2766| r2766_21(glval) = FieldAddress[x] : r2766_20 -# 2766| r2766_22(int) = Load[?] : &:r2766_21, ~m2766_12 -# 2766| r2766_23(strong_ordering) = Spaceship : r2766_17, r2766_22 -# 2766| m2766_24(strong_ordering) = Store[#return] : &:r2766_13, r2766_23 -# 2766| v2766_25(void) = ReturnIndirection[#this] : &:r2766_7, m2766_8 -# 2766| v2766_26(void) = ReturnIndirection[y] : &:r2766_11, m2766_12 -# 2766| r2766_27(glval) = VariableAddress[#return] : -# 2766| v2766_28(void) = ReturnValue : &:r2766_27, m2766_24 -# 2766| v2766_29(void) = AliasedUse : m2766_3 -# 2766| v2766_30(void) = ExitFunction : +# 2768| std::strong_ordering ThreeWay::operator<=>(ThreeWay&) +# 2768| Block 0 +# 2768| v2768_1(void) = EnterFunction : +# 2768| m2768_2(unknown) = AliasedDefinition : +# 2768| m2768_3(unknown) = InitializeNonLocal : +# 2768| m2768_4(unknown) = Chi : total:m2768_2, partial:m2768_3 +# 2768| r2768_5(glval) = VariableAddress[#this] : +# 2768| m2768_6(glval) = InitializeParameter[#this] : &:r2768_5 +# 2768| r2768_7(glval) = Load[#this] : &:r2768_5, m2768_6 +# 2768| m2768_8(ThreeWay) = InitializeIndirection[#this] : &:r2768_7 +# 2768| r2768_9(glval) = VariableAddress[y] : +# 2768| m2768_10(ThreeWay &) = InitializeParameter[y] : &:r2768_9 +# 2768| r2768_11(ThreeWay &) = Load[y] : &:r2768_9, m2768_10 +# 2768| m2768_12(unknown) = InitializeIndirection[y] : &:r2768_11 +# 2768| r2768_13(glval) = VariableAddress[#return] : +# 2768| r2768_14(glval) = VariableAddress[#this] : +# 2768| r2768_15(ThreeWay *) = Load[#this] : &:r2768_14, m2768_6 +# 2768| r2768_16(glval) = FieldAddress[x] : r2768_15 +# 2768| r2768_17(int) = Load[?] : &:r2768_16, ~m2768_8 +# 2768| r2768_18(glval) = VariableAddress[y] : +# 2768| r2768_19(ThreeWay &) = Load[y] : &:r2768_18, m2768_10 +# 2768| r2768_20(glval) = CopyValue : r2768_19 +# 2768| r2768_21(glval) = FieldAddress[x] : r2768_20 +# 2768| r2768_22(int) = Load[?] : &:r2768_21, ~m2768_12 +# 2768| r2768_23(strong_ordering) = Spaceship : r2768_17, r2768_22 +# 2768| m2768_24(strong_ordering) = Store[#return] : &:r2768_13, r2768_23 +# 2768| v2768_25(void) = ReturnIndirection[#this] : &:r2768_7, m2768_8 +# 2768| v2768_26(void) = ReturnIndirection[y] : &:r2768_11, m2768_12 +# 2768| r2768_27(glval) = VariableAddress[#return] : +# 2768| v2768_28(void) = ReturnValue : &:r2768_27, m2768_24 +# 2768| v2768_29(void) = AliasedUse : m2768_3 +# 2768| v2768_30(void) = ExitFunction : -# 2769| void test_three_way(int, int, ThreeWay, ThreeWay) -# 2769| Block 0 -# 2769| v2769_1(void) = EnterFunction : -# 2769| m2769_2(unknown) = AliasedDefinition : -# 2769| m2769_3(unknown) = InitializeNonLocal : -# 2769| m2769_4(unknown) = Chi : total:m2769_2, partial:m2769_3 -# 2769| r2769_5(glval) = VariableAddress[a] : -# 2769| m2769_6(int) = InitializeParameter[a] : &:r2769_5 -# 2769| r2769_7(glval) = VariableAddress[b] : -# 2769| m2769_8(int) = InitializeParameter[b] : &:r2769_7 -# 2769| r2769_9(glval) = VariableAddress[c] : -# 2769| m2769_10(ThreeWay) = InitializeParameter[c] : &:r2769_9 -# 2769| r2769_11(glval) = VariableAddress[d] : -# 2769| m2769_12(ThreeWay) = InitializeParameter[d] : &:r2769_11 -# 2770| r2770_1(glval) = VariableAddress[x] : -# 2770| r2770_2(glval) = VariableAddress[a] : -# 2770| r2770_3(int) = Load[a] : &:r2770_2, m2769_6 -# 2770| r2770_4(glval) = VariableAddress[b] : -# 2770| r2770_5(int) = Load[b] : &:r2770_4, m2769_8 -# 2770| r2770_6(strong_ordering) = Spaceship : r2770_3, r2770_5 -# 2770| m2770_7(strong_ordering) = Store[x] : &:r2770_1, r2770_6 -# 2771| r2771_1(glval) = VariableAddress[y] : -# 2771| r2771_2(glval) = VariableAddress[c] : -# 2771| r2771_3(glval) = FunctionAddress[operator<=>] : -# 2771| r2771_4(glval) = VariableAddress[d] : -# 2771| r2771_5(ThreeWay &) = CopyValue : r2771_4 -# 2771| r2771_6(strong_ordering) = Call[operator<=>] : func:r2771_3, this:r2771_2, 0:r2771_5 -# 2771| m2771_7(unknown) = ^CallSideEffect : ~m2769_4 -# 2771| m2771_8(unknown) = Chi : total:m2769_4, partial:m2771_7 -# 2771| v2771_9(void) = ^IndirectReadSideEffect[-1] : &:r2771_2, m2769_10 -# 2771| v2771_10(void) = ^BufferReadSideEffect[0] : &:r2771_5, ~m2769_12 -# 2771| m2771_11(ThreeWay) = ^IndirectMayWriteSideEffect[-1] : &:r2771_2 -# 2771| m2771_12(ThreeWay) = Chi : total:m2769_10, partial:m2771_11 -# 2771| m2771_13(unknown) = ^BufferMayWriteSideEffect[0] : &:r2771_5 -# 2771| m2771_14(ThreeWay) = Chi : total:m2769_12, partial:m2771_13 -# 2771| m2771_15(strong_ordering) = Store[y] : &:r2771_1, r2771_6 -# 2772| v2772_1(void) = NoOp : -# 2769| v2769_13(void) = ReturnVoid : -# 2769| v2769_14(void) = AliasedUse : ~m2771_8 -# 2769| v2769_15(void) = ExitFunction : +# 2771| void test_three_way(int, int, ThreeWay, ThreeWay) +# 2771| Block 0 +# 2771| v2771_1(void) = EnterFunction : +# 2771| m2771_2(unknown) = AliasedDefinition : +# 2771| m2771_3(unknown) = InitializeNonLocal : +# 2771| m2771_4(unknown) = Chi : total:m2771_2, partial:m2771_3 +# 2771| r2771_5(glval) = VariableAddress[a] : +# 2771| m2771_6(int) = InitializeParameter[a] : &:r2771_5 +# 2771| r2771_7(glval) = VariableAddress[b] : +# 2771| m2771_8(int) = InitializeParameter[b] : &:r2771_7 +# 2771| r2771_9(glval) = VariableAddress[c] : +# 2771| m2771_10(ThreeWay) = InitializeParameter[c] : &:r2771_9 +# 2771| r2771_11(glval) = VariableAddress[d] : +# 2771| m2771_12(ThreeWay) = InitializeParameter[d] : &:r2771_11 +# 2772| r2772_1(glval) = VariableAddress[x] : +# 2772| r2772_2(glval) = VariableAddress[a] : +# 2772| r2772_3(int) = Load[a] : &:r2772_2, m2771_6 +# 2772| r2772_4(glval) = VariableAddress[b] : +# 2772| r2772_5(int) = Load[b] : &:r2772_4, m2771_8 +# 2772| r2772_6(strong_ordering) = Spaceship : r2772_3, r2772_5 +# 2772| m2772_7(strong_ordering) = Store[x] : &:r2772_1, r2772_6 +# 2773| r2773_1(glval) = VariableAddress[y] : +# 2773| r2773_2(glval) = VariableAddress[c] : +# 2773| r2773_3(glval) = FunctionAddress[operator<=>] : +# 2773| r2773_4(glval) = VariableAddress[d] : +# 2773| r2773_5(ThreeWay &) = CopyValue : r2773_4 +# 2773| r2773_6(strong_ordering) = Call[operator<=>] : func:r2773_3, this:r2773_2, 0:r2773_5 +# 2773| m2773_7(unknown) = ^CallSideEffect : ~m2771_4 +# 2773| m2773_8(unknown) = Chi : total:m2771_4, partial:m2773_7 +# 2773| v2773_9(void) = ^IndirectReadSideEffect[-1] : &:r2773_2, m2771_10 +# 2773| v2773_10(void) = ^BufferReadSideEffect[0] : &:r2773_5, ~m2771_12 +# 2773| m2773_11(ThreeWay) = ^IndirectMayWriteSideEffect[-1] : &:r2773_2 +# 2773| m2773_12(ThreeWay) = Chi : total:m2771_10, partial:m2773_11 +# 2773| m2773_13(unknown) = ^BufferMayWriteSideEffect[0] : &:r2773_5 +# 2773| m2773_14(ThreeWay) = Chi : total:m2771_12, partial:m2773_13 +# 2773| m2773_15(strong_ordering) = Store[y] : &:r2773_1, r2773_6 +# 2774| v2774_1(void) = NoOp : +# 2771| v2771_13(void) = ReturnVoid : +# 2771| v2771_14(void) = AliasedUse : ~m2773_8 +# 2771| v2771_15(void) = ExitFunction : -# 2774| void test_allocation_with_initializer() -# 2774| Block 0 -# 2774| v2774_1(void) = EnterFunction : -# 2774| m2774_2(unknown) = AliasedDefinition : -# 2774| m2774_3(unknown) = InitializeNonLocal : -# 2774| m2774_4(unknown) = Chi : total:m2774_2, partial:m2774_3 -# 2775| r2775_1(glval) = VariableAddress[p1] : -# 2775| r2775_2(glval) = FunctionAddress[operator new] : -# 2775| r2775_3(unsigned long) = Constant[4] : -# 2775| r2775_4(void *) = Call[operator new] : func:r2775_2, 0:r2775_3 -# 2775| m2775_5(unknown) = ^CallSideEffect : ~m2774_4 -# 2775| m2775_6(unknown) = Chi : total:m2774_4, partial:m2775_5 -# 2775| m2775_7(unknown) = ^InitializeDynamicAllocation : &:r2775_4 -# 2775| r2775_8(int *) = Convert : r2775_4 -# 2775| r2775_9(int) = Constant[42] : -# 2775| m2775_10(int) = Store[?] : &:r2775_8, r2775_9 -# 2775| m2775_11(unknown) = Chi : total:m2775_7, partial:m2775_10 -# 2775| m2775_12(int *) = Store[p1] : &:r2775_1, r2775_8 -# 2776| r2776_1(glval) = VariableAddress[p2] : -# 2776| r2776_2(glval) = FunctionAddress[operator new] : -# 2776| r2776_3(unsigned long) = Constant[8] : -# 2776| r2776_4(void *) = Call[operator new] : func:r2776_2, 0:r2776_3 -# 2776| m2776_5(unknown) = ^CallSideEffect : ~m2775_6 -# 2776| m2776_6(unknown) = Chi : total:m2775_6, partial:m2776_5 -# 2776| m2776_7(unknown) = ^InitializeDynamicAllocation : &:r2776_4 -# 2776| r2776_8(long *) = Convert : r2776_4 -# 2776| r2776_9(long) = Constant[42] : -# 2776| m2776_10(long) = Store[?] : &:r2776_8, r2776_9 -# 2776| m2776_11(unknown) = Chi : total:m2776_7, partial:m2776_10 -# 2776| m2776_12(long *) = Store[p2] : &:r2776_1, r2776_8 -# 2777| v2777_1(void) = NoOp : -# 2774| v2774_5(void) = ReturnVoid : -# 2774| v2774_6(void) = AliasedUse : ~m2776_6 -# 2774| v2774_7(void) = ExitFunction : +# 2776| void test_allocation_with_initializer() +# 2776| Block 0 +# 2776| v2776_1(void) = EnterFunction : +# 2776| m2776_2(unknown) = AliasedDefinition : +# 2776| m2776_3(unknown) = InitializeNonLocal : +# 2776| m2776_4(unknown) = Chi : total:m2776_2, partial:m2776_3 +# 2777| r2777_1(glval) = VariableAddress[p1] : +# 2777| r2777_2(glval) = FunctionAddress[operator new] : +# 2777| r2777_3(unsigned long) = Constant[4] : +# 2777| r2777_4(void *) = Call[operator new] : func:r2777_2, 0:r2777_3 +# 2777| m2777_5(unknown) = ^CallSideEffect : ~m2776_4 +# 2777| m2777_6(unknown) = Chi : total:m2776_4, partial:m2777_5 +# 2777| m2777_7(unknown) = ^InitializeDynamicAllocation : &:r2777_4 +# 2777| r2777_8(int *) = Convert : r2777_4 +# 2777| r2777_9(int) = Constant[42] : +# 2777| m2777_10(int) = Store[?] : &:r2777_8, r2777_9 +# 2777| m2777_11(unknown) = Chi : total:m2777_7, partial:m2777_10 +# 2777| m2777_12(int *) = Store[p1] : &:r2777_1, r2777_8 +# 2778| r2778_1(glval) = VariableAddress[p2] : +# 2778| r2778_2(glval) = FunctionAddress[operator new] : +# 2778| r2778_3(unsigned long) = Constant[8] : +# 2778| r2778_4(void *) = Call[operator new] : func:r2778_2, 0:r2778_3 +# 2778| m2778_5(unknown) = ^CallSideEffect : ~m2777_6 +# 2778| m2778_6(unknown) = Chi : total:m2777_6, partial:m2778_5 +# 2778| m2778_7(unknown) = ^InitializeDynamicAllocation : &:r2778_4 +# 2778| r2778_8(long *) = Convert : r2778_4 +# 2778| r2778_9(long) = Constant[42] : +# 2778| m2778_10(long) = Store[?] : &:r2778_8, r2778_9 +# 2778| m2778_11(unknown) = Chi : total:m2778_7, partial:m2778_10 +# 2778| m2778_12(long *) = Store[p2] : &:r2778_1, r2778_8 +# 2779| v2779_1(void) = NoOp : +# 2776| v2776_5(void) = ReturnVoid : +# 2776| v2776_6(void) = AliasedUse : ~m2778_6 +# 2776| v2776_7(void) = ExitFunction : -# 2779| void vla_sizeof_test(int, size_t, char) -# 2779| Block 0 -# 2779| v2779_1(void) = EnterFunction : -# 2779| m2779_2(unknown) = AliasedDefinition : -# 2779| m2779_3(unknown) = InitializeNonLocal : -# 2779| m2779_4(unknown) = Chi : total:m2779_2, partial:m2779_3 -# 2779| r2779_5(glval) = VariableAddress[len1] : -# 2779| m2779_6(int) = InitializeParameter[len1] : &:r2779_5 -# 2779| r2779_7(glval) = VariableAddress[len2] : -# 2779| m2779_8(unsigned long) = InitializeParameter[len2] : &:r2779_7 -# 2779| r2779_9(glval) = VariableAddress[len3] : -# 2779| m2779_10(char) = InitializeParameter[len3] : &:r2779_9 -# 2780| r2780_1(glval) = VariableAddress[tmp1] : -# 2780| m2780_2(char[]) = Uninitialized[tmp1] : &:r2780_1 -# 2780| r2780_3(glval) = VariableAddress[len1] : -# 2780| r2780_4(int) = Load[len1] : &:r2780_3, m2779_6 -# 2780| v2780_5(void) = NoOp : -# 2781| r2781_1(glval) = VariableAddress[x] : -# 2781| r2781_2(unsigned long) = Constant[1] : -# 2781| r2781_3(unsigned long) = Convert : r2780_4 -# 2781| r2781_4(unsigned long) = Mul : r2781_2, r2781_3 -# 2781| m2781_5(unsigned long) = Store[x] : &:r2781_1, r2781_4 -# 2782| r2782_1(glval) = VariableAddress[tmp2] : -# 2782| m2782_2(int[][]) = Uninitialized[tmp2] : &:r2782_1 +# 2781| void vla_sizeof_test(int, size_t, char) +# 2781| Block 0 +# 2781| v2781_1(void) = EnterFunction : +# 2781| m2781_2(unknown) = AliasedDefinition : +# 2781| m2781_3(unknown) = InitializeNonLocal : +# 2781| m2781_4(unknown) = Chi : total:m2781_2, partial:m2781_3 +# 2781| r2781_5(glval) = VariableAddress[len1] : +# 2781| m2781_6(int) = InitializeParameter[len1] : &:r2781_5 +# 2781| r2781_7(glval) = VariableAddress[len2] : +# 2781| m2781_8(unsigned long) = InitializeParameter[len2] : &:r2781_7 +# 2781| r2781_9(glval) = VariableAddress[len3] : +# 2781| m2781_10(char) = InitializeParameter[len3] : &:r2781_9 +# 2782| r2782_1(glval) = VariableAddress[tmp1] : +# 2782| m2782_2(char[]) = Uninitialized[tmp1] : &:r2782_1 # 2782| r2782_3(glval) = VariableAddress[len1] : -# 2782| r2782_4(int) = Load[len1] : &:r2782_3, m2779_6 -# 2782| r2782_5(glval) = VariableAddress[len2] : -# 2782| r2782_6(unsigned long) = Load[len2] : &:r2782_5, m2779_8 -# 2782| v2782_7(void) = NoOp : -# 2783| r2783_1(glval) = VariableAddress[y] : -# 2783| r2783_2(unsigned long) = Constant[4] : +# 2782| r2782_4(int) = Load[len1] : &:r2782_3, m2781_6 +# 2782| v2782_5(void) = NoOp : +# 2783| r2783_1(glval) = VariableAddress[x] : +# 2783| r2783_2(unsigned long) = Constant[1] : # 2783| r2783_3(unsigned long) = Convert : r2782_4 # 2783| r2783_4(unsigned long) = Mul : r2783_2, r2783_3 -# 2783| r2783_5(unsigned long) = CopyValue : r2782_6 -# 2783| r2783_6(unsigned long) = Mul : r2783_4, r2783_5 -# 2783| m2783_7(unsigned long) = Store[y] : &:r2783_1, r2783_6 -# 2784| r2784_1(glval) = VariableAddress[z] : -# 2784| r2784_2(unsigned long) = Constant[4] : -# 2784| r2784_3(unsigned long) = CopyValue : r2782_6 -# 2784| r2784_4(unsigned long) = Mul : r2784_2, r2784_3 -# 2784| m2784_5(unsigned long) = Store[z] : &:r2784_1, r2784_4 -# 2785| r2785_1(glval) = VariableAddress[tmp3] : -# 2785| m2785_2(int[][][]) = Uninitialized[tmp3] : &:r2785_1 -# 2785| r2785_3(glval) = VariableAddress[len1] : -# 2785| r2785_4(int) = Load[len1] : &:r2785_3, m2779_6 -# 2785| r2785_5(glval) = VariableAddress[len2] : -# 2785| r2785_6(unsigned long) = Load[len2] : &:r2785_5, m2779_8 -# 2785| r2785_7(glval) = VariableAddress[len3] : -# 2785| r2785_8(char) = Load[len3] : &:r2785_7, m2779_10 -# 2785| v2785_9(void) = NoOp : -# 2786| r2786_1(glval) = VariableAddress[w] : +# 2783| m2783_5(unsigned long) = Store[x] : &:r2783_1, r2783_4 +# 2784| r2784_1(glval) = VariableAddress[tmp2] : +# 2784| m2784_2(int[][]) = Uninitialized[tmp2] : &:r2784_1 +# 2784| r2784_3(glval) = VariableAddress[len1] : +# 2784| r2784_4(int) = Load[len1] : &:r2784_3, m2781_6 +# 2784| r2784_5(glval) = VariableAddress[len2] : +# 2784| r2784_6(unsigned long) = Load[len2] : &:r2784_5, m2781_8 +# 2784| v2784_7(void) = NoOp : +# 2785| r2785_1(glval) = VariableAddress[y] : +# 2785| r2785_2(unsigned long) = Constant[4] : +# 2785| r2785_3(unsigned long) = Convert : r2784_4 +# 2785| r2785_4(unsigned long) = Mul : r2785_2, r2785_3 +# 2785| r2785_5(unsigned long) = CopyValue : r2784_6 +# 2785| r2785_6(unsigned long) = Mul : r2785_4, r2785_5 +# 2785| m2785_7(unsigned long) = Store[y] : &:r2785_1, r2785_6 +# 2786| r2786_1(glval) = VariableAddress[z] : # 2786| r2786_2(unsigned long) = Constant[4] : -# 2786| r2786_3(unsigned long) = Convert : r2785_4 +# 2786| r2786_3(unsigned long) = CopyValue : r2784_6 # 2786| r2786_4(unsigned long) = Mul : r2786_2, r2786_3 -# 2786| r2786_5(unsigned long) = CopyValue : r2785_6 -# 2786| r2786_6(unsigned long) = Mul : r2786_4, r2786_5 -# 2786| r2786_7(unsigned long) = Convert : r2785_8 -# 2786| r2786_8(unsigned long) = Mul : r2786_6, r2786_7 -# 2786| m2786_9(unsigned long) = Store[w] : &:r2786_1, r2786_8 -# 2787| r2787_1(glval) = VariableAddress[v] : -# 2787| r2787_2(unsigned long) = Constant[4] : -# 2787| r2787_3(unsigned long) = CopyValue : r2785_6 -# 2787| r2787_4(unsigned long) = Mul : r2787_2, r2787_3 -# 2787| r2787_5(unsigned long) = Convert : r2785_8 -# 2787| r2787_6(unsigned long) = Mul : r2787_4, r2787_5 -# 2787| m2787_7(unsigned long) = Store[v] : &:r2787_1, r2787_6 -# 2788| r2788_1(glval) = VariableAddress[u] : +# 2786| m2786_5(unsigned long) = Store[z] : &:r2786_1, r2786_4 +# 2787| r2787_1(glval) = VariableAddress[tmp3] : +# 2787| m2787_2(int[][][]) = Uninitialized[tmp3] : &:r2787_1 +# 2787| r2787_3(glval) = VariableAddress[len1] : +# 2787| r2787_4(int) = Load[len1] : &:r2787_3, m2781_6 +# 2787| r2787_5(glval) = VariableAddress[len2] : +# 2787| r2787_6(unsigned long) = Load[len2] : &:r2787_5, m2781_8 +# 2787| r2787_7(glval) = VariableAddress[len3] : +# 2787| r2787_8(char) = Load[len3] : &:r2787_7, m2781_10 +# 2787| v2787_9(void) = NoOp : +# 2788| r2788_1(glval) = VariableAddress[w] : # 2788| r2788_2(unsigned long) = Constant[4] : -# 2788| r2788_3(unsigned long) = Convert : r2785_8 +# 2788| r2788_3(unsigned long) = Convert : r2787_4 # 2788| r2788_4(unsigned long) = Mul : r2788_2, r2788_3 -# 2788| m2788_5(unsigned long) = Store[u] : &:r2788_1, r2788_4 -# 2789| r2789_1(glval) = VariableAddress[t] : +# 2788| r2788_5(unsigned long) = CopyValue : r2787_6 +# 2788| r2788_6(unsigned long) = Mul : r2788_4, r2788_5 +# 2788| r2788_7(unsigned long) = Convert : r2787_8 +# 2788| r2788_8(unsigned long) = Mul : r2788_6, r2788_7 +# 2788| m2788_9(unsigned long) = Store[w] : &:r2788_1, r2788_8 +# 2789| r2789_1(glval) = VariableAddress[v] : # 2789| r2789_2(unsigned long) = Constant[4] : -# 2789| m2789_3(unsigned long) = Store[t] : &:r2789_1, r2789_2 -# 2790| v2790_1(void) = NoOp : -# 2779| v2779_11(void) = ReturnVoid : -# 2779| v2779_12(void) = AliasedUse : m2779_3 -# 2779| v2779_13(void) = ExitFunction : +# 2789| r2789_3(unsigned long) = CopyValue : r2787_6 +# 2789| r2789_4(unsigned long) = Mul : r2789_2, r2789_3 +# 2789| r2789_5(unsigned long) = Convert : r2787_8 +# 2789| r2789_6(unsigned long) = Mul : r2789_4, r2789_5 +# 2789| m2789_7(unsigned long) = Store[v] : &:r2789_1, r2789_6 +# 2790| r2790_1(glval) = VariableAddress[u] : +# 2790| r2790_2(unsigned long) = Constant[4] : +# 2790| r2790_3(unsigned long) = Convert : r2787_8 +# 2790| r2790_4(unsigned long) = Mul : r2790_2, r2790_3 +# 2790| m2790_5(unsigned long) = Store[u] : &:r2790_1, r2790_4 +# 2791| r2791_1(glval) = VariableAddress[t] : +# 2791| r2791_2(unsigned long) = Constant[4] : +# 2791| m2791_3(unsigned long) = Store[t] : &:r2791_1, r2791_2 +# 2792| v2792_1(void) = NoOp : +# 2781| v2781_11(void) = ReturnVoid : +# 2781| v2781_12(void) = AliasedUse : m2781_3 +# 2781| v2781_13(void) = ExitFunction : -# 2792| void vla_sizeof_test2(int, size_t, char) -# 2792| Block 0 -# 2792| v2792_1(void) = EnterFunction : -# 2792| m2792_2(unknown) = AliasedDefinition : -# 2792| m2792_3(unknown) = InitializeNonLocal : -# 2792| m2792_4(unknown) = Chi : total:m2792_2, partial:m2792_3 -# 2792| r2792_5(glval) = VariableAddress[len1] : -# 2792| m2792_6(int) = InitializeParameter[len1] : &:r2792_5 -# 2792| r2792_7(glval) = VariableAddress[len2] : -# 2792| m2792_8(unsigned long) = InitializeParameter[len2] : &:r2792_7 -# 2792| r2792_9(glval) = VariableAddress[len3] : -# 2792| m2792_10(char) = InitializeParameter[len3] : &:r2792_9 -# 2793| r2793_1(glval) = VariableAddress[tmp1] : -# 2793| m2793_2(int[][]) = Uninitialized[tmp1] : &:r2793_1 -# 2793| r2793_3(glval) = VariableAddress[len1] : -# 2793| r2793_4(int) = Load[len1] : &:r2793_3, m2792_6 -# 2793| r2793_5(glval) = VariableAddress[len2] : -# 2793| r2793_6(unsigned long) = Load[len2] : &:r2793_5, m2792_8 -# 2793| v2793_7(void) = NoOp : -# 2794| r2794_1(glval) = VariableAddress[z] : -# 2794| r2794_2(unsigned long) = Constant[4] : -# 2794| r2794_3(unsigned long) = CopyValue : r2793_6 -# 2794| r2794_4(unsigned long) = Mul : r2794_2, r2794_3 -# 2794| m2794_5(unsigned long) = Store[z] : &:r2794_1, r2794_4 -# 2795| r2795_1(glval) = VariableAddress[tmp2] : -# 2795| m2795_2(int[][][]) = Uninitialized[tmp2] : &:r2795_1 +# 2794| void vla_sizeof_test2(int, size_t, char) +# 2794| Block 0 +# 2794| v2794_1(void) = EnterFunction : +# 2794| m2794_2(unknown) = AliasedDefinition : +# 2794| m2794_3(unknown) = InitializeNonLocal : +# 2794| m2794_4(unknown) = Chi : total:m2794_2, partial:m2794_3 +# 2794| r2794_5(glval) = VariableAddress[len1] : +# 2794| m2794_6(int) = InitializeParameter[len1] : &:r2794_5 +# 2794| r2794_7(glval) = VariableAddress[len2] : +# 2794| m2794_8(unsigned long) = InitializeParameter[len2] : &:r2794_7 +# 2794| r2794_9(glval) = VariableAddress[len3] : +# 2794| m2794_10(char) = InitializeParameter[len3] : &:r2794_9 +# 2795| r2795_1(glval) = VariableAddress[tmp1] : +# 2795| m2795_2(int[][]) = Uninitialized[tmp1] : &:r2795_1 # 2795| r2795_3(glval) = VariableAddress[len1] : -# 2795| r2795_4(int) = Load[len1] : &:r2795_3, m2792_6 +# 2795| r2795_4(int) = Load[len1] : &:r2795_3, m2794_6 # 2795| r2795_5(glval) = VariableAddress[len2] : -# 2795| r2795_6(unsigned long) = Load[len2] : &:r2795_5, m2792_8 -# 2795| r2795_7(glval) = VariableAddress[len3] : -# 2795| r2795_8(char) = Load[len3] : &:r2795_7, m2792_10 -# 2795| v2795_9(void) = NoOp : -# 2796| r2796_1(glval) = VariableAddress[v] : +# 2795| r2795_6(unsigned long) = Load[len2] : &:r2795_5, m2794_8 +# 2795| v2795_7(void) = NoOp : +# 2796| r2796_1(glval) = VariableAddress[z] : # 2796| r2796_2(unsigned long) = Constant[4] : # 2796| r2796_3(unsigned long) = CopyValue : r2795_6 # 2796| r2796_4(unsigned long) = Mul : r2796_2, r2796_3 -# 2796| r2796_5(unsigned long) = Convert : r2795_8 -# 2796| r2796_6(unsigned long) = Mul : r2796_4, r2796_5 -# 2796| m2796_7(unsigned long) = Store[v] : &:r2796_1, r2796_6 -# 2797| r2797_1(glval) = VariableAddress[u] : -# 2797| r2797_2(unsigned long) = Constant[4] : -# 2797| r2797_3(unsigned long) = Convert : r2795_8 -# 2797| r2797_4(unsigned long) = Mul : r2797_2, r2797_3 -# 2797| m2797_5(unsigned long) = Store[u] : &:r2797_1, r2797_4 -# 2798| r2798_1(glval) = VariableAddress[t] : +# 2796| m2796_5(unsigned long) = Store[z] : &:r2796_1, r2796_4 +# 2797| r2797_1(glval) = VariableAddress[tmp2] : +# 2797| m2797_2(int[][][]) = Uninitialized[tmp2] : &:r2797_1 +# 2797| r2797_3(glval) = VariableAddress[len1] : +# 2797| r2797_4(int) = Load[len1] : &:r2797_3, m2794_6 +# 2797| r2797_5(glval) = VariableAddress[len2] : +# 2797| r2797_6(unsigned long) = Load[len2] : &:r2797_5, m2794_8 +# 2797| r2797_7(glval) = VariableAddress[len3] : +# 2797| r2797_8(char) = Load[len3] : &:r2797_7, m2794_10 +# 2797| v2797_9(void) = NoOp : +# 2798| r2798_1(glval) = VariableAddress[v] : # 2798| r2798_2(unsigned long) = Constant[4] : -# 2798| m2798_3(unsigned long) = Store[t] : &:r2798_1, r2798_2 -# 2799| v2799_1(void) = NoOp : -# 2792| v2792_11(void) = ReturnVoid : -# 2792| v2792_12(void) = AliasedUse : m2792_3 -# 2792| v2792_13(void) = ExitFunction : +# 2798| r2798_3(unsigned long) = CopyValue : r2797_6 +# 2798| r2798_4(unsigned long) = Mul : r2798_2, r2798_3 +# 2798| r2798_5(unsigned long) = Convert : r2797_8 +# 2798| r2798_6(unsigned long) = Mul : r2798_4, r2798_5 +# 2798| m2798_7(unsigned long) = Store[v] : &:r2798_1, r2798_6 +# 2799| r2799_1(glval) = VariableAddress[u] : +# 2799| r2799_2(unsigned long) = Constant[4] : +# 2799| r2799_3(unsigned long) = Convert : r2797_8 +# 2799| r2799_4(unsigned long) = Mul : r2799_2, r2799_3 +# 2799| m2799_5(unsigned long) = Store[u] : &:r2799_1, r2799_4 +# 2800| r2800_1(glval) = VariableAddress[t] : +# 2800| r2800_2(unsigned long) = Constant[4] : +# 2800| m2800_3(unsigned long) = Store[t] : &:r2800_1, r2800_2 +# 2801| v2801_1(void) = NoOp : +# 2794| v2794_11(void) = ReturnVoid : +# 2794| v2794_12(void) = AliasedUse : m2794_3 +# 2794| v2794_13(void) = ExitFunction : -# 2801| size_t vla_sizeof_test3(int, size_t, char, bool) -# 2801| Block 0 -# 2801| v2801_1(void) = EnterFunction : -# 2801| m2801_2(unknown) = AliasedDefinition : -# 2801| m2801_3(unknown) = InitializeNonLocal : -# 2801| m2801_4(unknown) = Chi : total:m2801_2, partial:m2801_3 -# 2801| r2801_5(glval) = VariableAddress[len1] : -# 2801| m2801_6(int) = InitializeParameter[len1] : &:r2801_5 -# 2801| r2801_7(glval) = VariableAddress[len2] : -# 2801| m2801_8(unsigned long) = InitializeParameter[len2] : &:r2801_7 -# 2801| r2801_9(glval) = VariableAddress[len3] : -# 2801| m2801_10(char) = InitializeParameter[len3] : &:r2801_9 -# 2801| r2801_11(glval) = VariableAddress[b] : -# 2801| m2801_12(bool) = InitializeParameter[b] : &:r2801_11 -# 2802| r2802_1(glval) = VariableAddress[len1] : -# 2802| r2802_2(int) = Load[len1] : &:r2802_1, m2801_6 -# 2802| r2802_3(glval) = VariableAddress[len2] : -# 2802| r2802_4(unsigned long) = Load[len2] : &:r2802_3, m2801_8 -# 2802| v2802_5(void) = NoOp : -# 2803| v2803_1(void) = NoOp : -# 2804| r2804_1(glval) = VariableAddress[len3] : -# 2804| r2804_2(char) = Load[len3] : &:r2804_1, m2801_10 -# 2804| v2804_3(void) = NoOp : -# 2806| r2806_1(glval) = VariableAddress[b] : -# 2806| r2806_2(bool) = Load[b] : &:r2806_1, m2801_12 -# 2806| v2806_3(void) = ConditionalBranch : r2806_2 +# 2803| size_t vla_sizeof_test3(int, size_t, char, bool) +# 2803| Block 0 +# 2803| v2803_1(void) = EnterFunction : +# 2803| m2803_2(unknown) = AliasedDefinition : +# 2803| m2803_3(unknown) = InitializeNonLocal : +# 2803| m2803_4(unknown) = Chi : total:m2803_2, partial:m2803_3 +# 2803| r2803_5(glval) = VariableAddress[len1] : +# 2803| m2803_6(int) = InitializeParameter[len1] : &:r2803_5 +# 2803| r2803_7(glval) = VariableAddress[len2] : +# 2803| m2803_8(unsigned long) = InitializeParameter[len2] : &:r2803_7 +# 2803| r2803_9(glval) = VariableAddress[len3] : +# 2803| m2803_10(char) = InitializeParameter[len3] : &:r2803_9 +# 2803| r2803_11(glval) = VariableAddress[b] : +# 2803| m2803_12(bool) = InitializeParameter[b] : &:r2803_11 +# 2804| r2804_1(glval) = VariableAddress[len1] : +# 2804| r2804_2(int) = Load[len1] : &:r2804_1, m2803_6 +# 2804| r2804_3(glval) = VariableAddress[len2] : +# 2804| r2804_4(unsigned long) = Load[len2] : &:r2804_3, m2803_8 +# 2804| v2804_5(void) = NoOp : +# 2805| v2805_1(void) = NoOp : +# 2806| r2806_1(glval) = VariableAddress[len3] : +# 2806| r2806_2(char) = Load[len3] : &:r2806_1, m2803_10 +# 2806| v2806_3(void) = NoOp : +# 2808| r2808_1(glval) = VariableAddress[b] : +# 2808| r2808_2(bool) = Load[b] : &:r2808_1, m2803_12 +# 2808| v2808_3(void) = ConditionalBranch : r2808_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 2801| Block 1 -# 2801| m2801_13(unsigned long) = Phi : from 2:m2808_7, from 3:m2811_3 -# 2801| r2801_14(glval) = VariableAddress[#return] : -# 2801| v2801_15(void) = ReturnValue : &:r2801_14, m2801_13 -# 2801| v2801_16(void) = AliasedUse : m2801_3 -# 2801| v2801_17(void) = ExitFunction : +# 2803| Block 1 +# 2803| m2803_13(unsigned long) = Phi : from 2:m2810_7, from 3:m2813_3 +# 2803| r2803_14(glval) = VariableAddress[#return] : +# 2803| v2803_15(void) = ReturnValue : &:r2803_14, m2803_13 +# 2803| v2803_16(void) = AliasedUse : m2803_3 +# 2803| v2803_17(void) = ExitFunction : -# 2807| Block 2 -# 2807| r2807_1(glval) = VariableAddress[tmp] : -# 2807| m2807_2(long[][][]) = Uninitialized[tmp] : &:r2807_1 -# 2807| v2807_3(void) = NoOp : -# 2808| r2808_1(glval) = VariableAddress[#return] : -# 2808| r2808_2(unsigned long) = Constant[8] : -# 2808| r2808_3(unsigned long) = Convert : r2802_2 -# 2808| r2808_4(unsigned long) = Mul : r2808_2, r2808_3 -# 2808| r2808_5(unsigned long) = CopyValue : r2802_4 -# 2808| r2808_6(unsigned long) = Mul : r2808_4, r2808_5 -# 2808| m2808_7(unsigned long) = Store[#return] : &:r2808_1, r2808_6 +# 2809| Block 2 +# 2809| r2809_1(glval) = VariableAddress[tmp] : +# 2809| m2809_2(long[][][]) = Uninitialized[tmp] : &:r2809_1 +# 2809| v2809_3(void) = NoOp : +# 2810| r2810_1(glval) = VariableAddress[#return] : +# 2810| r2810_2(unsigned long) = Constant[8] : +# 2810| r2810_3(unsigned long) = Convert : r2804_2 +# 2810| r2810_4(unsigned long) = Mul : r2810_2, r2810_3 +# 2810| r2810_5(unsigned long) = CopyValue : r2804_4 +# 2810| r2810_6(unsigned long) = Mul : r2810_4, r2810_5 +# 2810| m2810_7(unsigned long) = Store[#return] : &:r2810_1, r2810_6 #-----| Goto -> Block 1 -# 2811| Block 3 -# 2811| r2811_1(glval) = VariableAddress[#return] : -# 2811| r2811_2(unsigned long) = Constant[0] : -# 2811| m2811_3(unsigned long) = Store[#return] : &:r2811_1, r2811_2 +# 2813| Block 3 +# 2813| r2813_1(glval) = VariableAddress[#return] : +# 2813| r2813_2(unsigned long) = Constant[0] : +# 2813| m2813_3(unsigned long) = Store[#return] : &:r2813_1, r2813_2 #-----| Goto -> Block 1 -# 2814| void vla_sizeof_test4(int, size_t) -# 2814| Block 0 -# 2814| v2814_1(void) = EnterFunction : -# 2814| m2814_2(unknown) = AliasedDefinition : -# 2814| m2814_3(unknown) = InitializeNonLocal : -# 2814| m2814_4(unknown) = Chi : total:m2814_2, partial:m2814_3 -# 2814| r2814_5(glval) = VariableAddress[len1] : -# 2814| m2814_6(int) = InitializeParameter[len1] : &:r2814_5 -# 2814| r2814_7(glval) = VariableAddress[len2] : -# 2814| m2814_8(unsigned long) = InitializeParameter[len2] : &:r2814_7 -# 2815| r2815_1(glval) = VariableAddress[tmp1] : -# 2815| m2815_2(int[][]) = Uninitialized[tmp1] : &:r2815_1 -# 2815| r2815_3(glval) = VariableAddress[len1] : -# 2815| r2815_4(int) = Load[len1] : &:r2815_3, m2814_6 -# 2815| r2815_5(glval) = VariableAddress[len2] : -# 2815| r2815_6(unsigned long) = Load[len2] : &:r2815_5, m2814_8 -# 2815| v2815_7(void) = NoOp : -# 2816| r2816_1(glval) = VariableAddress[z] : -# 2816| r2816_2(unsigned long) = Constant[4] : -# 2816| r2816_3(unsigned long) = CopyValue : r2815_6 -# 2816| r2816_4(unsigned long) = Mul : r2816_2, r2816_3 -# 2816| m2816_5(unsigned long) = Store[z] : &:r2816_1, r2816_4 -# 2817| v2817_1(void) = NoOp : -# 2814| v2814_9(void) = ReturnVoid : -# 2814| v2814_10(void) = AliasedUse : m2814_3 -# 2814| v2814_11(void) = ExitFunction : +# 2816| void vla_sizeof_test4(int, size_t) +# 2816| Block 0 +# 2816| v2816_1(void) = EnterFunction : +# 2816| m2816_2(unknown) = AliasedDefinition : +# 2816| m2816_3(unknown) = InitializeNonLocal : +# 2816| m2816_4(unknown) = Chi : total:m2816_2, partial:m2816_3 +# 2816| r2816_5(glval) = VariableAddress[len1] : +# 2816| m2816_6(int) = InitializeParameter[len1] : &:r2816_5 +# 2816| r2816_7(glval) = VariableAddress[len2] : +# 2816| m2816_8(unsigned long) = InitializeParameter[len2] : &:r2816_7 +# 2817| r2817_1(glval) = VariableAddress[tmp1] : +# 2817| m2817_2(int[][]) = Uninitialized[tmp1] : &:r2817_1 +# 2817| r2817_3(glval) = VariableAddress[len1] : +# 2817| r2817_4(int) = Load[len1] : &:r2817_3, m2816_6 +# 2817| r2817_5(glval) = VariableAddress[len2] : +# 2817| r2817_6(unsigned long) = Load[len2] : &:r2817_5, m2816_8 +# 2817| v2817_7(void) = NoOp : +# 2818| r2818_1(glval) = VariableAddress[z] : +# 2818| r2818_2(unsigned long) = Constant[4] : +# 2818| r2818_3(unsigned long) = CopyValue : r2817_6 +# 2818| r2818_4(unsigned long) = Mul : r2818_2, r2818_3 +# 2818| m2818_5(unsigned long) = Store[z] : &:r2818_1, r2818_4 +# 2819| v2819_1(void) = NoOp : +# 2816| v2816_9(void) = ReturnVoid : +# 2816| v2816_10(void) = AliasedUse : m2816_3 +# 2816| v2816_11(void) = ExitFunction : -# 2819| void vla_sizeof_test5(int, size_t) -# 2819| Block 0 -# 2819| v2819_1(void) = EnterFunction : -# 2819| m2819_2(unknown) = AliasedDefinition : -# 2819| m2819_3(unknown) = InitializeNonLocal : -# 2819| m2819_4(unknown) = Chi : total:m2819_2, partial:m2819_3 -# 2819| r2819_5(glval) = VariableAddress[len1] : -# 2819| m2819_6(int) = InitializeParameter[len1] : &:r2819_5 -# 2819| r2819_7(glval) = VariableAddress[len2] : -# 2819| m2819_8(unsigned long) = InitializeParameter[len2] : &:r2819_7 -# 2820| r2820_1(glval) = VariableAddress[tmp1] : -# 2820| m2820_2(int[][]) = Uninitialized[tmp1] : &:r2820_1 -# 2820| r2820_3(glval) = VariableAddress[len1] : -# 2820| r2820_4(int) = Load[len1] : &:r2820_3, m2819_6 -# 2820| r2820_5(glval) = VariableAddress[len2] : -# 2820| r2820_6(unsigned long) = Load[len2] : &:r2820_5, m2819_8 -# 2820| v2820_7(void) = NoOp : -# 2821| r2821_1(glval) = VariableAddress[z] : -# 2821| r2821_2(unsigned long) = Constant[4] : -# 2821| r2821_3(unsigned long) = CopyValue : r2820_6 -# 2821| r2821_4(unsigned long) = Mul : r2821_2, r2821_3 -# 2821| m2821_5(unsigned long) = Store[z] : &:r2821_1, r2821_4 -# 2822| v2822_1(void) = NoOp : -# 2819| v2819_9(void) = ReturnVoid : -# 2819| v2819_10(void) = AliasedUse : m2819_3 -# 2819| v2819_11(void) = ExitFunction : +# 2821| void vla_sizeof_test5(int, size_t) +# 2821| Block 0 +# 2821| v2821_1(void) = EnterFunction : +# 2821| m2821_2(unknown) = AliasedDefinition : +# 2821| m2821_3(unknown) = InitializeNonLocal : +# 2821| m2821_4(unknown) = Chi : total:m2821_2, partial:m2821_3 +# 2821| r2821_5(glval) = VariableAddress[len1] : +# 2821| m2821_6(int) = InitializeParameter[len1] : &:r2821_5 +# 2821| r2821_7(glval) = VariableAddress[len2] : +# 2821| m2821_8(unsigned long) = InitializeParameter[len2] : &:r2821_7 +# 2822| r2822_1(glval) = VariableAddress[tmp1] : +# 2822| m2822_2(int[][]) = Uninitialized[tmp1] : &:r2822_1 +# 2822| r2822_3(glval) = VariableAddress[len1] : +# 2822| r2822_4(int) = Load[len1] : &:r2822_3, m2821_6 +# 2822| r2822_5(glval) = VariableAddress[len2] : +# 2822| r2822_6(unsigned long) = Load[len2] : &:r2822_5, m2821_8 +# 2822| v2822_7(void) = NoOp : +# 2823| r2823_1(glval) = VariableAddress[z] : +# 2823| r2823_2(unsigned long) = Constant[4] : +# 2823| r2823_3(unsigned long) = CopyValue : r2822_6 +# 2823| r2823_4(unsigned long) = Mul : r2823_2, r2823_3 +# 2823| m2823_5(unsigned long) = Store[z] : &:r2823_1, r2823_4 +# 2824| v2824_1(void) = NoOp : +# 2821| v2821_9(void) = ReturnVoid : +# 2821| v2821_10(void) = AliasedUse : m2821_3 +# 2821| v2821_11(void) = ExitFunction : ir23.cpp: # 1| bool consteval_1() diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency.expected index b83d9ea47e3..f1b75895c3e 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency.expected @@ -27,7 +27,7 @@ invalidOverlap nonUniqueEnclosingIRFunction fieldAddressOnNonPointer thisArgumentIsNonPointer -| ir.cpp:2546:34:2546:34 | Call: call to operator bool | Call instruction 'Call: call to operator bool' has a `this` argument operand that is not an address, in function '$@'. | ir.cpp:2545:6:2545:23 | void this_inconsistency(bool) | void this_inconsistency(bool) | +| ir.cpp:2548:34:2548:34 | Call: call to operator bool | Call instruction 'Call: call to operator bool' has a `this` argument operand that is not an address, in function '$@'. | ir.cpp:2547:6:2547:23 | void this_inconsistency(bool) | void this_inconsistency(bool) | nonUniqueIRVariable nonBooleanOperand missingCppType diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency_unsound.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency_unsound.expected index b83d9ea47e3..f1b75895c3e 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency_unsound.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency_unsound.expected @@ -27,7 +27,7 @@ invalidOverlap nonUniqueEnclosingIRFunction fieldAddressOnNonPointer thisArgumentIsNonPointer -| ir.cpp:2546:34:2546:34 | Call: call to operator bool | Call instruction 'Call: call to operator bool' has a `this` argument operand that is not an address, in function '$@'. | ir.cpp:2545:6:2545:23 | void this_inconsistency(bool) | void this_inconsistency(bool) | +| ir.cpp:2548:34:2548:34 | Call: call to operator bool | Call instruction 'Call: call to operator bool' has a `this` argument operand that is not an address, in function '$@'. | ir.cpp:2547:6:2547:23 | void this_inconsistency(bool) | void this_inconsistency(bool) | nonUniqueIRVariable nonBooleanOperand missingCppType diff --git a/cpp/ql/test/library-tests/ir/ir/ir.cpp b/cpp/ql/test/library-tests/ir/ir/ir.cpp index 3dce0a0e1ea..2bc8fcca9a3 100644 --- a/cpp/ql/test/library-tests/ir/ir/ir.cpp +++ b/cpp/ql/test/library-tests/ir/ir/ir.cpp @@ -1214,6 +1214,8 @@ void VectorTypes(int i) { vi4[i] = x; vector(4, int) vi4_shuffle = __builtin_shufflevector(vi4, vi4, 3+0, 2, 1, 0); vi4 = vi4 + vi4_shuffle; + + } void *memcpy(void *dst, void *src, int size); diff --git a/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected b/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected index e30106d3520..de43ad9631a 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected @@ -20,7 +20,7 @@ multipleIRTypes lostReachability backEdgeCountMismatch useNotDominatedByDefinition -| ir.cpp:1535:8:1535:8 | Unary | Operand 'Unary' is not dominated by its definition in function '$@'. | ir.cpp:1535:8:1535:8 | void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() | void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() | +| ir.cpp:1537:8:1537:8 | Unary | Operand 'Unary' is not dominated by its definition in function '$@'. | ir.cpp:1537:8:1537:8 | void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() | void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() | switchInstructionWithoutDefaultEdge notMarkedAsConflated wronglyMarkedAsConflated @@ -28,7 +28,7 @@ invalidOverlap nonUniqueEnclosingIRFunction fieldAddressOnNonPointer thisArgumentIsNonPointer -| ir.cpp:2546:34:2546:34 | Call: call to operator bool | Call instruction 'Call: call to operator bool' has a `this` argument operand that is not an address, in function '$@'. | ir.cpp:2545:6:2545:23 | void this_inconsistency(bool) | void this_inconsistency(bool) | +| ir.cpp:2548:34:2548:34 | Call: call to operator bool | Call instruction 'Call: call to operator bool' has a `this` argument operand that is not an address, in function '$@'. | ir.cpp:2547:6:2547:23 | void this_inconsistency(bool) | void this_inconsistency(bool) | nonUniqueIRVariable nonBooleanOperand missingCppType diff --git a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected index e0e92153780..4fce667c611 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected @@ -9692,1024 +9692,984 @@ ir.cpp: # 1216| r1216_5(__attribute((vector_size(16UL))) int) = Add : r1216_2, r1216_4 # 1216| r1216_6(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : # 1216| mu1216_7(__attribute((vector_size(16UL))) int) = Store[vi4] : &:r1216_6, r1216_5 -# 1217| v1217_1(void) = NoOp : +# 1219| v1219_1(void) = NoOp : # 1211| v1211_6(void) = ReturnVoid : # 1211| v1211_7(void) = AliasedUse : ~m? # 1211| v1211_8(void) = ExitFunction : -# 1221| int ModeledCallTarget(int) -# 1221| Block 0 -# 1221| v1221_1(void) = EnterFunction : -# 1221| mu1221_2(unknown) = AliasedDefinition : -# 1221| mu1221_3(unknown) = InitializeNonLocal : -# 1221| r1221_4(glval) = VariableAddress[x] : -# 1221| mu1221_5(int) = InitializeParameter[x] : &:r1221_4 -# 1222| r1222_1(glval) = VariableAddress[y] : -# 1222| mu1222_2(int) = Uninitialized[y] : &:r1222_1 -# 1223| r1223_1(glval) = FunctionAddress[memcpy] : -# 1223| r1223_2(glval) = VariableAddress[y] : -# 1223| r1223_3(int *) = CopyValue : r1223_2 -# 1223| r1223_4(void *) = Convert : r1223_3 -# 1223| r1223_5(glval) = VariableAddress[x] : -# 1223| r1223_6(int *) = CopyValue : r1223_5 -# 1223| r1223_7(void *) = Convert : r1223_6 -# 1223| r1223_8(int) = Constant[4] : -# 1223| r1223_9(void *) = Call[memcpy] : func:r1223_1, 0:r1223_4, 1:r1223_7, 2:r1223_8 -# 1223| v1223_10(void) = ^SizedBufferReadSideEffect[1] : &:r1223_7, r1223_8, ~m? -# 1223| mu1223_11(unknown) = ^SizedBufferMustWriteSideEffect[0] : &:r1223_4, r1223_8 -# 1224| r1224_1(glval) = VariableAddress[#return] : -# 1224| r1224_2(glval) = VariableAddress[y] : -# 1224| r1224_3(int) = Load[y] : &:r1224_2, ~m? -# 1224| mu1224_4(int) = Store[#return] : &:r1224_1, r1224_3 -# 1221| r1221_6(glval) = VariableAddress[#return] : -# 1221| v1221_7(void) = ReturnValue : &:r1221_6, ~m? -# 1221| v1221_8(void) = AliasedUse : ~m? -# 1221| v1221_9(void) = ExitFunction : +# 1223| int ModeledCallTarget(int) +# 1223| Block 0 +# 1223| v1223_1(void) = EnterFunction : +# 1223| mu1223_2(unknown) = AliasedDefinition : +# 1223| mu1223_3(unknown) = InitializeNonLocal : +# 1223| r1223_4(glval) = VariableAddress[x] : +# 1223| mu1223_5(int) = InitializeParameter[x] : &:r1223_4 +# 1224| r1224_1(glval) = VariableAddress[y] : +# 1224| mu1224_2(int) = Uninitialized[y] : &:r1224_1 +# 1225| r1225_1(glval) = FunctionAddress[memcpy] : +# 1225| r1225_2(glval) = VariableAddress[y] : +# 1225| r1225_3(int *) = CopyValue : r1225_2 +# 1225| r1225_4(void *) = Convert : r1225_3 +# 1225| r1225_5(glval) = VariableAddress[x] : +# 1225| r1225_6(int *) = CopyValue : r1225_5 +# 1225| r1225_7(void *) = Convert : r1225_6 +# 1225| r1225_8(int) = Constant[4] : +# 1225| r1225_9(void *) = Call[memcpy] : func:r1225_1, 0:r1225_4, 1:r1225_7, 2:r1225_8 +# 1225| v1225_10(void) = ^SizedBufferReadSideEffect[1] : &:r1225_7, r1225_8, ~m? +# 1225| mu1225_11(unknown) = ^SizedBufferMustWriteSideEffect[0] : &:r1225_4, r1225_8 +# 1226| r1226_1(glval) = VariableAddress[#return] : +# 1226| r1226_2(glval) = VariableAddress[y] : +# 1226| r1226_3(int) = Load[y] : &:r1226_2, ~m? +# 1226| mu1226_4(int) = Store[#return] : &:r1226_1, r1226_3 +# 1223| r1223_6(glval) = VariableAddress[#return] : +# 1223| v1223_7(void) = ReturnValue : &:r1223_6, ~m? +# 1223| v1223_8(void) = AliasedUse : ~m? +# 1223| v1223_9(void) = ExitFunction : -# 1227| String ReturnObjectImpl() -# 1227| Block 0 -# 1227| v1227_1(void) = EnterFunction : -# 1227| mu1227_2(unknown) = AliasedDefinition : -# 1227| mu1227_3(unknown) = InitializeNonLocal : -# 1228| r1228_1(glval) = VariableAddress[#return] : -# 1228| mu1228_2(String) = Uninitialized[#return] : &:r1228_1 -# 1228| r1228_3(glval) = FunctionAddress[String] : -# 1228| r1228_4(glval) = StringConstant["foo"] : -# 1228| r1228_5(char *) = Convert : r1228_4 -# 1228| v1228_6(void) = Call[String] : func:r1228_3, this:r1228_1, 0:r1228_5 -# 1228| mu1228_7(unknown) = ^CallSideEffect : ~m? -# 1228| v1228_8(void) = ^BufferReadSideEffect[0] : &:r1228_5, ~m? -# 1228| mu1228_9(String) = ^IndirectMayWriteSideEffect[-1] : &:r1228_1 -# 1227| r1227_4(glval) = VariableAddress[#return] : -# 1227| v1227_5(void) = ReturnValue : &:r1227_4, ~m? -# 1227| v1227_6(void) = AliasedUse : ~m? -# 1227| v1227_7(void) = ExitFunction : +# 1229| String ReturnObjectImpl() +# 1229| Block 0 +# 1229| v1229_1(void) = EnterFunction : +# 1229| mu1229_2(unknown) = AliasedDefinition : +# 1229| mu1229_3(unknown) = InitializeNonLocal : +# 1230| r1230_1(glval) = VariableAddress[#return] : +# 1230| mu1230_2(String) = Uninitialized[#return] : &:r1230_1 +# 1230| r1230_3(glval) = FunctionAddress[String] : +# 1230| r1230_4(glval) = StringConstant["foo"] : +# 1230| r1230_5(char *) = Convert : r1230_4 +# 1230| v1230_6(void) = Call[String] : func:r1230_3, this:r1230_1, 0:r1230_5 +# 1230| mu1230_7(unknown) = ^CallSideEffect : ~m? +# 1230| v1230_8(void) = ^BufferReadSideEffect[0] : &:r1230_5, ~m? +# 1230| mu1230_9(String) = ^IndirectMayWriteSideEffect[-1] : &:r1230_1 +# 1229| r1229_4(glval) = VariableAddress[#return] : +# 1229| v1229_5(void) = ReturnValue : &:r1229_4, ~m? +# 1229| v1229_6(void) = AliasedUse : ~m? +# 1229| v1229_7(void) = ExitFunction : -# 1231| void switch1Case(int) -# 1231| Block 0 -# 1231| v1231_1(void) = EnterFunction : -# 1231| mu1231_2(unknown) = AliasedDefinition : -# 1231| mu1231_3(unknown) = InitializeNonLocal : -# 1231| r1231_4(glval) = VariableAddress[x] : -# 1231| mu1231_5(int) = InitializeParameter[x] : &:r1231_4 -# 1232| r1232_1(glval) = VariableAddress[y] : -# 1232| r1232_2(int) = Constant[0] : -# 1232| mu1232_3(int) = Store[y] : &:r1232_1, r1232_2 -# 1233| r1233_1(glval) = VariableAddress[x] : -# 1233| r1233_2(int) = Load[x] : &:r1233_1, ~m? -# 1233| v1233_3(void) = Switch : r1233_2 +# 1233| void switch1Case(int) +# 1233| Block 0 +# 1233| v1233_1(void) = EnterFunction : +# 1233| mu1233_2(unknown) = AliasedDefinition : +# 1233| mu1233_3(unknown) = InitializeNonLocal : +# 1233| r1233_4(glval) = VariableAddress[x] : +# 1233| mu1233_5(int) = InitializeParameter[x] : &:r1233_4 +# 1234| r1234_1(glval) = VariableAddress[y] : +# 1234| r1234_2(int) = Constant[0] : +# 1234| mu1234_3(int) = Store[y] : &:r1234_1, r1234_2 +# 1235| r1235_1(glval) = VariableAddress[x] : +# 1235| r1235_2(int) = Load[x] : &:r1235_1, ~m? +# 1235| v1235_3(void) = Switch : r1235_2 #-----| Case[1] -> Block 1 #-----| Default -> Block 2 -# 1234| Block 1 -# 1234| v1234_1(void) = NoOp : -# 1235| r1235_1(int) = Constant[2] : -# 1235| r1235_2(glval) = VariableAddress[y] : -# 1235| mu1235_3(int) = Store[y] : &:r1235_2, r1235_1 +# 1236| Block 1 +# 1236| v1236_1(void) = NoOp : +# 1237| r1237_1(int) = Constant[2] : +# 1237| r1237_2(glval) = VariableAddress[y] : +# 1237| mu1237_3(int) = Store[y] : &:r1237_2, r1237_1 #-----| Goto -> Block 2 -# 1237| Block 2 -# 1237| r1237_1(glval) = VariableAddress[z] : -# 1237| r1237_2(glval) = VariableAddress[y] : -# 1237| r1237_3(int) = Load[y] : &:r1237_2, ~m? -# 1237| mu1237_4(int) = Store[z] : &:r1237_1, r1237_3 -# 1238| v1238_1(void) = NoOp : -# 1231| v1231_6(void) = ReturnVoid : -# 1231| v1231_7(void) = AliasedUse : ~m? -# 1231| v1231_8(void) = ExitFunction : +# 1239| Block 2 +# 1239| r1239_1(glval) = VariableAddress[z] : +# 1239| r1239_2(glval) = VariableAddress[y] : +# 1239| r1239_3(int) = Load[y] : &:r1239_2, ~m? +# 1239| mu1239_4(int) = Store[z] : &:r1239_1, r1239_3 +# 1240| v1240_1(void) = NoOp : +# 1233| v1233_6(void) = ReturnVoid : +# 1233| v1233_7(void) = AliasedUse : ~m? +# 1233| v1233_8(void) = ExitFunction : -# 1240| void switch2Case_fallthrough(int) -# 1240| Block 0 -# 1240| v1240_1(void) = EnterFunction : -# 1240| mu1240_2(unknown) = AliasedDefinition : -# 1240| mu1240_3(unknown) = InitializeNonLocal : -# 1240| r1240_4(glval) = VariableAddress[x] : -# 1240| mu1240_5(int) = InitializeParameter[x] : &:r1240_4 -# 1241| r1241_1(glval) = VariableAddress[y] : -# 1241| r1241_2(int) = Constant[0] : -# 1241| mu1241_3(int) = Store[y] : &:r1241_1, r1241_2 -# 1242| r1242_1(glval) = VariableAddress[x] : -# 1242| r1242_2(int) = Load[x] : &:r1242_1, ~m? -# 1242| v1242_3(void) = Switch : r1242_2 +# 1242| void switch2Case_fallthrough(int) +# 1242| Block 0 +# 1242| v1242_1(void) = EnterFunction : +# 1242| mu1242_2(unknown) = AliasedDefinition : +# 1242| mu1242_3(unknown) = InitializeNonLocal : +# 1242| r1242_4(glval) = VariableAddress[x] : +# 1242| mu1242_5(int) = InitializeParameter[x] : &:r1242_4 +# 1243| r1243_1(glval) = VariableAddress[y] : +# 1243| r1243_2(int) = Constant[0] : +# 1243| mu1243_3(int) = Store[y] : &:r1243_1, r1243_2 +# 1244| r1244_1(glval) = VariableAddress[x] : +# 1244| r1244_2(int) = Load[x] : &:r1244_1, ~m? +# 1244| v1244_3(void) = Switch : r1244_2 #-----| Case[1] -> Block 1 #-----| Case[2] -> Block 2 #-----| Default -> Block 3 -# 1243| Block 1 -# 1243| v1243_1(void) = NoOp : -# 1244| r1244_1(int) = Constant[2] : -# 1244| r1244_2(glval) = VariableAddress[y] : -# 1244| mu1244_3(int) = Store[y] : &:r1244_2, r1244_1 -#-----| Goto -> Block 2 - -# 1245| Block 2 +# 1245| Block 1 # 1245| v1245_1(void) = NoOp : -# 1246| r1246_1(int) = Constant[3] : +# 1246| r1246_1(int) = Constant[2] : # 1246| r1246_2(glval) = VariableAddress[y] : # 1246| mu1246_3(int) = Store[y] : &:r1246_2, r1246_1 -#-----| Goto -> Block 3 +#-----| Goto -> Block 2 -# 1248| Block 3 -# 1248| r1248_1(glval) = VariableAddress[z] : +# 1247| Block 2 +# 1247| v1247_1(void) = NoOp : +# 1248| r1248_1(int) = Constant[3] : # 1248| r1248_2(glval) = VariableAddress[y] : -# 1248| r1248_3(int) = Load[y] : &:r1248_2, ~m? -# 1248| mu1248_4(int) = Store[z] : &:r1248_1, r1248_3 -# 1249| v1249_1(void) = NoOp : -# 1240| v1240_6(void) = ReturnVoid : -# 1240| v1240_7(void) = AliasedUse : ~m? -# 1240| v1240_8(void) = ExitFunction : +# 1248| mu1248_3(int) = Store[y] : &:r1248_2, r1248_1 +#-----| Goto -> Block 3 -# 1251| void switch2Case(int) -# 1251| Block 0 -# 1251| v1251_1(void) = EnterFunction : -# 1251| mu1251_2(unknown) = AliasedDefinition : -# 1251| mu1251_3(unknown) = InitializeNonLocal : -# 1251| r1251_4(glval) = VariableAddress[x] : -# 1251| mu1251_5(int) = InitializeParameter[x] : &:r1251_4 -# 1252| r1252_1(glval) = VariableAddress[y] : -# 1252| r1252_2(int) = Constant[0] : -# 1252| mu1252_3(int) = Store[y] : &:r1252_1, r1252_2 -# 1253| r1253_1(glval) = VariableAddress[x] : -# 1253| r1253_2(int) = Load[x] : &:r1253_1, ~m? -# 1253| v1253_3(void) = Switch : r1253_2 +# 1250| Block 3 +# 1250| r1250_1(glval) = VariableAddress[z] : +# 1250| r1250_2(glval) = VariableAddress[y] : +# 1250| r1250_3(int) = Load[y] : &:r1250_2, ~m? +# 1250| mu1250_4(int) = Store[z] : &:r1250_1, r1250_3 +# 1251| v1251_1(void) = NoOp : +# 1242| v1242_6(void) = ReturnVoid : +# 1242| v1242_7(void) = AliasedUse : ~m? +# 1242| v1242_8(void) = ExitFunction : + +# 1253| void switch2Case(int) +# 1253| Block 0 +# 1253| v1253_1(void) = EnterFunction : +# 1253| mu1253_2(unknown) = AliasedDefinition : +# 1253| mu1253_3(unknown) = InitializeNonLocal : +# 1253| r1253_4(glval) = VariableAddress[x] : +# 1253| mu1253_5(int) = InitializeParameter[x] : &:r1253_4 +# 1254| r1254_1(glval) = VariableAddress[y] : +# 1254| r1254_2(int) = Constant[0] : +# 1254| mu1254_3(int) = Store[y] : &:r1254_1, r1254_2 +# 1255| r1255_1(glval) = VariableAddress[x] : +# 1255| r1255_2(int) = Load[x] : &:r1255_1, ~m? +# 1255| v1255_3(void) = Switch : r1255_2 #-----| Case[1] -> Block 1 #-----| Case[2] -> Block 2 #-----| Default -> Block 3 -# 1254| Block 1 -# 1254| v1254_1(void) = NoOp : -# 1255| r1255_1(int) = Constant[2] : -# 1255| r1255_2(glval) = VariableAddress[y] : -# 1255| mu1255_3(int) = Store[y] : &:r1255_2, r1255_1 +# 1256| Block 1 # 1256| v1256_1(void) = NoOp : +# 1257| r1257_1(int) = Constant[2] : +# 1257| r1257_2(glval) = VariableAddress[y] : +# 1257| mu1257_3(int) = Store[y] : &:r1257_2, r1257_1 +# 1258| v1258_1(void) = NoOp : #-----| Goto -> Block 3 -# 1257| Block 2 -# 1257| v1257_1(void) = NoOp : -# 1258| r1258_1(int) = Constant[3] : -# 1258| r1258_2(glval) = VariableAddress[y] : -# 1258| mu1258_3(int) = Store[y] : &:r1258_2, r1258_1 -#-----| Goto -> Block 3 - -# 1259| Block 3 +# 1259| Block 2 # 1259| v1259_1(void) = NoOp : -# 1260| r1260_1(glval) = VariableAddress[z] : +# 1260| r1260_1(int) = Constant[3] : # 1260| r1260_2(glval) = VariableAddress[y] : -# 1260| r1260_3(int) = Load[y] : &:r1260_2, ~m? -# 1260| mu1260_4(int) = Store[z] : &:r1260_1, r1260_3 -# 1261| v1261_1(void) = NoOp : -# 1251| v1251_6(void) = ReturnVoid : -# 1251| v1251_7(void) = AliasedUse : ~m? -# 1251| v1251_8(void) = ExitFunction : +# 1260| mu1260_3(int) = Store[y] : &:r1260_2, r1260_1 +#-----| Goto -> Block 3 -# 1263| void switch2Case_default(int) -# 1263| Block 0 -# 1263| v1263_1(void) = EnterFunction : -# 1263| mu1263_2(unknown) = AliasedDefinition : -# 1263| mu1263_3(unknown) = InitializeNonLocal : -# 1263| r1263_4(glval) = VariableAddress[x] : -# 1263| mu1263_5(int) = InitializeParameter[x] : &:r1263_4 -# 1264| r1264_1(glval) = VariableAddress[y] : -# 1264| r1264_2(int) = Constant[0] : -# 1264| mu1264_3(int) = Store[y] : &:r1264_1, r1264_2 -# 1265| r1265_1(glval) = VariableAddress[x] : -# 1265| r1265_2(int) = Load[x] : &:r1265_1, ~m? -# 1265| v1265_3(void) = Switch : r1265_2 +# 1261| Block 3 +# 1261| v1261_1(void) = NoOp : +# 1262| r1262_1(glval) = VariableAddress[z] : +# 1262| r1262_2(glval) = VariableAddress[y] : +# 1262| r1262_3(int) = Load[y] : &:r1262_2, ~m? +# 1262| mu1262_4(int) = Store[z] : &:r1262_1, r1262_3 +# 1263| v1263_1(void) = NoOp : +# 1253| v1253_6(void) = ReturnVoid : +# 1253| v1253_7(void) = AliasedUse : ~m? +# 1253| v1253_8(void) = ExitFunction : + +# 1265| void switch2Case_default(int) +# 1265| Block 0 +# 1265| v1265_1(void) = EnterFunction : +# 1265| mu1265_2(unknown) = AliasedDefinition : +# 1265| mu1265_3(unknown) = InitializeNonLocal : +# 1265| r1265_4(glval) = VariableAddress[x] : +# 1265| mu1265_5(int) = InitializeParameter[x] : &:r1265_4 +# 1266| r1266_1(glval) = VariableAddress[y] : +# 1266| r1266_2(int) = Constant[0] : +# 1266| mu1266_3(int) = Store[y] : &:r1266_1, r1266_2 +# 1267| r1267_1(glval) = VariableAddress[x] : +# 1267| r1267_2(int) = Load[x] : &:r1267_1, ~m? +# 1267| v1267_3(void) = Switch : r1267_2 #-----| Case[1] -> Block 1 #-----| Case[2] -> Block 2 #-----| Default -> Block 3 -# 1266| Block 1 -# 1266| v1266_1(void) = NoOp : -# 1267| r1267_1(int) = Constant[2] : -# 1267| r1267_2(glval) = VariableAddress[y] : -# 1267| mu1267_3(int) = Store[y] : &:r1267_2, r1267_1 +# 1268| Block 1 # 1268| v1268_1(void) = NoOp : -#-----| Goto -> Block 4 - -# 1270| Block 2 +# 1269| r1269_1(int) = Constant[2] : +# 1269| r1269_2(glval) = VariableAddress[y] : +# 1269| mu1269_3(int) = Store[y] : &:r1269_2, r1269_1 # 1270| v1270_1(void) = NoOp : -# 1271| r1271_1(int) = Constant[3] : -# 1271| r1271_2(glval) = VariableAddress[y] : -# 1271| mu1271_3(int) = Store[y] : &:r1271_2, r1271_1 +#-----| Goto -> Block 4 + +# 1272| Block 2 # 1272| v1272_1(void) = NoOp : -#-----| Goto -> Block 4 - -# 1274| Block 3 +# 1273| r1273_1(int) = Constant[3] : +# 1273| r1273_2(glval) = VariableAddress[y] : +# 1273| mu1273_3(int) = Store[y] : &:r1273_2, r1273_1 # 1274| v1274_1(void) = NoOp : -# 1275| r1275_1(int) = Constant[4] : -# 1275| r1275_2(glval) = VariableAddress[y] : -# 1275| mu1275_3(int) = Store[y] : &:r1275_2, r1275_1 #-----| Goto -> Block 4 -# 1276| Block 4 +# 1276| Block 3 # 1276| v1276_1(void) = NoOp : -# 1277| r1277_1(glval) = VariableAddress[z] : +# 1277| r1277_1(int) = Constant[4] : # 1277| r1277_2(glval) = VariableAddress[y] : -# 1277| r1277_3(int) = Load[y] : &:r1277_2, ~m? -# 1277| mu1277_4(int) = Store[z] : &:r1277_1, r1277_3 +# 1277| mu1277_3(int) = Store[y] : &:r1277_2, r1277_1 +#-----| Goto -> Block 4 + +# 1278| Block 4 # 1278| v1278_1(void) = NoOp : -# 1263| v1263_6(void) = ReturnVoid : -# 1263| v1263_7(void) = AliasedUse : ~m? -# 1263| v1263_8(void) = ExitFunction : +# 1279| r1279_1(glval) = VariableAddress[z] : +# 1279| r1279_2(glval) = VariableAddress[y] : +# 1279| r1279_3(int) = Load[y] : &:r1279_2, ~m? +# 1279| mu1279_4(int) = Store[z] : &:r1279_1, r1279_3 +# 1280| v1280_1(void) = NoOp : +# 1265| v1265_6(void) = ReturnVoid : +# 1265| v1265_7(void) = AliasedUse : ~m? +# 1265| v1265_8(void) = ExitFunction : -# 1280| int staticLocalInit(int) -# 1280| Block 0 -# 1280| v1280_1(void) = EnterFunction : -# 1280| mu1280_2(unknown) = AliasedDefinition : -# 1280| mu1280_3(unknown) = InitializeNonLocal : -# 1280| r1280_4(glval) = VariableAddress[x] : -# 1280| mu1280_5(int) = InitializeParameter[x] : &:r1280_4 -# 1283| r1283_1(glval) = VariableAddress[c#init] : -# 1283| r1283_2(bool) = Load[c#init] : &:r1283_1, ~m? -# 1283| v1283_3(void) = ConditionalBranch : r1283_2 -#-----| False -> Block 1 -#-----| True -> Block 2 - -# 1283| Block 1 -# 1283| r1283_4(glval) = VariableAddress[c] : -# 1283| r1283_5(glval) = VariableAddress[x] : -# 1283| r1283_6(int) = Load[x] : &:r1283_5, ~m? -# 1283| mu1283_7(int) = Store[c] : &:r1283_4, r1283_6 -# 1283| r1283_8(bool) = Constant[1] : -# 1283| mu1283_9(bool) = Store[c#init] : &:r1283_1, r1283_8 -#-----| Goto -> Block 2 - -# 1286| Block 2 -# 1286| r1286_1(glval) = VariableAddress[#return] : -# 1286| r1286_2(glval) = VariableAddress[a] : -# 1286| r1286_3(int) = Load[a] : &:r1286_2, ~m? -# 1286| r1286_4(glval) = VariableAddress[b] : -# 1286| r1286_5(int) = Load[b] : &:r1286_4, ~m? -# 1286| r1286_6(int) = Add : r1286_3, r1286_5 -# 1286| r1286_7(glval) = VariableAddress[c] : -# 1286| r1286_8(int) = Load[c] : &:r1286_7, ~m? -# 1286| r1286_9(int) = Add : r1286_6, r1286_8 -# 1286| r1286_10(glval) = VariableAddress[d] : -# 1286| r1286_11(int) = Load[d] : &:r1286_10, ~m? -# 1286| r1286_12(int) = Add : r1286_9, r1286_11 -# 1286| mu1286_13(int) = Store[#return] : &:r1286_1, r1286_12 -# 1280| r1280_6(glval) = VariableAddress[#return] : -# 1280| v1280_7(void) = ReturnValue : &:r1280_6, ~m? -# 1280| v1280_8(void) = AliasedUse : ~m? -# 1280| v1280_9(void) = ExitFunction : - -# 1281| int a -# 1281| Block 0 -# 1281| v1281_1(void) = EnterFunction : -# 1281| mu1281_2(unknown) = AliasedDefinition : -# 1281| r1281_3(glval) = VariableAddress[a] : -# 1281| r1281_4(int) = Constant[0] : -# 1281| mu1281_5(int) = Store[a] : &:r1281_3, r1281_4 -# 1281| v1281_6(void) = ReturnVoid : -# 1281| v1281_7(void) = AliasedUse : ~m? -# 1281| v1281_8(void) = ExitFunction : - -# 1282| int b +# 1282| int staticLocalInit(int) # 1282| Block 0 -# 1282| v1282_1(void) = EnterFunction : -# 1282| mu1282_2(unknown) = AliasedDefinition : -# 1282| r1282_3(glval) = VariableAddress[b] : -# 1282| r1282_4(int) = Constant[4] : -# 1282| mu1282_5(int) = Store[b] : &:r1282_3, r1282_4 -# 1282| v1282_6(void) = ReturnVoid : -# 1282| v1282_7(void) = AliasedUse : ~m? -# 1282| v1282_8(void) = ExitFunction : - -# 1289| void staticLocalWithConstructor(char const*) -# 1289| Block 0 -# 1289| v1289_1(void) = EnterFunction : -# 1289| mu1289_2(unknown) = AliasedDefinition : -# 1289| mu1289_3(unknown) = InitializeNonLocal : -# 1289| r1289_4(glval) = VariableAddress[dynamic] : -# 1289| mu1289_5(char *) = InitializeParameter[dynamic] : &:r1289_4 -# 1289| r1289_6(char *) = Load[dynamic] : &:r1289_4, ~m? -# 1289| mu1289_7(unknown) = InitializeIndirection[dynamic] : &:r1289_6 -# 1290| r1290_1(glval) = VariableAddress[a#init] : -# 1290| r1290_2(bool) = Load[a#init] : &:r1290_1, ~m? -# 1290| v1290_3(void) = ConditionalBranch : r1290_2 +# 1282| v1282_1(void) = EnterFunction : +# 1282| mu1282_2(unknown) = AliasedDefinition : +# 1282| mu1282_3(unknown) = InitializeNonLocal : +# 1282| r1282_4(glval) = VariableAddress[x] : +# 1282| mu1282_5(int) = InitializeParameter[x] : &:r1282_4 +# 1285| r1285_1(glval) = VariableAddress[c#init] : +# 1285| r1285_2(bool) = Load[c#init] : &:r1285_1, ~m? +# 1285| v1285_3(void) = ConditionalBranch : r1285_2 #-----| False -> Block 1 #-----| True -> Block 2 -# 1290| Block 1 -# 1290| r1290_4(glval) = VariableAddress[a] : -#-----| r0_1(glval) = FunctionAddress[String] : -#-----| v0_2(void) = Call[String] : func:r0_1, this:r1290_4 -#-----| mu0_3(unknown) = ^CallSideEffect : ~m? -#-----| mu0_4(String) = ^IndirectMayWriteSideEffect[-1] : &:r1290_4 -# 1290| r1290_5(bool) = Constant[1] : -# 1290| mu1290_6(bool) = Store[a#init] : &:r1290_1, r1290_5 +# 1285| Block 1 +# 1285| r1285_4(glval) = VariableAddress[c] : +# 1285| r1285_5(glval) = VariableAddress[x] : +# 1285| r1285_6(int) = Load[x] : &:r1285_5, ~m? +# 1285| mu1285_7(int) = Store[c] : &:r1285_4, r1285_6 +# 1285| r1285_8(bool) = Constant[1] : +# 1285| mu1285_9(bool) = Store[c#init] : &:r1285_1, r1285_8 #-----| Goto -> Block 2 -# 1291| Block 2 -# 1291| r1291_1(glval) = VariableAddress[b#init] : -# 1291| r1291_2(bool) = Load[b#init] : &:r1291_1, ~m? -# 1291| v1291_3(void) = ConditionalBranch : r1291_2 +# 1288| Block 2 +# 1288| r1288_1(glval) = VariableAddress[#return] : +# 1288| r1288_2(glval) = VariableAddress[a] : +# 1288| r1288_3(int) = Load[a] : &:r1288_2, ~m? +# 1288| r1288_4(glval) = VariableAddress[b] : +# 1288| r1288_5(int) = Load[b] : &:r1288_4, ~m? +# 1288| r1288_6(int) = Add : r1288_3, r1288_5 +# 1288| r1288_7(glval) = VariableAddress[c] : +# 1288| r1288_8(int) = Load[c] : &:r1288_7, ~m? +# 1288| r1288_9(int) = Add : r1288_6, r1288_8 +# 1288| r1288_10(glval) = VariableAddress[d] : +# 1288| r1288_11(int) = Load[d] : &:r1288_10, ~m? +# 1288| r1288_12(int) = Add : r1288_9, r1288_11 +# 1288| mu1288_13(int) = Store[#return] : &:r1288_1, r1288_12 +# 1282| r1282_6(glval) = VariableAddress[#return] : +# 1282| v1282_7(void) = ReturnValue : &:r1282_6, ~m? +# 1282| v1282_8(void) = AliasedUse : ~m? +# 1282| v1282_9(void) = ExitFunction : + +# 1283| int a +# 1283| Block 0 +# 1283| v1283_1(void) = EnterFunction : +# 1283| mu1283_2(unknown) = AliasedDefinition : +# 1283| r1283_3(glval) = VariableAddress[a] : +# 1283| r1283_4(int) = Constant[0] : +# 1283| mu1283_5(int) = Store[a] : &:r1283_3, r1283_4 +# 1283| v1283_6(void) = ReturnVoid : +# 1283| v1283_7(void) = AliasedUse : ~m? +# 1283| v1283_8(void) = ExitFunction : + +# 1284| int b +# 1284| Block 0 +# 1284| v1284_1(void) = EnterFunction : +# 1284| mu1284_2(unknown) = AliasedDefinition : +# 1284| r1284_3(glval) = VariableAddress[b] : +# 1284| r1284_4(int) = Constant[4] : +# 1284| mu1284_5(int) = Store[b] : &:r1284_3, r1284_4 +# 1284| v1284_6(void) = ReturnVoid : +# 1284| v1284_7(void) = AliasedUse : ~m? +# 1284| v1284_8(void) = ExitFunction : + +# 1291| void staticLocalWithConstructor(char const*) +# 1291| Block 0 +# 1291| v1291_1(void) = EnterFunction : +# 1291| mu1291_2(unknown) = AliasedDefinition : +# 1291| mu1291_3(unknown) = InitializeNonLocal : +# 1291| r1291_4(glval) = VariableAddress[dynamic] : +# 1291| mu1291_5(char *) = InitializeParameter[dynamic] : &:r1291_4 +# 1291| r1291_6(char *) = Load[dynamic] : &:r1291_4, ~m? +# 1291| mu1291_7(unknown) = InitializeIndirection[dynamic] : &:r1291_6 +# 1292| r1292_1(glval) = VariableAddress[a#init] : +# 1292| r1292_2(bool) = Load[a#init] : &:r1292_1, ~m? +# 1292| v1292_3(void) = ConditionalBranch : r1292_2 +#-----| False -> Block 1 +#-----| True -> Block 2 + +# 1292| Block 1 +# 1292| r1292_4(glval) = VariableAddress[a] : +#-----| r0_1(glval) = FunctionAddress[String] : +#-----| v0_2(void) = Call[String] : func:r0_1, this:r1292_4 +#-----| mu0_3(unknown) = ^CallSideEffect : ~m? +#-----| mu0_4(String) = ^IndirectMayWriteSideEffect[-1] : &:r1292_4 +# 1292| r1292_5(bool) = Constant[1] : +# 1292| mu1292_6(bool) = Store[a#init] : &:r1292_1, r1292_5 +#-----| Goto -> Block 2 + +# 1293| Block 2 +# 1293| r1293_1(glval) = VariableAddress[b#init] : +# 1293| r1293_2(bool) = Load[b#init] : &:r1293_1, ~m? +# 1293| v1293_3(void) = ConditionalBranch : r1293_2 #-----| False -> Block 3 #-----| True -> Block 4 -# 1291| Block 3 -# 1291| r1291_4(glval) = VariableAddress[b] : -# 1291| r1291_5(glval) = FunctionAddress[String] : -# 1291| r1291_6(glval) = StringConstant["static"] : -# 1291| r1291_7(char *) = Convert : r1291_6 -# 1291| v1291_8(void) = Call[String] : func:r1291_5, this:r1291_4, 0:r1291_7 -# 1291| mu1291_9(unknown) = ^CallSideEffect : ~m? -# 1291| v1291_10(void) = ^BufferReadSideEffect[0] : &:r1291_7, ~m? -# 1291| mu1291_11(String) = ^IndirectMayWriteSideEffect[-1] : &:r1291_4 -# 1291| r1291_12(bool) = Constant[1] : -# 1291| mu1291_13(bool) = Store[b#init] : &:r1291_1, r1291_12 +# 1293| Block 3 +# 1293| r1293_4(glval) = VariableAddress[b] : +# 1293| r1293_5(glval) = FunctionAddress[String] : +# 1293| r1293_6(glval) = StringConstant["static"] : +# 1293| r1293_7(char *) = Convert : r1293_6 +# 1293| v1293_8(void) = Call[String] : func:r1293_5, this:r1293_4, 0:r1293_7 +# 1293| mu1293_9(unknown) = ^CallSideEffect : ~m? +# 1293| v1293_10(void) = ^BufferReadSideEffect[0] : &:r1293_7, ~m? +# 1293| mu1293_11(String) = ^IndirectMayWriteSideEffect[-1] : &:r1293_4 +# 1293| r1293_12(bool) = Constant[1] : +# 1293| mu1293_13(bool) = Store[b#init] : &:r1293_1, r1293_12 #-----| Goto -> Block 4 -# 1292| Block 4 -# 1292| r1292_1(glval) = VariableAddress[c#init] : -# 1292| r1292_2(bool) = Load[c#init] : &:r1292_1, ~m? -# 1292| v1292_3(void) = ConditionalBranch : r1292_2 +# 1294| Block 4 +# 1294| r1294_1(glval) = VariableAddress[c#init] : +# 1294| r1294_2(bool) = Load[c#init] : &:r1294_1, ~m? +# 1294| v1294_3(void) = ConditionalBranch : r1294_2 #-----| False -> Block 5 #-----| True -> Block 6 -# 1292| Block 5 -# 1292| r1292_4(glval) = VariableAddress[c] : -# 1292| r1292_5(glval) = FunctionAddress[String] : -# 1292| r1292_6(glval) = VariableAddress[dynamic] : -# 1292| r1292_7(char *) = Load[dynamic] : &:r1292_6, ~m? -# 1292| v1292_8(void) = Call[String] : func:r1292_5, this:r1292_4, 0:r1292_7 -# 1292| mu1292_9(unknown) = ^CallSideEffect : ~m? -# 1292| v1292_10(void) = ^BufferReadSideEffect[0] : &:r1292_7, ~m? -# 1292| mu1292_11(String) = ^IndirectMayWriteSideEffect[-1] : &:r1292_4 -# 1292| r1292_12(bool) = Constant[1] : -# 1292| mu1292_13(bool) = Store[c#init] : &:r1292_1, r1292_12 +# 1294| Block 5 +# 1294| r1294_4(glval) = VariableAddress[c] : +# 1294| r1294_5(glval) = FunctionAddress[String] : +# 1294| r1294_6(glval) = VariableAddress[dynamic] : +# 1294| r1294_7(char *) = Load[dynamic] : &:r1294_6, ~m? +# 1294| v1294_8(void) = Call[String] : func:r1294_5, this:r1294_4, 0:r1294_7 +# 1294| mu1294_9(unknown) = ^CallSideEffect : ~m? +# 1294| v1294_10(void) = ^BufferReadSideEffect[0] : &:r1294_7, ~m? +# 1294| mu1294_11(String) = ^IndirectMayWriteSideEffect[-1] : &:r1294_4 +# 1294| r1294_12(bool) = Constant[1] : +# 1294| mu1294_13(bool) = Store[c#init] : &:r1294_1, r1294_12 #-----| Goto -> Block 6 -# 1293| Block 6 -# 1293| v1293_1(void) = NoOp : -# 1289| v1289_8(void) = ReturnIndirection[dynamic] : &:r1289_6, ~m? -# 1289| v1289_9(void) = ReturnVoid : -# 1289| v1289_10(void) = AliasedUse : ~m? -# 1289| v1289_11(void) = ExitFunction : +# 1295| Block 6 +# 1295| v1295_1(void) = NoOp : +# 1291| v1291_8(void) = ReturnIndirection[dynamic] : &:r1291_6, ~m? +# 1291| v1291_9(void) = ReturnVoid : +# 1291| v1291_10(void) = AliasedUse : ~m? +# 1291| v1291_11(void) = ExitFunction : -# 1300| void test_strings(char*, char*) -# 1300| Block 0 -# 1300| v1300_1(void) = EnterFunction : -# 1300| mu1300_2(unknown) = AliasedDefinition : -# 1300| mu1300_3(unknown) = InitializeNonLocal : -# 1300| r1300_4(glval) = VariableAddress[s1] : -# 1300| mu1300_5(char *) = InitializeParameter[s1] : &:r1300_4 -# 1300| r1300_6(char *) = Load[s1] : &:r1300_4, ~m? -# 1300| mu1300_7(unknown) = InitializeIndirection[s1] : &:r1300_6 -# 1300| r1300_8(glval) = VariableAddress[s2] : -# 1300| mu1300_9(char *) = InitializeParameter[s2] : &:r1300_8 -# 1300| r1300_10(char *) = Load[s2] : &:r1300_8, ~m? -# 1300| mu1300_11(unknown) = InitializeIndirection[s2] : &:r1300_10 -# 1301| r1301_1(glval) = VariableAddress[buffer] : -# 1301| mu1301_2(char[1024]) = Uninitialized[buffer] : &:r1301_1 -# 1301| r1301_3(int) = Constant[0] : -# 1301| r1301_4(glval) = PointerAdd[1] : r1301_1, r1301_3 -# 1301| r1301_5(char) = Constant[0] : -# 1301| mu1301_6(char) = Store[?] : &:r1301_4, r1301_5 -# 1301| r1301_7(int) = Constant[1] : -# 1301| r1301_8(glval) = PointerAdd[1] : r1301_1, r1301_7 -# 1301| r1301_9(unknown[1023]) = Constant[0] : -# 1301| mu1301_10(unknown[1023]) = Store[?] : &:r1301_8, r1301_9 -# 1303| r1303_1(glval) = FunctionAddress[strcpy] : -# 1303| r1303_2(glval) = VariableAddress[buffer] : -# 1303| r1303_3(char *) = Convert : r1303_2 -# 1303| r1303_4(glval) = VariableAddress[s1] : -# 1303| r1303_5(char *) = Load[s1] : &:r1303_4, ~m? -# 1303| r1303_6(char *) = Convert : r1303_5 -# 1303| r1303_7(char *) = Call[strcpy] : func:r1303_1, 0:r1303_3, 1:r1303_6 -# 1303| v1303_8(void) = ^BufferReadSideEffect[1] : &:r1303_6, ~m? -# 1303| mu1303_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r1303_3 -# 1304| r1304_1(glval) = FunctionAddress[strcat] : -# 1304| r1304_2(glval) = VariableAddress[buffer] : -# 1304| r1304_3(char *) = Convert : r1304_2 -# 1304| r1304_4(glval) = VariableAddress[s2] : -# 1304| r1304_5(char *) = Load[s2] : &:r1304_4, ~m? -# 1304| r1304_6(char *) = Convert : r1304_5 -# 1304| r1304_7(char *) = Call[strcat] : func:r1304_1, 0:r1304_3, 1:r1304_6 -# 1304| v1304_8(void) = ^BufferReadSideEffect[0] : &:r1304_3, ~m? -# 1304| v1304_9(void) = ^BufferReadSideEffect[1] : &:r1304_6, ~m? -# 1304| mu1304_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r1304_3 -# 1305| v1305_1(void) = NoOp : -# 1300| v1300_12(void) = ReturnIndirection[s1] : &:r1300_6, ~m? -# 1300| v1300_13(void) = ReturnIndirection[s2] : &:r1300_10, ~m? -# 1300| v1300_14(void) = ReturnVoid : -# 1300| v1300_15(void) = AliasedUse : ~m? -# 1300| v1300_16(void) = ExitFunction : +# 1302| void test_strings(char*, char*) +# 1302| Block 0 +# 1302| v1302_1(void) = EnterFunction : +# 1302| mu1302_2(unknown) = AliasedDefinition : +# 1302| mu1302_3(unknown) = InitializeNonLocal : +# 1302| r1302_4(glval) = VariableAddress[s1] : +# 1302| mu1302_5(char *) = InitializeParameter[s1] : &:r1302_4 +# 1302| r1302_6(char *) = Load[s1] : &:r1302_4, ~m? +# 1302| mu1302_7(unknown) = InitializeIndirection[s1] : &:r1302_6 +# 1302| r1302_8(glval) = VariableAddress[s2] : +# 1302| mu1302_9(char *) = InitializeParameter[s2] : &:r1302_8 +# 1302| r1302_10(char *) = Load[s2] : &:r1302_8, ~m? +# 1302| mu1302_11(unknown) = InitializeIndirection[s2] : &:r1302_10 +# 1303| r1303_1(glval) = VariableAddress[buffer] : +# 1303| mu1303_2(char[1024]) = Uninitialized[buffer] : &:r1303_1 +# 1303| r1303_3(int) = Constant[0] : +# 1303| r1303_4(glval) = PointerAdd[1] : r1303_1, r1303_3 +# 1303| r1303_5(char) = Constant[0] : +# 1303| mu1303_6(char) = Store[?] : &:r1303_4, r1303_5 +# 1303| r1303_7(int) = Constant[1] : +# 1303| r1303_8(glval) = PointerAdd[1] : r1303_1, r1303_7 +# 1303| r1303_9(unknown[1023]) = Constant[0] : +# 1303| mu1303_10(unknown[1023]) = Store[?] : &:r1303_8, r1303_9 +# 1305| r1305_1(glval) = FunctionAddress[strcpy] : +# 1305| r1305_2(glval) = VariableAddress[buffer] : +# 1305| r1305_3(char *) = Convert : r1305_2 +# 1305| r1305_4(glval) = VariableAddress[s1] : +# 1305| r1305_5(char *) = Load[s1] : &:r1305_4, ~m? +# 1305| r1305_6(char *) = Convert : r1305_5 +# 1305| r1305_7(char *) = Call[strcpy] : func:r1305_1, 0:r1305_3, 1:r1305_6 +# 1305| v1305_8(void) = ^BufferReadSideEffect[1] : &:r1305_6, ~m? +# 1305| mu1305_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r1305_3 +# 1306| r1306_1(glval) = FunctionAddress[strcat] : +# 1306| r1306_2(glval) = VariableAddress[buffer] : +# 1306| r1306_3(char *) = Convert : r1306_2 +# 1306| r1306_4(glval) = VariableAddress[s2] : +# 1306| r1306_5(char *) = Load[s2] : &:r1306_4, ~m? +# 1306| r1306_6(char *) = Convert : r1306_5 +# 1306| r1306_7(char *) = Call[strcat] : func:r1306_1, 0:r1306_3, 1:r1306_6 +# 1306| v1306_8(void) = ^BufferReadSideEffect[0] : &:r1306_3, ~m? +# 1306| v1306_9(void) = ^BufferReadSideEffect[1] : &:r1306_6, ~m? +# 1306| mu1306_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r1306_3 +# 1307| v1307_1(void) = NoOp : +# 1302| v1302_12(void) = ReturnIndirection[s1] : &:r1302_6, ~m? +# 1302| v1302_13(void) = ReturnIndirection[s2] : &:r1302_10, ~m? +# 1302| v1302_14(void) = ReturnVoid : +# 1302| v1302_15(void) = AliasedUse : ~m? +# 1302| v1302_16(void) = ExitFunction : -# 1310| void A::static_member(A*, int) -# 1310| Block 0 -# 1310| v1310_1(void) = EnterFunction : -# 1310| mu1310_2(unknown) = AliasedDefinition : -# 1310| mu1310_3(unknown) = InitializeNonLocal : -# 1310| r1310_4(glval) = VariableAddress[a] : -# 1310| mu1310_5(A *) = InitializeParameter[a] : &:r1310_4 -# 1310| r1310_6(A *) = Load[a] : &:r1310_4, ~m? -# 1310| mu1310_7(unknown) = InitializeIndirection[a] : &:r1310_6 -# 1310| r1310_8(glval) = VariableAddress[x] : -# 1310| mu1310_9(int) = InitializeParameter[x] : &:r1310_8 -# 1311| r1311_1(glval) = VariableAddress[x] : -# 1311| r1311_2(int) = Load[x] : &:r1311_1, ~m? -# 1311| r1311_3(glval) = VariableAddress[a] : -# 1311| r1311_4(A *) = Load[a] : &:r1311_3, ~m? -# 1311| r1311_5(glval) = FieldAddress[member] : r1311_4 -# 1311| mu1311_6(int) = Store[?] : &:r1311_5, r1311_2 -# 1312| v1312_1(void) = NoOp : -# 1310| v1310_10(void) = ReturnIndirection[a] : &:r1310_6, ~m? -# 1310| v1310_11(void) = ReturnVoid : -# 1310| v1310_12(void) = AliasedUse : ~m? -# 1310| v1310_13(void) = ExitFunction : +# 1312| void A::static_member(A*, int) +# 1312| Block 0 +# 1312| v1312_1(void) = EnterFunction : +# 1312| mu1312_2(unknown) = AliasedDefinition : +# 1312| mu1312_3(unknown) = InitializeNonLocal : +# 1312| r1312_4(glval) = VariableAddress[a] : +# 1312| mu1312_5(A *) = InitializeParameter[a] : &:r1312_4 +# 1312| r1312_6(A *) = Load[a] : &:r1312_4, ~m? +# 1312| mu1312_7(unknown) = InitializeIndirection[a] : &:r1312_6 +# 1312| r1312_8(glval) = VariableAddress[x] : +# 1312| mu1312_9(int) = InitializeParameter[x] : &:r1312_8 +# 1313| r1313_1(glval) = VariableAddress[x] : +# 1313| r1313_2(int) = Load[x] : &:r1313_1, ~m? +# 1313| r1313_3(glval) = VariableAddress[a] : +# 1313| r1313_4(A *) = Load[a] : &:r1313_3, ~m? +# 1313| r1313_5(glval) = FieldAddress[member] : r1313_4 +# 1313| mu1313_6(int) = Store[?] : &:r1313_5, r1313_2 +# 1314| v1314_1(void) = NoOp : +# 1312| v1312_10(void) = ReturnIndirection[a] : &:r1312_6, ~m? +# 1312| v1312_11(void) = ReturnVoid : +# 1312| v1312_12(void) = AliasedUse : ~m? +# 1312| v1312_13(void) = ExitFunction : -# 1319| void test_static_member_functions(int, A*) -# 1319| Block 0 -# 1319| v1319_1(void) = EnterFunction : -# 1319| mu1319_2(unknown) = AliasedDefinition : -# 1319| mu1319_3(unknown) = InitializeNonLocal : -# 1319| r1319_4(glval) = VariableAddress[int_arg] : -# 1319| mu1319_5(int) = InitializeParameter[int_arg] : &:r1319_4 -# 1319| r1319_6(glval) = VariableAddress[a_arg] : -# 1319| mu1319_7(A *) = InitializeParameter[a_arg] : &:r1319_6 -# 1319| r1319_8(A *) = Load[a_arg] : &:r1319_6, ~m? -# 1319| mu1319_9(unknown) = InitializeIndirection[a_arg] : &:r1319_8 -# 1320| r1320_1(glval) = VariableAddress[c] : -# 1320| mu1320_2(C) = Uninitialized[c] : &:r1320_1 -# 1320| r1320_3(glval) = FunctionAddress[C] : -# 1320| v1320_4(void) = Call[C] : func:r1320_3, this:r1320_1 -# 1320| mu1320_5(unknown) = ^CallSideEffect : ~m? -# 1320| mu1320_6(C) = ^IndirectMayWriteSideEffect[-1] : &:r1320_1 -# 1321| r1321_1(glval) = VariableAddress[c] : -# 1321| r1321_2(glval) = FunctionAddress[StaticMemberFunction] : -# 1321| r1321_3(int) = Constant[10] : -# 1321| r1321_4(int) = Call[StaticMemberFunction] : func:r1321_2, 0:r1321_3 -# 1321| mu1321_5(unknown) = ^CallSideEffect : ~m? -# 1322| r1322_1(glval) = FunctionAddress[StaticMemberFunction] : -# 1322| r1322_2(int) = Constant[10] : -# 1322| r1322_3(int) = Call[StaticMemberFunction] : func:r1322_1, 0:r1322_2 -# 1322| mu1322_4(unknown) = ^CallSideEffect : ~m? -# 1324| r1324_1(glval) = VariableAddress[a] : -# 1324| mu1324_2(A) = Uninitialized[a] : &:r1324_1 -# 1325| r1325_1(glval) = VariableAddress[a] : -# 1325| r1325_2(glval) = FunctionAddress[static_member] : -# 1325| r1325_3(glval) = VariableAddress[a] : -# 1325| r1325_4(A *) = CopyValue : r1325_3 -# 1325| r1325_5(glval) = VariableAddress[int_arg] : -# 1325| r1325_6(int) = Load[int_arg] : &:r1325_5, ~m? -# 1325| v1325_7(void) = Call[static_member] : func:r1325_2, 0:r1325_4, 1:r1325_6 -# 1325| mu1325_8(unknown) = ^CallSideEffect : ~m? -# 1325| v1325_9(void) = ^BufferReadSideEffect[0] : &:r1325_4, ~m? -# 1325| mu1325_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r1325_4 -# 1326| r1326_1(glval) = FunctionAddress[static_member] : -# 1326| r1326_2(glval) = VariableAddress[a] : -# 1326| r1326_3(A *) = CopyValue : r1326_2 -# 1326| r1326_4(glval) = VariableAddress[int_arg] : -# 1326| r1326_5(int) = Load[int_arg] : &:r1326_4, ~m? -# 1326| v1326_6(void) = Call[static_member] : func:r1326_1, 0:r1326_3, 1:r1326_5 -# 1326| mu1326_7(unknown) = ^CallSideEffect : ~m? -# 1326| v1326_8(void) = ^BufferReadSideEffect[0] : &:r1326_3, ~m? -# 1326| mu1326_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r1326_3 -# 1328| r1328_1(glval) = VariableAddress[a] : -# 1328| r1328_2(A *) = CopyValue : r1328_1 -# 1328| r1328_3(glval) = FunctionAddress[static_member] : -# 1328| r1328_4(glval) = VariableAddress[a_arg] : -# 1328| r1328_5(A *) = Load[a_arg] : &:r1328_4, ~m? -# 1328| r1328_6(glval) = VariableAddress[int_arg] : -# 1328| r1328_7(int) = Load[int_arg] : &:r1328_6, ~m? -# 1328| r1328_8(int) = Constant[2] : -# 1328| r1328_9(int) = Add : r1328_7, r1328_8 -# 1328| v1328_10(void) = Call[static_member] : func:r1328_3, 0:r1328_5, 1:r1328_9 -# 1328| mu1328_11(unknown) = ^CallSideEffect : ~m? -# 1328| v1328_12(void) = ^BufferReadSideEffect[0] : &:r1328_5, ~m? -# 1328| mu1328_13(unknown) = ^BufferMayWriteSideEffect[0] : &:r1328_5 -# 1329| r1329_1(glval) = VariableAddress[a_arg] : -# 1329| r1329_2(A *) = Load[a_arg] : &:r1329_1, ~m? -# 1329| r1329_3(glval) = CopyValue : r1329_2 -# 1329| r1329_4(glval) = FunctionAddress[static_member] : -# 1329| r1329_5(glval) = VariableAddress[a] : -# 1329| r1329_6(A *) = CopyValue : r1329_5 -# 1329| r1329_7(int) = Constant[99] : -# 1329| v1329_8(void) = Call[static_member] : func:r1329_4, 0:r1329_6, 1:r1329_7 -# 1329| mu1329_9(unknown) = ^CallSideEffect : ~m? -# 1329| v1329_10(void) = ^BufferReadSideEffect[0] : &:r1329_6, ~m? -# 1329| mu1329_11(unknown) = ^BufferMayWriteSideEffect[0] : &:r1329_6 -# 1330| r1330_1(glval) = VariableAddress[a_arg] : -# 1330| r1330_2(A *) = Load[a_arg] : &:r1330_1, ~m? +# 1321| void test_static_member_functions(int, A*) +# 1321| Block 0 +# 1321| v1321_1(void) = EnterFunction : +# 1321| mu1321_2(unknown) = AliasedDefinition : +# 1321| mu1321_3(unknown) = InitializeNonLocal : +# 1321| r1321_4(glval) = VariableAddress[int_arg] : +# 1321| mu1321_5(int) = InitializeParameter[int_arg] : &:r1321_4 +# 1321| r1321_6(glval) = VariableAddress[a_arg] : +# 1321| mu1321_7(A *) = InitializeParameter[a_arg] : &:r1321_6 +# 1321| r1321_8(A *) = Load[a_arg] : &:r1321_6, ~m? +# 1321| mu1321_9(unknown) = InitializeIndirection[a_arg] : &:r1321_8 +# 1322| r1322_1(glval) = VariableAddress[c] : +# 1322| mu1322_2(C) = Uninitialized[c] : &:r1322_1 +# 1322| r1322_3(glval) = FunctionAddress[C] : +# 1322| v1322_4(void) = Call[C] : func:r1322_3, this:r1322_1 +# 1322| mu1322_5(unknown) = ^CallSideEffect : ~m? +# 1322| mu1322_6(C) = ^IndirectMayWriteSideEffect[-1] : &:r1322_1 +# 1323| r1323_1(glval) = VariableAddress[c] : +# 1323| r1323_2(glval) = FunctionAddress[StaticMemberFunction] : +# 1323| r1323_3(int) = Constant[10] : +# 1323| r1323_4(int) = Call[StaticMemberFunction] : func:r1323_2, 0:r1323_3 +# 1323| mu1323_5(unknown) = ^CallSideEffect : ~m? +# 1324| r1324_1(glval) = FunctionAddress[StaticMemberFunction] : +# 1324| r1324_2(int) = Constant[10] : +# 1324| r1324_3(int) = Call[StaticMemberFunction] : func:r1324_1, 0:r1324_2 +# 1324| mu1324_4(unknown) = ^CallSideEffect : ~m? +# 1326| r1326_1(glval) = VariableAddress[a] : +# 1326| mu1326_2(A) = Uninitialized[a] : &:r1326_1 +# 1327| r1327_1(glval) = VariableAddress[a] : +# 1327| r1327_2(glval) = FunctionAddress[static_member] : +# 1327| r1327_3(glval) = VariableAddress[a] : +# 1327| r1327_4(A *) = CopyValue : r1327_3 +# 1327| r1327_5(glval) = VariableAddress[int_arg] : +# 1327| r1327_6(int) = Load[int_arg] : &:r1327_5, ~m? +# 1327| v1327_7(void) = Call[static_member] : func:r1327_2, 0:r1327_4, 1:r1327_6 +# 1327| mu1327_8(unknown) = ^CallSideEffect : ~m? +# 1327| v1327_9(void) = ^BufferReadSideEffect[0] : &:r1327_4, ~m? +# 1327| mu1327_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r1327_4 +# 1328| r1328_1(glval) = FunctionAddress[static_member] : +# 1328| r1328_2(glval) = VariableAddress[a] : +# 1328| r1328_3(A *) = CopyValue : r1328_2 +# 1328| r1328_4(glval) = VariableAddress[int_arg] : +# 1328| r1328_5(int) = Load[int_arg] : &:r1328_4, ~m? +# 1328| v1328_6(void) = Call[static_member] : func:r1328_1, 0:r1328_3, 1:r1328_5 +# 1328| mu1328_7(unknown) = ^CallSideEffect : ~m? +# 1328| v1328_8(void) = ^BufferReadSideEffect[0] : &:r1328_3, ~m? +# 1328| mu1328_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r1328_3 +# 1330| r1330_1(glval) = VariableAddress[a] : +# 1330| r1330_2(A *) = CopyValue : r1330_1 # 1330| r1330_3(glval) = FunctionAddress[static_member] : # 1330| r1330_4(glval) = VariableAddress[a_arg] : # 1330| r1330_5(A *) = Load[a_arg] : &:r1330_4, ~m? -# 1330| r1330_6(int) = Constant[-1] : -# 1330| v1330_7(void) = Call[static_member] : func:r1330_3, 0:r1330_5, 1:r1330_6 -# 1330| mu1330_8(unknown) = ^CallSideEffect : ~m? -# 1330| v1330_9(void) = ^BufferReadSideEffect[0] : &:r1330_5, ~m? -# 1330| mu1330_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r1330_5 -# 1332| r1332_1(glval) = VariableAddress[a] : -# 1332| r1332_2(glval) = FunctionAddress[static_member_without_def] : -# 1332| v1332_3(void) = Call[static_member_without_def] : func:r1332_2 -# 1332| mu1332_4(unknown) = ^CallSideEffect : ~m? -# 1333| r1333_1(glval) = FunctionAddress[static_member_without_def] : -# 1333| v1333_2(void) = Call[static_member_without_def] : func:r1333_1 -# 1333| mu1333_3(unknown) = ^CallSideEffect : ~m? -# 1335| r1335_1(glval) = FunctionAddress[getAnInstanceOfA] : -# 1335| r1335_2(A *) = Call[getAnInstanceOfA] : func:r1335_1 +# 1330| r1330_6(glval) = VariableAddress[int_arg] : +# 1330| r1330_7(int) = Load[int_arg] : &:r1330_6, ~m? +# 1330| r1330_8(int) = Constant[2] : +# 1330| r1330_9(int) = Add : r1330_7, r1330_8 +# 1330| v1330_10(void) = Call[static_member] : func:r1330_3, 0:r1330_5, 1:r1330_9 +# 1330| mu1330_11(unknown) = ^CallSideEffect : ~m? +# 1330| v1330_12(void) = ^BufferReadSideEffect[0] : &:r1330_5, ~m? +# 1330| mu1330_13(unknown) = ^BufferMayWriteSideEffect[0] : &:r1330_5 +# 1331| r1331_1(glval) = VariableAddress[a_arg] : +# 1331| r1331_2(A *) = Load[a_arg] : &:r1331_1, ~m? +# 1331| r1331_3(glval) = CopyValue : r1331_2 +# 1331| r1331_4(glval) = FunctionAddress[static_member] : +# 1331| r1331_5(glval) = VariableAddress[a] : +# 1331| r1331_6(A *) = CopyValue : r1331_5 +# 1331| r1331_7(int) = Constant[99] : +# 1331| v1331_8(void) = Call[static_member] : func:r1331_4, 0:r1331_6, 1:r1331_7 +# 1331| mu1331_9(unknown) = ^CallSideEffect : ~m? +# 1331| v1331_10(void) = ^BufferReadSideEffect[0] : &:r1331_6, ~m? +# 1331| mu1331_11(unknown) = ^BufferMayWriteSideEffect[0] : &:r1331_6 +# 1332| r1332_1(glval) = VariableAddress[a_arg] : +# 1332| r1332_2(A *) = Load[a_arg] : &:r1332_1, ~m? +# 1332| r1332_3(glval) = FunctionAddress[static_member] : +# 1332| r1332_4(glval) = VariableAddress[a_arg] : +# 1332| r1332_5(A *) = Load[a_arg] : &:r1332_4, ~m? +# 1332| r1332_6(int) = Constant[-1] : +# 1332| v1332_7(void) = Call[static_member] : func:r1332_3, 0:r1332_5, 1:r1332_6 +# 1332| mu1332_8(unknown) = ^CallSideEffect : ~m? +# 1332| v1332_9(void) = ^BufferReadSideEffect[0] : &:r1332_5, ~m? +# 1332| mu1332_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r1332_5 +# 1334| r1334_1(glval) = VariableAddress[a] : +# 1334| r1334_2(glval) = FunctionAddress[static_member_without_def] : +# 1334| v1334_3(void) = Call[static_member_without_def] : func:r1334_2 +# 1334| mu1334_4(unknown) = ^CallSideEffect : ~m? +# 1335| r1335_1(glval) = FunctionAddress[static_member_without_def] : +# 1335| v1335_2(void) = Call[static_member_without_def] : func:r1335_1 # 1335| mu1335_3(unknown) = ^CallSideEffect : ~m? -# 1335| r1335_4(glval) = FunctionAddress[static_member_without_def] : -# 1335| v1335_5(void) = Call[static_member_without_def] : func:r1335_4 -# 1335| mu1335_6(unknown) = ^CallSideEffect : ~m? -# 1336| v1336_1(void) = NoOp : -# 1336| r1336_2(glval) = VariableAddress[c] : -# 1336| r1336_3(glval) = FunctionAddress[~C] : -# 1336| v1336_4(void) = Call[~C] : func:r1336_3, this:r1336_2 -# 1336| mu1336_5(unknown) = ^CallSideEffect : ~m? -# 1336| v1336_6(void) = ^IndirectReadSideEffect[-1] : &:r1336_2, ~m? -# 1336| mu1336_7(C) = ^IndirectMayWriteSideEffect[-1] : &:r1336_2 -# 1319| v1319_10(void) = ReturnIndirection[a_arg] : &:r1319_8, ~m? -# 1319| v1319_11(void) = ReturnVoid : -# 1319| v1319_12(void) = AliasedUse : ~m? -# 1319| v1319_13(void) = ExitFunction : +# 1337| r1337_1(glval) = FunctionAddress[getAnInstanceOfA] : +# 1337| r1337_2(A *) = Call[getAnInstanceOfA] : func:r1337_1 +# 1337| mu1337_3(unknown) = ^CallSideEffect : ~m? +# 1337| r1337_4(glval) = FunctionAddress[static_member_without_def] : +# 1337| v1337_5(void) = Call[static_member_without_def] : func:r1337_4 +# 1337| mu1337_6(unknown) = ^CallSideEffect : ~m? +# 1338| v1338_1(void) = NoOp : +# 1338| r1338_2(glval) = VariableAddress[c] : +# 1338| r1338_3(glval) = FunctionAddress[~C] : +# 1338| v1338_4(void) = Call[~C] : func:r1338_3, this:r1338_2 +# 1338| mu1338_5(unknown) = ^CallSideEffect : ~m? +# 1338| v1338_6(void) = ^IndirectReadSideEffect[-1] : &:r1338_2, ~m? +# 1338| mu1338_7(C) = ^IndirectMayWriteSideEffect[-1] : &:r1338_2 +# 1321| v1321_10(void) = ReturnIndirection[a_arg] : &:r1321_8, ~m? +# 1321| v1321_11(void) = ReturnVoid : +# 1321| v1321_12(void) = AliasedUse : ~m? +# 1321| v1321_13(void) = ExitFunction : -# 1338| int missingReturnValue(bool, int) -# 1338| Block 0 -# 1338| v1338_1(void) = EnterFunction : -# 1338| mu1338_2(unknown) = AliasedDefinition : -# 1338| mu1338_3(unknown) = InitializeNonLocal : -# 1338| r1338_4(glval) = VariableAddress[b] : -# 1338| mu1338_5(bool) = InitializeParameter[b] : &:r1338_4 -# 1338| r1338_6(glval) = VariableAddress[x] : -# 1338| mu1338_7(int) = InitializeParameter[x] : &:r1338_6 -# 1339| r1339_1(glval) = VariableAddress[b] : -# 1339| r1339_2(bool) = Load[b] : &:r1339_1, ~m? -# 1339| v1339_3(void) = ConditionalBranch : r1339_2 +# 1340| int missingReturnValue(bool, int) +# 1340| Block 0 +# 1340| v1340_1(void) = EnterFunction : +# 1340| mu1340_2(unknown) = AliasedDefinition : +# 1340| mu1340_3(unknown) = InitializeNonLocal : +# 1340| r1340_4(glval) = VariableAddress[b] : +# 1340| mu1340_5(bool) = InitializeParameter[b] : &:r1340_4 +# 1340| r1340_6(glval) = VariableAddress[x] : +# 1340| mu1340_7(int) = InitializeParameter[x] : &:r1340_6 +# 1341| r1341_1(glval) = VariableAddress[b] : +# 1341| r1341_2(bool) = Load[b] : &:r1341_1, ~m? +# 1341| v1341_3(void) = ConditionalBranch : r1341_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 1338| Block 1 -# 1338| r1338_8(glval) = VariableAddress[#return] : -# 1338| v1338_9(void) = ReturnValue : &:r1338_8, ~m? -# 1338| v1338_10(void) = AliasedUse : ~m? -# 1338| v1338_11(void) = ExitFunction : +# 1340| Block 1 +# 1340| r1340_8(glval) = VariableAddress[#return] : +# 1340| v1340_9(void) = ReturnValue : &:r1340_8, ~m? +# 1340| v1340_10(void) = AliasedUse : ~m? +# 1340| v1340_11(void) = ExitFunction : -# 1340| Block 2 -# 1340| r1340_1(glval) = VariableAddress[#return] : -# 1340| r1340_2(glval) = VariableAddress[x] : -# 1340| r1340_3(int) = Load[x] : &:r1340_2, ~m? -# 1340| mu1340_4(int) = Store[#return] : &:r1340_1, r1340_3 -#-----| Goto -> Block 1 - -# 1342| Block 3 +# 1342| Block 2 # 1342| r1342_1(glval) = VariableAddress[#return] : -# 1342| mu1342_2(int) = Uninitialized[#return] : &:r1342_1 +# 1342| r1342_2(glval) = VariableAddress[x] : +# 1342| r1342_3(int) = Load[x] : &:r1342_2, ~m? +# 1342| mu1342_4(int) = Store[#return] : &:r1342_1, r1342_3 #-----| Goto -> Block 1 -# 1344| void returnVoid(int, int) -# 1344| Block 0 -# 1344| v1344_1(void) = EnterFunction : -# 1344| mu1344_2(unknown) = AliasedDefinition : -# 1344| mu1344_3(unknown) = InitializeNonLocal : -# 1344| r1344_4(glval) = VariableAddress[x] : -# 1344| mu1344_5(int) = InitializeParameter[x] : &:r1344_4 -# 1344| r1344_6(glval) = VariableAddress[y] : -# 1344| mu1344_7(int) = InitializeParameter[y] : &:r1344_6 -# 1345| r1345_1(glval) = FunctionAddress[IntegerOps] : -# 1345| r1345_2(glval) = VariableAddress[x] : -# 1345| r1345_3(int) = Load[x] : &:r1345_2, ~m? -# 1345| r1345_4(glval) = VariableAddress[y] : -# 1345| r1345_5(int) = Load[y] : &:r1345_4, ~m? -# 1345| v1345_6(void) = Call[IntegerOps] : func:r1345_1, 0:r1345_3, 1:r1345_5 -# 1345| mu1345_7(unknown) = ^CallSideEffect : ~m? -# 1345| v1345_8(void) = NoOp : -# 1344| v1344_8(void) = ReturnVoid : -# 1344| v1344_9(void) = AliasedUse : ~m? -# 1344| v1344_10(void) = ExitFunction : +# 1344| Block 3 +# 1344| r1344_1(glval) = VariableAddress[#return] : +# 1344| mu1344_2(int) = Uninitialized[#return] : &:r1344_1 +#-----| Goto -> Block 1 -# 1348| void gccBinaryConditional(bool, int, long) -# 1348| Block 0 -# 1348| v1348_1(void) = EnterFunction : -# 1348| mu1348_2(unknown) = AliasedDefinition : -# 1348| mu1348_3(unknown) = InitializeNonLocal : -# 1348| r1348_4(glval) = VariableAddress[b] : -# 1348| mu1348_5(bool) = InitializeParameter[b] : &:r1348_4 -# 1348| r1348_6(glval) = VariableAddress[x] : -# 1348| mu1348_7(int) = InitializeParameter[x] : &:r1348_6 -# 1348| r1348_8(glval) = VariableAddress[y] : -# 1348| mu1348_9(long) = InitializeParameter[y] : &:r1348_8 -# 1349| r1349_1(glval) = VariableAddress[z] : -# 1349| r1349_2(glval) = VariableAddress[x] : -# 1349| r1349_3(int) = Load[x] : &:r1349_2, ~m? -# 1349| mu1349_4(int) = Store[z] : &:r1349_1, r1349_3 -# 1350| r1350_1(glval) = VariableAddress[b] : -# 1350| r1350_2(bool) = Load[b] : &:r1350_1, ~m? -# 1350| v1350_3(void) = ConditionalBranch : r1350_2 +# 1346| void returnVoid(int, int) +# 1346| Block 0 +# 1346| v1346_1(void) = EnterFunction : +# 1346| mu1346_2(unknown) = AliasedDefinition : +# 1346| mu1346_3(unknown) = InitializeNonLocal : +# 1346| r1346_4(glval) = VariableAddress[x] : +# 1346| mu1346_5(int) = InitializeParameter[x] : &:r1346_4 +# 1346| r1346_6(glval) = VariableAddress[y] : +# 1346| mu1346_7(int) = InitializeParameter[y] : &:r1346_6 +# 1347| r1347_1(glval) = FunctionAddress[IntegerOps] : +# 1347| r1347_2(glval) = VariableAddress[x] : +# 1347| r1347_3(int) = Load[x] : &:r1347_2, ~m? +# 1347| r1347_4(glval) = VariableAddress[y] : +# 1347| r1347_5(int) = Load[y] : &:r1347_4, ~m? +# 1347| v1347_6(void) = Call[IntegerOps] : func:r1347_1, 0:r1347_3, 1:r1347_5 +# 1347| mu1347_7(unknown) = ^CallSideEffect : ~m? +# 1347| v1347_8(void) = NoOp : +# 1346| v1346_8(void) = ReturnVoid : +# 1346| v1346_9(void) = AliasedUse : ~m? +# 1346| v1346_10(void) = ExitFunction : + +# 1350| void gccBinaryConditional(bool, int, long) +# 1350| Block 0 +# 1350| v1350_1(void) = EnterFunction : +# 1350| mu1350_2(unknown) = AliasedDefinition : +# 1350| mu1350_3(unknown) = InitializeNonLocal : +# 1350| r1350_4(glval) = VariableAddress[b] : +# 1350| mu1350_5(bool) = InitializeParameter[b] : &:r1350_4 +# 1350| r1350_6(glval) = VariableAddress[x] : +# 1350| mu1350_7(int) = InitializeParameter[x] : &:r1350_6 +# 1350| r1350_8(glval) = VariableAddress[y] : +# 1350| mu1350_9(long) = InitializeParameter[y] : &:r1350_8 +# 1351| r1351_1(glval) = VariableAddress[z] : +# 1351| r1351_2(glval) = VariableAddress[x] : +# 1351| r1351_3(int) = Load[x] : &:r1351_2, ~m? +# 1351| mu1351_4(int) = Store[z] : &:r1351_1, r1351_3 +# 1352| r1352_1(glval) = VariableAddress[b] : +# 1352| r1352_2(bool) = Load[b] : &:r1352_1, ~m? +# 1352| v1352_3(void) = ConditionalBranch : r1352_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 1350| Block 1 -# 1350| r1350_4(glval) = VariableAddress[#temp1350:9] : -# 1350| r1350_5(int) = Load[#temp1350:9] : &:r1350_4, ~m? -# 1350| r1350_6(glval) = VariableAddress[z] : -# 1350| mu1350_7(int) = Store[z] : &:r1350_6, r1350_5 -# 1351| r1351_1(glval) = VariableAddress[b] : -# 1351| r1351_2(bool) = Load[b] : &:r1351_1, ~m? -# 1351| v1351_3(void) = ConditionalBranch : r1351_2 +# 1352| Block 1 +# 1352| r1352_4(glval) = VariableAddress[#temp1352:9] : +# 1352| r1352_5(int) = Load[#temp1352:9] : &:r1352_4, ~m? +# 1352| r1352_6(glval) = VariableAddress[z] : +# 1352| mu1352_7(int) = Store[z] : &:r1352_6, r1352_5 +# 1353| r1353_1(glval) = VariableAddress[b] : +# 1353| r1353_2(bool) = Load[b] : &:r1353_1, ~m? +# 1353| v1353_3(void) = ConditionalBranch : r1353_2 #-----| False -> Block 6 #-----| True -> Block 5 -# 1350| Block 2 -# 1350| r1350_8(glval) = VariableAddress[#temp1350:9] : -# 1350| mu1350_9(int) = Store[#temp1350:9] : &:r1350_8, r1350_2 +# 1352| Block 2 +# 1352| r1352_8(glval) = VariableAddress[#temp1352:9] : +# 1352| mu1352_9(int) = Store[#temp1352:9] : &:r1352_8, r1352_2 #-----| Goto -> Block 1 -# 1350| Block 3 -# 1350| r1350_10(glval) = VariableAddress[x] : -# 1350| r1350_11(int) = Load[x] : &:r1350_10, ~m? -# 1350| r1350_12(glval) = VariableAddress[#temp1350:9] : -# 1350| mu1350_13(int) = Store[#temp1350:9] : &:r1350_12, r1350_11 +# 1352| Block 3 +# 1352| r1352_10(glval) = VariableAddress[x] : +# 1352| r1352_11(int) = Load[x] : &:r1352_10, ~m? +# 1352| r1352_12(glval) = VariableAddress[#temp1352:9] : +# 1352| mu1352_13(int) = Store[#temp1352:9] : &:r1352_12, r1352_11 #-----| Goto -> Block 1 -# 1351| Block 4 -# 1351| r1351_4(glval) = VariableAddress[#temp1351:9] : -# 1351| r1351_5(long) = Load[#temp1351:9] : &:r1351_4, ~m? -# 1351| r1351_6(int) = Convert : r1351_5 -# 1351| r1351_7(glval) = VariableAddress[z] : -# 1351| mu1351_8(int) = Store[z] : &:r1351_7, r1351_6 -# 1352| r1352_1(glval) = VariableAddress[x] : -# 1352| r1352_2(int) = Load[x] : &:r1352_1, ~m? -# 1352| r1352_3(int) = Constant[0] : -# 1352| r1352_4(bool) = CompareNE : r1352_2, r1352_3 -# 1352| v1352_5(void) = ConditionalBranch : r1352_4 +# 1353| Block 4 +# 1353| r1353_4(glval) = VariableAddress[#temp1353:9] : +# 1353| r1353_5(long) = Load[#temp1353:9] : &:r1353_4, ~m? +# 1353| r1353_6(int) = Convert : r1353_5 +# 1353| r1353_7(glval) = VariableAddress[z] : +# 1353| mu1353_8(int) = Store[z] : &:r1353_7, r1353_6 +# 1354| r1354_1(glval) = VariableAddress[x] : +# 1354| r1354_2(int) = Load[x] : &:r1354_1, ~m? +# 1354| r1354_3(int) = Constant[0] : +# 1354| r1354_4(bool) = CompareNE : r1354_2, r1354_3 +# 1354| v1354_5(void) = ConditionalBranch : r1354_4 #-----| False -> Block 9 #-----| True -> Block 8 -# 1351| Block 5 -# 1351| r1351_9(glval) = VariableAddress[#temp1351:9] : -# 1351| mu1351_10(long) = Store[#temp1351:9] : &:r1351_9, r1351_2 +# 1353| Block 5 +# 1353| r1353_9(glval) = VariableAddress[#temp1353:9] : +# 1353| mu1353_10(long) = Store[#temp1353:9] : &:r1353_9, r1353_2 #-----| Goto -> Block 4 -# 1351| Block 6 -# 1351| r1351_11(glval) = VariableAddress[y] : -# 1351| r1351_12(long) = Load[y] : &:r1351_11, ~m? -# 1351| r1351_13(glval) = VariableAddress[#temp1351:9] : -# 1351| mu1351_14(long) = Store[#temp1351:9] : &:r1351_13, r1351_12 +# 1353| Block 6 +# 1353| r1353_11(glval) = VariableAddress[y] : +# 1353| r1353_12(long) = Load[y] : &:r1353_11, ~m? +# 1353| r1353_13(glval) = VariableAddress[#temp1353:9] : +# 1353| mu1353_14(long) = Store[#temp1353:9] : &:r1353_13, r1353_12 #-----| Goto -> Block 4 -# 1352| Block 7 -# 1352| r1352_6(glval) = VariableAddress[#temp1352:9] : -# 1352| r1352_7(int) = Load[#temp1352:9] : &:r1352_6, ~m? -# 1352| r1352_8(glval) = VariableAddress[z] : -# 1352| mu1352_9(int) = Store[z] : &:r1352_8, r1352_7 -# 1353| r1353_1(glval) = VariableAddress[x] : -# 1353| r1353_2(int) = Load[x] : &:r1353_1, ~m? -# 1353| r1353_3(int) = Constant[0] : -# 1353| r1353_4(bool) = CompareNE : r1353_2, r1353_3 -# 1353| v1353_5(void) = ConditionalBranch : r1353_4 +# 1354| Block 7 +# 1354| r1354_6(glval) = VariableAddress[#temp1354:9] : +# 1354| r1354_7(int) = Load[#temp1354:9] : &:r1354_6, ~m? +# 1354| r1354_8(glval) = VariableAddress[z] : +# 1354| mu1354_9(int) = Store[z] : &:r1354_8, r1354_7 +# 1355| r1355_1(glval) = VariableAddress[x] : +# 1355| r1355_2(int) = Load[x] : &:r1355_1, ~m? +# 1355| r1355_3(int) = Constant[0] : +# 1355| r1355_4(bool) = CompareNE : r1355_2, r1355_3 +# 1355| v1355_5(void) = ConditionalBranch : r1355_4 #-----| False -> Block 12 #-----| True -> Block 11 -# 1352| Block 8 -# 1352| r1352_10(glval) = VariableAddress[#temp1352:9] : -# 1352| mu1352_11(int) = Store[#temp1352:9] : &:r1352_10, r1352_2 +# 1354| Block 8 +# 1354| r1354_10(glval) = VariableAddress[#temp1354:9] : +# 1354| mu1354_11(int) = Store[#temp1354:9] : &:r1354_10, r1354_2 #-----| Goto -> Block 7 -# 1352| Block 9 -# 1352| r1352_12(glval) = VariableAddress[x] : -# 1352| r1352_13(int) = Load[x] : &:r1352_12, ~m? -# 1352| r1352_14(glval) = VariableAddress[#temp1352:9] : -# 1352| mu1352_15(int) = Store[#temp1352:9] : &:r1352_14, r1352_13 +# 1354| Block 9 +# 1354| r1354_12(glval) = VariableAddress[x] : +# 1354| r1354_13(int) = Load[x] : &:r1354_12, ~m? +# 1354| r1354_14(glval) = VariableAddress[#temp1354:9] : +# 1354| mu1354_15(int) = Store[#temp1354:9] : &:r1354_14, r1354_13 #-----| Goto -> Block 7 -# 1353| Block 10 -# 1353| r1353_6(glval) = VariableAddress[#temp1353:9] : -# 1353| r1353_7(long) = Load[#temp1353:9] : &:r1353_6, ~m? -# 1353| r1353_8(int) = Convert : r1353_7 -# 1353| r1353_9(glval) = VariableAddress[z] : -# 1353| mu1353_10(int) = Store[z] : &:r1353_9, r1353_8 -# 1354| r1354_1(glval) = VariableAddress[y] : -# 1354| r1354_2(long) = Load[y] : &:r1354_1, ~m? -# 1354| r1354_3(long) = Constant[0] : -# 1354| r1354_4(bool) = CompareNE : r1354_2, r1354_3 -# 1354| v1354_5(void) = ConditionalBranch : r1354_4 -#-----| False -> Block 15 -#-----| True -> Block 14 - -# 1353| Block 11 -# 1353| r1353_11(glval) = VariableAddress[#temp1353:9] : -# 1353| mu1353_12(long) = Store[#temp1353:9] : &:r1353_11, r1353_2 -#-----| Goto -> Block 10 - -# 1353| Block 12 -# 1353| r1353_13(glval) = VariableAddress[y] : -# 1353| r1353_14(long) = Load[y] : &:r1353_13, ~m? -# 1353| r1353_15(glval) = VariableAddress[#temp1353:9] : -# 1353| mu1353_16(long) = Store[#temp1353:9] : &:r1353_15, r1353_14 -#-----| Goto -> Block 10 - -# 1354| Block 13 -# 1354| r1354_6(glval) = VariableAddress[#temp1354:9] : -# 1354| r1354_7(long) = Load[#temp1354:9] : &:r1354_6, ~m? -# 1354| r1354_8(int) = Convert : r1354_7 -# 1354| r1354_9(glval) = VariableAddress[z] : -# 1354| mu1354_10(int) = Store[z] : &:r1354_9, r1354_8 -# 1355| r1355_1(glval) = VariableAddress[y] : -# 1355| r1355_2(long) = Load[y] : &:r1355_1, ~m? -# 1355| r1355_3(long) = Constant[0] : -# 1355| r1355_4(bool) = CompareNE : r1355_2, r1355_3 -# 1355| v1355_5(void) = ConditionalBranch : r1355_4 -#-----| False -> Block 18 -#-----| True -> Block 17 - -# 1354| Block 14 -# 1354| r1354_11(glval) = VariableAddress[#temp1354:9] : -# 1354| mu1354_12(long) = Store[#temp1354:9] : &:r1354_11, r1354_2 -#-----| Goto -> Block 13 - -# 1354| Block 15 -# 1354| r1354_13(glval) = VariableAddress[x] : -# 1354| r1354_14(int) = Load[x] : &:r1354_13, ~m? -# 1354| r1354_15(long) = Convert : r1354_14 -# 1354| r1354_16(glval) = VariableAddress[#temp1354:9] : -# 1354| mu1354_17(long) = Store[#temp1354:9] : &:r1354_16, r1354_15 -#-----| Goto -> Block 13 - -# 1355| Block 16 +# 1355| Block 10 # 1355| r1355_6(glval) = VariableAddress[#temp1355:9] : # 1355| r1355_7(long) = Load[#temp1355:9] : &:r1355_6, ~m? # 1355| r1355_8(int) = Convert : r1355_7 # 1355| r1355_9(glval) = VariableAddress[z] : # 1355| mu1355_10(int) = Store[z] : &:r1355_9, r1355_8 -# 1357| r1357_1(glval) = VariableAddress[x] : -# 1357| r1357_2(int) = Load[x] : &:r1357_1, ~m? -# 1357| r1357_3(int) = Constant[0] : -# 1357| r1357_4(bool) = CompareNE : r1357_2, r1357_3 -# 1357| v1357_5(void) = ConditionalBranch : r1357_4 -#-----| False -> Block 25 -#-----| True -> Block 24 +# 1356| r1356_1(glval) = VariableAddress[y] : +# 1356| r1356_2(long) = Load[y] : &:r1356_1, ~m? +# 1356| r1356_3(long) = Constant[0] : +# 1356| r1356_4(bool) = CompareNE : r1356_2, r1356_3 +# 1356| v1356_5(void) = ConditionalBranch : r1356_4 +#-----| False -> Block 15 +#-----| True -> Block 14 -# 1355| Block 17 +# 1355| Block 11 # 1355| r1355_11(glval) = VariableAddress[#temp1355:9] : # 1355| mu1355_12(long) = Store[#temp1355:9] : &:r1355_11, r1355_2 -#-----| Goto -> Block 16 +#-----| Goto -> Block 10 -# 1355| Block 18 +# 1355| Block 12 # 1355| r1355_13(glval) = VariableAddress[y] : # 1355| r1355_14(long) = Load[y] : &:r1355_13, ~m? # 1355| r1355_15(glval) = VariableAddress[#temp1355:9] : # 1355| mu1355_16(long) = Store[#temp1355:9] : &:r1355_15, r1355_14 +#-----| Goto -> Block 10 + +# 1356| Block 13 +# 1356| r1356_6(glval) = VariableAddress[#temp1356:9] : +# 1356| r1356_7(long) = Load[#temp1356:9] : &:r1356_6, ~m? +# 1356| r1356_8(int) = Convert : r1356_7 +# 1356| r1356_9(glval) = VariableAddress[z] : +# 1356| mu1356_10(int) = Store[z] : &:r1356_9, r1356_8 +# 1357| r1357_1(glval) = VariableAddress[y] : +# 1357| r1357_2(long) = Load[y] : &:r1357_1, ~m? +# 1357| r1357_3(long) = Constant[0] : +# 1357| r1357_4(bool) = CompareNE : r1357_2, r1357_3 +# 1357| v1357_5(void) = ConditionalBranch : r1357_4 +#-----| False -> Block 18 +#-----| True -> Block 17 + +# 1356| Block 14 +# 1356| r1356_11(glval) = VariableAddress[#temp1356:9] : +# 1356| mu1356_12(long) = Store[#temp1356:9] : &:r1356_11, r1356_2 +#-----| Goto -> Block 13 + +# 1356| Block 15 +# 1356| r1356_13(glval) = VariableAddress[x] : +# 1356| r1356_14(int) = Load[x] : &:r1356_13, ~m? +# 1356| r1356_15(long) = Convert : r1356_14 +# 1356| r1356_16(glval) = VariableAddress[#temp1356:9] : +# 1356| mu1356_17(long) = Store[#temp1356:9] : &:r1356_16, r1356_15 +#-----| Goto -> Block 13 + +# 1357| Block 16 +# 1357| r1357_6(glval) = VariableAddress[#temp1357:9] : +# 1357| r1357_7(long) = Load[#temp1357:9] : &:r1357_6, ~m? +# 1357| r1357_8(int) = Convert : r1357_7 +# 1357| r1357_9(glval) = VariableAddress[z] : +# 1357| mu1357_10(int) = Store[z] : &:r1357_9, r1357_8 +# 1359| r1359_1(glval) = VariableAddress[x] : +# 1359| r1359_2(int) = Load[x] : &:r1359_1, ~m? +# 1359| r1359_3(int) = Constant[0] : +# 1359| r1359_4(bool) = CompareNE : r1359_2, r1359_3 +# 1359| v1359_5(void) = ConditionalBranch : r1359_4 +#-----| False -> Block 25 +#-----| True -> Block 24 + +# 1357| Block 17 +# 1357| r1357_11(glval) = VariableAddress[#temp1357:9] : +# 1357| mu1357_12(long) = Store[#temp1357:9] : &:r1357_11, r1357_2 #-----| Goto -> Block 16 -# 1357| Block 19 -# 1357| r1357_6(glval) = VariableAddress[#temp1357:9] : -# 1357| r1357_7(int) = Load[#temp1357:9] : &:r1357_6, ~m? -# 1357| r1357_8(glval) = VariableAddress[z] : -# 1357| mu1357_9(int) = Store[z] : &:r1357_8, r1357_7 -# 1358| v1358_1(void) = NoOp : -# 1348| v1348_10(void) = ReturnVoid : -# 1348| v1348_11(void) = AliasedUse : ~m? -# 1348| v1348_12(void) = ExitFunction : +# 1357| Block 18 +# 1357| r1357_13(glval) = VariableAddress[y] : +# 1357| r1357_14(long) = Load[y] : &:r1357_13, ~m? +# 1357| r1357_15(glval) = VariableAddress[#temp1357:9] : +# 1357| mu1357_16(long) = Store[#temp1357:9] : &:r1357_15, r1357_14 +#-----| Goto -> Block 16 -# 1357| Block 20 -# 1357| r1357_10(glval) = VariableAddress[#temp1357:9] : -# 1357| mu1357_11(int) = Store[#temp1357:9] : &:r1357_10, r1357_16 +# 1359| Block 19 +# 1359| r1359_6(glval) = VariableAddress[#temp1359:9] : +# 1359| r1359_7(int) = Load[#temp1359:9] : &:r1359_6, ~m? +# 1359| r1359_8(glval) = VariableAddress[z] : +# 1359| mu1359_9(int) = Store[z] : &:r1359_8, r1359_7 +# 1360| v1360_1(void) = NoOp : +# 1350| v1350_10(void) = ReturnVoid : +# 1350| v1350_11(void) = AliasedUse : ~m? +# 1350| v1350_12(void) = ExitFunction : + +# 1359| Block 20 +# 1359| r1359_10(glval) = VariableAddress[#temp1359:9] : +# 1359| mu1359_11(int) = Store[#temp1359:9] : &:r1359_10, r1359_16 #-----| Goto -> Block 19 -# 1357| Block 21 -# 1357| r1357_12(glval) = VariableAddress[#temp1357:10] : -# 1357| r1357_13(bool) = Constant[0] : -# 1357| mu1357_14(bool) = Store[#temp1357:10] : &:r1357_12, r1357_13 +# 1359| Block 21 +# 1359| r1359_12(glval) = VariableAddress[#temp1359:10] : +# 1359| r1359_13(bool) = Constant[0] : +# 1359| mu1359_14(bool) = Store[#temp1359:10] : &:r1359_12, r1359_13 #-----| Goto -> Block 22 -# 1357| Block 22 -# 1357| r1357_15(glval) = VariableAddress[#temp1357:10] : -# 1357| r1357_16(bool) = Load[#temp1357:10] : &:r1357_15, ~m? -# 1357| v1357_17(void) = ConditionalBranch : r1357_16 +# 1359| Block 22 +# 1359| r1359_15(glval) = VariableAddress[#temp1359:10] : +# 1359| r1359_16(bool) = Load[#temp1359:10] : &:r1359_15, ~m? +# 1359| v1359_17(void) = ConditionalBranch : r1359_16 #-----| False -> Block 26 #-----| True -> Block 20 -# 1357| Block 23 -# 1357| r1357_18(glval) = VariableAddress[#temp1357:10] : -# 1357| r1357_19(bool) = Constant[1] : -# 1357| mu1357_20(bool) = Store[#temp1357:10] : &:r1357_18, r1357_19 +# 1359| Block 23 +# 1359| r1359_18(glval) = VariableAddress[#temp1359:10] : +# 1359| r1359_19(bool) = Constant[1] : +# 1359| mu1359_20(bool) = Store[#temp1359:10] : &:r1359_18, r1359_19 #-----| Goto -> Block 22 -# 1357| Block 24 -# 1357| r1357_21(glval) = VariableAddress[b] : -# 1357| r1357_22(bool) = Load[b] : &:r1357_21, ~m? -# 1357| v1357_23(void) = ConditionalBranch : r1357_22 +# 1359| Block 24 +# 1359| r1359_21(glval) = VariableAddress[b] : +# 1359| r1359_22(bool) = Load[b] : &:r1359_21, ~m? +# 1359| v1359_23(void) = ConditionalBranch : r1359_22 #-----| False -> Block 25 #-----| True -> Block 23 -# 1357| Block 25 -# 1357| r1357_24(glval) = VariableAddress[y] : -# 1357| r1357_25(long) = Load[y] : &:r1357_24, ~m? -# 1357| r1357_26(long) = Constant[0] : -# 1357| r1357_27(bool) = CompareNE : r1357_25, r1357_26 -# 1357| v1357_28(void) = ConditionalBranch : r1357_27 +# 1359| Block 25 +# 1359| r1359_24(glval) = VariableAddress[y] : +# 1359| r1359_25(long) = Load[y] : &:r1359_24, ~m? +# 1359| r1359_26(long) = Constant[0] : +# 1359| r1359_27(bool) = CompareNE : r1359_25, r1359_26 +# 1359| v1359_28(void) = ConditionalBranch : r1359_27 #-----| False -> Block 21 #-----| True -> Block 23 -# 1357| Block 26 -# 1357| r1357_29(glval) = VariableAddress[x] : -# 1357| r1357_30(int) = Load[x] : &:r1357_29, ~m? -# 1357| r1357_31(glval) = VariableAddress[#temp1357:9] : -# 1357| mu1357_32(int) = Store[#temp1357:9] : &:r1357_31, r1357_30 +# 1359| Block 26 +# 1359| r1359_29(glval) = VariableAddress[x] : +# 1359| r1359_30(int) = Load[x] : &:r1359_29, ~m? +# 1359| r1359_31(glval) = VariableAddress[#temp1359:9] : +# 1359| mu1359_32(int) = Store[#temp1359:9] : &:r1359_31, r1359_30 #-----| Goto -> Block 19 -# 1363| int shortCircuitConditional(int, int) -# 1363| Block 0 -# 1363| v1363_1(void) = EnterFunction : -# 1363| mu1363_2(unknown) = AliasedDefinition : -# 1363| mu1363_3(unknown) = InitializeNonLocal : -# 1363| r1363_4(glval) = VariableAddress[x] : -# 1363| mu1363_5(int) = InitializeParameter[x] : &:r1363_4 -# 1363| r1363_6(glval) = VariableAddress[y] : -# 1363| mu1363_7(int) = InitializeParameter[y] : &:r1363_6 -# 1364| r1364_1(glval) = VariableAddress[#return] : -# 1364| r1364_2(glval) = FunctionAddress[predicateA] : -# 1364| r1364_3(bool) = Call[predicateA] : func:r1364_2 -# 1364| mu1364_4(unknown) = ^CallSideEffect : ~m? -# 1364| v1364_5(void) = ConditionalBranch : r1364_3 +# 1365| int shortCircuitConditional(int, int) +# 1365| Block 0 +# 1365| v1365_1(void) = EnterFunction : +# 1365| mu1365_2(unknown) = AliasedDefinition : +# 1365| mu1365_3(unknown) = InitializeNonLocal : +# 1365| r1365_4(glval) = VariableAddress[x] : +# 1365| mu1365_5(int) = InitializeParameter[x] : &:r1365_4 +# 1365| r1365_6(glval) = VariableAddress[y] : +# 1365| mu1365_7(int) = InitializeParameter[y] : &:r1365_6 +# 1366| r1366_1(glval) = VariableAddress[#return] : +# 1366| r1366_2(glval) = FunctionAddress[predicateA] : +# 1366| r1366_3(bool) = Call[predicateA] : func:r1366_2 +# 1366| mu1366_4(unknown) = ^CallSideEffect : ~m? +# 1366| v1366_5(void) = ConditionalBranch : r1366_3 #-----| False -> Block 4 #-----| True -> Block 2 -# 1364| Block 1 -# 1364| r1364_6(glval) = VariableAddress[#temp1364:12] : -# 1364| r1364_7(int) = Load[#temp1364:12] : &:r1364_6, ~m? -# 1364| mu1364_8(int) = Store[#return] : &:r1364_1, r1364_7 -# 1363| r1363_8(glval) = VariableAddress[#return] : -# 1363| v1363_9(void) = ReturnValue : &:r1363_8, ~m? -# 1363| v1363_10(void) = AliasedUse : ~m? -# 1363| v1363_11(void) = ExitFunction : +# 1366| Block 1 +# 1366| r1366_6(glval) = VariableAddress[#temp1366:12] : +# 1366| r1366_7(int) = Load[#temp1366:12] : &:r1366_6, ~m? +# 1366| mu1366_8(int) = Store[#return] : &:r1366_1, r1366_7 +# 1365| r1365_8(glval) = VariableAddress[#return] : +# 1365| v1365_9(void) = ReturnValue : &:r1365_8, ~m? +# 1365| v1365_10(void) = AliasedUse : ~m? +# 1365| v1365_11(void) = ExitFunction : -# 1364| Block 2 -# 1364| r1364_9(glval) = FunctionAddress[predicateB] : -# 1364| r1364_10(bool) = Call[predicateB] : func:r1364_9 -# 1364| mu1364_11(unknown) = ^CallSideEffect : ~m? -# 1364| v1364_12(void) = ConditionalBranch : r1364_10 +# 1366| Block 2 +# 1366| r1366_9(glval) = FunctionAddress[predicateB] : +# 1366| r1366_10(bool) = Call[predicateB] : func:r1366_9 +# 1366| mu1366_11(unknown) = ^CallSideEffect : ~m? +# 1366| v1366_12(void) = ConditionalBranch : r1366_10 #-----| False -> Block 4 #-----| True -> Block 3 -# 1364| Block 3 -# 1364| r1364_13(glval) = VariableAddress[x] : -# 1364| r1364_14(int) = Load[x] : &:r1364_13, ~m? -# 1364| r1364_15(glval) = VariableAddress[#temp1364:12] : -# 1364| mu1364_16(int) = Store[#temp1364:12] : &:r1364_15, r1364_14 +# 1366| Block 3 +# 1366| r1366_13(glval) = VariableAddress[x] : +# 1366| r1366_14(int) = Load[x] : &:r1366_13, ~m? +# 1366| r1366_15(glval) = VariableAddress[#temp1366:12] : +# 1366| mu1366_16(int) = Store[#temp1366:12] : &:r1366_15, r1366_14 #-----| Goto -> Block 1 -# 1364| Block 4 -# 1364| r1364_17(glval) = VariableAddress[y] : -# 1364| r1364_18(int) = Load[y] : &:r1364_17, ~m? -# 1364| r1364_19(glval) = VariableAddress[#temp1364:12] : -# 1364| mu1364_20(int) = Store[#temp1364:12] : &:r1364_19, r1364_18 +# 1366| Block 4 +# 1366| r1366_17(glval) = VariableAddress[y] : +# 1366| r1366_18(int) = Load[y] : &:r1366_17, ~m? +# 1366| r1366_19(glval) = VariableAddress[#temp1366:12] : +# 1366| mu1366_20(int) = Store[#temp1366:12] : &:r1366_19, r1366_18 #-----| Goto -> Block 1 -# 1369| void f(int*) -# 1369| Block 0 -# 1369| v1369_1(void) = EnterFunction : -# 1369| mu1369_2(unknown) = AliasedDefinition : -# 1369| mu1369_3(unknown) = InitializeNonLocal : -# 1369| r1369_4(glval) = VariableAddress[p] : -# 1369| mu1369_5(int *) = InitializeParameter[p] : &:r1369_4 -# 1369| r1369_6(int *) = Load[p] : &:r1369_4, ~m? -# 1369| mu1369_7(unknown) = InitializeIndirection[p] : &:r1369_6 -# 1371| r1371_1(glval) = FunctionAddress[operator new] : -# 1371| r1371_2(unsigned long) = Constant[4] : -# 1371| r1371_3(glval) = VariableAddress[p] : -# 1371| r1371_4(int *) = Load[p] : &:r1371_3, ~m? -# 1371| r1371_5(void *) = Convert : r1371_4 -# 1371| r1371_6(void *) = Call[operator new] : func:r1371_1, 0:r1371_2, 1:r1371_5 -# 1371| mu1371_7(unknown) = ^CallSideEffect : ~m? -# 1371| mu1371_8(unknown) = ^InitializeDynamicAllocation : &:r1371_6 -# 1371| r1371_9(int *) = Convert : r1371_6 -# 1372| v1372_1(void) = NoOp : -# 1369| v1369_8(void) = ReturnIndirection[p] : &:r1369_6, ~m? -# 1369| v1369_9(void) = ReturnVoid : -# 1369| v1369_10(void) = AliasedUse : ~m? -# 1369| v1369_11(void) = ExitFunction : +# 1371| void f(int*) +# 1371| Block 0 +# 1371| v1371_1(void) = EnterFunction : +# 1371| mu1371_2(unknown) = AliasedDefinition : +# 1371| mu1371_3(unknown) = InitializeNonLocal : +# 1371| r1371_4(glval) = VariableAddress[p] : +# 1371| mu1371_5(int *) = InitializeParameter[p] : &:r1371_4 +# 1371| r1371_6(int *) = Load[p] : &:r1371_4, ~m? +# 1371| mu1371_7(unknown) = InitializeIndirection[p] : &:r1371_6 +# 1373| r1373_1(glval) = FunctionAddress[operator new] : +# 1373| r1373_2(unsigned long) = Constant[4] : +# 1373| r1373_3(glval) = VariableAddress[p] : +# 1373| r1373_4(int *) = Load[p] : &:r1373_3, ~m? +# 1373| r1373_5(void *) = Convert : r1373_4 +# 1373| r1373_6(void *) = Call[operator new] : func:r1373_1, 0:r1373_2, 1:r1373_5 +# 1373| mu1373_7(unknown) = ^CallSideEffect : ~m? +# 1373| mu1373_8(unknown) = ^InitializeDynamicAllocation : &:r1373_6 +# 1373| r1373_9(int *) = Convert : r1373_6 +# 1374| v1374_1(void) = NoOp : +# 1371| v1371_8(void) = ReturnIndirection[p] : &:r1371_6, ~m? +# 1371| v1371_9(void) = ReturnVoid : +# 1371| v1371_10(void) = AliasedUse : ~m? +# 1371| v1371_11(void) = ExitFunction : -# 1375| Point defaultConstruct() -# 1375| Block 0 -# 1375| v1375_1(void) = EnterFunction : -# 1375| mu1375_2(unknown) = AliasedDefinition : -# 1375| mu1375_3(unknown) = InitializeNonLocal : -# 1376| r1376_1(glval) = VariableAddress[#return] : -# 1376| r1376_2(Point) = Constant[0] : -# 1376| mu1376_3(Point) = Store[#return] : &:r1376_1, r1376_2 -# 1375| r1375_4(glval) = VariableAddress[#return] : -# 1375| v1375_5(void) = ReturnValue : &:r1375_4, ~m? -# 1375| v1375_6(void) = AliasedUse : ~m? -# 1375| v1375_7(void) = ExitFunction : +# 1377| Point defaultConstruct() +# 1377| Block 0 +# 1377| v1377_1(void) = EnterFunction : +# 1377| mu1377_2(unknown) = AliasedDefinition : +# 1377| mu1377_3(unknown) = InitializeNonLocal : +# 1378| r1378_1(glval) = VariableAddress[#return] : +# 1378| r1378_2(Point) = Constant[0] : +# 1378| mu1378_3(Point) = Store[#return] : &:r1378_1, r1378_2 +# 1377| r1377_4(glval) = VariableAddress[#return] : +# 1377| v1377_5(void) = ReturnValue : &:r1377_4, ~m? +# 1377| v1377_6(void) = AliasedUse : ~m? +# 1377| v1377_7(void) = ExitFunction : -# 1375| String defaultConstruct() -# 1375| Block 0 -# 1375| v1375_1(void) = EnterFunction : -# 1375| mu1375_2(unknown) = AliasedDefinition : -# 1375| mu1375_3(unknown) = InitializeNonLocal : -# 1376| r1376_1(glval) = VariableAddress[#return] : -# 1376| mu1376_2(String) = Uninitialized[#return] : &:r1376_1 -# 1376| r1376_3(glval) = FunctionAddress[String] : -# 1376| v1376_4(void) = Call[String] : func:r1376_3, this:r1376_1 -# 1376| mu1376_5(unknown) = ^CallSideEffect : ~m? -# 1376| mu1376_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1376_1 -# 1375| r1375_4(glval) = VariableAddress[#return] : -# 1375| v1375_5(void) = ReturnValue : &:r1375_4, ~m? -# 1375| v1375_6(void) = AliasedUse : ~m? -# 1375| v1375_7(void) = ExitFunction : +# 1377| String defaultConstruct() +# 1377| Block 0 +# 1377| v1377_1(void) = EnterFunction : +# 1377| mu1377_2(unknown) = AliasedDefinition : +# 1377| mu1377_3(unknown) = InitializeNonLocal : +# 1378| r1378_1(glval) = VariableAddress[#return] : +# 1378| mu1378_2(String) = Uninitialized[#return] : &:r1378_1 +# 1378| r1378_3(glval) = FunctionAddress[String] : +# 1378| v1378_4(void) = Call[String] : func:r1378_3, this:r1378_1 +# 1378| mu1378_5(unknown) = ^CallSideEffect : ~m? +# 1378| mu1378_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1378_1 +# 1377| r1377_4(glval) = VariableAddress[#return] : +# 1377| v1377_5(void) = ReturnValue : &:r1377_4, ~m? +# 1377| v1377_6(void) = AliasedUse : ~m? +# 1377| v1377_7(void) = ExitFunction : -# 1375| copy_constructor defaultConstruct() -# 1375| Block 0 -# 1375| v1375_1(void) = EnterFunction : -# 1375| mu1375_2(unknown) = AliasedDefinition : -# 1375| mu1375_3(unknown) = InitializeNonLocal : -# 1376| r1376_1(glval) = VariableAddress[#return] : -# 1376| mu1376_2(copy_constructor) = Uninitialized[#return] : &:r1376_1 -# 1376| r1376_3(glval) = FunctionAddress[copy_constructor] : -# 1376| v1376_4(void) = Call[copy_constructor] : func:r1376_3, this:r1376_1 -# 1376| mu1376_5(unknown) = ^CallSideEffect : ~m? -# 1376| mu1376_6(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1376_1 -# 1375| r1375_4(glval) = VariableAddress[#return] : -# 1375| v1375_5(void) = ReturnValue : &:r1375_4, ~m? -# 1375| v1375_6(void) = AliasedUse : ~m? -# 1375| v1375_7(void) = ExitFunction : +# 1377| copy_constructor defaultConstruct() +# 1377| Block 0 +# 1377| v1377_1(void) = EnterFunction : +# 1377| mu1377_2(unknown) = AliasedDefinition : +# 1377| mu1377_3(unknown) = InitializeNonLocal : +# 1378| r1378_1(glval) = VariableAddress[#return] : +# 1378| mu1378_2(copy_constructor) = Uninitialized[#return] : &:r1378_1 +# 1378| r1378_3(glval) = FunctionAddress[copy_constructor] : +# 1378| v1378_4(void) = Call[copy_constructor] : func:r1378_3, this:r1378_1 +# 1378| mu1378_5(unknown) = ^CallSideEffect : ~m? +# 1378| mu1378_6(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1378_1 +# 1377| r1377_4(glval) = VariableAddress[#return] : +# 1377| v1377_5(void) = ReturnValue : &:r1377_4, ~m? +# 1377| v1377_6(void) = AliasedUse : ~m? +# 1377| v1377_7(void) = ExitFunction : -# 1375| destructor_only defaultConstruct() -# 1375| Block 0 -# 1375| v1375_1(void) = EnterFunction : -# 1375| mu1375_2(unknown) = AliasedDefinition : -# 1375| mu1375_3(unknown) = InitializeNonLocal : -# 1376| r1376_1(glval) = VariableAddress[#return] : -# 1376| r1376_2(destructor_only) = Constant[0] : -# 1376| mu1376_3(destructor_only) = Store[#return] : &:r1376_1, r1376_2 -# 1375| r1375_4(glval) = VariableAddress[#return] : -# 1375| v1375_5(void) = ReturnValue : &:r1375_4, ~m? -# 1375| v1375_6(void) = AliasedUse : ~m? -# 1375| v1375_7(void) = ExitFunction : +# 1377| destructor_only defaultConstruct() +# 1377| Block 0 +# 1377| v1377_1(void) = EnterFunction : +# 1377| mu1377_2(unknown) = AliasedDefinition : +# 1377| mu1377_3(unknown) = InitializeNonLocal : +# 1378| r1378_1(glval) = VariableAddress[#return] : +# 1378| r1378_2(destructor_only) = Constant[0] : +# 1378| mu1378_3(destructor_only) = Store[#return] : &:r1378_1, r1378_2 +# 1377| r1377_4(glval) = VariableAddress[#return] : +# 1377| v1377_5(void) = ReturnValue : &:r1377_4, ~m? +# 1377| v1377_6(void) = AliasedUse : ~m? +# 1377| v1377_7(void) = ExitFunction : -# 1414| void temporary_string() -# 1414| Block 0 -# 1414| v1414_1(void) = EnterFunction : -# 1414| mu1414_2(unknown) = AliasedDefinition : -# 1414| mu1414_3(unknown) = InitializeNonLocal : -# 1415| r1415_1(glval) = VariableAddress[s] : -# 1415| r1415_2(glval) = FunctionAddress[returnValue] : -# 1415| r1415_3(String) = Call[returnValue] : func:r1415_2 -# 1415| mu1415_4(unknown) = ^CallSideEffect : ~m? -# 1415| mu1415_5(String) = Store[s] : &:r1415_1, r1415_3 -# 1416| r1416_1(glval) = VariableAddress[rs] : -# 1416| r1416_2(glval) = VariableAddress[#temp1416:24] : -# 1416| r1416_3(glval) = FunctionAddress[returnValue] : -# 1416| r1416_4(String) = Call[returnValue] : func:r1416_3 -# 1416| mu1416_5(unknown) = ^CallSideEffect : ~m? -# 1416| mu1416_6(String) = Store[#temp1416:24] : &:r1416_2, r1416_4 -# 1416| r1416_7(glval) = Convert : r1416_2 -# 1416| r1416_8(String &) = CopyValue : r1416_7 -# 1416| mu1416_9(String &) = Store[rs] : &:r1416_1, r1416_8 -# 1418| r1418_1(glval) = FunctionAddress[acceptRef] : -# 1418| r1418_2(glval) = VariableAddress[s] : -# 1418| r1418_3(glval) = Convert : r1418_2 -# 1418| r1418_4(String &) = CopyValue : r1418_3 -# 1418| v1418_5(void) = Call[acceptRef] : func:r1418_1, 0:r1418_4 -# 1418| mu1418_6(unknown) = ^CallSideEffect : ~m? -# 1418| v1418_7(void) = ^BufferReadSideEffect[0] : &:r1418_4, ~m? -# 1419| r1419_1(glval) = FunctionAddress[acceptRef] : -# 1419| r1419_2(glval) = VariableAddress[#temp1419:23] : -# 1419| mu1419_3(String) = Uninitialized[#temp1419:23] : &:r1419_2 -# 1419| r1419_4(glval) = FunctionAddress[String] : -# 1419| r1419_5(glval) = StringConstant["foo"] : -# 1419| r1419_6(char *) = Convert : r1419_5 -# 1419| v1419_7(void) = Call[String] : func:r1419_4, this:r1419_2, 0:r1419_6 -# 1419| mu1419_8(unknown) = ^CallSideEffect : ~m? -# 1419| v1419_9(void) = ^BufferReadSideEffect[0] : &:r1419_6, ~m? -# 1419| mu1419_10(String) = ^IndirectMayWriteSideEffect[-1] : &:r1419_2 -# 1419| r1419_11(String &) = CopyValue : r1419_2 -# 1419| v1419_12(void) = Call[acceptRef] : func:r1419_1, 0:r1419_11 -# 1419| mu1419_13(unknown) = ^CallSideEffect : ~m? -# 1419| v1419_14(void) = ^BufferReadSideEffect[0] : &:r1419_11, ~m? -# 1419| r1419_15(glval) = CopyValue : r1419_2 -# 1419| r1419_16(glval) = FunctionAddress[~String] : -# 1419| v1419_17(void) = Call[~String] : func:r1419_16, this:r1419_15 -# 1419| mu1419_18(unknown) = ^CallSideEffect : ~m? -# 1419| v1419_19(void) = ^IndirectReadSideEffect[-1] : &:r1419_15, ~m? -# 1419| mu1419_20(String) = ^IndirectMayWriteSideEffect[-1] : &:r1419_15 -# 1420| r1420_1(glval) = FunctionAddress[acceptValue] : -# 1420| r1420_2(glval) = VariableAddress[#temp1420:17] : -# 1420| mu1420_3(String) = Uninitialized[#temp1420:17] : &:r1420_2 -# 1420| r1420_4(glval) = FunctionAddress[String] : -# 1420| r1420_5(glval) = VariableAddress[s] : -# 1420| r1420_6(glval) = Convert : r1420_5 -# 1420| r1420_7(String &) = CopyValue : r1420_6 -# 1420| v1420_8(void) = Call[String] : func:r1420_4, this:r1420_2, 0:r1420_7 -# 1420| mu1420_9(unknown) = ^CallSideEffect : ~m? -# 1420| v1420_10(void) = ^BufferReadSideEffect[0] : &:r1420_7, ~m? -# 1420| mu1420_11(String) = ^IndirectMayWriteSideEffect[-1] : &:r1420_2 -# 1420| r1420_12(String) = Load[#temp1420:17] : &:r1420_2, ~m? -# 1420| v1420_13(void) = Call[acceptValue] : func:r1420_1, 0:r1420_12 -# 1420| mu1420_14(unknown) = ^CallSideEffect : ~m? -# 1420| r1420_15(glval) = CopyValue : r1420_2 -# 1420| r1420_16(glval) = FunctionAddress[~String] : -# 1420| v1420_17(void) = Call[~String] : func:r1420_16, this:r1420_15 -# 1420| mu1420_18(unknown) = ^CallSideEffect : ~m? -# 1420| v1420_19(void) = ^IndirectReadSideEffect[-1] : &:r1420_15, ~m? -# 1420| mu1420_20(String) = ^IndirectMayWriteSideEffect[-1] : &:r1420_15 -# 1421| r1421_1(glval) = FunctionAddress[acceptValue] : -# 1421| r1421_2(glval) = VariableAddress[#temp1421:25] : -# 1421| mu1421_3(String) = Uninitialized[#temp1421:25] : &:r1421_2 +# 1416| void temporary_string() +# 1416| Block 0 +# 1416| v1416_1(void) = EnterFunction : +# 1416| mu1416_2(unknown) = AliasedDefinition : +# 1416| mu1416_3(unknown) = InitializeNonLocal : +# 1417| r1417_1(glval) = VariableAddress[s] : +# 1417| r1417_2(glval) = FunctionAddress[returnValue] : +# 1417| r1417_3(String) = Call[returnValue] : func:r1417_2 +# 1417| mu1417_4(unknown) = ^CallSideEffect : ~m? +# 1417| mu1417_5(String) = Store[s] : &:r1417_1, r1417_3 +# 1418| r1418_1(glval) = VariableAddress[rs] : +# 1418| r1418_2(glval) = VariableAddress[#temp1418:24] : +# 1418| r1418_3(glval) = FunctionAddress[returnValue] : +# 1418| r1418_4(String) = Call[returnValue] : func:r1418_3 +# 1418| mu1418_5(unknown) = ^CallSideEffect : ~m? +# 1418| mu1418_6(String) = Store[#temp1418:24] : &:r1418_2, r1418_4 +# 1418| r1418_7(glval) = Convert : r1418_2 +# 1418| r1418_8(String &) = CopyValue : r1418_7 +# 1418| mu1418_9(String &) = Store[rs] : &:r1418_1, r1418_8 +# 1420| r1420_1(glval) = FunctionAddress[acceptRef] : +# 1420| r1420_2(glval) = VariableAddress[s] : +# 1420| r1420_3(glval) = Convert : r1420_2 +# 1420| r1420_4(String &) = CopyValue : r1420_3 +# 1420| v1420_5(void) = Call[acceptRef] : func:r1420_1, 0:r1420_4 +# 1420| mu1420_6(unknown) = ^CallSideEffect : ~m? +# 1420| v1420_7(void) = ^BufferReadSideEffect[0] : &:r1420_4, ~m? +# 1421| r1421_1(glval) = FunctionAddress[acceptRef] : +# 1421| r1421_2(glval) = VariableAddress[#temp1421:23] : +# 1421| mu1421_3(String) = Uninitialized[#temp1421:23] : &:r1421_2 # 1421| r1421_4(glval) = FunctionAddress[String] : # 1421| r1421_5(glval) = StringConstant["foo"] : # 1421| r1421_6(char *) = Convert : r1421_5 @@ -10717,1063 +10677,1083 @@ ir.cpp: # 1421| mu1421_8(unknown) = ^CallSideEffect : ~m? # 1421| v1421_9(void) = ^BufferReadSideEffect[0] : &:r1421_6, ~m? # 1421| mu1421_10(String) = ^IndirectMayWriteSideEffect[-1] : &:r1421_2 -# 1421| r1421_11(String) = Load[#temp1421:25] : &:r1421_2, ~m? -# 1421| v1421_12(void) = Call[acceptValue] : func:r1421_1, 0:r1421_11 +# 1421| r1421_11(String &) = CopyValue : r1421_2 +# 1421| v1421_12(void) = Call[acceptRef] : func:r1421_1, 0:r1421_11 # 1421| mu1421_13(unknown) = ^CallSideEffect : ~m? -# 1421| r1421_14(glval) = CopyValue : r1421_2 -# 1421| r1421_15(glval) = FunctionAddress[~String] : -# 1421| v1421_16(void) = Call[~String] : func:r1421_15, this:r1421_14 -# 1421| mu1421_17(unknown) = ^CallSideEffect : ~m? -# 1421| v1421_18(void) = ^IndirectReadSideEffect[-1] : &:r1421_14, ~m? -# 1421| mu1421_19(String) = ^IndirectMayWriteSideEffect[-1] : &:r1421_14 -# 1422| r1422_1(glval) = VariableAddress[#temp1422:5] : -# 1422| mu1422_2(String) = Uninitialized[#temp1422:5] : &:r1422_1 -# 1422| r1422_3(glval) = FunctionAddress[String] : -# 1422| v1422_4(void) = Call[String] : func:r1422_3, this:r1422_1 -# 1422| mu1422_5(unknown) = ^CallSideEffect : ~m? -# 1422| mu1422_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1422_1 -# 1422| r1422_7(glval) = Convert : r1422_1 -# 1422| r1422_8(glval) = FunctionAddress[c_str] : -# 1422| r1422_9(char *) = Call[c_str] : func:r1422_8, this:r1422_7 -# 1422| mu1422_10(unknown) = ^CallSideEffect : ~m? -# 1422| v1422_11(void) = ^IndirectReadSideEffect[-1] : &:r1422_7, ~m? -# 1422| r1422_12(glval) = CopyValue : r1422_1 -# 1422| r1422_13(glval) = FunctionAddress[~String] : -# 1422| v1422_14(void) = Call[~String] : func:r1422_13, this:r1422_12 -# 1422| mu1422_15(unknown) = ^CallSideEffect : ~m? -# 1422| v1422_16(void) = ^IndirectReadSideEffect[-1] : &:r1422_12, ~m? -# 1422| mu1422_17(String) = ^IndirectMayWriteSideEffect[-1] : &:r1422_12 -# 1423| r1423_1(glval) = VariableAddress[#temp1423:5] : -# 1423| r1423_2(glval) = FunctionAddress[returnValue] : -# 1423| r1423_3(String) = Call[returnValue] : func:r1423_2 -# 1423| mu1423_4(unknown) = ^CallSideEffect : ~m? -# 1423| mu1423_5(String) = Store[#temp1423:5] : &:r1423_1, r1423_3 -# 1423| r1423_6(glval) = Convert : r1423_1 -# 1423| r1423_7(glval) = FunctionAddress[c_str] : -# 1423| r1423_8(char *) = Call[c_str] : func:r1423_7, this:r1423_6 -# 1423| mu1423_9(unknown) = ^CallSideEffect : ~m? -# 1423| v1423_10(void) = ^IndirectReadSideEffect[-1] : &:r1423_6, ~m? -# 1423| r1423_11(glval) = CopyValue : r1423_1 -# 1423| r1423_12(glval) = FunctionAddress[~String] : -# 1423| v1423_13(void) = Call[~String] : func:r1423_12, this:r1423_11 -# 1423| mu1423_14(unknown) = ^CallSideEffect : ~m? -# 1423| v1423_15(void) = ^IndirectReadSideEffect[-1] : &:r1423_11, ~m? -# 1423| mu1423_16(String) = ^IndirectMayWriteSideEffect[-1] : &:r1423_11 +# 1421| v1421_14(void) = ^BufferReadSideEffect[0] : &:r1421_11, ~m? +# 1421| r1421_15(glval) = CopyValue : r1421_2 +# 1421| r1421_16(glval) = FunctionAddress[~String] : +# 1421| v1421_17(void) = Call[~String] : func:r1421_16, this:r1421_15 +# 1421| mu1421_18(unknown) = ^CallSideEffect : ~m? +# 1421| v1421_19(void) = ^IndirectReadSideEffect[-1] : &:r1421_15, ~m? +# 1421| mu1421_20(String) = ^IndirectMayWriteSideEffect[-1] : &:r1421_15 +# 1422| r1422_1(glval) = FunctionAddress[acceptValue] : +# 1422| r1422_2(glval) = VariableAddress[#temp1422:17] : +# 1422| mu1422_3(String) = Uninitialized[#temp1422:17] : &:r1422_2 +# 1422| r1422_4(glval) = FunctionAddress[String] : +# 1422| r1422_5(glval) = VariableAddress[s] : +# 1422| r1422_6(glval) = Convert : r1422_5 +# 1422| r1422_7(String &) = CopyValue : r1422_6 +# 1422| v1422_8(void) = Call[String] : func:r1422_4, this:r1422_2, 0:r1422_7 +# 1422| mu1422_9(unknown) = ^CallSideEffect : ~m? +# 1422| v1422_10(void) = ^BufferReadSideEffect[0] : &:r1422_7, ~m? +# 1422| mu1422_11(String) = ^IndirectMayWriteSideEffect[-1] : &:r1422_2 +# 1422| r1422_12(String) = Load[#temp1422:17] : &:r1422_2, ~m? +# 1422| v1422_13(void) = Call[acceptValue] : func:r1422_1, 0:r1422_12 +# 1422| mu1422_14(unknown) = ^CallSideEffect : ~m? +# 1422| r1422_15(glval) = CopyValue : r1422_2 +# 1422| r1422_16(glval) = FunctionAddress[~String] : +# 1422| v1422_17(void) = Call[~String] : func:r1422_16, this:r1422_15 +# 1422| mu1422_18(unknown) = ^CallSideEffect : ~m? +# 1422| v1422_19(void) = ^IndirectReadSideEffect[-1] : &:r1422_15, ~m? +# 1422| mu1422_20(String) = ^IndirectMayWriteSideEffect[-1] : &:r1422_15 +# 1423| r1423_1(glval) = FunctionAddress[acceptValue] : +# 1423| r1423_2(glval) = VariableAddress[#temp1423:25] : +# 1423| mu1423_3(String) = Uninitialized[#temp1423:25] : &:r1423_2 +# 1423| r1423_4(glval) = FunctionAddress[String] : +# 1423| r1423_5(glval) = StringConstant["foo"] : +# 1423| r1423_6(char *) = Convert : r1423_5 +# 1423| v1423_7(void) = Call[String] : func:r1423_4, this:r1423_2, 0:r1423_6 +# 1423| mu1423_8(unknown) = ^CallSideEffect : ~m? +# 1423| v1423_9(void) = ^BufferReadSideEffect[0] : &:r1423_6, ~m? +# 1423| mu1423_10(String) = ^IndirectMayWriteSideEffect[-1] : &:r1423_2 +# 1423| r1423_11(String) = Load[#temp1423:25] : &:r1423_2, ~m? +# 1423| v1423_12(void) = Call[acceptValue] : func:r1423_1, 0:r1423_11 +# 1423| mu1423_13(unknown) = ^CallSideEffect : ~m? +# 1423| r1423_14(glval) = CopyValue : r1423_2 +# 1423| r1423_15(glval) = FunctionAddress[~String] : +# 1423| v1423_16(void) = Call[~String] : func:r1423_15, this:r1423_14 +# 1423| mu1423_17(unknown) = ^CallSideEffect : ~m? +# 1423| v1423_18(void) = ^IndirectReadSideEffect[-1] : &:r1423_14, ~m? +# 1423| mu1423_19(String) = ^IndirectMayWriteSideEffect[-1] : &:r1423_14 +# 1424| r1424_1(glval) = VariableAddress[#temp1424:5] : +# 1424| mu1424_2(String) = Uninitialized[#temp1424:5] : &:r1424_1 +# 1424| r1424_3(glval) = FunctionAddress[String] : +# 1424| v1424_4(void) = Call[String] : func:r1424_3, this:r1424_1 +# 1424| mu1424_5(unknown) = ^CallSideEffect : ~m? +# 1424| mu1424_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r1424_1 +# 1424| r1424_7(glval) = Convert : r1424_1 +# 1424| r1424_8(glval) = FunctionAddress[c_str] : +# 1424| r1424_9(char *) = Call[c_str] : func:r1424_8, this:r1424_7 +# 1424| mu1424_10(unknown) = ^CallSideEffect : ~m? +# 1424| v1424_11(void) = ^IndirectReadSideEffect[-1] : &:r1424_7, ~m? +# 1424| r1424_12(glval) = CopyValue : r1424_1 +# 1424| r1424_13(glval) = FunctionAddress[~String] : +# 1424| v1424_14(void) = Call[~String] : func:r1424_13, this:r1424_12 +# 1424| mu1424_15(unknown) = ^CallSideEffect : ~m? +# 1424| v1424_16(void) = ^IndirectReadSideEffect[-1] : &:r1424_12, ~m? +# 1424| mu1424_17(String) = ^IndirectMayWriteSideEffect[-1] : &:r1424_12 # 1425| r1425_1(glval) = VariableAddress[#temp1425:5] : -# 1425| r1425_2(glval) = FunctionAddress[defaultConstruct] : -# 1425| r1425_3(String) = Call[defaultConstruct] : func:r1425_2 +# 1425| r1425_2(glval) = FunctionAddress[returnValue] : +# 1425| r1425_3(String) = Call[returnValue] : func:r1425_2 # 1425| mu1425_4(unknown) = ^CallSideEffect : ~m? # 1425| mu1425_5(String) = Store[#temp1425:5] : &:r1425_1, r1425_3 -# 1425| r1425_6(glval) = CopyValue : r1425_1 -# 1425| r1425_7(glval) = FunctionAddress[~String] : -# 1425| v1425_8(void) = Call[~String] : func:r1425_7, this:r1425_6 +# 1425| r1425_6(glval) = Convert : r1425_1 +# 1425| r1425_7(glval) = FunctionAddress[c_str] : +# 1425| r1425_8(char *) = Call[c_str] : func:r1425_7, this:r1425_6 # 1425| mu1425_9(unknown) = ^CallSideEffect : ~m? # 1425| v1425_10(void) = ^IndirectReadSideEffect[-1] : &:r1425_6, ~m? -# 1425| mu1425_11(String) = ^IndirectMayWriteSideEffect[-1] : &:r1425_6 -# 1426| v1426_1(void) = NoOp : -# 1426| r1426_2(glval) = CopyValue : r1416_2 -# 1426| r1426_3(glval) = FunctionAddress[~String] : -# 1426| v1426_4(void) = Call[~String] : func:r1426_3, this:r1426_2 -# 1426| mu1426_5(unknown) = ^CallSideEffect : ~m? -# 1426| v1426_6(void) = ^IndirectReadSideEffect[-1] : &:r1426_2, ~m? -# 1426| mu1426_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r1426_2 -# 1426| r1426_8(glval) = VariableAddress[s] : -# 1426| r1426_9(glval) = FunctionAddress[~String] : -# 1426| v1426_10(void) = Call[~String] : func:r1426_9, this:r1426_8 -# 1426| mu1426_11(unknown) = ^CallSideEffect : ~m? -# 1426| v1426_12(void) = ^IndirectReadSideEffect[-1] : &:r1426_8, ~m? -# 1426| mu1426_13(String) = ^IndirectMayWriteSideEffect[-1] : &:r1426_8 -# 1414| v1414_4(void) = ReturnVoid : -# 1414| v1414_5(void) = AliasedUse : ~m? -# 1414| v1414_6(void) = ExitFunction : +# 1425| r1425_11(glval) = CopyValue : r1425_1 +# 1425| r1425_12(glval) = FunctionAddress[~String] : +# 1425| v1425_13(void) = Call[~String] : func:r1425_12, this:r1425_11 +# 1425| mu1425_14(unknown) = ^CallSideEffect : ~m? +# 1425| v1425_15(void) = ^IndirectReadSideEffect[-1] : &:r1425_11, ~m? +# 1425| mu1425_16(String) = ^IndirectMayWriteSideEffect[-1] : &:r1425_11 +# 1427| r1427_1(glval) = VariableAddress[#temp1427:5] : +# 1427| r1427_2(glval) = FunctionAddress[defaultConstruct] : +# 1427| r1427_3(String) = Call[defaultConstruct] : func:r1427_2 +# 1427| mu1427_4(unknown) = ^CallSideEffect : ~m? +# 1427| mu1427_5(String) = Store[#temp1427:5] : &:r1427_1, r1427_3 +# 1427| r1427_6(glval) = CopyValue : r1427_1 +# 1427| r1427_7(glval) = FunctionAddress[~String] : +# 1427| v1427_8(void) = Call[~String] : func:r1427_7, this:r1427_6 +# 1427| mu1427_9(unknown) = ^CallSideEffect : ~m? +# 1427| v1427_10(void) = ^IndirectReadSideEffect[-1] : &:r1427_6, ~m? +# 1427| mu1427_11(String) = ^IndirectMayWriteSideEffect[-1] : &:r1427_6 +# 1428| v1428_1(void) = NoOp : +# 1428| r1428_2(glval) = CopyValue : r1418_2 +# 1428| r1428_3(glval) = FunctionAddress[~String] : +# 1428| v1428_4(void) = Call[~String] : func:r1428_3, this:r1428_2 +# 1428| mu1428_5(unknown) = ^CallSideEffect : ~m? +# 1428| v1428_6(void) = ^IndirectReadSideEffect[-1] : &:r1428_2, ~m? +# 1428| mu1428_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r1428_2 +# 1428| r1428_8(glval) = VariableAddress[s] : +# 1428| r1428_9(glval) = FunctionAddress[~String] : +# 1428| v1428_10(void) = Call[~String] : func:r1428_9, this:r1428_8 +# 1428| mu1428_11(unknown) = ^CallSideEffect : ~m? +# 1428| v1428_12(void) = ^IndirectReadSideEffect[-1] : &:r1428_8, ~m? +# 1428| mu1428_13(String) = ^IndirectMayWriteSideEffect[-1] : &:r1428_8 +# 1416| v1416_4(void) = ReturnVoid : +# 1416| v1416_5(void) = AliasedUse : ~m? +# 1416| v1416_6(void) = ExitFunction : -# 1428| void temporary_destructor_only() -# 1428| Block 0 -# 1428| v1428_1(void) = EnterFunction : -# 1428| mu1428_2(unknown) = AliasedDefinition : -# 1428| mu1428_3(unknown) = InitializeNonLocal : -# 1429| r1429_1(glval) = VariableAddress[d] : -# 1429| r1429_2(glval) = FunctionAddress[returnValue] : -# 1429| r1429_3(destructor_only) = Call[returnValue] : func:r1429_2 -# 1429| mu1429_4(unknown) = ^CallSideEffect : ~m? -# 1429| mu1429_5(destructor_only) = Store[d] : &:r1429_1, r1429_3 -# 1430| r1430_1(glval) = VariableAddress[rd] : -# 1430| r1430_2(glval) = VariableAddress[#temp1430:33] : -# 1430| r1430_3(glval) = FunctionAddress[returnValue] : -# 1430| r1430_4(destructor_only) = Call[returnValue] : func:r1430_3 -# 1430| mu1430_5(unknown) = ^CallSideEffect : ~m? -# 1430| mu1430_6(destructor_only) = Store[#temp1430:33] : &:r1430_2, r1430_4 -# 1430| r1430_7(glval) = Convert : r1430_2 -# 1430| r1430_8(destructor_only &) = CopyValue : r1430_7 -# 1430| mu1430_9(destructor_only &) = Store[rd] : &:r1430_1, r1430_8 -# 1431| r1431_1(glval) = VariableAddress[d2] : -# 1431| mu1431_2(destructor_only) = Uninitialized[d2] : &:r1431_1 -# 1432| r1432_1(glval) = FunctionAddress[acceptRef] : -# 1432| r1432_2(glval) = VariableAddress[d] : -# 1432| r1432_3(glval) = Convert : r1432_2 -# 1432| r1432_4(destructor_only &) = CopyValue : r1432_3 -# 1432| v1432_5(void) = Call[acceptRef] : func:r1432_1, 0:r1432_4 -# 1432| mu1432_6(unknown) = ^CallSideEffect : ~m? -# 1432| v1432_7(void) = ^BufferReadSideEffect[0] : &:r1432_4, ~m? -# 1433| r1433_1(glval) = FunctionAddress[acceptValue] : -# 1433| r1433_2(glval) = VariableAddress[#temp1433:17] : -# 1433| r1433_3(glval) = VariableAddress[d] : -# 1433| r1433_4(destructor_only) = Load[d] : &:r1433_3, ~m? -# 1433| mu1433_5(destructor_only) = Store[#temp1433:17] : &:r1433_2, r1433_4 -# 1433| r1433_6(destructor_only) = Load[#temp1433:17] : &:r1433_2, ~m? -# 1433| v1433_7(void) = Call[acceptValue] : func:r1433_1, 0:r1433_6 -# 1433| mu1433_8(unknown) = ^CallSideEffect : ~m? -# 1433| r1433_9(glval) = CopyValue : r1433_2 -# 1433| r1433_10(glval) = FunctionAddress[~destructor_only] : -# 1433| v1433_11(void) = Call[~destructor_only] : func:r1433_10, this:r1433_9 -# 1433| mu1433_12(unknown) = ^CallSideEffect : ~m? -# 1433| v1433_13(void) = ^IndirectReadSideEffect[-1] : &:r1433_9, ~m? -# 1433| mu1433_14(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1433_9 -# 1434| r1434_1(glval) = VariableAddress[#temp1434:5] : -# 1434| r1434_2(destructor_only) = Constant[0] : -# 1434| mu1434_3(destructor_only) = Store[#temp1434:5] : &:r1434_1, r1434_2 -# 1434| r1434_4(glval) = FunctionAddress[method] : -# 1434| v1434_5(void) = Call[method] : func:r1434_4, this:r1434_1 +# 1430| void temporary_destructor_only() +# 1430| Block 0 +# 1430| v1430_1(void) = EnterFunction : +# 1430| mu1430_2(unknown) = AliasedDefinition : +# 1430| mu1430_3(unknown) = InitializeNonLocal : +# 1431| r1431_1(glval) = VariableAddress[d] : +# 1431| r1431_2(glval) = FunctionAddress[returnValue] : +# 1431| r1431_3(destructor_only) = Call[returnValue] : func:r1431_2 +# 1431| mu1431_4(unknown) = ^CallSideEffect : ~m? +# 1431| mu1431_5(destructor_only) = Store[d] : &:r1431_1, r1431_3 +# 1432| r1432_1(glval) = VariableAddress[rd] : +# 1432| r1432_2(glval) = VariableAddress[#temp1432:33] : +# 1432| r1432_3(glval) = FunctionAddress[returnValue] : +# 1432| r1432_4(destructor_only) = Call[returnValue] : func:r1432_3 +# 1432| mu1432_5(unknown) = ^CallSideEffect : ~m? +# 1432| mu1432_6(destructor_only) = Store[#temp1432:33] : &:r1432_2, r1432_4 +# 1432| r1432_7(glval) = Convert : r1432_2 +# 1432| r1432_8(destructor_only &) = CopyValue : r1432_7 +# 1432| mu1432_9(destructor_only &) = Store[rd] : &:r1432_1, r1432_8 +# 1433| r1433_1(glval) = VariableAddress[d2] : +# 1433| mu1433_2(destructor_only) = Uninitialized[d2] : &:r1433_1 +# 1434| r1434_1(glval) = FunctionAddress[acceptRef] : +# 1434| r1434_2(glval) = VariableAddress[d] : +# 1434| r1434_3(glval) = Convert : r1434_2 +# 1434| r1434_4(destructor_only &) = CopyValue : r1434_3 +# 1434| v1434_5(void) = Call[acceptRef] : func:r1434_1, 0:r1434_4 # 1434| mu1434_6(unknown) = ^CallSideEffect : ~m? -# 1434| v1434_7(void) = ^IndirectReadSideEffect[-1] : &:r1434_1, ~m? -# 1434| mu1434_8(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1434_1 -# 1434| r1434_9(glval) = CopyValue : r1434_1 -# 1434| r1434_10(glval) = FunctionAddress[~destructor_only] : -# 1434| v1434_11(void) = Call[~destructor_only] : func:r1434_10, this:r1434_9 -# 1434| mu1434_12(unknown) = ^CallSideEffect : ~m? -# 1434| v1434_13(void) = ^IndirectReadSideEffect[-1] : &:r1434_9, ~m? -# 1434| mu1434_14(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1434_9 -# 1435| r1435_1(glval) = VariableAddress[#temp1435:5] : -# 1435| r1435_2(glval) = FunctionAddress[returnValue] : -# 1435| r1435_3(destructor_only) = Call[returnValue] : func:r1435_2 -# 1435| mu1435_4(unknown) = ^CallSideEffect : ~m? -# 1435| mu1435_5(destructor_only) = Store[#temp1435:5] : &:r1435_1, r1435_3 -# 1435| r1435_6(glval) = FunctionAddress[method] : -# 1435| v1435_7(void) = Call[method] : func:r1435_6, this:r1435_1 +# 1434| v1434_7(void) = ^BufferReadSideEffect[0] : &:r1434_4, ~m? +# 1435| r1435_1(glval) = FunctionAddress[acceptValue] : +# 1435| r1435_2(glval) = VariableAddress[#temp1435:17] : +# 1435| r1435_3(glval) = VariableAddress[d] : +# 1435| r1435_4(destructor_only) = Load[d] : &:r1435_3, ~m? +# 1435| mu1435_5(destructor_only) = Store[#temp1435:17] : &:r1435_2, r1435_4 +# 1435| r1435_6(destructor_only) = Load[#temp1435:17] : &:r1435_2, ~m? +# 1435| v1435_7(void) = Call[acceptValue] : func:r1435_1, 0:r1435_6 # 1435| mu1435_8(unknown) = ^CallSideEffect : ~m? -# 1435| v1435_9(void) = ^IndirectReadSideEffect[-1] : &:r1435_1, ~m? -# 1435| mu1435_10(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1435_1 -# 1435| r1435_11(glval) = CopyValue : r1435_1 -# 1435| r1435_12(glval) = FunctionAddress[~destructor_only] : -# 1435| v1435_13(void) = Call[~destructor_only] : func:r1435_12, this:r1435_11 -# 1435| mu1435_14(unknown) = ^CallSideEffect : ~m? -# 1435| v1435_15(void) = ^IndirectReadSideEffect[-1] : &:r1435_11, ~m? -# 1435| mu1435_16(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1435_11 +# 1435| r1435_9(glval) = CopyValue : r1435_2 +# 1435| r1435_10(glval) = FunctionAddress[~destructor_only] : +# 1435| v1435_11(void) = Call[~destructor_only] : func:r1435_10, this:r1435_9 +# 1435| mu1435_12(unknown) = ^CallSideEffect : ~m? +# 1435| v1435_13(void) = ^IndirectReadSideEffect[-1] : &:r1435_9, ~m? +# 1435| mu1435_14(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1435_9 +# 1436| r1436_1(glval) = VariableAddress[#temp1436:5] : +# 1436| r1436_2(destructor_only) = Constant[0] : +# 1436| mu1436_3(destructor_only) = Store[#temp1436:5] : &:r1436_1, r1436_2 +# 1436| r1436_4(glval) = FunctionAddress[method] : +# 1436| v1436_5(void) = Call[method] : func:r1436_4, this:r1436_1 +# 1436| mu1436_6(unknown) = ^CallSideEffect : ~m? +# 1436| v1436_7(void) = ^IndirectReadSideEffect[-1] : &:r1436_1, ~m? +# 1436| mu1436_8(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1436_1 +# 1436| r1436_9(glval) = CopyValue : r1436_1 +# 1436| r1436_10(glval) = FunctionAddress[~destructor_only] : +# 1436| v1436_11(void) = Call[~destructor_only] : func:r1436_10, this:r1436_9 +# 1436| mu1436_12(unknown) = ^CallSideEffect : ~m? +# 1436| v1436_13(void) = ^IndirectReadSideEffect[-1] : &:r1436_9, ~m? +# 1436| mu1436_14(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1436_9 # 1437| r1437_1(glval) = VariableAddress[#temp1437:5] : -# 1437| r1437_2(glval) = FunctionAddress[defaultConstruct] : -# 1437| r1437_3(destructor_only) = Call[defaultConstruct] : func:r1437_2 +# 1437| r1437_2(glval) = FunctionAddress[returnValue] : +# 1437| r1437_3(destructor_only) = Call[returnValue] : func:r1437_2 # 1437| mu1437_4(unknown) = ^CallSideEffect : ~m? # 1437| mu1437_5(destructor_only) = Store[#temp1437:5] : &:r1437_1, r1437_3 -# 1437| r1437_6(glval) = CopyValue : r1437_1 -# 1437| r1437_7(glval) = FunctionAddress[~destructor_only] : -# 1437| v1437_8(void) = Call[~destructor_only] : func:r1437_7, this:r1437_6 -# 1437| mu1437_9(unknown) = ^CallSideEffect : ~m? -# 1437| v1437_10(void) = ^IndirectReadSideEffect[-1] : &:r1437_6, ~m? -# 1437| mu1437_11(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1437_6 -# 1438| v1438_1(void) = NoOp : -# 1438| r1438_2(glval) = VariableAddress[d2] : -# 1438| r1438_3(glval) = FunctionAddress[~destructor_only] : -# 1438| v1438_4(void) = Call[~destructor_only] : func:r1438_3, this:r1438_2 -# 1438| mu1438_5(unknown) = ^CallSideEffect : ~m? -# 1438| v1438_6(void) = ^IndirectReadSideEffect[-1] : &:r1438_2, ~m? -# 1438| mu1438_7(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1438_2 -# 1438| r1438_8(glval) = CopyValue : r1430_2 -# 1438| r1438_9(glval) = FunctionAddress[~destructor_only] : -# 1438| v1438_10(void) = Call[~destructor_only] : func:r1438_9, this:r1438_8 -# 1438| mu1438_11(unknown) = ^CallSideEffect : ~m? -# 1438| v1438_12(void) = ^IndirectReadSideEffect[-1] : &:r1438_8, ~m? -# 1438| mu1438_13(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1438_8 -# 1438| r1438_14(glval) = VariableAddress[d] : -# 1438| r1438_15(glval) = FunctionAddress[~destructor_only] : -# 1438| v1438_16(void) = Call[~destructor_only] : func:r1438_15, this:r1438_14 -# 1438| mu1438_17(unknown) = ^CallSideEffect : ~m? -# 1438| v1438_18(void) = ^IndirectReadSideEffect[-1] : &:r1438_14, ~m? -# 1438| mu1438_19(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1438_14 -# 1428| v1428_4(void) = ReturnVoid : -# 1428| v1428_5(void) = AliasedUse : ~m? -# 1428| v1428_6(void) = ExitFunction : +# 1437| r1437_6(glval) = FunctionAddress[method] : +# 1437| v1437_7(void) = Call[method] : func:r1437_6, this:r1437_1 +# 1437| mu1437_8(unknown) = ^CallSideEffect : ~m? +# 1437| v1437_9(void) = ^IndirectReadSideEffect[-1] : &:r1437_1, ~m? +# 1437| mu1437_10(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1437_1 +# 1437| r1437_11(glval) = CopyValue : r1437_1 +# 1437| r1437_12(glval) = FunctionAddress[~destructor_only] : +# 1437| v1437_13(void) = Call[~destructor_only] : func:r1437_12, this:r1437_11 +# 1437| mu1437_14(unknown) = ^CallSideEffect : ~m? +# 1437| v1437_15(void) = ^IndirectReadSideEffect[-1] : &:r1437_11, ~m? +# 1437| mu1437_16(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1437_11 +# 1439| r1439_1(glval) = VariableAddress[#temp1439:5] : +# 1439| r1439_2(glval) = FunctionAddress[defaultConstruct] : +# 1439| r1439_3(destructor_only) = Call[defaultConstruct] : func:r1439_2 +# 1439| mu1439_4(unknown) = ^CallSideEffect : ~m? +# 1439| mu1439_5(destructor_only) = Store[#temp1439:5] : &:r1439_1, r1439_3 +# 1439| r1439_6(glval) = CopyValue : r1439_1 +# 1439| r1439_7(glval) = FunctionAddress[~destructor_only] : +# 1439| v1439_8(void) = Call[~destructor_only] : func:r1439_7, this:r1439_6 +# 1439| mu1439_9(unknown) = ^CallSideEffect : ~m? +# 1439| v1439_10(void) = ^IndirectReadSideEffect[-1] : &:r1439_6, ~m? +# 1439| mu1439_11(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1439_6 +# 1440| v1440_1(void) = NoOp : +# 1440| r1440_2(glval) = VariableAddress[d2] : +# 1440| r1440_3(glval) = FunctionAddress[~destructor_only] : +# 1440| v1440_4(void) = Call[~destructor_only] : func:r1440_3, this:r1440_2 +# 1440| mu1440_5(unknown) = ^CallSideEffect : ~m? +# 1440| v1440_6(void) = ^IndirectReadSideEffect[-1] : &:r1440_2, ~m? +# 1440| mu1440_7(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1440_2 +# 1440| r1440_8(glval) = CopyValue : r1432_2 +# 1440| r1440_9(glval) = FunctionAddress[~destructor_only] : +# 1440| v1440_10(void) = Call[~destructor_only] : func:r1440_9, this:r1440_8 +# 1440| mu1440_11(unknown) = ^CallSideEffect : ~m? +# 1440| v1440_12(void) = ^IndirectReadSideEffect[-1] : &:r1440_8, ~m? +# 1440| mu1440_13(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1440_8 +# 1440| r1440_14(glval) = VariableAddress[d] : +# 1440| r1440_15(glval) = FunctionAddress[~destructor_only] : +# 1440| v1440_16(void) = Call[~destructor_only] : func:r1440_15, this:r1440_14 +# 1440| mu1440_17(unknown) = ^CallSideEffect : ~m? +# 1440| v1440_18(void) = ^IndirectReadSideEffect[-1] : &:r1440_14, ~m? +# 1440| mu1440_19(destructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1440_14 +# 1430| v1430_4(void) = ReturnVoid : +# 1430| v1430_5(void) = AliasedUse : ~m? +# 1430| v1430_6(void) = ExitFunction : -# 1440| void temporary_copy_constructor() -# 1440| Block 0 -# 1440| v1440_1(void) = EnterFunction : -# 1440| mu1440_2(unknown) = AliasedDefinition : -# 1440| mu1440_3(unknown) = InitializeNonLocal : -# 1441| r1441_1(glval) = VariableAddress[d] : -# 1441| r1441_2(glval) = FunctionAddress[returnValue] : -# 1441| r1441_3(copy_constructor) = Call[returnValue] : func:r1441_2 -# 1441| mu1441_4(unknown) = ^CallSideEffect : ~m? -# 1441| mu1441_5(copy_constructor) = Store[d] : &:r1441_1, r1441_3 -# 1442| r1442_1(glval) = VariableAddress[rd] : -# 1442| r1442_2(glval) = VariableAddress[#temp1442:34] : -# 1442| r1442_3(glval) = FunctionAddress[returnValue] : -# 1442| r1442_4(copy_constructor) = Call[returnValue] : func:r1442_3 -# 1442| mu1442_5(unknown) = ^CallSideEffect : ~m? -# 1442| mu1442_6(copy_constructor) = Store[#temp1442:34] : &:r1442_2, r1442_4 -# 1442| r1442_7(glval) = Convert : r1442_2 -# 1442| r1442_8(copy_constructor &) = CopyValue : r1442_7 -# 1442| mu1442_9(copy_constructor &) = Store[rd] : &:r1442_1, r1442_8 -# 1443| r1443_1(glval) = VariableAddress[d2] : -# 1443| mu1443_2(copy_constructor) = Uninitialized[d2] : &:r1443_1 -# 1443| r1443_3(glval) = FunctionAddress[copy_constructor] : -# 1443| v1443_4(void) = Call[copy_constructor] : func:r1443_3, this:r1443_1 -# 1443| mu1443_5(unknown) = ^CallSideEffect : ~m? -# 1443| mu1443_6(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1443_1 -# 1444| r1444_1(glval) = FunctionAddress[acceptRef] : -# 1444| r1444_2(glval) = VariableAddress[d] : -# 1444| r1444_3(glval) = Convert : r1444_2 -# 1444| r1444_4(copy_constructor &) = CopyValue : r1444_3 -# 1444| v1444_5(void) = Call[acceptRef] : func:r1444_1, 0:r1444_4 -# 1444| mu1444_6(unknown) = ^CallSideEffect : ~m? -# 1444| v1444_7(void) = ^BufferReadSideEffect[0] : &:r1444_4, ~m? -# 1445| r1445_1(glval) = FunctionAddress[acceptValue] : -# 1445| r1445_2(glval) = VariableAddress[#temp1445:17] : -# 1445| mu1445_3(copy_constructor) = Uninitialized[#temp1445:17] : &:r1445_2 -# 1445| r1445_4(glval) = FunctionAddress[copy_constructor] : -# 1445| r1445_5(glval) = VariableAddress[d] : -# 1445| r1445_6(glval) = Convert : r1445_5 -# 1445| r1445_7(copy_constructor &) = CopyValue : r1445_6 -# 1445| v1445_8(void) = Call[copy_constructor] : func:r1445_4, this:r1445_2, 0:r1445_7 -# 1445| mu1445_9(unknown) = ^CallSideEffect : ~m? -# 1445| v1445_10(void) = ^BufferReadSideEffect[0] : &:r1445_7, ~m? -# 1445| mu1445_11(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1445_2 -# 1445| r1445_12(copy_constructor) = Load[#temp1445:17] : &:r1445_2, ~m? -# 1445| v1445_13(void) = Call[acceptValue] : func:r1445_1, 0:r1445_12 -# 1445| mu1445_14(unknown) = ^CallSideEffect : ~m? -# 1446| r1446_1(glval) = VariableAddress[#temp1446:5] : -# 1446| mu1446_2(copy_constructor) = Uninitialized[#temp1446:5] : &:r1446_1 -# 1446| r1446_3(glval) = FunctionAddress[copy_constructor] : -# 1446| v1446_4(void) = Call[copy_constructor] : func:r1446_3, this:r1446_1 -# 1446| mu1446_5(unknown) = ^CallSideEffect : ~m? -# 1446| mu1446_6(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1446_1 -# 1446| r1446_7(glval) = FunctionAddress[method] : -# 1446| v1446_8(void) = Call[method] : func:r1446_7, this:r1446_1 -# 1446| mu1446_9(unknown) = ^CallSideEffect : ~m? -# 1446| v1446_10(void) = ^IndirectReadSideEffect[-1] : &:r1446_1, ~m? -# 1446| mu1446_11(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1446_1 -# 1447| r1447_1(glval) = VariableAddress[#temp1447:5] : -# 1447| r1447_2(glval) = FunctionAddress[returnValue] : -# 1447| r1447_3(copy_constructor) = Call[returnValue] : func:r1447_2 -# 1447| mu1447_4(unknown) = ^CallSideEffect : ~m? -# 1447| mu1447_5(copy_constructor) = Store[#temp1447:5] : &:r1447_1, r1447_3 -# 1447| r1447_6(glval) = FunctionAddress[method] : -# 1447| v1447_7(void) = Call[method] : func:r1447_6, this:r1447_1 -# 1447| mu1447_8(unknown) = ^CallSideEffect : ~m? -# 1447| v1447_9(void) = ^IndirectReadSideEffect[-1] : &:r1447_1, ~m? -# 1447| mu1447_10(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1447_1 +# 1442| void temporary_copy_constructor() +# 1442| Block 0 +# 1442| v1442_1(void) = EnterFunction : +# 1442| mu1442_2(unknown) = AliasedDefinition : +# 1442| mu1442_3(unknown) = InitializeNonLocal : +# 1443| r1443_1(glval) = VariableAddress[d] : +# 1443| r1443_2(glval) = FunctionAddress[returnValue] : +# 1443| r1443_3(copy_constructor) = Call[returnValue] : func:r1443_2 +# 1443| mu1443_4(unknown) = ^CallSideEffect : ~m? +# 1443| mu1443_5(copy_constructor) = Store[d] : &:r1443_1, r1443_3 +# 1444| r1444_1(glval) = VariableAddress[rd] : +# 1444| r1444_2(glval) = VariableAddress[#temp1444:34] : +# 1444| r1444_3(glval) = FunctionAddress[returnValue] : +# 1444| r1444_4(copy_constructor) = Call[returnValue] : func:r1444_3 +# 1444| mu1444_5(unknown) = ^CallSideEffect : ~m? +# 1444| mu1444_6(copy_constructor) = Store[#temp1444:34] : &:r1444_2, r1444_4 +# 1444| r1444_7(glval) = Convert : r1444_2 +# 1444| r1444_8(copy_constructor &) = CopyValue : r1444_7 +# 1444| mu1444_9(copy_constructor &) = Store[rd] : &:r1444_1, r1444_8 +# 1445| r1445_1(glval) = VariableAddress[d2] : +# 1445| mu1445_2(copy_constructor) = Uninitialized[d2] : &:r1445_1 +# 1445| r1445_3(glval) = FunctionAddress[copy_constructor] : +# 1445| v1445_4(void) = Call[copy_constructor] : func:r1445_3, this:r1445_1 +# 1445| mu1445_5(unknown) = ^CallSideEffect : ~m? +# 1445| mu1445_6(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1445_1 +# 1446| r1446_1(glval) = FunctionAddress[acceptRef] : +# 1446| r1446_2(glval) = VariableAddress[d] : +# 1446| r1446_3(glval) = Convert : r1446_2 +# 1446| r1446_4(copy_constructor &) = CopyValue : r1446_3 +# 1446| v1446_5(void) = Call[acceptRef] : func:r1446_1, 0:r1446_4 +# 1446| mu1446_6(unknown) = ^CallSideEffect : ~m? +# 1446| v1446_7(void) = ^BufferReadSideEffect[0] : &:r1446_4, ~m? +# 1447| r1447_1(glval) = FunctionAddress[acceptValue] : +# 1447| r1447_2(glval) = VariableAddress[#temp1447:17] : +# 1447| mu1447_3(copy_constructor) = Uninitialized[#temp1447:17] : &:r1447_2 +# 1447| r1447_4(glval) = FunctionAddress[copy_constructor] : +# 1447| r1447_5(glval) = VariableAddress[d] : +# 1447| r1447_6(glval) = Convert : r1447_5 +# 1447| r1447_7(copy_constructor &) = CopyValue : r1447_6 +# 1447| v1447_8(void) = Call[copy_constructor] : func:r1447_4, this:r1447_2, 0:r1447_7 +# 1447| mu1447_9(unknown) = ^CallSideEffect : ~m? +# 1447| v1447_10(void) = ^BufferReadSideEffect[0] : &:r1447_7, ~m? +# 1447| mu1447_11(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1447_2 +# 1447| r1447_12(copy_constructor) = Load[#temp1447:17] : &:r1447_2, ~m? +# 1447| v1447_13(void) = Call[acceptValue] : func:r1447_1, 0:r1447_12 +# 1447| mu1447_14(unknown) = ^CallSideEffect : ~m? # 1448| r1448_1(glval) = VariableAddress[#temp1448:5] : -# 1448| r1448_2(glval) = FunctionAddress[defaultConstruct] : -# 1448| r1448_3(copy_constructor) = Call[defaultConstruct] : func:r1448_2 -# 1448| mu1448_4(unknown) = ^CallSideEffect : ~m? -# 1448| mu1448_5(copy_constructor) = Store[#temp1448:5] : &:r1448_1, r1448_3 -# 1450| r1450_1(glval) = VariableAddress[y] : -# 1450| r1450_2(glval) = VariableAddress[#temp1450:13] : -# 1450| r1450_3(glval) = FunctionAddress[returnValue] : -# 1450| r1450_4(copy_constructor) = Call[returnValue] : func:r1450_3 -# 1450| mu1450_5(unknown) = ^CallSideEffect : ~m? -# 1450| mu1450_6(copy_constructor) = Store[#temp1450:13] : &:r1450_2, r1450_4 -# 1450| r1450_7(glval) = FieldAddress[y] : r1450_2 -# 1450| r1450_8(int) = Load[?] : &:r1450_7, ~m? -# 1450| mu1450_9(int) = Store[y] : &:r1450_1, r1450_8 -# 1451| v1451_1(void) = NoOp : -# 1440| v1440_4(void) = ReturnVoid : -# 1440| v1440_5(void) = AliasedUse : ~m? -# 1440| v1440_6(void) = ExitFunction : +# 1448| mu1448_2(copy_constructor) = Uninitialized[#temp1448:5] : &:r1448_1 +# 1448| r1448_3(glval) = FunctionAddress[copy_constructor] : +# 1448| v1448_4(void) = Call[copy_constructor] : func:r1448_3, this:r1448_1 +# 1448| mu1448_5(unknown) = ^CallSideEffect : ~m? +# 1448| mu1448_6(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1448_1 +# 1448| r1448_7(glval) = FunctionAddress[method] : +# 1448| v1448_8(void) = Call[method] : func:r1448_7, this:r1448_1 +# 1448| mu1448_9(unknown) = ^CallSideEffect : ~m? +# 1448| v1448_10(void) = ^IndirectReadSideEffect[-1] : &:r1448_1, ~m? +# 1448| mu1448_11(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1448_1 +# 1449| r1449_1(glval) = VariableAddress[#temp1449:5] : +# 1449| r1449_2(glval) = FunctionAddress[returnValue] : +# 1449| r1449_3(copy_constructor) = Call[returnValue] : func:r1449_2 +# 1449| mu1449_4(unknown) = ^CallSideEffect : ~m? +# 1449| mu1449_5(copy_constructor) = Store[#temp1449:5] : &:r1449_1, r1449_3 +# 1449| r1449_6(glval) = FunctionAddress[method] : +# 1449| v1449_7(void) = Call[method] : func:r1449_6, this:r1449_1 +# 1449| mu1449_8(unknown) = ^CallSideEffect : ~m? +# 1449| v1449_9(void) = ^IndirectReadSideEffect[-1] : &:r1449_1, ~m? +# 1449| mu1449_10(copy_constructor) = ^IndirectMayWriteSideEffect[-1] : &:r1449_1 +# 1450| r1450_1(glval) = VariableAddress[#temp1450:5] : +# 1450| r1450_2(glval) = FunctionAddress[defaultConstruct] : +# 1450| r1450_3(copy_constructor) = Call[defaultConstruct] : func:r1450_2 +# 1450| mu1450_4(unknown) = ^CallSideEffect : ~m? +# 1450| mu1450_5(copy_constructor) = Store[#temp1450:5] : &:r1450_1, r1450_3 +# 1452| r1452_1(glval) = VariableAddress[y] : +# 1452| r1452_2(glval) = VariableAddress[#temp1452:13] : +# 1452| r1452_3(glval) = FunctionAddress[returnValue] : +# 1452| r1452_4(copy_constructor) = Call[returnValue] : func:r1452_3 +# 1452| mu1452_5(unknown) = ^CallSideEffect : ~m? +# 1452| mu1452_6(copy_constructor) = Store[#temp1452:13] : &:r1452_2, r1452_4 +# 1452| r1452_7(glval) = FieldAddress[y] : r1452_2 +# 1452| r1452_8(int) = Load[?] : &:r1452_7, ~m? +# 1452| mu1452_9(int) = Store[y] : &:r1452_1, r1452_8 +# 1453| v1453_1(void) = NoOp : +# 1442| v1442_4(void) = ReturnVoid : +# 1442| v1442_5(void) = AliasedUse : ~m? +# 1442| v1442_6(void) = ExitFunction : -# 1453| void temporary_point() -# 1453| Block 0 -# 1453| v1453_1(void) = EnterFunction : -# 1453| mu1453_2(unknown) = AliasedDefinition : -# 1453| mu1453_3(unknown) = InitializeNonLocal : -# 1454| r1454_1(glval) = VariableAddress[p] : -# 1454| r1454_2(glval) = FunctionAddress[returnValue] : -# 1454| r1454_3(Point) = Call[returnValue] : func:r1454_2 -# 1454| mu1454_4(unknown) = ^CallSideEffect : ~m? -# 1454| mu1454_5(Point) = Store[p] : &:r1454_1, r1454_3 -# 1455| r1455_1(glval) = VariableAddress[rp] : -# 1455| r1455_2(glval) = VariableAddress[#temp1455:23] : -# 1455| r1455_3(glval) = FunctionAddress[returnValue] : -# 1455| r1455_4(Point) = Call[returnValue] : func:r1455_3 -# 1455| mu1455_5(unknown) = ^CallSideEffect : ~m? -# 1455| mu1455_6(Point) = Store[#temp1455:23] : &:r1455_2, r1455_4 -# 1455| r1455_7(glval) = Convert : r1455_2 -# 1455| r1455_8(Point &) = CopyValue : r1455_7 -# 1455| mu1455_9(Point &) = Store[rp] : &:r1455_1, r1455_8 -# 1457| r1457_1(glval) = FunctionAddress[acceptRef] : -# 1457| r1457_2(glval) = VariableAddress[p] : -# 1457| r1457_3(glval) = Convert : r1457_2 -# 1457| r1457_4(Point &) = CopyValue : r1457_3 -# 1457| v1457_5(void) = Call[acceptRef] : func:r1457_1, 0:r1457_4 -# 1457| mu1457_6(unknown) = ^CallSideEffect : ~m? -# 1457| v1457_7(void) = ^BufferReadSideEffect[0] : &:r1457_4, ~m? -# 1458| r1458_1(glval) = FunctionAddress[acceptValue] : -# 1458| r1458_2(glval) = VariableAddress[p] : -# 1458| r1458_3(Point) = Load[p] : &:r1458_2, ~m? -# 1458| v1458_4(void) = Call[acceptValue] : func:r1458_1, 0:r1458_3 -# 1458| mu1458_5(unknown) = ^CallSideEffect : ~m? -# 1459| r1459_1(int) = Constant[0] : -# 1460| r1460_1(glval) = VariableAddress[y] : -# 1460| r1460_2(glval) = FunctionAddress[returnValue] : -# 1460| r1460_3(Point) = Call[returnValue] : func:r1460_2 -# 1460| mu1460_4(unknown) = ^CallSideEffect : ~m? -# 1460| r1460_5(glval) = VariableAddress[#temp1460:13] : -# 1460| mu1460_6(Point) = Store[#temp1460:13] : &:r1460_5, r1460_3 -# 1460| r1460_7(glval) = FieldAddress[y] : r1460_5 -# 1460| r1460_8(int) = Load[?] : &:r1460_7, ~m? -# 1460| mu1460_9(int) = Store[y] : &:r1460_1, r1460_8 -# 1462| r1462_1(glval) = FunctionAddress[defaultConstruct] : -# 1462| r1462_2(Point) = Call[defaultConstruct] : func:r1462_1 -# 1462| mu1462_3(unknown) = ^CallSideEffect : ~m? -# 1463| v1463_1(void) = NoOp : -# 1453| v1453_4(void) = ReturnVoid : -# 1453| v1453_5(void) = AliasedUse : ~m? -# 1453| v1453_6(void) = ExitFunction : +# 1455| void temporary_point() +# 1455| Block 0 +# 1455| v1455_1(void) = EnterFunction : +# 1455| mu1455_2(unknown) = AliasedDefinition : +# 1455| mu1455_3(unknown) = InitializeNonLocal : +# 1456| r1456_1(glval) = VariableAddress[p] : +# 1456| r1456_2(glval) = FunctionAddress[returnValue] : +# 1456| r1456_3(Point) = Call[returnValue] : func:r1456_2 +# 1456| mu1456_4(unknown) = ^CallSideEffect : ~m? +# 1456| mu1456_5(Point) = Store[p] : &:r1456_1, r1456_3 +# 1457| r1457_1(glval) = VariableAddress[rp] : +# 1457| r1457_2(glval) = VariableAddress[#temp1457:23] : +# 1457| r1457_3(glval) = FunctionAddress[returnValue] : +# 1457| r1457_4(Point) = Call[returnValue] : func:r1457_3 +# 1457| mu1457_5(unknown) = ^CallSideEffect : ~m? +# 1457| mu1457_6(Point) = Store[#temp1457:23] : &:r1457_2, r1457_4 +# 1457| r1457_7(glval) = Convert : r1457_2 +# 1457| r1457_8(Point &) = CopyValue : r1457_7 +# 1457| mu1457_9(Point &) = Store[rp] : &:r1457_1, r1457_8 +# 1459| r1459_1(glval) = FunctionAddress[acceptRef] : +# 1459| r1459_2(glval) = VariableAddress[p] : +# 1459| r1459_3(glval) = Convert : r1459_2 +# 1459| r1459_4(Point &) = CopyValue : r1459_3 +# 1459| v1459_5(void) = Call[acceptRef] : func:r1459_1, 0:r1459_4 +# 1459| mu1459_6(unknown) = ^CallSideEffect : ~m? +# 1459| v1459_7(void) = ^BufferReadSideEffect[0] : &:r1459_4, ~m? +# 1460| r1460_1(glval) = FunctionAddress[acceptValue] : +# 1460| r1460_2(glval) = VariableAddress[p] : +# 1460| r1460_3(Point) = Load[p] : &:r1460_2, ~m? +# 1460| v1460_4(void) = Call[acceptValue] : func:r1460_1, 0:r1460_3 +# 1460| mu1460_5(unknown) = ^CallSideEffect : ~m? +# 1461| r1461_1(int) = Constant[0] : +# 1462| r1462_1(glval) = VariableAddress[y] : +# 1462| r1462_2(glval) = FunctionAddress[returnValue] : +# 1462| r1462_3(Point) = Call[returnValue] : func:r1462_2 +# 1462| mu1462_4(unknown) = ^CallSideEffect : ~m? +# 1462| r1462_5(glval) = VariableAddress[#temp1462:13] : +# 1462| mu1462_6(Point) = Store[#temp1462:13] : &:r1462_5, r1462_3 +# 1462| r1462_7(glval) = FieldAddress[y] : r1462_5 +# 1462| r1462_8(int) = Load[?] : &:r1462_7, ~m? +# 1462| mu1462_9(int) = Store[y] : &:r1462_1, r1462_8 +# 1464| r1464_1(glval) = FunctionAddress[defaultConstruct] : +# 1464| r1464_2(Point) = Call[defaultConstruct] : func:r1464_1 +# 1464| mu1464_3(unknown) = ^CallSideEffect : ~m? +# 1465| v1465_1(void) = NoOp : +# 1455| v1455_4(void) = ReturnVoid : +# 1455| v1455_5(void) = AliasedUse : ~m? +# 1455| v1455_6(void) = ExitFunction : -# 1470| void temporary_unusual_fields() -# 1470| Block 0 -# 1470| v1470_1(void) = EnterFunction : -# 1470| mu1470_2(unknown) = AliasedDefinition : -# 1470| mu1470_3(unknown) = InitializeNonLocal : -# 1471| r1471_1(glval) = VariableAddress[rx] : -# 1471| r1471_2(glval) = FunctionAddress[returnValue] : -# 1471| r1471_3(UnusualFields) = Call[returnValue] : func:r1471_2 -# 1471| mu1471_4(unknown) = ^CallSideEffect : ~m? -# 1471| r1471_5(glval) = VariableAddress[#temp1471:21] : -# 1471| mu1471_6(UnusualFields) = Store[#temp1471:21] : &:r1471_5, r1471_3 -# 1471| r1471_7(glval) = FieldAddress[r] : r1471_5 -# 1471| r1471_8(int &) = Load[?] : &:r1471_7, ~m? -# 1471| r1471_9(glval) = CopyValue : r1471_8 -# 1471| r1471_10(glval) = Convert : r1471_9 -# 1471| r1471_11(int &) = CopyValue : r1471_10 -# 1471| mu1471_12(int &) = Store[rx] : &:r1471_1, r1471_11 -# 1472| r1472_1(glval) = VariableAddress[x] : -# 1472| r1472_2(glval) = FunctionAddress[returnValue] : -# 1472| r1472_3(UnusualFields) = Call[returnValue] : func:r1472_2 -# 1472| mu1472_4(unknown) = ^CallSideEffect : ~m? -# 1472| r1472_5(glval) = VariableAddress[#temp1472:13] : -# 1472| mu1472_6(UnusualFields) = Store[#temp1472:13] : &:r1472_5, r1472_3 -# 1472| r1472_7(glval) = FieldAddress[r] : r1472_5 -# 1472| r1472_8(int &) = Load[?] : &:r1472_7, ~m? -# 1472| r1472_9(int) = Load[?] : &:r1472_8, ~m? -# 1472| mu1472_10(int) = Store[x] : &:r1472_1, r1472_9 -# 1474| r1474_1(glval) = VariableAddress[rf] : +# 1472| void temporary_unusual_fields() +# 1472| Block 0 +# 1472| v1472_1(void) = EnterFunction : +# 1472| mu1472_2(unknown) = AliasedDefinition : +# 1472| mu1472_3(unknown) = InitializeNonLocal : +# 1473| r1473_1(glval) = VariableAddress[rx] : +# 1473| r1473_2(glval) = FunctionAddress[returnValue] : +# 1473| r1473_3(UnusualFields) = Call[returnValue] : func:r1473_2 +# 1473| mu1473_4(unknown) = ^CallSideEffect : ~m? +# 1473| r1473_5(glval) = VariableAddress[#temp1473:21] : +# 1473| mu1473_6(UnusualFields) = Store[#temp1473:21] : &:r1473_5, r1473_3 +# 1473| r1473_7(glval) = FieldAddress[r] : r1473_5 +# 1473| r1473_8(int &) = Load[?] : &:r1473_7, ~m? +# 1473| r1473_9(glval) = CopyValue : r1473_8 +# 1473| r1473_10(glval) = Convert : r1473_9 +# 1473| r1473_11(int &) = CopyValue : r1473_10 +# 1473| mu1473_12(int &) = Store[rx] : &:r1473_1, r1473_11 +# 1474| r1474_1(glval) = VariableAddress[x] : # 1474| r1474_2(glval) = FunctionAddress[returnValue] : # 1474| r1474_3(UnusualFields) = Call[returnValue] : func:r1474_2 # 1474| mu1474_4(unknown) = ^CallSideEffect : ~m? -# 1474| r1474_5(glval) = VariableAddress[#temp1474:23] : -# 1474| mu1474_6(UnusualFields) = Store[#temp1474:23] : &:r1474_5, r1474_3 -# 1474| r1474_7(glval) = FieldAddress[a] : r1474_5 -# 1474| r1474_8(float *) = Convert : r1474_7 -# 1474| r1474_9(int) = Constant[3] : -# 1474| r1474_10(glval) = PointerAdd[4] : r1474_8, r1474_9 -# 1474| r1474_11(glval) = Convert : r1474_10 -# 1474| r1474_12(float &) = CopyValue : r1474_11 -# 1474| mu1474_13(float &) = Store[rf] : &:r1474_1, r1474_12 -# 1475| r1475_1(glval) = VariableAddress[f] : -# 1475| r1475_2(glval) = FunctionAddress[returnValue] : -# 1475| r1475_3(UnusualFields) = Call[returnValue] : func:r1475_2 -# 1475| mu1475_4(unknown) = ^CallSideEffect : ~m? -# 1475| r1475_5(glval) = VariableAddress[#temp1475:15] : -# 1475| mu1475_6(UnusualFields) = Store[#temp1475:15] : &:r1475_5, r1475_3 -# 1475| r1475_7(glval) = FieldAddress[a] : r1475_5 -# 1475| r1475_8(float *) = Convert : r1475_7 -# 1475| r1475_9(int) = Constant[5] : -# 1475| r1475_10(glval) = PointerAdd[4] : r1475_8, r1475_9 -# 1475| r1475_11(float) = Load[?] : &:r1475_10, ~m? -# 1475| mu1475_12(float) = Store[f] : &:r1475_1, r1475_11 -# 1476| v1476_1(void) = NoOp : -# 1470| v1470_4(void) = ReturnVoid : -# 1470| v1470_5(void) = AliasedUse : ~m? -# 1470| v1470_6(void) = ExitFunction : +# 1474| r1474_5(glval) = VariableAddress[#temp1474:13] : +# 1474| mu1474_6(UnusualFields) = Store[#temp1474:13] : &:r1474_5, r1474_3 +# 1474| r1474_7(glval) = FieldAddress[r] : r1474_5 +# 1474| r1474_8(int &) = Load[?] : &:r1474_7, ~m? +# 1474| r1474_9(int) = Load[?] : &:r1474_8, ~m? +# 1474| mu1474_10(int) = Store[x] : &:r1474_1, r1474_9 +# 1476| r1476_1(glval) = VariableAddress[rf] : +# 1476| r1476_2(glval) = FunctionAddress[returnValue] : +# 1476| r1476_3(UnusualFields) = Call[returnValue] : func:r1476_2 +# 1476| mu1476_4(unknown) = ^CallSideEffect : ~m? +# 1476| r1476_5(glval) = VariableAddress[#temp1476:23] : +# 1476| mu1476_6(UnusualFields) = Store[#temp1476:23] : &:r1476_5, r1476_3 +# 1476| r1476_7(glval) = FieldAddress[a] : r1476_5 +# 1476| r1476_8(float *) = Convert : r1476_7 +# 1476| r1476_9(int) = Constant[3] : +# 1476| r1476_10(glval) = PointerAdd[4] : r1476_8, r1476_9 +# 1476| r1476_11(glval) = Convert : r1476_10 +# 1476| r1476_12(float &) = CopyValue : r1476_11 +# 1476| mu1476_13(float &) = Store[rf] : &:r1476_1, r1476_12 +# 1477| r1477_1(glval) = VariableAddress[f] : +# 1477| r1477_2(glval) = FunctionAddress[returnValue] : +# 1477| r1477_3(UnusualFields) = Call[returnValue] : func:r1477_2 +# 1477| mu1477_4(unknown) = ^CallSideEffect : ~m? +# 1477| r1477_5(glval) = VariableAddress[#temp1477:15] : +# 1477| mu1477_6(UnusualFields) = Store[#temp1477:15] : &:r1477_5, r1477_3 +# 1477| r1477_7(glval) = FieldAddress[a] : r1477_5 +# 1477| r1477_8(float *) = Convert : r1477_7 +# 1477| r1477_9(int) = Constant[5] : +# 1477| r1477_10(glval) = PointerAdd[4] : r1477_8, r1477_9 +# 1477| r1477_11(float) = Load[?] : &:r1477_10, ~m? +# 1477| mu1477_12(float) = Store[f] : &:r1477_1, r1477_11 +# 1478| v1478_1(void) = NoOp : +# 1472| v1472_4(void) = ReturnVoid : +# 1472| v1472_5(void) = AliasedUse : ~m? +# 1472| v1472_6(void) = ExitFunction : -# 1492| void temporary_hierarchy() -# 1492| Block 0 -# 1492| v1492_1(void) = EnterFunction : -# 1492| mu1492_2(unknown) = AliasedDefinition : -# 1492| mu1492_3(unknown) = InitializeNonLocal : -# 1493| r1493_1(glval) = VariableAddress[b] : +# 1494| void temporary_hierarchy() +# 1494| Block 0 +# 1494| v1494_1(void) = EnterFunction : +# 1494| mu1494_2(unknown) = AliasedDefinition : +# 1494| mu1494_3(unknown) = InitializeNonLocal : +# 1495| r1495_1(glval) = VariableAddress[b] : #-----| r0_1(glval) = VariableAddress[#temp0:0] : -# 1493| r1493_2(glval) = FunctionAddress[returnValue] : -# 1493| r1493_3(POD_Middle) = Call[returnValue] : func:r1493_2 -# 1493| mu1493_4(unknown) = ^CallSideEffect : ~m? -# 1493| mu1493_5(POD_Middle) = Store[#temp0:0] : &:r0_1, r1493_3 +# 1495| r1495_2(glval) = FunctionAddress[returnValue] : +# 1495| r1495_3(POD_Middle) = Call[returnValue] : func:r1495_2 +# 1495| mu1495_4(unknown) = ^CallSideEffect : ~m? +# 1495| mu1495_5(POD_Middle) = Store[#temp0:0] : &:r0_1, r1495_3 #-----| r0_2(glval) = ConvertToNonVirtualBase[POD_Middle : POD_Base] : r0_1 #-----| r0_3(POD_Base) = Load[?] : &:r0_2, ~m? -#-----| mu0_4(POD_Base) = Store[b] : &:r1493_1, r0_3 -# 1494| r1494_1(glval) = VariableAddress[#temp1494:9] : -# 1494| r1494_2(glval) = FunctionAddress[returnValue] : -# 1494| r1494_3(POD_Derived) = Call[returnValue] : func:r1494_2 -# 1494| mu1494_4(unknown) = ^CallSideEffect : ~m? -# 1494| mu1494_5(POD_Derived) = Store[#temp1494:9] : &:r1494_1, r1494_3 -# 1494| r1494_6(glval) = ConvertToNonVirtualBase[POD_Derived : POD_Middle] : r1494_1 -# 1494| r1494_7(glval) = ConvertToNonVirtualBase[POD_Middle : POD_Base] : r1494_6 -# 1494| r1494_8(POD_Base) = Load[?] : &:r1494_7, ~m? -# 1494| r1494_9(glval) = VariableAddress[b] : -# 1494| mu1494_10(POD_Base) = Store[b] : &:r1494_9, r1494_8 -# 1495| r1495_1(glval) = VariableAddress[x] : -#-----| r0_5(glval) = VariableAddress[#temp0:0] : -# 1495| r1495_2(glval) = FunctionAddress[returnValue] : -# 1495| r1495_3(POD_Derived) = Call[returnValue] : func:r1495_2 -# 1495| mu1495_4(unknown) = ^CallSideEffect : ~m? -# 1495| mu1495_5(POD_Derived) = Store[#temp0:0] : &:r0_5, r1495_3 -#-----| r0_6(glval) = ConvertToNonVirtualBase[POD_Derived : POD_Middle] : r0_5 -#-----| r0_7(glval) = ConvertToNonVirtualBase[POD_Middle : POD_Base] : r0_6 -# 1495| r1495_6(glval) = FieldAddress[x] : r0_7 -# 1495| r1495_7(int) = Load[?] : &:r1495_6, ~m? -# 1495| mu1495_8(int) = Store[x] : &:r1495_1, r1495_7 -# 1496| r1496_1(glval) = VariableAddress[f] : -#-----| r0_8(glval) = VariableAddress[#temp0:0] : +#-----| mu0_4(POD_Base) = Store[b] : &:r1495_1, r0_3 +# 1496| r1496_1(glval) = VariableAddress[#temp1496:9] : # 1496| r1496_2(glval) = FunctionAddress[returnValue] : # 1496| r1496_3(POD_Derived) = Call[returnValue] : func:r1496_2 # 1496| mu1496_4(unknown) = ^CallSideEffect : ~m? -# 1496| mu1496_5(POD_Derived) = Store[#temp0:0] : &:r0_8, r1496_3 +# 1496| mu1496_5(POD_Derived) = Store[#temp1496:9] : &:r1496_1, r1496_3 +# 1496| r1496_6(glval) = ConvertToNonVirtualBase[POD_Derived : POD_Middle] : r1496_1 +# 1496| r1496_7(glval) = ConvertToNonVirtualBase[POD_Middle : POD_Base] : r1496_6 +# 1496| r1496_8(POD_Base) = Load[?] : &:r1496_7, ~m? +# 1496| r1496_9(glval) = VariableAddress[b] : +# 1496| mu1496_10(POD_Base) = Store[b] : &:r1496_9, r1496_8 +# 1497| r1497_1(glval) = VariableAddress[x] : +#-----| r0_5(glval) = VariableAddress[#temp0:0] : +# 1497| r1497_2(glval) = FunctionAddress[returnValue] : +# 1497| r1497_3(POD_Derived) = Call[returnValue] : func:r1497_2 +# 1497| mu1497_4(unknown) = ^CallSideEffect : ~m? +# 1497| mu1497_5(POD_Derived) = Store[#temp0:0] : &:r0_5, r1497_3 +#-----| r0_6(glval) = ConvertToNonVirtualBase[POD_Derived : POD_Middle] : r0_5 +#-----| r0_7(glval) = ConvertToNonVirtualBase[POD_Middle : POD_Base] : r0_6 +# 1497| r1497_6(glval) = FieldAddress[x] : r0_7 +# 1497| r1497_7(int) = Load[?] : &:r1497_6, ~m? +# 1497| mu1497_8(int) = Store[x] : &:r1497_1, r1497_7 +# 1498| r1498_1(glval) = VariableAddress[f] : +#-----| r0_8(glval) = VariableAddress[#temp0:0] : +# 1498| r1498_2(glval) = FunctionAddress[returnValue] : +# 1498| r1498_3(POD_Derived) = Call[returnValue] : func:r1498_2 +# 1498| mu1498_4(unknown) = ^CallSideEffect : ~m? +# 1498| mu1498_5(POD_Derived) = Store[#temp0:0] : &:r0_8, r1498_3 #-----| r0_9(glval) = ConvertToNonVirtualBase[POD_Derived : POD_Middle] : r0_8 #-----| r0_10(glval) = ConvertToNonVirtualBase[POD_Middle : POD_Base] : r0_9 #-----| r0_11(glval) = Convert : r0_10 -# 1496| r1496_6(glval) = FunctionAddress[f] : -# 1496| r1496_7(float) = Call[f] : func:r1496_6, this:r0_11 -# 1496| mu1496_8(unknown) = ^CallSideEffect : ~m? +# 1498| r1498_6(glval) = FunctionAddress[f] : +# 1498| r1498_7(float) = Call[f] : func:r1498_6, this:r0_11 +# 1498| mu1498_8(unknown) = ^CallSideEffect : ~m? #-----| v0_12(void) = ^IndirectReadSideEffect[-1] : &:r0_11, ~m? -# 1496| mu1496_9(float) = Store[f] : &:r1496_1, r1496_7 -# 1497| v1497_1(void) = NoOp : -# 1492| v1492_4(void) = ReturnVoid : -# 1492| v1492_5(void) = AliasedUse : ~m? -# 1492| v1492_6(void) = ExitFunction : +# 1498| mu1498_9(float) = Store[f] : &:r1498_1, r1498_7 +# 1499| v1499_1(void) = NoOp : +# 1494| v1494_4(void) = ReturnVoid : +# 1494| v1494_5(void) = AliasedUse : ~m? +# 1494| v1494_6(void) = ExitFunction : -# 1500| void Inheritance_Test_B::~Inheritance_Test_B() -# 1500| Block 0 -# 1500| v1500_1(void) = EnterFunction : -# 1500| mu1500_2(unknown) = AliasedDefinition : -# 1500| mu1500_3(unknown) = InitializeNonLocal : -# 1500| r1500_4(glval) = VariableAddress[#this] : -# 1500| mu1500_5(glval) = InitializeParameter[#this] : &:r1500_4 -# 1500| r1500_6(glval) = Load[#this] : &:r1500_4, ~m? -# 1500| mu1500_7(Inheritance_Test_B) = InitializeIndirection[#this] : &:r1500_6 -# 1500| v1500_8(void) = NoOp : -# 1500| v1500_9(void) = ReturnIndirection[#this] : &:r1500_6, ~m? -# 1500| v1500_10(void) = ReturnVoid : -# 1500| v1500_11(void) = AliasedUse : ~m? -# 1500| v1500_12(void) = ExitFunction : +# 1502| void Inheritance_Test_B::~Inheritance_Test_B() +# 1502| Block 0 +# 1502| v1502_1(void) = EnterFunction : +# 1502| mu1502_2(unknown) = AliasedDefinition : +# 1502| mu1502_3(unknown) = InitializeNonLocal : +# 1502| r1502_4(glval) = VariableAddress[#this] : +# 1502| mu1502_5(glval) = InitializeParameter[#this] : &:r1502_4 +# 1502| r1502_6(glval) = Load[#this] : &:r1502_4, ~m? +# 1502| mu1502_7(Inheritance_Test_B) = InitializeIndirection[#this] : &:r1502_6 +# 1502| v1502_8(void) = NoOp : +# 1502| v1502_9(void) = ReturnIndirection[#this] : &:r1502_6, ~m? +# 1502| v1502_10(void) = ReturnVoid : +# 1502| v1502_11(void) = AliasedUse : ~m? +# 1502| v1502_12(void) = ExitFunction : -# 1506| void Inheritance_Test_A::Inheritance_Test_A() -# 1506| Block 0 -# 1506| v1506_1(void) = EnterFunction : -# 1506| mu1506_2(unknown) = AliasedDefinition : -# 1506| mu1506_3(unknown) = InitializeNonLocal : -# 1506| r1506_4(glval) = VariableAddress[#this] : -# 1506| mu1506_5(glval) = InitializeParameter[#this] : &:r1506_4 -# 1506| r1506_6(glval) = Load[#this] : &:r1506_4, ~m? -# 1506| mu1506_7(Inheritance_Test_A) = InitializeIndirection[#this] : &:r1506_6 -# 1506| r1506_8(glval) = FieldAddress[x] : r1506_6 -# 1506| r1506_9(int) = Constant[42] : -# 1506| mu1506_10(int) = Store[?] : &:r1506_8, r1506_9 -# 1507| r1507_1(int) = Constant[3] : -# 1507| r1507_2(glval) = VariableAddress[#this] : -# 1507| r1507_3(Inheritance_Test_A *) = Load[#this] : &:r1507_2, ~m? -# 1507| r1507_4(glval) = FieldAddress[y] : r1507_3 -# 1507| mu1507_5(int) = Store[?] : &:r1507_4, r1507_1 -# 1508| v1508_1(void) = NoOp : -# 1506| v1506_11(void) = ReturnIndirection[#this] : &:r1506_6, ~m? -# 1506| v1506_12(void) = ReturnVoid : -# 1506| v1506_13(void) = AliasedUse : ~m? -# 1506| v1506_14(void) = ExitFunction : +# 1508| void Inheritance_Test_A::Inheritance_Test_A() +# 1508| Block 0 +# 1508| v1508_1(void) = EnterFunction : +# 1508| mu1508_2(unknown) = AliasedDefinition : +# 1508| mu1508_3(unknown) = InitializeNonLocal : +# 1508| r1508_4(glval) = VariableAddress[#this] : +# 1508| mu1508_5(glval) = InitializeParameter[#this] : &:r1508_4 +# 1508| r1508_6(glval) = Load[#this] : &:r1508_4, ~m? +# 1508| mu1508_7(Inheritance_Test_A) = InitializeIndirection[#this] : &:r1508_6 +# 1508| r1508_8(glval) = FieldAddress[x] : r1508_6 +# 1508| r1508_9(int) = Constant[42] : +# 1508| mu1508_10(int) = Store[?] : &:r1508_8, r1508_9 +# 1509| r1509_1(int) = Constant[3] : +# 1509| r1509_2(glval) = VariableAddress[#this] : +# 1509| r1509_3(Inheritance_Test_A *) = Load[#this] : &:r1509_2, ~m? +# 1509| r1509_4(glval) = FieldAddress[y] : r1509_3 +# 1509| mu1509_5(int) = Store[?] : &:r1509_4, r1509_1 +# 1510| v1510_1(void) = NoOp : +# 1508| v1508_11(void) = ReturnIndirection[#this] : &:r1508_6, ~m? +# 1508| v1508_12(void) = ReturnVoid : +# 1508| v1508_13(void) = AliasedUse : ~m? +# 1508| v1508_14(void) = ExitFunction : -# 1511| void array_structured_binding() -# 1511| Block 0 -# 1511| v1511_1(void) = EnterFunction : -# 1511| mu1511_2(unknown) = AliasedDefinition : -# 1511| mu1511_3(unknown) = InitializeNonLocal : -# 1512| r1512_1(glval) = VariableAddress[xs] : -# 1512| mu1512_2(int[2]) = Uninitialized[xs] : &:r1512_1 -# 1512| r1512_3(int) = Constant[0] : -# 1512| r1512_4(glval) = PointerAdd[4] : r1512_1, r1512_3 -# 1512| r1512_5(int) = Constant[1] : -# 1512| mu1512_6(int) = Store[?] : &:r1512_4, r1512_5 -# 1512| r1512_7(int) = Constant[1] : -# 1512| r1512_8(glval) = PointerAdd[4] : r1512_1, r1512_7 -# 1512| r1512_9(int) = Constant[2] : -# 1512| mu1512_10(int) = Store[?] : &:r1512_8, r1512_9 -# 1515| r1515_1(glval) = VariableAddress[(unnamed local variable)] : -# 1515| r1515_2(glval) = VariableAddress[xs] : -# 1515| r1515_3(int(&)[2]) = CopyValue : r1515_2 -# 1515| mu1515_4(int(&)[2]) = Store[(unnamed local variable)] : &:r1515_1, r1515_3 -# 1515| r1515_5(glval) = VariableAddress[x0] : +# 1513| void array_structured_binding() +# 1513| Block 0 +# 1513| v1513_1(void) = EnterFunction : +# 1513| mu1513_2(unknown) = AliasedDefinition : +# 1513| mu1513_3(unknown) = InitializeNonLocal : +# 1514| r1514_1(glval) = VariableAddress[xs] : +# 1514| mu1514_2(int[2]) = Uninitialized[xs] : &:r1514_1 +# 1514| r1514_3(int) = Constant[0] : +# 1514| r1514_4(glval) = PointerAdd[4] : r1514_1, r1514_3 +# 1514| r1514_5(int) = Constant[1] : +# 1514| mu1514_6(int) = Store[?] : &:r1514_4, r1514_5 +# 1514| r1514_7(int) = Constant[1] : +# 1514| r1514_8(glval) = PointerAdd[4] : r1514_1, r1514_7 +# 1514| r1514_9(int) = Constant[2] : +# 1514| mu1514_10(int) = Store[?] : &:r1514_8, r1514_9 +# 1517| r1517_1(glval) = VariableAddress[(unnamed local variable)] : +# 1517| r1517_2(glval) = VariableAddress[xs] : +# 1517| r1517_3(int(&)[2]) = CopyValue : r1517_2 +# 1517| mu1517_4(int(&)[2]) = Store[(unnamed local variable)] : &:r1517_1, r1517_3 +# 1517| r1517_5(glval) = VariableAddress[x0] : #-----| r0_1(glval) = VariableAddress[(unnamed local variable)] : #-----| r0_2(int(&)[2]) = Load[(unnamed local variable)] : &:r0_1, ~m? #-----| r0_3(glval) = CopyValue : r0_2 #-----| r0_4(int *) = Convert : r0_3 #-----| r0_5(unsigned long) = Constant[0] : #-----| r0_6(glval) = PointerAdd[4] : r0_4, r0_5 -#-----| mu0_7(int &) = Store[x0] : &:r1515_5, r0_6 -# 1515| r1515_6(glval) = VariableAddress[x1] : +#-----| mu0_7(int &) = Store[x0] : &:r1517_5, r0_6 +# 1517| r1517_6(glval) = VariableAddress[x1] : #-----| r0_8(glval) = VariableAddress[(unnamed local variable)] : #-----| r0_9(int(&)[2]) = Load[(unnamed local variable)] : &:r0_8, ~m? #-----| r0_10(glval) = CopyValue : r0_9 #-----| r0_11(int *) = Convert : r0_10 #-----| r0_12(unsigned long) = Constant[1] : #-----| r0_13(glval) = PointerAdd[4] : r0_11, r0_12 -#-----| mu0_14(int &) = Store[x1] : &:r1515_6, r0_13 -# 1516| r1516_1(int) = Constant[3] : -# 1516| r1516_2(glval) = VariableAddress[x1] : -# 1516| r1516_3(int &) = Load[x1] : &:r1516_2, ~m? -# 1516| mu1516_4(int) = Store[?] : &:r1516_3, r1516_1 -# 1517| r1517_1(glval) = VariableAddress[rx1] : -# 1517| r1517_2(glval) = VariableAddress[x1] : -# 1517| r1517_3(int &) = Load[x1] : &:r1517_2, ~m? -# 1517| r1517_4(int &) = CopyValue : r1517_3 -# 1517| mu1517_5(int &) = Store[rx1] : &:r1517_1, r1517_4 -# 1518| r1518_1(glval) = VariableAddress[x] : +#-----| mu0_14(int &) = Store[x1] : &:r1517_6, r0_13 +# 1518| r1518_1(int) = Constant[3] : # 1518| r1518_2(glval) = VariableAddress[x1] : # 1518| r1518_3(int &) = Load[x1] : &:r1518_2, ~m? -# 1518| r1518_4(int) = Load[?] : &:r1518_3, ~m? -# 1518| mu1518_5(int) = Store[x] : &:r1518_1, r1518_4 -# 1522| r1522_1(glval) = VariableAddress[unnamed_local_variable] : -# 1522| r1522_2(glval) = VariableAddress[xs] : -# 1522| r1522_3(int(&)[2]) = CopyValue : r1522_2 -# 1522| mu1522_4(int(&)[2]) = Store[unnamed_local_variable] : &:r1522_1, r1522_3 -# 1523| r1523_1(glval) = VariableAddress[x0] : -# 1523| r1523_2(glval) = VariableAddress[unnamed_local_variable] : -# 1523| r1523_3(int(&)[2]) = Load[unnamed_local_variable] : &:r1523_2, ~m? -# 1523| r1523_4(glval) = CopyValue : r1523_3 -# 1523| r1523_5(int *) = Convert : r1523_4 -# 1523| r1523_6(int) = Constant[0] : -# 1523| r1523_7(glval) = PointerAdd[4] : r1523_5, r1523_6 -# 1523| r1523_8(int &) = CopyValue : r1523_7 -# 1523| mu1523_9(int &) = Store[x0] : &:r1523_1, r1523_8 -# 1524| r1524_1(glval) = VariableAddress[x1] : -# 1524| r1524_2(glval) = VariableAddress[unnamed_local_variable] : -# 1524| r1524_3(int(&)[2]) = Load[unnamed_local_variable] : &:r1524_2, ~m? -# 1524| r1524_4(glval) = CopyValue : r1524_3 -# 1524| r1524_5(int *) = Convert : r1524_4 -# 1524| r1524_6(int) = Constant[1] : -# 1524| r1524_7(glval) = PointerAdd[4] : r1524_5, r1524_6 -# 1524| r1524_8(int &) = CopyValue : r1524_7 -# 1524| mu1524_9(int &) = Store[x1] : &:r1524_1, r1524_8 -# 1525| r1525_1(int) = Constant[3] : -# 1525| r1525_2(glval) = VariableAddress[x1] : -# 1525| r1525_3(int &) = Load[x1] : &:r1525_2, ~m? -# 1525| r1525_4(glval) = CopyValue : r1525_3 -# 1525| mu1525_5(int) = Store[?] : &:r1525_4, r1525_1 -# 1526| r1526_1(glval) = VariableAddress[rx1] : -# 1526| r1526_2(glval) = VariableAddress[x1] : -# 1526| r1526_3(int &) = Load[x1] : &:r1526_2, ~m? -# 1526| r1526_4(glval) = CopyValue : r1526_3 -# 1526| r1526_5(int &) = CopyValue : r1526_4 -# 1526| mu1526_6(int &) = Store[rx1] : &:r1526_1, r1526_5 -# 1527| r1527_1(glval) = VariableAddress[x] : +# 1518| mu1518_4(int) = Store[?] : &:r1518_3, r1518_1 +# 1519| r1519_1(glval) = VariableAddress[rx1] : +# 1519| r1519_2(glval) = VariableAddress[x1] : +# 1519| r1519_3(int &) = Load[x1] : &:r1519_2, ~m? +# 1519| r1519_4(int &) = CopyValue : r1519_3 +# 1519| mu1519_5(int &) = Store[rx1] : &:r1519_1, r1519_4 +# 1520| r1520_1(glval) = VariableAddress[x] : +# 1520| r1520_2(glval) = VariableAddress[x1] : +# 1520| r1520_3(int &) = Load[x1] : &:r1520_2, ~m? +# 1520| r1520_4(int) = Load[?] : &:r1520_3, ~m? +# 1520| mu1520_5(int) = Store[x] : &:r1520_1, r1520_4 +# 1524| r1524_1(glval) = VariableAddress[unnamed_local_variable] : +# 1524| r1524_2(glval) = VariableAddress[xs] : +# 1524| r1524_3(int(&)[2]) = CopyValue : r1524_2 +# 1524| mu1524_4(int(&)[2]) = Store[unnamed_local_variable] : &:r1524_1, r1524_3 +# 1525| r1525_1(glval) = VariableAddress[x0] : +# 1525| r1525_2(glval) = VariableAddress[unnamed_local_variable] : +# 1525| r1525_3(int(&)[2]) = Load[unnamed_local_variable] : &:r1525_2, ~m? +# 1525| r1525_4(glval) = CopyValue : r1525_3 +# 1525| r1525_5(int *) = Convert : r1525_4 +# 1525| r1525_6(int) = Constant[0] : +# 1525| r1525_7(glval) = PointerAdd[4] : r1525_5, r1525_6 +# 1525| r1525_8(int &) = CopyValue : r1525_7 +# 1525| mu1525_9(int &) = Store[x0] : &:r1525_1, r1525_8 +# 1526| r1526_1(glval) = VariableAddress[x1] : +# 1526| r1526_2(glval) = VariableAddress[unnamed_local_variable] : +# 1526| r1526_3(int(&)[2]) = Load[unnamed_local_variable] : &:r1526_2, ~m? +# 1526| r1526_4(glval) = CopyValue : r1526_3 +# 1526| r1526_5(int *) = Convert : r1526_4 +# 1526| r1526_6(int) = Constant[1] : +# 1526| r1526_7(glval) = PointerAdd[4] : r1526_5, r1526_6 +# 1526| r1526_8(int &) = CopyValue : r1526_7 +# 1526| mu1526_9(int &) = Store[x1] : &:r1526_1, r1526_8 +# 1527| r1527_1(int) = Constant[3] : # 1527| r1527_2(glval) = VariableAddress[x1] : # 1527| r1527_3(int &) = Load[x1] : &:r1527_2, ~m? -# 1527| r1527_4(int) = Load[?] : &:r1527_3, ~m? -# 1527| mu1527_5(int) = Store[x] : &:r1527_1, r1527_4 -# 1529| v1529_1(void) = NoOp : -# 1511| v1511_4(void) = ReturnVoid : -# 1511| v1511_5(void) = AliasedUse : ~m? -# 1511| v1511_6(void) = ExitFunction : +# 1527| r1527_4(glval) = CopyValue : r1527_3 +# 1527| mu1527_5(int) = Store[?] : &:r1527_4, r1527_1 +# 1528| r1528_1(glval) = VariableAddress[rx1] : +# 1528| r1528_2(glval) = VariableAddress[x1] : +# 1528| r1528_3(int &) = Load[x1] : &:r1528_2, ~m? +# 1528| r1528_4(glval) = CopyValue : r1528_3 +# 1528| r1528_5(int &) = CopyValue : r1528_4 +# 1528| mu1528_6(int &) = Store[rx1] : &:r1528_1, r1528_5 +# 1529| r1529_1(glval) = VariableAddress[x] : +# 1529| r1529_2(glval) = VariableAddress[x1] : +# 1529| r1529_3(int &) = Load[x1] : &:r1529_2, ~m? +# 1529| r1529_4(int) = Load[?] : &:r1529_3, ~m? +# 1529| mu1529_5(int) = Store[x] : &:r1529_1, r1529_4 +# 1531| v1531_1(void) = NoOp : +# 1513| v1513_4(void) = ReturnVoid : +# 1513| v1513_5(void) = AliasedUse : ~m? +# 1513| v1513_6(void) = ExitFunction : -# 1531| void StructuredBindingDataMemberMemberStruct::StructuredBindingDataMemberMemberStruct() -# 1531| Block 0 -# 1531| v1531_1(void) = EnterFunction : -# 1531| mu1531_2(unknown) = AliasedDefinition : -# 1531| mu1531_3(unknown) = InitializeNonLocal : -# 1531| r1531_4(glval) = VariableAddress[#this] : -# 1531| mu1531_5(glval) = InitializeParameter[#this] : &:r1531_4 -# 1531| r1531_6(glval) = Load[#this] : &:r1531_4, ~m? -# 1531| mu1531_7(StructuredBindingDataMemberMemberStruct) = InitializeIndirection[#this] : &:r1531_6 -# 1531| v1531_8(void) = NoOp : -# 1531| v1531_9(void) = ReturnIndirection[#this] : &:r1531_6, ~m? -# 1531| v1531_10(void) = ReturnVoid : -# 1531| v1531_11(void) = AliasedUse : ~m? -# 1531| v1531_12(void) = ExitFunction : +# 1533| void StructuredBindingDataMemberMemberStruct::StructuredBindingDataMemberMemberStruct() +# 1533| Block 0 +# 1533| v1533_1(void) = EnterFunction : +# 1533| mu1533_2(unknown) = AliasedDefinition : +# 1533| mu1533_3(unknown) = InitializeNonLocal : +# 1533| r1533_4(glval) = VariableAddress[#this] : +# 1533| mu1533_5(glval) = InitializeParameter[#this] : &:r1533_4 +# 1533| r1533_6(glval) = Load[#this] : &:r1533_4, ~m? +# 1533| mu1533_7(StructuredBindingDataMemberMemberStruct) = InitializeIndirection[#this] : &:r1533_6 +# 1533| v1533_8(void) = NoOp : +# 1533| v1533_9(void) = ReturnIndirection[#this] : &:r1533_6, ~m? +# 1533| v1533_10(void) = ReturnVoid : +# 1533| v1533_11(void) = AliasedUse : ~m? +# 1533| v1533_12(void) = ExitFunction : -# 1535| void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() -# 1535| Block 0 -# 1535| v1535_1(void) = EnterFunction : -# 1535| mu1535_2(unknown) = AliasedDefinition : -# 1535| mu1535_3(unknown) = InitializeNonLocal : -# 1535| r1535_4(glval) = VariableAddress[#this] : -# 1535| mu1535_5(glval) = InitializeParameter[#this] : &:r1535_4 -# 1535| r1535_6(glval) = Load[#this] : &:r1535_4, ~m? -# 1535| mu1535_7(StructuredBindingDataMemberStruct) = InitializeIndirection[#this] : &:r1535_6 +# 1537| void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() +# 1537| Block 0 +# 1537| v1537_1(void) = EnterFunction : +# 1537| mu1537_2(unknown) = AliasedDefinition : +# 1537| mu1537_3(unknown) = InitializeNonLocal : +# 1537| r1537_4(glval) = VariableAddress[#this] : +# 1537| mu1537_5(glval) = InitializeParameter[#this] : &:r1537_4 +# 1537| r1537_6(glval) = Load[#this] : &:r1537_4, ~m? +# 1537| mu1537_7(StructuredBindingDataMemberStruct) = InitializeIndirection[#this] : &:r1537_6 #-----| Goto -> Block 2 -# 1535| Block 1 -# 1535| r1535_8(glval) = FieldAddress[m] : r1535_6 -# 1535| r1535_9(glval) = FunctionAddress[StructuredBindingDataMemberMemberStruct] : -# 1535| v1535_10(void) = Call[StructuredBindingDataMemberMemberStruct] : func:r1535_9, this:r1535_8 -# 1535| mu1535_11(unknown) = ^CallSideEffect : ~m? -# 1535| mu1535_12(StructuredBindingDataMemberMemberStruct) = ^IndirectMayWriteSideEffect[-1] : &:r1535_8 +# 1537| Block 1 +# 1537| r1537_8(glval) = FieldAddress[m] : r1537_6 +# 1537| r1537_9(glval) = FunctionAddress[StructuredBindingDataMemberMemberStruct] : +# 1537| v1537_10(void) = Call[StructuredBindingDataMemberMemberStruct] : func:r1537_9, this:r1537_8 +# 1537| mu1537_11(unknown) = ^CallSideEffect : ~m? +# 1537| mu1537_12(StructuredBindingDataMemberMemberStruct) = ^IndirectMayWriteSideEffect[-1] : &:r1537_8 #-----| Goto -> Block 2 -# 1535| Block 2 -# 1535| v1535_13(void) = NoOp : -# 1535| v1535_14(void) = ReturnIndirection[#this] : &:r1535_6, ~m? -# 1535| v1535_15(void) = ReturnVoid : -# 1535| v1535_16(void) = AliasedUse : ~m? -# 1535| v1535_17(void) = ExitFunction : +# 1537| Block 2 +# 1537| v1537_13(void) = NoOp : +# 1537| v1537_14(void) = ReturnIndirection[#this] : &:r1537_6, ~m? +# 1537| v1537_15(void) = ReturnVoid : +# 1537| v1537_16(void) = AliasedUse : ~m? +# 1537| v1537_17(void) = ExitFunction : -# 1535| void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct(StructuredBindingDataMemberStruct const&) -# 1535| Block 0 -# 1535| v1535_1(void) = EnterFunction : -# 1535| mu1535_2(unknown) = AliasedDefinition : -# 1535| mu1535_3(unknown) = InitializeNonLocal : -# 1535| r1535_4(glval) = VariableAddress[#this] : -# 1535| mu1535_5(glval) = InitializeParameter[#this] : &:r1535_4 -# 1535| r1535_6(glval) = Load[#this] : &:r1535_4, ~m? -# 1535| mu1535_7(StructuredBindingDataMemberStruct) = InitializeIndirection[#this] : &:r1535_6 +# 1537| void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct(StructuredBindingDataMemberStruct const&) +# 1537| Block 0 +# 1537| v1537_1(void) = EnterFunction : +# 1537| mu1537_2(unknown) = AliasedDefinition : +# 1537| mu1537_3(unknown) = InitializeNonLocal : +# 1537| r1537_4(glval) = VariableAddress[#this] : +# 1537| mu1537_5(glval) = InitializeParameter[#this] : &:r1537_4 +# 1537| r1537_6(glval) = Load[#this] : &:r1537_4, ~m? +# 1537| mu1537_7(StructuredBindingDataMemberStruct) = InitializeIndirection[#this] : &:r1537_6 #-----| r0_1(glval) = VariableAddress[(unnamed parameter 0)] : #-----| mu0_2(StructuredBindingDataMemberStruct &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r0_1, ~m? #-----| mu0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 1535| r1535_8(glval) = FieldAddress[i] : r1535_6 -# 1535| r1535_9(glval) = VariableAddress[(unnamed parameter 0)] : -# 1535| r1535_10(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1535_9, ~m? -# 1535| r1535_11(glval) = CopyValue : r1535_10 -# 1535| r1535_12(glval) = FieldAddress[i] : r1535_11 -# 1535| r1535_13(int) = Load[?] : &:r1535_12, ~m? -# 1535| mu1535_14(int) = Store[?] : &:r1535_8, r1535_13 -# 1535| r1535_15(glval) = FieldAddress[d] : r1535_6 -# 1535| r1535_16(glval) = VariableAddress[(unnamed parameter 0)] : -# 1535| r1535_17(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1535_16, ~m? -# 1535| r1535_18(glval) = CopyValue : r1535_17 -# 1535| r1535_19(glval) = FieldAddress[d] : r1535_18 -# 1535| r1535_20(double) = Load[?] : &:r1535_19, ~m? -# 1535| mu1535_21(double) = Store[?] : &:r1535_15, r1535_20 -# 1535| r1535_22(glval) = FieldAddress[b] : r1535_6 -# 1535| r1535_23(glval) = VariableAddress[(unnamed parameter 0)] : -# 1535| r1535_24(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1535_23, ~m? -# 1535| r1535_25(glval) = CopyValue : r1535_24 -# 1535| r1535_26(glval) = FieldAddress[b] : r1535_25 -# 1535| r1535_27(unsigned int) = Load[?] : &:r1535_26, ~m? -# 1535| mu1535_28(unsigned int) = Store[?] : &:r1535_22, r1535_27 -# 1535| r1535_29(glval) = FieldAddress[r] : r1535_6 -# 1535| r1535_30(glval) = VariableAddress[(unnamed parameter 0)] : -# 1535| r1535_31(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1535_30, ~m? -# 1535| r1535_32(glval) = CopyValue : r1535_31 -# 1535| r1535_33(glval) = FieldAddress[r] : r1535_32 -# 1535| r1535_34(int &) = Load[?] : &:r1535_33, ~m? -# 1535| mu1535_35(int &) = Store[?] : &:r1535_29, r1535_34 -# 1535| r1535_36(glval) = FieldAddress[p] : r1535_6 -# 1535| r1535_37(glval) = VariableAddress[(unnamed parameter 0)] : -# 1535| r1535_38(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1535_37, ~m? -# 1535| r1535_39(glval) = CopyValue : r1535_38 -# 1535| r1535_40(glval) = FieldAddress[p] : r1535_39 -# 1535| r1535_41(int *) = Load[?] : &:r1535_40, ~m? -# 1535| mu1535_42(int *) = Store[?] : &:r1535_36, r1535_41 -# 1535| r1535_43(glval) = FieldAddress[xs] : r1535_6 -# 1535| r1535_44(glval) = VariableAddress[(unnamed parameter 0)] : -# 1535| r1535_45(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1535_44, ~m? -# 1535| r1535_46(glval) = CopyValue : r1535_45 -# 1535| r1535_47(glval) = FieldAddress[xs] : r1535_46 -# 1535| r1535_48(int[2]) = Load[?] : &:r1535_47, ~m? -# 1535| mu1535_49(int[2]) = Store[?] : &:r1535_43, r1535_48 -# 1535| r1535_50(glval) = FieldAddress[r_alt] : r1535_6 -# 1535| r1535_51(glval) = VariableAddress[(unnamed parameter 0)] : -# 1535| r1535_52(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1535_51, ~m? -# 1535| r1535_53(glval) = CopyValue : r1535_52 -# 1535| r1535_54(glval) = FieldAddress[r_alt] : r1535_53 -# 1535| r1535_55(int &) = Load[?] : &:r1535_54, ~m? -# 1535| mu1535_56(int &) = Store[?] : &:r1535_50, r1535_55 -# 1535| r1535_57(glval) = FieldAddress[m] : r1535_6 -# 1535| r1535_58(glval) = VariableAddress[(unnamed parameter 0)] : -# 1535| r1535_59(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1535_58, ~m? -# 1535| r1535_60(glval) = CopyValue : r1535_59 -# 1535| r1535_61(glval) = FieldAddress[m] : r1535_60 -# 1535| r1535_62(StructuredBindingDataMemberMemberStruct) = Load[?] : &:r1535_61, ~m? -# 1535| mu1535_63(StructuredBindingDataMemberMemberStruct) = Store[?] : &:r1535_57, r1535_62 -# 1535| v1535_64(void) = NoOp : -# 1535| v1535_65(void) = ReturnIndirection[#this] : &:r1535_6, ~m? +# 1537| r1537_8(glval) = FieldAddress[i] : r1537_6 +# 1537| r1537_9(glval) = VariableAddress[(unnamed parameter 0)] : +# 1537| r1537_10(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1537_9, ~m? +# 1537| r1537_11(glval) = CopyValue : r1537_10 +# 1537| r1537_12(glval) = FieldAddress[i] : r1537_11 +# 1537| r1537_13(int) = Load[?] : &:r1537_12, ~m? +# 1537| mu1537_14(int) = Store[?] : &:r1537_8, r1537_13 +# 1537| r1537_15(glval) = FieldAddress[d] : r1537_6 +# 1537| r1537_16(glval) = VariableAddress[(unnamed parameter 0)] : +# 1537| r1537_17(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1537_16, ~m? +# 1537| r1537_18(glval) = CopyValue : r1537_17 +# 1537| r1537_19(glval) = FieldAddress[d] : r1537_18 +# 1537| r1537_20(double) = Load[?] : &:r1537_19, ~m? +# 1537| mu1537_21(double) = Store[?] : &:r1537_15, r1537_20 +# 1537| r1537_22(glval) = FieldAddress[b] : r1537_6 +# 1537| r1537_23(glval) = VariableAddress[(unnamed parameter 0)] : +# 1537| r1537_24(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1537_23, ~m? +# 1537| r1537_25(glval) = CopyValue : r1537_24 +# 1537| r1537_26(glval) = FieldAddress[b] : r1537_25 +# 1537| r1537_27(unsigned int) = Load[?] : &:r1537_26, ~m? +# 1537| mu1537_28(unsigned int) = Store[?] : &:r1537_22, r1537_27 +# 1537| r1537_29(glval) = FieldAddress[r] : r1537_6 +# 1537| r1537_30(glval) = VariableAddress[(unnamed parameter 0)] : +# 1537| r1537_31(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1537_30, ~m? +# 1537| r1537_32(glval) = CopyValue : r1537_31 +# 1537| r1537_33(glval) = FieldAddress[r] : r1537_32 +# 1537| r1537_34(int &) = Load[?] : &:r1537_33, ~m? +# 1537| mu1537_35(int &) = Store[?] : &:r1537_29, r1537_34 +# 1537| r1537_36(glval) = FieldAddress[p] : r1537_6 +# 1537| r1537_37(glval) = VariableAddress[(unnamed parameter 0)] : +# 1537| r1537_38(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1537_37, ~m? +# 1537| r1537_39(glval) = CopyValue : r1537_38 +# 1537| r1537_40(glval) = FieldAddress[p] : r1537_39 +# 1537| r1537_41(int *) = Load[?] : &:r1537_40, ~m? +# 1537| mu1537_42(int *) = Store[?] : &:r1537_36, r1537_41 +# 1537| r1537_43(glval) = FieldAddress[xs] : r1537_6 +# 1537| r1537_44(glval) = VariableAddress[(unnamed parameter 0)] : +# 1537| r1537_45(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1537_44, ~m? +# 1537| r1537_46(glval) = CopyValue : r1537_45 +# 1537| r1537_47(glval) = FieldAddress[xs] : r1537_46 +# 1537| r1537_48(int[2]) = Load[?] : &:r1537_47, ~m? +# 1537| mu1537_49(int[2]) = Store[?] : &:r1537_43, r1537_48 +# 1537| r1537_50(glval) = FieldAddress[r_alt] : r1537_6 +# 1537| r1537_51(glval) = VariableAddress[(unnamed parameter 0)] : +# 1537| r1537_52(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1537_51, ~m? +# 1537| r1537_53(glval) = CopyValue : r1537_52 +# 1537| r1537_54(glval) = FieldAddress[r_alt] : r1537_53 +# 1537| r1537_55(int &) = Load[?] : &:r1537_54, ~m? +# 1537| mu1537_56(int &) = Store[?] : &:r1537_50, r1537_55 +# 1537| r1537_57(glval) = FieldAddress[m] : r1537_6 +# 1537| r1537_58(glval) = VariableAddress[(unnamed parameter 0)] : +# 1537| r1537_59(StructuredBindingDataMemberStruct &) = Load[(unnamed parameter 0)] : &:r1537_58, ~m? +# 1537| r1537_60(glval) = CopyValue : r1537_59 +# 1537| r1537_61(glval) = FieldAddress[m] : r1537_60 +# 1537| r1537_62(StructuredBindingDataMemberMemberStruct) = Load[?] : &:r1537_61, ~m? +# 1537| mu1537_63(StructuredBindingDataMemberMemberStruct) = Store[?] : &:r1537_57, r1537_62 +# 1537| v1537_64(void) = NoOp : +# 1537| v1537_65(void) = ReturnIndirection[#this] : &:r1537_6, ~m? #-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, ~m? -# 1535| v1535_66(void) = ReturnVoid : -# 1535| v1535_67(void) = AliasedUse : ~m? -# 1535| v1535_68(void) = ExitFunction : +# 1537| v1537_66(void) = ReturnVoid : +# 1537| v1537_67(void) = AliasedUse : ~m? +# 1537| v1537_68(void) = ExitFunction : -# 1548| void data_member_structured_binding() -# 1548| Block 0 -# 1548| v1548_1(void) = EnterFunction : -# 1548| mu1548_2(unknown) = AliasedDefinition : -# 1548| mu1548_3(unknown) = InitializeNonLocal : -# 1549| r1549_1(glval) = VariableAddress[s] : -# 1549| mu1549_2(StructuredBindingDataMemberStruct) = Uninitialized[s] : &:r1549_1 -# 1549| r1549_3(glval) = FunctionAddress[StructuredBindingDataMemberStruct] : -# 1549| v1549_4(void) = Call[StructuredBindingDataMemberStruct] : func:r1549_3, this:r1549_1 -# 1549| mu1549_5(unknown) = ^CallSideEffect : ~m? -# 1549| mu1549_6(StructuredBindingDataMemberStruct) = ^IndirectMayWriteSideEffect[-1] : &:r1549_1 -# 1552| r1552_1(glval) = VariableAddress[(unnamed local variable)] : -# 1552| r1552_2(glval) = VariableAddress[s] : -# 1552| r1552_3(StructuredBindingDataMemberStruct) = Load[s] : &:r1552_2, ~m? -# 1552| mu1552_4(StructuredBindingDataMemberStruct) = Store[(unnamed local variable)] : &:r1552_1, r1552_3 -# 1552| r1552_5(glval) = VariableAddress[i] : -# 1552| r1552_6(glval) = VariableAddress[(unnamed local variable)] : -# 1552| r1552_7(glval) = FieldAddress[i] : r1552_6 -# 1552| mu1552_8(int &) = Store[i] : &:r1552_5, r1552_7 -# 1552| r1552_9(glval) = VariableAddress[d] : -# 1552| r1552_10(glval) = VariableAddress[(unnamed local variable)] : -# 1552| r1552_11(glval) = FieldAddress[d] : r1552_10 -# 1552| mu1552_12(double &) = Store[d] : &:r1552_9, r1552_11 -# 1552| r1552_13(glval) = VariableAddress[b] : -# 1552| r1552_14(glval) = VariableAddress[(unnamed local variable)] : -# 1552| r1552_15(glval) = FieldAddress[b] : r1552_14 -# 1552| mu1552_16(unsigned int &) = Store[b] : &:r1552_13, r1552_15 -# 1552| r1552_17(glval) = VariableAddress[r] : -# 1552| r1552_18(glval) = VariableAddress[(unnamed local variable)] : -# 1552| r1552_19(glval) = FieldAddress[r] : r1552_18 -# 1552| r1552_20(int &) = Load[?] : &:r1552_19, ~m? -# 1552| r1552_21(glval) = CopyValue : r1552_20 -# 1552| mu1552_22(int &) = Store[r] : &:r1552_17, r1552_21 -# 1552| r1552_23(glval) = VariableAddress[p] : -# 1552| r1552_24(glval) = VariableAddress[(unnamed local variable)] : -# 1552| r1552_25(glval) = FieldAddress[p] : r1552_24 -# 1552| mu1552_26(int *&) = Store[p] : &:r1552_23, r1552_25 -# 1552| r1552_27(glval) = VariableAddress[xs] : -# 1552| r1552_28(glval) = VariableAddress[(unnamed local variable)] : -# 1552| r1552_29(glval) = FieldAddress[xs] : r1552_28 -# 1552| mu1552_30(int(&)[2]) = Store[xs] : &:r1552_27, r1552_29 -# 1552| r1552_31(glval) = VariableAddress[r_alt] : -# 1552| r1552_32(glval) = VariableAddress[(unnamed local variable)] : -# 1552| r1552_33(glval) = FieldAddress[r_alt] : r1552_32 -# 1552| r1552_34(int &) = Load[?] : &:r1552_33, ~m? -# 1552| r1552_35(glval) = CopyValue : r1552_34 -# 1552| mu1552_36(int &) = Store[r_alt] : &:r1552_31, r1552_35 -# 1552| r1552_37(glval) = VariableAddress[m] : -# 1552| r1552_38(glval) = VariableAddress[(unnamed local variable)] : -# 1552| r1552_39(glval) = FieldAddress[m] : r1552_38 -# 1552| mu1552_40(StructuredBindingDataMemberMemberStruct &) = Store[m] : &:r1552_37, r1552_39 -# 1553| r1553_1(double) = Constant[4.0] : -# 1553| r1553_2(glval) = VariableAddress[d] : -# 1553| r1553_3(double &) = Load[d] : &:r1553_2, ~m? -# 1553| mu1553_4(double) = Store[?] : &:r1553_3, r1553_1 -# 1554| r1554_1(glval) = VariableAddress[rd] : -# 1554| r1554_2(glval) = VariableAddress[d] : -# 1554| r1554_3(double &) = Load[d] : &:r1554_2, ~m? -# 1554| r1554_4(double &) = CopyValue : r1554_3 -# 1554| mu1554_5(double &) = Store[rd] : &:r1554_1, r1554_4 -# 1555| r1555_1(glval) = VariableAddress[v] : -# 1555| r1555_2(glval) = VariableAddress[i] : -# 1555| r1555_3(int &) = Load[i] : &:r1555_2, ~m? -# 1555| r1555_4(int) = Load[?] : &:r1555_3, ~m? -# 1555| mu1555_5(int) = Store[v] : &:r1555_1, r1555_4 -# 1556| r1556_1(int) = Constant[5] : -# 1556| r1556_2(glval) = VariableAddress[r] : -# 1556| r1556_3(int &) = Load[r] : &:r1556_2, ~m? -# 1556| mu1556_4(int) = Store[?] : &:r1556_3, r1556_1 -# 1557| r1557_1(int) = Constant[6] : -# 1557| r1557_2(glval) = VariableAddress[p] : -# 1557| r1557_3(int *&) = Load[p] : &:r1557_2, ~m? -# 1557| r1557_4(int *) = Load[?] : &:r1557_3, ~m? -# 1557| r1557_5(glval) = CopyValue : r1557_4 -# 1557| mu1557_6(int) = Store[?] : &:r1557_5, r1557_1 -# 1558| r1558_1(glval) = VariableAddress[rr] : +# 1550| void data_member_structured_binding() +# 1550| Block 0 +# 1550| v1550_1(void) = EnterFunction : +# 1550| mu1550_2(unknown) = AliasedDefinition : +# 1550| mu1550_3(unknown) = InitializeNonLocal : +# 1551| r1551_1(glval) = VariableAddress[s] : +# 1551| mu1551_2(StructuredBindingDataMemberStruct) = Uninitialized[s] : &:r1551_1 +# 1551| r1551_3(glval) = FunctionAddress[StructuredBindingDataMemberStruct] : +# 1551| v1551_4(void) = Call[StructuredBindingDataMemberStruct] : func:r1551_3, this:r1551_1 +# 1551| mu1551_5(unknown) = ^CallSideEffect : ~m? +# 1551| mu1551_6(StructuredBindingDataMemberStruct) = ^IndirectMayWriteSideEffect[-1] : &:r1551_1 +# 1554| r1554_1(glval) = VariableAddress[(unnamed local variable)] : +# 1554| r1554_2(glval) = VariableAddress[s] : +# 1554| r1554_3(StructuredBindingDataMemberStruct) = Load[s] : &:r1554_2, ~m? +# 1554| mu1554_4(StructuredBindingDataMemberStruct) = Store[(unnamed local variable)] : &:r1554_1, r1554_3 +# 1554| r1554_5(glval) = VariableAddress[i] : +# 1554| r1554_6(glval) = VariableAddress[(unnamed local variable)] : +# 1554| r1554_7(glval) = FieldAddress[i] : r1554_6 +# 1554| mu1554_8(int &) = Store[i] : &:r1554_5, r1554_7 +# 1554| r1554_9(glval) = VariableAddress[d] : +# 1554| r1554_10(glval) = VariableAddress[(unnamed local variable)] : +# 1554| r1554_11(glval) = FieldAddress[d] : r1554_10 +# 1554| mu1554_12(double &) = Store[d] : &:r1554_9, r1554_11 +# 1554| r1554_13(glval) = VariableAddress[b] : +# 1554| r1554_14(glval) = VariableAddress[(unnamed local variable)] : +# 1554| r1554_15(glval) = FieldAddress[b] : r1554_14 +# 1554| mu1554_16(unsigned int &) = Store[b] : &:r1554_13, r1554_15 +# 1554| r1554_17(glval) = VariableAddress[r] : +# 1554| r1554_18(glval) = VariableAddress[(unnamed local variable)] : +# 1554| r1554_19(glval) = FieldAddress[r] : r1554_18 +# 1554| r1554_20(int &) = Load[?] : &:r1554_19, ~m? +# 1554| r1554_21(glval) = CopyValue : r1554_20 +# 1554| mu1554_22(int &) = Store[r] : &:r1554_17, r1554_21 +# 1554| r1554_23(glval) = VariableAddress[p] : +# 1554| r1554_24(glval) = VariableAddress[(unnamed local variable)] : +# 1554| r1554_25(glval) = FieldAddress[p] : r1554_24 +# 1554| mu1554_26(int *&) = Store[p] : &:r1554_23, r1554_25 +# 1554| r1554_27(glval) = VariableAddress[xs] : +# 1554| r1554_28(glval) = VariableAddress[(unnamed local variable)] : +# 1554| r1554_29(glval) = FieldAddress[xs] : r1554_28 +# 1554| mu1554_30(int(&)[2]) = Store[xs] : &:r1554_27, r1554_29 +# 1554| r1554_31(glval) = VariableAddress[r_alt] : +# 1554| r1554_32(glval) = VariableAddress[(unnamed local variable)] : +# 1554| r1554_33(glval) = FieldAddress[r_alt] : r1554_32 +# 1554| r1554_34(int &) = Load[?] : &:r1554_33, ~m? +# 1554| r1554_35(glval) = CopyValue : r1554_34 +# 1554| mu1554_36(int &) = Store[r_alt] : &:r1554_31, r1554_35 +# 1554| r1554_37(glval) = VariableAddress[m] : +# 1554| r1554_38(glval) = VariableAddress[(unnamed local variable)] : +# 1554| r1554_39(glval) = FieldAddress[m] : r1554_38 +# 1554| mu1554_40(StructuredBindingDataMemberMemberStruct &) = Store[m] : &:r1554_37, r1554_39 +# 1555| r1555_1(double) = Constant[4.0] : +# 1555| r1555_2(glval) = VariableAddress[d] : +# 1555| r1555_3(double &) = Load[d] : &:r1555_2, ~m? +# 1555| mu1555_4(double) = Store[?] : &:r1555_3, r1555_1 +# 1556| r1556_1(glval) = VariableAddress[rd] : +# 1556| r1556_2(glval) = VariableAddress[d] : +# 1556| r1556_3(double &) = Load[d] : &:r1556_2, ~m? +# 1556| r1556_4(double &) = CopyValue : r1556_3 +# 1556| mu1556_5(double &) = Store[rd] : &:r1556_1, r1556_4 +# 1557| r1557_1(glval) = VariableAddress[v] : +# 1557| r1557_2(glval) = VariableAddress[i] : +# 1557| r1557_3(int &) = Load[i] : &:r1557_2, ~m? +# 1557| r1557_4(int) = Load[?] : &:r1557_3, ~m? +# 1557| mu1557_5(int) = Store[v] : &:r1557_1, r1557_4 +# 1558| r1558_1(int) = Constant[5] : # 1558| r1558_2(glval) = VariableAddress[r] : # 1558| r1558_3(int &) = Load[r] : &:r1558_2, ~m? -# 1558| r1558_4(int &) = CopyValue : r1558_3 -# 1558| mu1558_5(int &) = Store[rr] : &:r1558_1, r1558_4 -# 1559| r1559_1(glval) = VariableAddress[pr] : -# 1559| r1559_2(glval) = VariableAddress[r] : -# 1559| r1559_3(int &) = Load[r] : &:r1559_2, ~m? -# 1559| r1559_4(int *) = CopyValue : r1559_3 -# 1559| mu1559_5(int *) = Store[pr] : &:r1559_1, r1559_4 -# 1560| r1560_1(glval) = VariableAddress[w] : +# 1558| mu1558_4(int) = Store[?] : &:r1558_3, r1558_1 +# 1559| r1559_1(int) = Constant[6] : +# 1559| r1559_2(glval) = VariableAddress[p] : +# 1559| r1559_3(int *&) = Load[p] : &:r1559_2, ~m? +# 1559| r1559_4(int *) = Load[?] : &:r1559_3, ~m? +# 1559| r1559_5(glval) = CopyValue : r1559_4 +# 1559| mu1559_6(int) = Store[?] : &:r1559_5, r1559_1 +# 1560| r1560_1(glval) = VariableAddress[rr] : # 1560| r1560_2(glval) = VariableAddress[r] : # 1560| r1560_3(int &) = Load[r] : &:r1560_2, ~m? -# 1560| r1560_4(int) = Load[?] : &:r1560_3, ~m? -# 1560| mu1560_5(int) = Store[w] : &:r1560_1, r1560_4 -# 1564| r1564_1(glval) = VariableAddress[unnamed_local_variable] : -# 1564| r1564_2(glval) = VariableAddress[s] : -# 1564| r1564_3(StructuredBindingDataMemberStruct) = Load[s] : &:r1564_2, ~m? -# 1564| mu1564_4(StructuredBindingDataMemberStruct) = Store[unnamed_local_variable] : &:r1564_1, r1564_3 -# 1565| r1565_1(glval) = VariableAddress[i] : -# 1565| r1565_2(glval) = VariableAddress[unnamed_local_variable] : -# 1565| r1565_3(glval) = FieldAddress[i] : r1565_2 -# 1565| r1565_4(int &) = CopyValue : r1565_3 -# 1565| mu1565_5(int &) = Store[i] : &:r1565_1, r1565_4 -# 1566| r1566_1(glval) = VariableAddress[d] : -# 1566| r1566_2(glval) = VariableAddress[unnamed_local_variable] : -# 1566| r1566_3(glval) = FieldAddress[d] : r1566_2 -# 1566| r1566_4(double &) = CopyValue : r1566_3 -# 1566| mu1566_5(double &) = Store[d] : &:r1566_1, r1566_4 -# 1568| r1568_1(glval) = VariableAddress[r] : +# 1560| r1560_4(int &) = CopyValue : r1560_3 +# 1560| mu1560_5(int &) = Store[rr] : &:r1560_1, r1560_4 +# 1561| r1561_1(glval) = VariableAddress[pr] : +# 1561| r1561_2(glval) = VariableAddress[r] : +# 1561| r1561_3(int &) = Load[r] : &:r1561_2, ~m? +# 1561| r1561_4(int *) = CopyValue : r1561_3 +# 1561| mu1561_5(int *) = Store[pr] : &:r1561_1, r1561_4 +# 1562| r1562_1(glval) = VariableAddress[w] : +# 1562| r1562_2(glval) = VariableAddress[r] : +# 1562| r1562_3(int &) = Load[r] : &:r1562_2, ~m? +# 1562| r1562_4(int) = Load[?] : &:r1562_3, ~m? +# 1562| mu1562_5(int) = Store[w] : &:r1562_1, r1562_4 +# 1566| r1566_1(glval) = VariableAddress[unnamed_local_variable] : +# 1566| r1566_2(glval) = VariableAddress[s] : +# 1566| r1566_3(StructuredBindingDataMemberStruct) = Load[s] : &:r1566_2, ~m? +# 1566| mu1566_4(StructuredBindingDataMemberStruct) = Store[unnamed_local_variable] : &:r1566_1, r1566_3 +# 1567| r1567_1(glval) = VariableAddress[i] : +# 1567| r1567_2(glval) = VariableAddress[unnamed_local_variable] : +# 1567| r1567_3(glval) = FieldAddress[i] : r1567_2 +# 1567| r1567_4(int &) = CopyValue : r1567_3 +# 1567| mu1567_5(int &) = Store[i] : &:r1567_1, r1567_4 +# 1568| r1568_1(glval) = VariableAddress[d] : # 1568| r1568_2(glval) = VariableAddress[unnamed_local_variable] : -# 1568| r1568_3(glval) = FieldAddress[r] : r1568_2 -# 1568| r1568_4(int &) = Load[?] : &:r1568_3, ~m? -# 1568| r1568_5(glval) = CopyValue : r1568_4 -# 1568| r1568_6(int &) = CopyValue : r1568_5 -# 1568| mu1568_7(int &) = Store[r] : &:r1568_1, r1568_6 -# 1569| r1569_1(glval) = VariableAddress[p] : -# 1569| r1569_2(glval) = VariableAddress[unnamed_local_variable] : -# 1569| r1569_3(glval) = FieldAddress[p] : r1569_2 -# 1569| r1569_4(int *&) = CopyValue : r1569_3 -# 1569| mu1569_5(int *&) = Store[p] : &:r1569_1, r1569_4 -# 1570| r1570_1(double) = Constant[4.0] : -# 1570| r1570_2(glval) = VariableAddress[d] : -# 1570| r1570_3(double &) = Load[d] : &:r1570_2, ~m? -# 1570| r1570_4(glval) = CopyValue : r1570_3 -# 1570| mu1570_5(double) = Store[?] : &:r1570_4, r1570_1 -# 1571| r1571_1(glval) = VariableAddress[rd] : -# 1571| r1571_2(glval) = VariableAddress[d] : -# 1571| r1571_3(double &) = Load[d] : &:r1571_2, ~m? -# 1571| r1571_4(glval) = CopyValue : r1571_3 -# 1571| r1571_5(double &) = CopyValue : r1571_4 -# 1571| mu1571_6(double &) = Store[rd] : &:r1571_1, r1571_5 -# 1572| r1572_1(glval) = VariableAddress[v] : -# 1572| r1572_2(glval) = VariableAddress[i] : -# 1572| r1572_3(int &) = Load[i] : &:r1572_2, ~m? -# 1572| r1572_4(int) = Load[?] : &:r1572_3, ~m? -# 1572| mu1572_5(int) = Store[v] : &:r1572_1, r1572_4 -# 1573| r1573_1(int) = Constant[5] : -# 1573| r1573_2(glval) = VariableAddress[r] : -# 1573| r1573_3(int &) = Load[r] : &:r1573_2, ~m? -# 1573| r1573_4(glval) = CopyValue : r1573_3 -# 1573| mu1573_5(int) = Store[?] : &:r1573_4, r1573_1 -# 1574| r1574_1(int) = Constant[6] : -# 1574| r1574_2(glval) = VariableAddress[p] : -# 1574| r1574_3(int *&) = Load[p] : &:r1574_2, ~m? -# 1574| r1574_4(int *) = Load[?] : &:r1574_3, ~m? -# 1574| r1574_5(glval) = CopyValue : r1574_4 -# 1574| mu1574_6(int) = Store[?] : &:r1574_5, r1574_1 -# 1575| r1575_1(glval) = VariableAddress[rr] : +# 1568| r1568_3(glval) = FieldAddress[d] : r1568_2 +# 1568| r1568_4(double &) = CopyValue : r1568_3 +# 1568| mu1568_5(double &) = Store[d] : &:r1568_1, r1568_4 +# 1570| r1570_1(glval) = VariableAddress[r] : +# 1570| r1570_2(glval) = VariableAddress[unnamed_local_variable] : +# 1570| r1570_3(glval) = FieldAddress[r] : r1570_2 +# 1570| r1570_4(int &) = Load[?] : &:r1570_3, ~m? +# 1570| r1570_5(glval) = CopyValue : r1570_4 +# 1570| r1570_6(int &) = CopyValue : r1570_5 +# 1570| mu1570_7(int &) = Store[r] : &:r1570_1, r1570_6 +# 1571| r1571_1(glval) = VariableAddress[p] : +# 1571| r1571_2(glval) = VariableAddress[unnamed_local_variable] : +# 1571| r1571_3(glval) = FieldAddress[p] : r1571_2 +# 1571| r1571_4(int *&) = CopyValue : r1571_3 +# 1571| mu1571_5(int *&) = Store[p] : &:r1571_1, r1571_4 +# 1572| r1572_1(double) = Constant[4.0] : +# 1572| r1572_2(glval) = VariableAddress[d] : +# 1572| r1572_3(double &) = Load[d] : &:r1572_2, ~m? +# 1572| r1572_4(glval) = CopyValue : r1572_3 +# 1572| mu1572_5(double) = Store[?] : &:r1572_4, r1572_1 +# 1573| r1573_1(glval) = VariableAddress[rd] : +# 1573| r1573_2(glval) = VariableAddress[d] : +# 1573| r1573_3(double &) = Load[d] : &:r1573_2, ~m? +# 1573| r1573_4(glval) = CopyValue : r1573_3 +# 1573| r1573_5(double &) = CopyValue : r1573_4 +# 1573| mu1573_6(double &) = Store[rd] : &:r1573_1, r1573_5 +# 1574| r1574_1(glval) = VariableAddress[v] : +# 1574| r1574_2(glval) = VariableAddress[i] : +# 1574| r1574_3(int &) = Load[i] : &:r1574_2, ~m? +# 1574| r1574_4(int) = Load[?] : &:r1574_3, ~m? +# 1574| mu1574_5(int) = Store[v] : &:r1574_1, r1574_4 +# 1575| r1575_1(int) = Constant[5] : # 1575| r1575_2(glval) = VariableAddress[r] : # 1575| r1575_3(int &) = Load[r] : &:r1575_2, ~m? # 1575| r1575_4(glval) = CopyValue : r1575_3 -# 1575| r1575_5(int &) = CopyValue : r1575_4 -# 1575| mu1575_6(int &) = Store[rr] : &:r1575_1, r1575_5 -# 1576| r1576_1(glval) = VariableAddress[pr] : -# 1576| r1576_2(glval) = VariableAddress[r] : -# 1576| r1576_3(int &) = Load[r] : &:r1576_2, ~m? -# 1576| r1576_4(glval) = CopyValue : r1576_3 -# 1576| r1576_5(int *) = CopyValue : r1576_4 -# 1576| mu1576_6(int *) = Store[pr] : &:r1576_1, r1576_5 -# 1577| r1577_1(glval) = VariableAddress[w] : +# 1575| mu1575_5(int) = Store[?] : &:r1575_4, r1575_1 +# 1576| r1576_1(int) = Constant[6] : +# 1576| r1576_2(glval) = VariableAddress[p] : +# 1576| r1576_3(int *&) = Load[p] : &:r1576_2, ~m? +# 1576| r1576_4(int *) = Load[?] : &:r1576_3, ~m? +# 1576| r1576_5(glval) = CopyValue : r1576_4 +# 1576| mu1576_6(int) = Store[?] : &:r1576_5, r1576_1 +# 1577| r1577_1(glval) = VariableAddress[rr] : # 1577| r1577_2(glval) = VariableAddress[r] : # 1577| r1577_3(int &) = Load[r] : &:r1577_2, ~m? -# 1577| r1577_4(int) = Load[?] : &:r1577_3, ~m? -# 1577| mu1577_5(int) = Store[w] : &:r1577_1, r1577_4 -# 1579| v1579_1(void) = NoOp : -# 1548| v1548_4(void) = ReturnVoid : -# 1548| v1548_5(void) = AliasedUse : ~m? -# 1548| v1548_6(void) = ExitFunction : +# 1577| r1577_4(glval) = CopyValue : r1577_3 +# 1577| r1577_5(int &) = CopyValue : r1577_4 +# 1577| mu1577_6(int &) = Store[rr] : &:r1577_1, r1577_5 +# 1578| r1578_1(glval) = VariableAddress[pr] : +# 1578| r1578_2(glval) = VariableAddress[r] : +# 1578| r1578_3(int &) = Load[r] : &:r1578_2, ~m? +# 1578| r1578_4(glval) = CopyValue : r1578_3 +# 1578| r1578_5(int *) = CopyValue : r1578_4 +# 1578| mu1578_6(int *) = Store[pr] : &:r1578_1, r1578_5 +# 1579| r1579_1(glval) = VariableAddress[w] : +# 1579| r1579_2(glval) = VariableAddress[r] : +# 1579| r1579_3(int &) = Load[r] : &:r1579_2, ~m? +# 1579| r1579_4(int) = Load[?] : &:r1579_3, ~m? +# 1579| mu1579_5(int) = Store[w] : &:r1579_1, r1579_4 +# 1581| v1581_1(void) = NoOp : +# 1550| v1550_4(void) = ReturnVoid : +# 1550| v1550_5(void) = AliasedUse : ~m? +# 1550| v1550_6(void) = ExitFunction : -# 1588| void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet() -# 1588| Block 0 -# 1588| v1588_1(void) = EnterFunction : -# 1588| mu1588_2(unknown) = AliasedDefinition : -# 1588| mu1588_3(unknown) = InitializeNonLocal : -# 1588| r1588_4(glval) = VariableAddress[#this] : -# 1588| mu1588_5(glval) = InitializeParameter[#this] : &:r1588_4 -# 1588| r1588_6(glval) = Load[#this] : &:r1588_4, ~m? -# 1588| mu1588_7(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1588_6 -# 1588| v1588_8(void) = NoOp : -# 1588| v1588_9(void) = ReturnIndirection[#this] : &:r1588_6, ~m? -# 1588| v1588_10(void) = ReturnVoid : -# 1588| v1588_11(void) = AliasedUse : ~m? -# 1588| v1588_12(void) = ExitFunction : +# 1590| void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet() +# 1590| Block 0 +# 1590| v1590_1(void) = EnterFunction : +# 1590| mu1590_2(unknown) = AliasedDefinition : +# 1590| mu1590_3(unknown) = InitializeNonLocal : +# 1590| r1590_4(glval) = VariableAddress[#this] : +# 1590| mu1590_5(glval) = InitializeParameter[#this] : &:r1590_4 +# 1590| r1590_6(glval) = Load[#this] : &:r1590_4, ~m? +# 1590| mu1590_7(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1590_6 +# 1590| v1590_8(void) = NoOp : +# 1590| v1590_9(void) = ReturnIndirection[#this] : &:r1590_6, ~m? +# 1590| v1590_10(void) = ReturnVoid : +# 1590| v1590_11(void) = AliasedUse : ~m? +# 1590| v1590_12(void) = ExitFunction : -# 1588| void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet(StructuredBindingTupleRefGet const&) -# 1588| Block 0 -# 1588| v1588_1(void) = EnterFunction : -# 1588| mu1588_2(unknown) = AliasedDefinition : -# 1588| mu1588_3(unknown) = InitializeNonLocal : -# 1588| r1588_4(glval) = VariableAddress[#this] : -# 1588| mu1588_5(glval) = InitializeParameter[#this] : &:r1588_4 -# 1588| r1588_6(glval) = Load[#this] : &:r1588_4, ~m? -# 1588| mu1588_7(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1588_6 +# 1590| void StructuredBindingTupleRefGet::StructuredBindingTupleRefGet(StructuredBindingTupleRefGet const&) +# 1590| Block 0 +# 1590| v1590_1(void) = EnterFunction : +# 1590| mu1590_2(unknown) = AliasedDefinition : +# 1590| mu1590_3(unknown) = InitializeNonLocal : +# 1590| r1590_4(glval) = VariableAddress[#this] : +# 1590| mu1590_5(glval) = InitializeParameter[#this] : &:r1590_4 +# 1590| r1590_6(glval) = Load[#this] : &:r1590_4, ~m? +# 1590| mu1590_7(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1590_6 #-----| r0_1(glval) = VariableAddress[(unnamed parameter 0)] : #-----| mu0_2(StructuredBindingTupleRefGet &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(StructuredBindingTupleRefGet &) = Load[(unnamed parameter 0)] : &:r0_1, ~m? #-----| mu0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 1588| r1588_8(glval) = FieldAddress[i] : r1588_6 -# 1588| r1588_9(glval) = VariableAddress[(unnamed parameter 0)] : -# 1588| r1588_10(StructuredBindingTupleRefGet &) = Load[(unnamed parameter 0)] : &:r1588_9, ~m? -# 1588| r1588_11(glval) = CopyValue : r1588_10 -# 1588| r1588_12(glval) = FieldAddress[i] : r1588_11 -# 1588| r1588_13(int) = Load[?] : &:r1588_12, ~m? -# 1588| mu1588_14(int) = Store[?] : &:r1588_8, r1588_13 -# 1588| r1588_15(glval) = FieldAddress[d] : r1588_6 -# 1588| r1588_16(glval) = VariableAddress[(unnamed parameter 0)] : -# 1588| r1588_17(StructuredBindingTupleRefGet &) = Load[(unnamed parameter 0)] : &:r1588_16, ~m? -# 1588| r1588_18(glval) = CopyValue : r1588_17 -# 1588| r1588_19(glval) = FieldAddress[d] : r1588_18 -# 1588| r1588_20(double) = Load[?] : &:r1588_19, ~m? -# 1588| mu1588_21(double) = Store[?] : &:r1588_15, r1588_20 -# 1588| r1588_22(glval) = FieldAddress[r] : r1588_6 -# 1588| r1588_23(glval) = VariableAddress[(unnamed parameter 0)] : -# 1588| r1588_24(StructuredBindingTupleRefGet &) = Load[(unnamed parameter 0)] : &:r1588_23, ~m? -# 1588| r1588_25(glval) = CopyValue : r1588_24 -# 1588| r1588_26(glval) = FieldAddress[r] : r1588_25 -# 1588| r1588_27(int &) = Load[?] : &:r1588_26, ~m? -# 1588| mu1588_28(int &) = Store[?] : &:r1588_22, r1588_27 -# 1588| v1588_29(void) = NoOp : -# 1588| v1588_30(void) = ReturnIndirection[#this] : &:r1588_6, ~m? +# 1590| r1590_8(glval) = FieldAddress[i] : r1590_6 +# 1590| r1590_9(glval) = VariableAddress[(unnamed parameter 0)] : +# 1590| r1590_10(StructuredBindingTupleRefGet &) = Load[(unnamed parameter 0)] : &:r1590_9, ~m? +# 1590| r1590_11(glval) = CopyValue : r1590_10 +# 1590| r1590_12(glval) = FieldAddress[i] : r1590_11 +# 1590| r1590_13(int) = Load[?] : &:r1590_12, ~m? +# 1590| mu1590_14(int) = Store[?] : &:r1590_8, r1590_13 +# 1590| r1590_15(glval) = FieldAddress[d] : r1590_6 +# 1590| r1590_16(glval) = VariableAddress[(unnamed parameter 0)] : +# 1590| r1590_17(StructuredBindingTupleRefGet &) = Load[(unnamed parameter 0)] : &:r1590_16, ~m? +# 1590| r1590_18(glval) = CopyValue : r1590_17 +# 1590| r1590_19(glval) = FieldAddress[d] : r1590_18 +# 1590| r1590_20(double) = Load[?] : &:r1590_19, ~m? +# 1590| mu1590_21(double) = Store[?] : &:r1590_15, r1590_20 +# 1590| r1590_22(glval) = FieldAddress[r] : r1590_6 +# 1590| r1590_23(glval) = VariableAddress[(unnamed parameter 0)] : +# 1590| r1590_24(StructuredBindingTupleRefGet &) = Load[(unnamed parameter 0)] : &:r1590_23, ~m? +# 1590| r1590_25(glval) = CopyValue : r1590_24 +# 1590| r1590_26(glval) = FieldAddress[r] : r1590_25 +# 1590| r1590_27(int &) = Load[?] : &:r1590_26, ~m? +# 1590| mu1590_28(int &) = Store[?] : &:r1590_22, r1590_27 +# 1590| v1590_29(void) = NoOp : +# 1590| v1590_30(void) = ReturnIndirection[#this] : &:r1590_6, ~m? #-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, ~m? -# 1588| v1588_31(void) = ReturnVoid : -# 1588| v1588_32(void) = AliasedUse : ~m? -# 1588| v1588_33(void) = ExitFunction : +# 1590| v1590_31(void) = ReturnVoid : +# 1590| v1590_32(void) = AliasedUse : ~m? +# 1590| v1590_33(void) = ExitFunction : -# 1616| std::tuple_element::type& StructuredBindingTupleRefGet::get() -# 1616| Block 0 -# 1616| v1616_1(void) = EnterFunction : -# 1616| mu1616_2(unknown) = AliasedDefinition : -# 1616| mu1616_3(unknown) = InitializeNonLocal : -# 1616| r1616_4(glval) = VariableAddress[#this] : -# 1616| mu1616_5(glval) = InitializeParameter[#this] : &:r1616_4 -# 1616| r1616_6(glval) = Load[#this] : &:r1616_4, ~m? -# 1616| mu1616_7(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1616_6 -# 1617| r1617_1(glval) = VariableAddress[#return] : -# 1617| r1617_2(glval) = VariableAddress[#this] : -# 1617| r1617_3(StructuredBindingTupleRefGet *) = Load[#this] : &:r1617_2, ~m? -# 1617| r1617_4(glval) = FieldAddress[i] : r1617_3 -#-----| r0_1(int &) = CopyValue : r1617_4 -#-----| mu0_2(int &) = Store[#return] : &:r1617_1, r0_1 -# 1616| v1616_8(void) = ReturnIndirection[#this] : &:r1616_6, ~m? -# 1616| r1616_9(glval) = VariableAddress[#return] : -# 1616| v1616_10(void) = ReturnValue : &:r1616_9, ~m? -# 1616| v1616_11(void) = AliasedUse : ~m? -# 1616| v1616_12(void) = ExitFunction : +# 1618| std::tuple_element::type& StructuredBindingTupleRefGet::get() +# 1618| Block 0 +# 1618| v1618_1(void) = EnterFunction : +# 1618| mu1618_2(unknown) = AliasedDefinition : +# 1618| mu1618_3(unknown) = InitializeNonLocal : +# 1618| r1618_4(glval) = VariableAddress[#this] : +# 1618| mu1618_5(glval) = InitializeParameter[#this] : &:r1618_4 +# 1618| r1618_6(glval) = Load[#this] : &:r1618_4, ~m? +# 1618| mu1618_7(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1618_6 +# 1619| r1619_1(glval) = VariableAddress[#return] : +# 1619| r1619_2(glval) = VariableAddress[#this] : +# 1619| r1619_3(StructuredBindingTupleRefGet *) = Load[#this] : &:r1619_2, ~m? +# 1619| r1619_4(glval) = FieldAddress[i] : r1619_3 +#-----| r0_1(int &) = CopyValue : r1619_4 +#-----| mu0_2(int &) = Store[#return] : &:r1619_1, r0_1 +# 1618| v1618_8(void) = ReturnIndirection[#this] : &:r1618_6, ~m? +# 1618| r1618_9(glval) = VariableAddress[#return] : +# 1618| v1618_10(void) = ReturnValue : &:r1618_9, ~m? +# 1618| v1618_11(void) = AliasedUse : ~m? +# 1618| v1618_12(void) = ExitFunction : -# 1620| std::tuple_element::type& StructuredBindingTupleRefGet::get() -# 1620| Block 0 -# 1620| v1620_1(void) = EnterFunction : -# 1620| mu1620_2(unknown) = AliasedDefinition : -# 1620| mu1620_3(unknown) = InitializeNonLocal : -# 1620| r1620_4(glval) = VariableAddress[#this] : -# 1620| mu1620_5(glval) = InitializeParameter[#this] : &:r1620_4 -# 1620| r1620_6(glval) = Load[#this] : &:r1620_4, ~m? -# 1620| mu1620_7(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1620_6 -# 1621| r1621_1(glval) = VariableAddress[#return] : -# 1621| r1621_2(glval) = VariableAddress[#this] : -# 1621| r1621_3(StructuredBindingTupleRefGet *) = Load[#this] : &:r1621_2, ~m? -# 1621| r1621_4(glval) = FieldAddress[d] : r1621_3 -#-----| r0_1(double &) = CopyValue : r1621_4 -#-----| mu0_2(double &) = Store[#return] : &:r1621_1, r0_1 -# 1620| v1620_8(void) = ReturnIndirection[#this] : &:r1620_6, ~m? -# 1620| r1620_9(glval) = VariableAddress[#return] : -# 1620| v1620_10(void) = ReturnValue : &:r1620_9, ~m? -# 1620| v1620_11(void) = AliasedUse : ~m? -# 1620| v1620_12(void) = ExitFunction : +# 1622| std::tuple_element::type& StructuredBindingTupleRefGet::get() +# 1622| Block 0 +# 1622| v1622_1(void) = EnterFunction : +# 1622| mu1622_2(unknown) = AliasedDefinition : +# 1622| mu1622_3(unknown) = InitializeNonLocal : +# 1622| r1622_4(glval) = VariableAddress[#this] : +# 1622| mu1622_5(glval) = InitializeParameter[#this] : &:r1622_4 +# 1622| r1622_6(glval) = Load[#this] : &:r1622_4, ~m? +# 1622| mu1622_7(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1622_6 +# 1623| r1623_1(glval) = VariableAddress[#return] : +# 1623| r1623_2(glval) = VariableAddress[#this] : +# 1623| r1623_3(StructuredBindingTupleRefGet *) = Load[#this] : &:r1623_2, ~m? +# 1623| r1623_4(glval) = FieldAddress[d] : r1623_3 +#-----| r0_1(double &) = CopyValue : r1623_4 +#-----| mu0_2(double &) = Store[#return] : &:r1623_1, r0_1 +# 1622| v1622_8(void) = ReturnIndirection[#this] : &:r1622_6, ~m? +# 1622| r1622_9(glval) = VariableAddress[#return] : +# 1622| v1622_10(void) = ReturnValue : &:r1622_9, ~m? +# 1622| v1622_11(void) = AliasedUse : ~m? +# 1622| v1622_12(void) = ExitFunction : -# 1624| std::tuple_element::type StructuredBindingTupleRefGet::get() -# 1624| Block 0 -# 1624| v1624_1(void) = EnterFunction : -# 1624| mu1624_2(unknown) = AliasedDefinition : -# 1624| mu1624_3(unknown) = InitializeNonLocal : -# 1624| r1624_4(glval) = VariableAddress[#this] : -# 1624| mu1624_5(glval) = InitializeParameter[#this] : &:r1624_4 -# 1624| r1624_6(glval) = Load[#this] : &:r1624_4, ~m? -# 1624| mu1624_7(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1624_6 -# 1625| r1625_1(glval) = VariableAddress[#return] : -# 1625| r1625_2(glval) = VariableAddress[#this] : -# 1625| r1625_3(StructuredBindingTupleRefGet *) = Load[#this] : &:r1625_2, ~m? -# 1625| r1625_4(glval) = FieldAddress[r] : r1625_3 -# 1625| r1625_5(int &) = Load[?] : &:r1625_4, ~m? -# 1625| r1625_6(glval) = CopyValue : r1625_5 -# 1625| r1625_7(int &) = CopyValue : r1625_6 -# 1625| mu1625_8(int &) = Store[#return] : &:r1625_1, r1625_7 -# 1624| v1624_8(void) = ReturnIndirection[#this] : &:r1624_6, ~m? -# 1624| r1624_9(glval) = VariableAddress[#return] : -# 1624| v1624_10(void) = ReturnValue : &:r1624_9, ~m? -# 1624| v1624_11(void) = AliasedUse : ~m? -# 1624| v1624_12(void) = ExitFunction : +# 1626| std::tuple_element::type StructuredBindingTupleRefGet::get() +# 1626| Block 0 +# 1626| v1626_1(void) = EnterFunction : +# 1626| mu1626_2(unknown) = AliasedDefinition : +# 1626| mu1626_3(unknown) = InitializeNonLocal : +# 1626| r1626_4(glval) = VariableAddress[#this] : +# 1626| mu1626_5(glval) = InitializeParameter[#this] : &:r1626_4 +# 1626| r1626_6(glval) = Load[#this] : &:r1626_4, ~m? +# 1626| mu1626_7(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1626_6 +# 1627| r1627_1(glval) = VariableAddress[#return] : +# 1627| r1627_2(glval) = VariableAddress[#this] : +# 1627| r1627_3(StructuredBindingTupleRefGet *) = Load[#this] : &:r1627_2, ~m? +# 1627| r1627_4(glval) = FieldAddress[r] : r1627_3 +# 1627| r1627_5(int &) = Load[?] : &:r1627_4, ~m? +# 1627| r1627_6(glval) = CopyValue : r1627_5 +# 1627| r1627_7(int &) = CopyValue : r1627_6 +# 1627| mu1627_8(int &) = Store[#return] : &:r1627_1, r1627_7 +# 1626| v1626_8(void) = ReturnIndirection[#this] : &:r1626_6, ~m? +# 1626| r1626_9(glval) = VariableAddress[#return] : +# 1626| v1626_10(void) = ReturnValue : &:r1626_9, ~m? +# 1626| v1626_11(void) = AliasedUse : ~m? +# 1626| v1626_12(void) = ExitFunction : -# 1628| void tuple_structured_binding_ref_get() -# 1628| Block 0 -# 1628| v1628_1(void) = EnterFunction : -# 1628| mu1628_2(unknown) = AliasedDefinition : -# 1628| mu1628_3(unknown) = InitializeNonLocal : -# 1629| r1629_1(glval) = VariableAddress[t] : -# 1629| mu1629_2(StructuredBindingTupleRefGet) = Uninitialized[t] : &:r1629_1 -# 1629| r1629_3(glval) = FunctionAddress[StructuredBindingTupleRefGet] : -# 1629| v1629_4(void) = Call[StructuredBindingTupleRefGet] : func:r1629_3, this:r1629_1 -# 1629| mu1629_5(unknown) = ^CallSideEffect : ~m? -# 1629| mu1629_6(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1629_1 -# 1632| r1632_1(glval) = VariableAddress[(unnamed local variable)] : -# 1632| r1632_2(glval) = VariableAddress[t] : -# 1632| r1632_3(StructuredBindingTupleRefGet) = Load[t] : &:r1632_2, ~m? -# 1632| mu1632_4(StructuredBindingTupleRefGet) = Store[(unnamed local variable)] : &:r1632_1, r1632_3 -# 1632| r1632_5(glval) = VariableAddress[i] : -# 1632| r1632_6(glval) = VariableAddress[(unnamed local variable)] : -# 1632| r1632_7(glval) = FunctionAddress[get] : -# 1632| r1632_8(int &) = Call[get] : func:r1632_7, this:r1632_6 -# 1632| mu1632_9(unknown) = ^CallSideEffect : ~m? -# 1632| v1632_10(void) = ^IndirectReadSideEffect[-1] : &:r1632_6, ~m? -# 1632| mu1632_11(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1632_6 -# 1632| r1632_12(glval) = CopyValue : r1632_8 -# 1632| r1632_13(int &) = CopyValue : r1632_12 -# 1632| mu1632_14(int &) = Store[i] : &:r1632_5, r1632_13 -# 1632| r1632_15(glval) = VariableAddress[d] : -# 1632| r1632_16(glval) = VariableAddress[(unnamed local variable)] : -# 1632| r1632_17(glval) = FunctionAddress[get] : -# 1632| r1632_18(double &) = Call[get] : func:r1632_17, this:r1632_16 -# 1632| mu1632_19(unknown) = ^CallSideEffect : ~m? -# 1632| v1632_20(void) = ^IndirectReadSideEffect[-1] : &:r1632_16, ~m? -# 1632| mu1632_21(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1632_16 -# 1632| r1632_22(glval) = CopyValue : r1632_18 -# 1632| r1632_23(double &) = CopyValue : r1632_22 -# 1632| mu1632_24(double &) = Store[d] : &:r1632_15, r1632_23 -# 1632| r1632_25(glval) = VariableAddress[r] : -# 1632| r1632_26(glval) = VariableAddress[(unnamed local variable)] : -# 1632| r1632_27(glval) = FunctionAddress[get] : -# 1632| r1632_28(int &) = Call[get] : func:r1632_27, this:r1632_26 -# 1632| mu1632_29(unknown) = ^CallSideEffect : ~m? -# 1632| v1632_30(void) = ^IndirectReadSideEffect[-1] : &:r1632_26, ~m? -# 1632| mu1632_31(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1632_26 -# 1632| r1632_32(glval) = CopyValue : r1632_28 -# 1632| r1632_33(int &) = CopyValue : r1632_32 -# 1632| mu1632_34(int &) = Store[r] : &:r1632_25, r1632_33 -# 1633| r1633_1(double) = Constant[4.0] : -# 1633| r1633_2(glval) = VariableAddress[d] : -# 1633| r1633_3(double &) = Load[d] : &:r1633_2, ~m? -# 1633| r1633_4(glval) = CopyValue : r1633_3 -# 1633| mu1633_5(double) = Store[?] : &:r1633_4, r1633_1 -# 1634| r1634_1(glval) = VariableAddress[rd] : -# 1634| r1634_2(glval) = VariableAddress[d] : -# 1634| r1634_3(double &) = Load[d] : &:r1634_2, ~m? -# 1634| r1634_4(glval) = CopyValue : r1634_3 -# 1634| r1634_5(double &) = CopyValue : r1634_4 -# 1634| mu1634_6(double &) = Store[rd] : &:r1634_1, r1634_5 -# 1635| r1635_1(glval) = VariableAddress[v] : -# 1635| r1635_2(glval) = VariableAddress[i] : -# 1635| r1635_3(int &) = Load[i] : &:r1635_2, ~m? -# 1635| r1635_4(int) = Load[?] : &:r1635_3, ~m? -# 1635| mu1635_5(int) = Store[v] : &:r1635_1, r1635_4 -# 1636| r1636_1(int) = Constant[5] : -# 1636| r1636_2(glval) = VariableAddress[r] : -# 1636| r1636_3(int &) = Load[r] : &:r1636_2, ~m? -# 1636| r1636_4(glval) = CopyValue : r1636_3 -# 1636| mu1636_5(int) = Store[?] : &:r1636_4, r1636_1 -# 1637| r1637_1(glval) = VariableAddress[rr] : -# 1637| r1637_2(glval) = VariableAddress[r] : -# 1637| r1637_3(int &) = Load[r] : &:r1637_2, ~m? -# 1637| r1637_4(glval) = CopyValue : r1637_3 -# 1637| r1637_5(int &) = CopyValue : r1637_4 -# 1637| mu1637_6(int &) = Store[rr] : &:r1637_1, r1637_5 -# 1638| r1638_1(glval) = VariableAddress[w] : +# 1630| void tuple_structured_binding_ref_get() +# 1630| Block 0 +# 1630| v1630_1(void) = EnterFunction : +# 1630| mu1630_2(unknown) = AliasedDefinition : +# 1630| mu1630_3(unknown) = InitializeNonLocal : +# 1631| r1631_1(glval) = VariableAddress[t] : +# 1631| mu1631_2(StructuredBindingTupleRefGet) = Uninitialized[t] : &:r1631_1 +# 1631| r1631_3(glval) = FunctionAddress[StructuredBindingTupleRefGet] : +# 1631| v1631_4(void) = Call[StructuredBindingTupleRefGet] : func:r1631_3, this:r1631_1 +# 1631| mu1631_5(unknown) = ^CallSideEffect : ~m? +# 1631| mu1631_6(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1631_1 +# 1634| r1634_1(glval) = VariableAddress[(unnamed local variable)] : +# 1634| r1634_2(glval) = VariableAddress[t] : +# 1634| r1634_3(StructuredBindingTupleRefGet) = Load[t] : &:r1634_2, ~m? +# 1634| mu1634_4(StructuredBindingTupleRefGet) = Store[(unnamed local variable)] : &:r1634_1, r1634_3 +# 1634| r1634_5(glval) = VariableAddress[i] : +# 1634| r1634_6(glval) = VariableAddress[(unnamed local variable)] : +# 1634| r1634_7(glval) = FunctionAddress[get] : +# 1634| r1634_8(int &) = Call[get] : func:r1634_7, this:r1634_6 +# 1634| mu1634_9(unknown) = ^CallSideEffect : ~m? +# 1634| v1634_10(void) = ^IndirectReadSideEffect[-1] : &:r1634_6, ~m? +# 1634| mu1634_11(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1634_6 +# 1634| r1634_12(glval) = CopyValue : r1634_8 +# 1634| r1634_13(int &) = CopyValue : r1634_12 +# 1634| mu1634_14(int &) = Store[i] : &:r1634_5, r1634_13 +# 1634| r1634_15(glval) = VariableAddress[d] : +# 1634| r1634_16(glval) = VariableAddress[(unnamed local variable)] : +# 1634| r1634_17(glval) = FunctionAddress[get] : +# 1634| r1634_18(double &) = Call[get] : func:r1634_17, this:r1634_16 +# 1634| mu1634_19(unknown) = ^CallSideEffect : ~m? +# 1634| v1634_20(void) = ^IndirectReadSideEffect[-1] : &:r1634_16, ~m? +# 1634| mu1634_21(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1634_16 +# 1634| r1634_22(glval) = CopyValue : r1634_18 +# 1634| r1634_23(double &) = CopyValue : r1634_22 +# 1634| mu1634_24(double &) = Store[d] : &:r1634_15, r1634_23 +# 1634| r1634_25(glval) = VariableAddress[r] : +# 1634| r1634_26(glval) = VariableAddress[(unnamed local variable)] : +# 1634| r1634_27(glval) = FunctionAddress[get] : +# 1634| r1634_28(int &) = Call[get] : func:r1634_27, this:r1634_26 +# 1634| mu1634_29(unknown) = ^CallSideEffect : ~m? +# 1634| v1634_30(void) = ^IndirectReadSideEffect[-1] : &:r1634_26, ~m? +# 1634| mu1634_31(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1634_26 +# 1634| r1634_32(glval) = CopyValue : r1634_28 +# 1634| r1634_33(int &) = CopyValue : r1634_32 +# 1634| mu1634_34(int &) = Store[r] : &:r1634_25, r1634_33 +# 1635| r1635_1(double) = Constant[4.0] : +# 1635| r1635_2(glval) = VariableAddress[d] : +# 1635| r1635_3(double &) = Load[d] : &:r1635_2, ~m? +# 1635| r1635_4(glval) = CopyValue : r1635_3 +# 1635| mu1635_5(double) = Store[?] : &:r1635_4, r1635_1 +# 1636| r1636_1(glval) = VariableAddress[rd] : +# 1636| r1636_2(glval) = VariableAddress[d] : +# 1636| r1636_3(double &) = Load[d] : &:r1636_2, ~m? +# 1636| r1636_4(glval) = CopyValue : r1636_3 +# 1636| r1636_5(double &) = CopyValue : r1636_4 +# 1636| mu1636_6(double &) = Store[rd] : &:r1636_1, r1636_5 +# 1637| r1637_1(glval) = VariableAddress[v] : +# 1637| r1637_2(glval) = VariableAddress[i] : +# 1637| r1637_3(int &) = Load[i] : &:r1637_2, ~m? +# 1637| r1637_4(int) = Load[?] : &:r1637_3, ~m? +# 1637| mu1637_5(int) = Store[v] : &:r1637_1, r1637_4 +# 1638| r1638_1(int) = Constant[5] : # 1638| r1638_2(glval) = VariableAddress[r] : # 1638| r1638_3(int &) = Load[r] : &:r1638_2, ~m? -# 1638| r1638_4(int) = Load[?] : &:r1638_3, ~m? -# 1638| mu1638_5(int) = Store[w] : &:r1638_1, r1638_4 -# 1642| r1642_1(glval) = VariableAddress[unnamed_local_variable] : -# 1642| r1642_2(glval) = VariableAddress[t] : -# 1642| r1642_3(StructuredBindingTupleRefGet) = Load[t] : &:r1642_2, ~m? -# 1642| mu1642_4(StructuredBindingTupleRefGet) = Store[unnamed_local_variable] : &:r1642_1, r1642_3 -# 1643| r1643_1(glval) = VariableAddress[i] : -# 1643| r1643_2(glval) = VariableAddress[unnamed_local_variable] : -# 1643| r1643_3(glval) = FunctionAddress[get] : -# 1643| r1643_4(int &) = Call[get] : func:r1643_3, this:r1643_2 -# 1643| mu1643_5(unknown) = ^CallSideEffect : ~m? -# 1643| v1643_6(void) = ^IndirectReadSideEffect[-1] : &:r1643_2, ~m? -# 1643| mu1643_7(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1643_2 -# 1643| r1643_8(glval) = CopyValue : r1643_4 -# 1643| r1643_9(int &) = CopyValue : r1643_8 -# 1643| mu1643_10(int &) = Store[i] : &:r1643_1, r1643_9 -# 1644| r1644_1(glval) = VariableAddress[d] : -# 1644| r1644_2(glval) = VariableAddress[unnamed_local_variable] : -# 1644| r1644_3(glval) = FunctionAddress[get] : -# 1644| r1644_4(double &) = Call[get] : func:r1644_3, this:r1644_2 -# 1644| mu1644_5(unknown) = ^CallSideEffect : ~m? -# 1644| v1644_6(void) = ^IndirectReadSideEffect[-1] : &:r1644_2, ~m? -# 1644| mu1644_7(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1644_2 -# 1644| r1644_8(glval) = CopyValue : r1644_4 -# 1644| r1644_9(double &) = CopyValue : r1644_8 -# 1644| mu1644_10(double &) = Store[d] : &:r1644_1, r1644_9 -# 1645| r1645_1(glval) = VariableAddress[r] : +# 1638| r1638_4(glval) = CopyValue : r1638_3 +# 1638| mu1638_5(int) = Store[?] : &:r1638_4, r1638_1 +# 1639| r1639_1(glval) = VariableAddress[rr] : +# 1639| r1639_2(glval) = VariableAddress[r] : +# 1639| r1639_3(int &) = Load[r] : &:r1639_2, ~m? +# 1639| r1639_4(glval) = CopyValue : r1639_3 +# 1639| r1639_5(int &) = CopyValue : r1639_4 +# 1639| mu1639_6(int &) = Store[rr] : &:r1639_1, r1639_5 +# 1640| r1640_1(glval) = VariableAddress[w] : +# 1640| r1640_2(glval) = VariableAddress[r] : +# 1640| r1640_3(int &) = Load[r] : &:r1640_2, ~m? +# 1640| r1640_4(int) = Load[?] : &:r1640_3, ~m? +# 1640| mu1640_5(int) = Store[w] : &:r1640_1, r1640_4 +# 1644| r1644_1(glval) = VariableAddress[unnamed_local_variable] : +# 1644| r1644_2(glval) = VariableAddress[t] : +# 1644| r1644_3(StructuredBindingTupleRefGet) = Load[t] : &:r1644_2, ~m? +# 1644| mu1644_4(StructuredBindingTupleRefGet) = Store[unnamed_local_variable] : &:r1644_1, r1644_3 +# 1645| r1645_1(glval) = VariableAddress[i] : # 1645| r1645_2(glval) = VariableAddress[unnamed_local_variable] : # 1645| r1645_3(glval) = FunctionAddress[get] : # 1645| r1645_4(int &) = Call[get] : func:r1645_3, this:r1645_2 @@ -11782,1219 +11762,1225 @@ ir.cpp: # 1645| mu1645_7(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1645_2 # 1645| r1645_8(glval) = CopyValue : r1645_4 # 1645| r1645_9(int &) = CopyValue : r1645_8 -# 1645| mu1645_10(int &) = Store[r] : &:r1645_1, r1645_9 -# 1646| r1646_1(double) = Constant[4.0] : -# 1646| r1646_2(glval) = VariableAddress[d] : -# 1646| r1646_3(double &) = Load[d] : &:r1646_2, ~m? -# 1646| r1646_4(glval) = CopyValue : r1646_3 -# 1646| mu1646_5(double) = Store[?] : &:r1646_4, r1646_1 -# 1647| r1647_1(glval) = VariableAddress[rd] : -# 1647| r1647_2(glval) = VariableAddress[d] : -# 1647| r1647_3(double &) = Load[d] : &:r1647_2, ~m? -# 1647| r1647_4(glval) = CopyValue : r1647_3 -# 1647| r1647_5(double &) = CopyValue : r1647_4 -# 1647| mu1647_6(double &) = Store[rd] : &:r1647_1, r1647_5 -# 1648| r1648_1(glval) = VariableAddress[v] : -# 1648| r1648_2(glval) = VariableAddress[i] : -# 1648| r1648_3(int &) = Load[i] : &:r1648_2, ~m? -# 1648| r1648_4(int) = Load[?] : &:r1648_3, ~m? -# 1648| mu1648_5(int) = Store[v] : &:r1648_1, r1648_4 -# 1649| r1649_1(int) = Constant[5] : -# 1649| r1649_2(glval) = VariableAddress[r] : -# 1649| r1649_3(int &) = Load[r] : &:r1649_2, ~m? -# 1649| r1649_4(glval) = CopyValue : r1649_3 -# 1649| mu1649_5(int) = Store[?] : &:r1649_4, r1649_1 -# 1650| r1650_1(glval) = VariableAddress[rr] : -# 1650| r1650_2(glval) = VariableAddress[r] : -# 1650| r1650_3(int &) = Load[r] : &:r1650_2, ~m? -# 1650| r1650_4(glval) = CopyValue : r1650_3 -# 1650| r1650_5(int &) = CopyValue : r1650_4 -# 1650| mu1650_6(int &) = Store[rr] : &:r1650_1, r1650_5 -# 1651| r1651_1(glval) = VariableAddress[w] : +# 1645| mu1645_10(int &) = Store[i] : &:r1645_1, r1645_9 +# 1646| r1646_1(glval) = VariableAddress[d] : +# 1646| r1646_2(glval) = VariableAddress[unnamed_local_variable] : +# 1646| r1646_3(glval) = FunctionAddress[get] : +# 1646| r1646_4(double &) = Call[get] : func:r1646_3, this:r1646_2 +# 1646| mu1646_5(unknown) = ^CallSideEffect : ~m? +# 1646| v1646_6(void) = ^IndirectReadSideEffect[-1] : &:r1646_2, ~m? +# 1646| mu1646_7(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1646_2 +# 1646| r1646_8(glval) = CopyValue : r1646_4 +# 1646| r1646_9(double &) = CopyValue : r1646_8 +# 1646| mu1646_10(double &) = Store[d] : &:r1646_1, r1646_9 +# 1647| r1647_1(glval) = VariableAddress[r] : +# 1647| r1647_2(glval) = VariableAddress[unnamed_local_variable] : +# 1647| r1647_3(glval) = FunctionAddress[get] : +# 1647| r1647_4(int &) = Call[get] : func:r1647_3, this:r1647_2 +# 1647| mu1647_5(unknown) = ^CallSideEffect : ~m? +# 1647| v1647_6(void) = ^IndirectReadSideEffect[-1] : &:r1647_2, ~m? +# 1647| mu1647_7(StructuredBindingTupleRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1647_2 +# 1647| r1647_8(glval) = CopyValue : r1647_4 +# 1647| r1647_9(int &) = CopyValue : r1647_8 +# 1647| mu1647_10(int &) = Store[r] : &:r1647_1, r1647_9 +# 1648| r1648_1(double) = Constant[4.0] : +# 1648| r1648_2(glval) = VariableAddress[d] : +# 1648| r1648_3(double &) = Load[d] : &:r1648_2, ~m? +# 1648| r1648_4(glval) = CopyValue : r1648_3 +# 1648| mu1648_5(double) = Store[?] : &:r1648_4, r1648_1 +# 1649| r1649_1(glval) = VariableAddress[rd] : +# 1649| r1649_2(glval) = VariableAddress[d] : +# 1649| r1649_3(double &) = Load[d] : &:r1649_2, ~m? +# 1649| r1649_4(glval) = CopyValue : r1649_3 +# 1649| r1649_5(double &) = CopyValue : r1649_4 +# 1649| mu1649_6(double &) = Store[rd] : &:r1649_1, r1649_5 +# 1650| r1650_1(glval) = VariableAddress[v] : +# 1650| r1650_2(glval) = VariableAddress[i] : +# 1650| r1650_3(int &) = Load[i] : &:r1650_2, ~m? +# 1650| r1650_4(int) = Load[?] : &:r1650_3, ~m? +# 1650| mu1650_5(int) = Store[v] : &:r1650_1, r1650_4 +# 1651| r1651_1(int) = Constant[5] : # 1651| r1651_2(glval) = VariableAddress[r] : # 1651| r1651_3(int &) = Load[r] : &:r1651_2, ~m? -# 1651| r1651_4(int) = Load[?] : &:r1651_3, ~m? -# 1651| mu1651_5(int) = Store[w] : &:r1651_1, r1651_4 -# 1653| v1653_1(void) = NoOp : -# 1628| v1628_4(void) = ReturnVoid : -# 1628| v1628_5(void) = AliasedUse : ~m? -# 1628| v1628_6(void) = ExitFunction : +# 1651| r1651_4(glval) = CopyValue : r1651_3 +# 1651| mu1651_5(int) = Store[?] : &:r1651_4, r1651_1 +# 1652| r1652_1(glval) = VariableAddress[rr] : +# 1652| r1652_2(glval) = VariableAddress[r] : +# 1652| r1652_3(int &) = Load[r] : &:r1652_2, ~m? +# 1652| r1652_4(glval) = CopyValue : r1652_3 +# 1652| r1652_5(int &) = CopyValue : r1652_4 +# 1652| mu1652_6(int &) = Store[rr] : &:r1652_1, r1652_5 +# 1653| r1653_1(glval) = VariableAddress[w] : +# 1653| r1653_2(glval) = VariableAddress[r] : +# 1653| r1653_3(int &) = Load[r] : &:r1653_2, ~m? +# 1653| r1653_4(int) = Load[?] : &:r1653_3, ~m? +# 1653| mu1653_5(int) = Store[w] : &:r1653_1, r1653_4 +# 1655| v1655_1(void) = NoOp : +# 1630| v1630_4(void) = ReturnVoid : +# 1630| v1630_5(void) = AliasedUse : ~m? +# 1630| v1630_6(void) = ExitFunction : -# 1655| void StructuredBindingTupleNoRefGet::StructuredBindingTupleNoRefGet() -# 1655| Block 0 -# 1655| v1655_1(void) = EnterFunction : -# 1655| mu1655_2(unknown) = AliasedDefinition : -# 1655| mu1655_3(unknown) = InitializeNonLocal : -# 1655| r1655_4(glval) = VariableAddress[#this] : -# 1655| mu1655_5(glval) = InitializeParameter[#this] : &:r1655_4 -# 1655| r1655_6(glval) = Load[#this] : &:r1655_4, ~m? -# 1655| mu1655_7(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1655_6 -# 1655| v1655_8(void) = NoOp : -# 1655| v1655_9(void) = ReturnIndirection[#this] : &:r1655_6, ~m? -# 1655| v1655_10(void) = ReturnVoid : -# 1655| v1655_11(void) = AliasedUse : ~m? -# 1655| v1655_12(void) = ExitFunction : +# 1657| void StructuredBindingTupleNoRefGet::StructuredBindingTupleNoRefGet() +# 1657| Block 0 +# 1657| v1657_1(void) = EnterFunction : +# 1657| mu1657_2(unknown) = AliasedDefinition : +# 1657| mu1657_3(unknown) = InitializeNonLocal : +# 1657| r1657_4(glval) = VariableAddress[#this] : +# 1657| mu1657_5(glval) = InitializeParameter[#this] : &:r1657_4 +# 1657| r1657_6(glval) = Load[#this] : &:r1657_4, ~m? +# 1657| mu1657_7(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1657_6 +# 1657| v1657_8(void) = NoOp : +# 1657| v1657_9(void) = ReturnIndirection[#this] : &:r1657_6, ~m? +# 1657| v1657_10(void) = ReturnVoid : +# 1657| v1657_11(void) = AliasedUse : ~m? +# 1657| v1657_12(void) = ExitFunction : -# 1682| std::tuple_element::type StructuredBindingTupleNoRefGet::get() -# 1682| Block 0 -# 1682| v1682_1(void) = EnterFunction : -# 1682| mu1682_2(unknown) = AliasedDefinition : -# 1682| mu1682_3(unknown) = InitializeNonLocal : -# 1682| r1682_4(glval) = VariableAddress[#this] : -# 1682| mu1682_5(glval) = InitializeParameter[#this] : &:r1682_4 -# 1682| r1682_6(glval) = Load[#this] : &:r1682_4, ~m? -# 1682| mu1682_7(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1682_6 -# 1683| r1683_1(glval) = VariableAddress[#return] : -# 1683| r1683_2(glval) = VariableAddress[#this] : -# 1683| r1683_3(StructuredBindingTupleNoRefGet *) = Load[#this] : &:r1683_2, ~m? -# 1683| r1683_4(glval) = FieldAddress[i] : r1683_3 -# 1683| r1683_5(int) = Load[?] : &:r1683_4, ~m? -# 1683| mu1683_6(int) = Store[#return] : &:r1683_1, r1683_5 -# 1682| v1682_8(void) = ReturnIndirection[#this] : &:r1682_6, ~m? -# 1682| r1682_9(glval) = VariableAddress[#return] : -# 1682| v1682_10(void) = ReturnValue : &:r1682_9, ~m? -# 1682| v1682_11(void) = AliasedUse : ~m? -# 1682| v1682_12(void) = ExitFunction : +# 1684| std::tuple_element::type StructuredBindingTupleNoRefGet::get() +# 1684| Block 0 +# 1684| v1684_1(void) = EnterFunction : +# 1684| mu1684_2(unknown) = AliasedDefinition : +# 1684| mu1684_3(unknown) = InitializeNonLocal : +# 1684| r1684_4(glval) = VariableAddress[#this] : +# 1684| mu1684_5(glval) = InitializeParameter[#this] : &:r1684_4 +# 1684| r1684_6(glval) = Load[#this] : &:r1684_4, ~m? +# 1684| mu1684_7(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1684_6 +# 1685| r1685_1(glval) = VariableAddress[#return] : +# 1685| r1685_2(glval) = VariableAddress[#this] : +# 1685| r1685_3(StructuredBindingTupleNoRefGet *) = Load[#this] : &:r1685_2, ~m? +# 1685| r1685_4(glval) = FieldAddress[i] : r1685_3 +# 1685| r1685_5(int) = Load[?] : &:r1685_4, ~m? +# 1685| mu1685_6(int) = Store[#return] : &:r1685_1, r1685_5 +# 1684| v1684_8(void) = ReturnIndirection[#this] : &:r1684_6, ~m? +# 1684| r1684_9(glval) = VariableAddress[#return] : +# 1684| v1684_10(void) = ReturnValue : &:r1684_9, ~m? +# 1684| v1684_11(void) = AliasedUse : ~m? +# 1684| v1684_12(void) = ExitFunction : -# 1686| std::tuple_element::type StructuredBindingTupleNoRefGet::get() -# 1686| Block 0 -# 1686| v1686_1(void) = EnterFunction : -# 1686| mu1686_2(unknown) = AliasedDefinition : -# 1686| mu1686_3(unknown) = InitializeNonLocal : -# 1686| r1686_4(glval) = VariableAddress[#this] : -# 1686| mu1686_5(glval) = InitializeParameter[#this] : &:r1686_4 -# 1686| r1686_6(glval) = Load[#this] : &:r1686_4, ~m? -# 1686| mu1686_7(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1686_6 -# 1687| r1687_1(glval) = VariableAddress[#return] : -# 1687| r1687_2(glval) = VariableAddress[#this] : -# 1687| r1687_3(StructuredBindingTupleNoRefGet *) = Load[#this] : &:r1687_2, ~m? -# 1687| r1687_4(glval) = FieldAddress[r] : r1687_3 -# 1687| r1687_5(int &) = Load[?] : &:r1687_4, ~m? -# 1687| r1687_6(glval) = CopyValue : r1687_5 -# 1687| r1687_7(int &) = CopyValue : r1687_6 -# 1687| mu1687_8(int &) = Store[#return] : &:r1687_1, r1687_7 -# 1686| v1686_8(void) = ReturnIndirection[#this] : &:r1686_6, ~m? -# 1686| r1686_9(glval) = VariableAddress[#return] : -# 1686| v1686_10(void) = ReturnValue : &:r1686_9, ~m? -# 1686| v1686_11(void) = AliasedUse : ~m? -# 1686| v1686_12(void) = ExitFunction : +# 1688| std::tuple_element::type StructuredBindingTupleNoRefGet::get() +# 1688| Block 0 +# 1688| v1688_1(void) = EnterFunction : +# 1688| mu1688_2(unknown) = AliasedDefinition : +# 1688| mu1688_3(unknown) = InitializeNonLocal : +# 1688| r1688_4(glval) = VariableAddress[#this] : +# 1688| mu1688_5(glval) = InitializeParameter[#this] : &:r1688_4 +# 1688| r1688_6(glval) = Load[#this] : &:r1688_4, ~m? +# 1688| mu1688_7(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1688_6 +# 1689| r1689_1(glval) = VariableAddress[#return] : +# 1689| r1689_2(glval) = VariableAddress[#this] : +# 1689| r1689_3(StructuredBindingTupleNoRefGet *) = Load[#this] : &:r1689_2, ~m? +# 1689| r1689_4(glval) = FieldAddress[r] : r1689_3 +# 1689| r1689_5(int &) = Load[?] : &:r1689_4, ~m? +# 1689| r1689_6(glval) = CopyValue : r1689_5 +# 1689| r1689_7(int &) = CopyValue : r1689_6 +# 1689| mu1689_8(int &) = Store[#return] : &:r1689_1, r1689_7 +# 1688| v1688_8(void) = ReturnIndirection[#this] : &:r1688_6, ~m? +# 1688| r1688_9(glval) = VariableAddress[#return] : +# 1688| v1688_10(void) = ReturnValue : &:r1688_9, ~m? +# 1688| v1688_11(void) = AliasedUse : ~m? +# 1688| v1688_12(void) = ExitFunction : -# 1690| std::tuple_element::type StructuredBindingTupleNoRefGet::get() -# 1690| Block 0 -# 1690| v1690_1(void) = EnterFunction : -# 1690| mu1690_2(unknown) = AliasedDefinition : -# 1690| mu1690_3(unknown) = InitializeNonLocal : -# 1690| r1690_4(glval) = VariableAddress[#this] : -# 1690| mu1690_5(glval) = InitializeParameter[#this] : &:r1690_4 -# 1690| r1690_6(glval) = Load[#this] : &:r1690_4, ~m? -# 1690| mu1690_7(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1690_6 -# 1691| r1691_1(glval) = VariableAddress[#return] : -# 1691| r1691_2(glval) = VariableAddress[#temp1691:12] : -# 1691| r1691_3(int) = Constant[5] : -# 1691| mu1691_4(int) = Store[#temp1691:12] : &:r1691_2, r1691_3 -# 1691| r1691_5(int &) = CopyValue : r1691_2 -# 1691| mu1691_6(int &&) = Store[#return] : &:r1691_1, r1691_5 -# 1690| v1690_8(void) = ReturnIndirection[#this] : &:r1690_6, ~m? -# 1690| r1690_9(glval) = VariableAddress[#return] : -# 1690| v1690_10(void) = ReturnValue : &:r1690_9, ~m? -# 1690| v1690_11(void) = AliasedUse : ~m? -# 1690| v1690_12(void) = ExitFunction : +# 1692| std::tuple_element::type StructuredBindingTupleNoRefGet::get() +# 1692| Block 0 +# 1692| v1692_1(void) = EnterFunction : +# 1692| mu1692_2(unknown) = AliasedDefinition : +# 1692| mu1692_3(unknown) = InitializeNonLocal : +# 1692| r1692_4(glval) = VariableAddress[#this] : +# 1692| mu1692_5(glval) = InitializeParameter[#this] : &:r1692_4 +# 1692| r1692_6(glval) = Load[#this] : &:r1692_4, ~m? +# 1692| mu1692_7(StructuredBindingTupleNoRefGet) = InitializeIndirection[#this] : &:r1692_6 +# 1693| r1693_1(glval) = VariableAddress[#return] : +# 1693| r1693_2(glval) = VariableAddress[#temp1693:12] : +# 1693| r1693_3(int) = Constant[5] : +# 1693| mu1693_4(int) = Store[#temp1693:12] : &:r1693_2, r1693_3 +# 1693| r1693_5(int &) = CopyValue : r1693_2 +# 1693| mu1693_6(int &&) = Store[#return] : &:r1693_1, r1693_5 +# 1692| v1692_8(void) = ReturnIndirection[#this] : &:r1692_6, ~m? +# 1692| r1692_9(glval) = VariableAddress[#return] : +# 1692| v1692_10(void) = ReturnValue : &:r1692_9, ~m? +# 1692| v1692_11(void) = AliasedUse : ~m? +# 1692| v1692_12(void) = ExitFunction : -# 1694| void tuple_structured_binding_no_ref_get() -# 1694| Block 0 -# 1694| v1694_1(void) = EnterFunction : -# 1694| mu1694_2(unknown) = AliasedDefinition : -# 1694| mu1694_3(unknown) = InitializeNonLocal : -# 1695| r1695_1(glval) = VariableAddress[t] : -# 1695| mu1695_2(StructuredBindingTupleNoRefGet) = Uninitialized[t] : &:r1695_1 -# 1695| r1695_3(glval) = FunctionAddress[StructuredBindingTupleNoRefGet] : -# 1695| v1695_4(void) = Call[StructuredBindingTupleNoRefGet] : func:r1695_3, this:r1695_1 -# 1695| mu1695_5(unknown) = ^CallSideEffect : ~m? -# 1695| mu1695_6(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1695_1 -# 1698| r1698_1(glval) = VariableAddress[(unnamed local variable)] : -# 1698| r1698_2(glval) = VariableAddress[t] : -# 1698| r1698_3(StructuredBindingTupleNoRefGet &) = CopyValue : r1698_2 -# 1698| mu1698_4(StructuredBindingTupleNoRefGet &) = Store[(unnamed local variable)] : &:r1698_1, r1698_3 -# 1698| r1698_5(glval) = VariableAddress[i] : -# 1698| r1698_6(glval) = VariableAddress[#temp1698:16] : -# 1698| r1698_7(glval) = VariableAddress[(unnamed local variable)] : -# 1698| r1698_8(StructuredBindingTupleNoRefGet &) = Load[(unnamed local variable)] : &:r1698_7, ~m? -# 1698| r1698_9(glval) = CopyValue : r1698_8 -# 1698| r1698_10(glval) = FunctionAddress[get] : -# 1698| r1698_11(int) = Call[get] : func:r1698_10, this:r1698_9 -# 1698| mu1698_12(unknown) = ^CallSideEffect : ~m? -# 1698| v1698_13(void) = ^IndirectReadSideEffect[-1] : &:r1698_9, ~m? -# 1698| mu1698_14(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1698_9 -# 1698| mu1698_15(int) = Store[#temp1698:16] : &:r1698_6, r1698_11 -# 1698| r1698_16(int &) = CopyValue : r1698_6 -# 1698| mu1698_17(int &&) = Store[i] : &:r1698_5, r1698_16 -# 1698| r1698_18(glval) = VariableAddress[r] : -# 1698| r1698_19(glval) = VariableAddress[(unnamed local variable)] : -# 1698| r1698_20(StructuredBindingTupleNoRefGet &) = Load[(unnamed local variable)] : &:r1698_19, ~m? -# 1698| r1698_21(glval) = CopyValue : r1698_20 -# 1698| r1698_22(glval) = FunctionAddress[get] : -# 1698| r1698_23(int &) = Call[get] : func:r1698_22, this:r1698_21 -# 1698| mu1698_24(unknown) = ^CallSideEffect : ~m? -# 1698| v1698_25(void) = ^IndirectReadSideEffect[-1] : &:r1698_21, ~m? -# 1698| mu1698_26(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1698_21 -# 1698| r1698_27(glval) = CopyValue : r1698_23 -# 1698| r1698_28(int &) = CopyValue : r1698_27 -# 1698| mu1698_29(int &) = Store[r] : &:r1698_18, r1698_28 -# 1698| r1698_30(glval) = VariableAddress[rv] : -# 1698| r1698_31(glval) = VariableAddress[(unnamed local variable)] : -# 1698| r1698_32(StructuredBindingTupleNoRefGet &) = Load[(unnamed local variable)] : &:r1698_31, ~m? -# 1698| r1698_33(glval) = CopyValue : r1698_32 -# 1698| r1698_34(glval) = FunctionAddress[get] : -# 1698| r1698_35(int &&) = Call[get] : func:r1698_34, this:r1698_33 -# 1698| mu1698_36(unknown) = ^CallSideEffect : ~m? -# 1698| v1698_37(void) = ^IndirectReadSideEffect[-1] : &:r1698_33, ~m? -# 1698| mu1698_38(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1698_33 -# 1698| r1698_39(glval) = CopyValue : r1698_35 -# 1698| r1698_40(int &) = CopyValue : r1698_39 -# 1698| mu1698_41(int &&) = Store[rv] : &:r1698_30, r1698_40 -# 1699| r1699_1(int) = Constant[4] : -# 1699| r1699_2(glval) = VariableAddress[i] : -# 1699| r1699_3(int &&) = Load[i] : &:r1699_2, ~m? -# 1699| r1699_4(glval) = CopyValue : r1699_3 -# 1699| mu1699_5(int) = Store[?] : &:r1699_4, r1699_1 -# 1700| r1700_1(glval) = VariableAddress[ri] : -# 1700| r1700_2(glval) = VariableAddress[i] : -# 1700| r1700_3(int &&) = Load[i] : &:r1700_2, ~m? -# 1700| r1700_4(glval) = CopyValue : r1700_3 -# 1700| r1700_5(int &) = CopyValue : r1700_4 -# 1700| mu1700_6(int &) = Store[ri] : &:r1700_1, r1700_5 -# 1701| r1701_1(glval) = VariableAddress[v] : +# 1696| void tuple_structured_binding_no_ref_get() +# 1696| Block 0 +# 1696| v1696_1(void) = EnterFunction : +# 1696| mu1696_2(unknown) = AliasedDefinition : +# 1696| mu1696_3(unknown) = InitializeNonLocal : +# 1697| r1697_1(glval) = VariableAddress[t] : +# 1697| mu1697_2(StructuredBindingTupleNoRefGet) = Uninitialized[t] : &:r1697_1 +# 1697| r1697_3(glval) = FunctionAddress[StructuredBindingTupleNoRefGet] : +# 1697| v1697_4(void) = Call[StructuredBindingTupleNoRefGet] : func:r1697_3, this:r1697_1 +# 1697| mu1697_5(unknown) = ^CallSideEffect : ~m? +# 1697| mu1697_6(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1697_1 +# 1700| r1700_1(glval) = VariableAddress[(unnamed local variable)] : +# 1700| r1700_2(glval) = VariableAddress[t] : +# 1700| r1700_3(StructuredBindingTupleNoRefGet &) = CopyValue : r1700_2 +# 1700| mu1700_4(StructuredBindingTupleNoRefGet &) = Store[(unnamed local variable)] : &:r1700_1, r1700_3 +# 1700| r1700_5(glval) = VariableAddress[i] : +# 1700| r1700_6(glval) = VariableAddress[#temp1700:16] : +# 1700| r1700_7(glval) = VariableAddress[(unnamed local variable)] : +# 1700| r1700_8(StructuredBindingTupleNoRefGet &) = Load[(unnamed local variable)] : &:r1700_7, ~m? +# 1700| r1700_9(glval) = CopyValue : r1700_8 +# 1700| r1700_10(glval) = FunctionAddress[get] : +# 1700| r1700_11(int) = Call[get] : func:r1700_10, this:r1700_9 +# 1700| mu1700_12(unknown) = ^CallSideEffect : ~m? +# 1700| v1700_13(void) = ^IndirectReadSideEffect[-1] : &:r1700_9, ~m? +# 1700| mu1700_14(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1700_9 +# 1700| mu1700_15(int) = Store[#temp1700:16] : &:r1700_6, r1700_11 +# 1700| r1700_16(int &) = CopyValue : r1700_6 +# 1700| mu1700_17(int &&) = Store[i] : &:r1700_5, r1700_16 +# 1700| r1700_18(glval) = VariableAddress[r] : +# 1700| r1700_19(glval) = VariableAddress[(unnamed local variable)] : +# 1700| r1700_20(StructuredBindingTupleNoRefGet &) = Load[(unnamed local variable)] : &:r1700_19, ~m? +# 1700| r1700_21(glval) = CopyValue : r1700_20 +# 1700| r1700_22(glval) = FunctionAddress[get] : +# 1700| r1700_23(int &) = Call[get] : func:r1700_22, this:r1700_21 +# 1700| mu1700_24(unknown) = ^CallSideEffect : ~m? +# 1700| v1700_25(void) = ^IndirectReadSideEffect[-1] : &:r1700_21, ~m? +# 1700| mu1700_26(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1700_21 +# 1700| r1700_27(glval) = CopyValue : r1700_23 +# 1700| r1700_28(int &) = CopyValue : r1700_27 +# 1700| mu1700_29(int &) = Store[r] : &:r1700_18, r1700_28 +# 1700| r1700_30(glval) = VariableAddress[rv] : +# 1700| r1700_31(glval) = VariableAddress[(unnamed local variable)] : +# 1700| r1700_32(StructuredBindingTupleNoRefGet &) = Load[(unnamed local variable)] : &:r1700_31, ~m? +# 1700| r1700_33(glval) = CopyValue : r1700_32 +# 1700| r1700_34(glval) = FunctionAddress[get] : +# 1700| r1700_35(int &&) = Call[get] : func:r1700_34, this:r1700_33 +# 1700| mu1700_36(unknown) = ^CallSideEffect : ~m? +# 1700| v1700_37(void) = ^IndirectReadSideEffect[-1] : &:r1700_33, ~m? +# 1700| mu1700_38(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1700_33 +# 1700| r1700_39(glval) = CopyValue : r1700_35 +# 1700| r1700_40(int &) = CopyValue : r1700_39 +# 1700| mu1700_41(int &&) = Store[rv] : &:r1700_30, r1700_40 +# 1701| r1701_1(int) = Constant[4] : # 1701| r1701_2(glval) = VariableAddress[i] : # 1701| r1701_3(int &&) = Load[i] : &:r1701_2, ~m? -# 1701| r1701_4(int) = Load[?] : &:r1701_3, ~m? -# 1701| mu1701_5(int) = Store[v] : &:r1701_1, r1701_4 -# 1702| r1702_1(int) = Constant[5] : -# 1702| r1702_2(glval) = VariableAddress[r] : -# 1702| r1702_3(int &) = Load[r] : &:r1702_2, ~m? +# 1701| r1701_4(glval) = CopyValue : r1701_3 +# 1701| mu1701_5(int) = Store[?] : &:r1701_4, r1701_1 +# 1702| r1702_1(glval) = VariableAddress[ri] : +# 1702| r1702_2(glval) = VariableAddress[i] : +# 1702| r1702_3(int &&) = Load[i] : &:r1702_2, ~m? # 1702| r1702_4(glval) = CopyValue : r1702_3 -# 1702| mu1702_5(int) = Store[?] : &:r1702_4, r1702_1 -# 1703| r1703_1(glval) = VariableAddress[rr] : -# 1703| r1703_2(glval) = VariableAddress[r] : -# 1703| r1703_3(int &) = Load[r] : &:r1703_2, ~m? -# 1703| r1703_4(glval) = CopyValue : r1703_3 -# 1703| r1703_5(int &) = CopyValue : r1703_4 -# 1703| mu1703_6(int &) = Store[rr] : &:r1703_1, r1703_5 -# 1704| r1704_1(glval) = VariableAddress[w] : +# 1702| r1702_5(int &) = CopyValue : r1702_4 +# 1702| mu1702_6(int &) = Store[ri] : &:r1702_1, r1702_5 +# 1703| r1703_1(glval) = VariableAddress[v] : +# 1703| r1703_2(glval) = VariableAddress[i] : +# 1703| r1703_3(int &&) = Load[i] : &:r1703_2, ~m? +# 1703| r1703_4(int) = Load[?] : &:r1703_3, ~m? +# 1703| mu1703_5(int) = Store[v] : &:r1703_1, r1703_4 +# 1704| r1704_1(int) = Constant[5] : # 1704| r1704_2(glval) = VariableAddress[r] : # 1704| r1704_3(int &) = Load[r] : &:r1704_2, ~m? -# 1704| r1704_4(int) = Load[?] : &:r1704_3, ~m? -# 1704| mu1704_5(int) = Store[w] : &:r1704_1, r1704_4 -# 1708| r1708_1(glval) = VariableAddress[unnamed_local_variable] : -# 1708| r1708_2(glval) = VariableAddress[t] : -# 1708| r1708_3(StructuredBindingTupleNoRefGet &) = CopyValue : r1708_2 -# 1708| mu1708_4(StructuredBindingTupleNoRefGet &) = Store[unnamed_local_variable] : &:r1708_1, r1708_3 -# 1709| r1709_1(glval) = VariableAddress[i] : -# 1709| r1709_2(glval) = VariableAddress[#temp1709:20] : -# 1709| r1709_3(glval) = VariableAddress[unnamed_local_variable] : -# 1709| r1709_4(StructuredBindingTupleNoRefGet &) = Load[unnamed_local_variable] : &:r1709_3, ~m? -# 1709| r1709_5(glval) = CopyValue : r1709_4 -# 1709| r1709_6(glval) = FunctionAddress[get] : -# 1709| r1709_7(int) = Call[get] : func:r1709_6, this:r1709_5 -# 1709| mu1709_8(unknown) = ^CallSideEffect : ~m? -# 1709| v1709_9(void) = ^IndirectReadSideEffect[-1] : &:r1709_5, ~m? -# 1709| mu1709_10(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1709_5 -# 1709| mu1709_11(int) = Store[#temp1709:20] : &:r1709_2, r1709_7 -# 1709| r1709_12(int &) = CopyValue : r1709_2 -# 1709| mu1709_13(int &&) = Store[i] : &:r1709_1, r1709_12 -# 1710| r1710_1(glval) = VariableAddress[r] : -# 1710| r1710_2(glval) = VariableAddress[unnamed_local_variable] : -# 1710| r1710_3(StructuredBindingTupleNoRefGet &) = Load[unnamed_local_variable] : &:r1710_2, ~m? -# 1710| r1710_4(glval) = CopyValue : r1710_3 -# 1710| r1710_5(glval) = FunctionAddress[get] : -# 1710| r1710_6(int &) = Call[get] : func:r1710_5, this:r1710_4 -# 1710| mu1710_7(unknown) = ^CallSideEffect : ~m? -# 1710| v1710_8(void) = ^IndirectReadSideEffect[-1] : &:r1710_4, ~m? -# 1710| mu1710_9(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1710_4 -# 1710| r1710_10(glval) = CopyValue : r1710_6 -# 1710| r1710_11(int &) = CopyValue : r1710_10 -# 1710| mu1710_12(int &) = Store[r] : &:r1710_1, r1710_11 -# 1711| r1711_1(glval) = VariableAddress[rv] : -# 1711| r1711_2(glval) = VariableAddress[unnamed_local_variable] : -# 1711| r1711_3(StructuredBindingTupleNoRefGet &) = Load[unnamed_local_variable] : &:r1711_2, ~m? -# 1711| r1711_4(glval) = CopyValue : r1711_3 -# 1711| r1711_5(glval) = FunctionAddress[get] : -# 1711| r1711_6(int &&) = Call[get] : func:r1711_5, this:r1711_4 -# 1711| mu1711_7(unknown) = ^CallSideEffect : ~m? -# 1711| v1711_8(void) = ^IndirectReadSideEffect[-1] : &:r1711_4, ~m? -# 1711| mu1711_9(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1711_4 -# 1711| r1711_10(glval) = CopyValue : r1711_6 -# 1711| r1711_11(int &) = CopyValue : r1711_10 -# 1711| mu1711_12(int &&) = Store[rv] : &:r1711_1, r1711_11 -# 1712| r1712_1(int) = Constant[4] : -# 1712| r1712_2(glval) = VariableAddress[i] : -# 1712| r1712_3(int &&) = Load[i] : &:r1712_2, ~m? -# 1712| r1712_4(glval) = CopyValue : r1712_3 -# 1712| mu1712_5(int) = Store[?] : &:r1712_4, r1712_1 -# 1713| r1713_1(glval) = VariableAddress[ri] : -# 1713| r1713_2(glval) = VariableAddress[i] : -# 1713| r1713_3(int &&) = Load[i] : &:r1713_2, ~m? -# 1713| r1713_4(glval) = CopyValue : r1713_3 -# 1713| r1713_5(int &) = CopyValue : r1713_4 -# 1713| mu1713_6(int &) = Store[ri] : &:r1713_1, r1713_5 -# 1714| r1714_1(glval) = VariableAddress[v] : +# 1704| r1704_4(glval) = CopyValue : r1704_3 +# 1704| mu1704_5(int) = Store[?] : &:r1704_4, r1704_1 +# 1705| r1705_1(glval) = VariableAddress[rr] : +# 1705| r1705_2(glval) = VariableAddress[r] : +# 1705| r1705_3(int &) = Load[r] : &:r1705_2, ~m? +# 1705| r1705_4(glval) = CopyValue : r1705_3 +# 1705| r1705_5(int &) = CopyValue : r1705_4 +# 1705| mu1705_6(int &) = Store[rr] : &:r1705_1, r1705_5 +# 1706| r1706_1(glval) = VariableAddress[w] : +# 1706| r1706_2(glval) = VariableAddress[r] : +# 1706| r1706_3(int &) = Load[r] : &:r1706_2, ~m? +# 1706| r1706_4(int) = Load[?] : &:r1706_3, ~m? +# 1706| mu1706_5(int) = Store[w] : &:r1706_1, r1706_4 +# 1710| r1710_1(glval) = VariableAddress[unnamed_local_variable] : +# 1710| r1710_2(glval) = VariableAddress[t] : +# 1710| r1710_3(StructuredBindingTupleNoRefGet &) = CopyValue : r1710_2 +# 1710| mu1710_4(StructuredBindingTupleNoRefGet &) = Store[unnamed_local_variable] : &:r1710_1, r1710_3 +# 1711| r1711_1(glval) = VariableAddress[i] : +# 1711| r1711_2(glval) = VariableAddress[#temp1711:20] : +# 1711| r1711_3(glval) = VariableAddress[unnamed_local_variable] : +# 1711| r1711_4(StructuredBindingTupleNoRefGet &) = Load[unnamed_local_variable] : &:r1711_3, ~m? +# 1711| r1711_5(glval) = CopyValue : r1711_4 +# 1711| r1711_6(glval) = FunctionAddress[get] : +# 1711| r1711_7(int) = Call[get] : func:r1711_6, this:r1711_5 +# 1711| mu1711_8(unknown) = ^CallSideEffect : ~m? +# 1711| v1711_9(void) = ^IndirectReadSideEffect[-1] : &:r1711_5, ~m? +# 1711| mu1711_10(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1711_5 +# 1711| mu1711_11(int) = Store[#temp1711:20] : &:r1711_2, r1711_7 +# 1711| r1711_12(int &) = CopyValue : r1711_2 +# 1711| mu1711_13(int &&) = Store[i] : &:r1711_1, r1711_12 +# 1712| r1712_1(glval) = VariableAddress[r] : +# 1712| r1712_2(glval) = VariableAddress[unnamed_local_variable] : +# 1712| r1712_3(StructuredBindingTupleNoRefGet &) = Load[unnamed_local_variable] : &:r1712_2, ~m? +# 1712| r1712_4(glval) = CopyValue : r1712_3 +# 1712| r1712_5(glval) = FunctionAddress[get] : +# 1712| r1712_6(int &) = Call[get] : func:r1712_5, this:r1712_4 +# 1712| mu1712_7(unknown) = ^CallSideEffect : ~m? +# 1712| v1712_8(void) = ^IndirectReadSideEffect[-1] : &:r1712_4, ~m? +# 1712| mu1712_9(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1712_4 +# 1712| r1712_10(glval) = CopyValue : r1712_6 +# 1712| r1712_11(int &) = CopyValue : r1712_10 +# 1712| mu1712_12(int &) = Store[r] : &:r1712_1, r1712_11 +# 1713| r1713_1(glval) = VariableAddress[rv] : +# 1713| r1713_2(glval) = VariableAddress[unnamed_local_variable] : +# 1713| r1713_3(StructuredBindingTupleNoRefGet &) = Load[unnamed_local_variable] : &:r1713_2, ~m? +# 1713| r1713_4(glval) = CopyValue : r1713_3 +# 1713| r1713_5(glval) = FunctionAddress[get] : +# 1713| r1713_6(int &&) = Call[get] : func:r1713_5, this:r1713_4 +# 1713| mu1713_7(unknown) = ^CallSideEffect : ~m? +# 1713| v1713_8(void) = ^IndirectReadSideEffect[-1] : &:r1713_4, ~m? +# 1713| mu1713_9(StructuredBindingTupleNoRefGet) = ^IndirectMayWriteSideEffect[-1] : &:r1713_4 +# 1713| r1713_10(glval) = CopyValue : r1713_6 +# 1713| r1713_11(int &) = CopyValue : r1713_10 +# 1713| mu1713_12(int &&) = Store[rv] : &:r1713_1, r1713_11 +# 1714| r1714_1(int) = Constant[4] : # 1714| r1714_2(glval) = VariableAddress[i] : # 1714| r1714_3(int &&) = Load[i] : &:r1714_2, ~m? -# 1714| r1714_4(int) = Load[?] : &:r1714_3, ~m? -# 1714| mu1714_5(int) = Store[v] : &:r1714_1, r1714_4 -# 1715| r1715_1(int) = Constant[5] : -# 1715| r1715_2(glval) = VariableAddress[r] : -# 1715| r1715_3(int &) = Load[r] : &:r1715_2, ~m? +# 1714| r1714_4(glval) = CopyValue : r1714_3 +# 1714| mu1714_5(int) = Store[?] : &:r1714_4, r1714_1 +# 1715| r1715_1(glval) = VariableAddress[ri] : +# 1715| r1715_2(glval) = VariableAddress[i] : +# 1715| r1715_3(int &&) = Load[i] : &:r1715_2, ~m? # 1715| r1715_4(glval) = CopyValue : r1715_3 -# 1715| mu1715_5(int) = Store[?] : &:r1715_4, r1715_1 -# 1716| r1716_1(glval) = VariableAddress[rr] : -# 1716| r1716_2(glval) = VariableAddress[r] : -# 1716| r1716_3(int &) = Load[r] : &:r1716_2, ~m? -# 1716| r1716_4(glval) = CopyValue : r1716_3 -# 1716| r1716_5(int &) = CopyValue : r1716_4 -# 1716| mu1716_6(int &) = Store[rr] : &:r1716_1, r1716_5 -# 1717| r1717_1(glval) = VariableAddress[w] : +# 1715| r1715_5(int &) = CopyValue : r1715_4 +# 1715| mu1715_6(int &) = Store[ri] : &:r1715_1, r1715_5 +# 1716| r1716_1(glval) = VariableAddress[v] : +# 1716| r1716_2(glval) = VariableAddress[i] : +# 1716| r1716_3(int &&) = Load[i] : &:r1716_2, ~m? +# 1716| r1716_4(int) = Load[?] : &:r1716_3, ~m? +# 1716| mu1716_5(int) = Store[v] : &:r1716_1, r1716_4 +# 1717| r1717_1(int) = Constant[5] : # 1717| r1717_2(glval) = VariableAddress[r] : # 1717| r1717_3(int &) = Load[r] : &:r1717_2, ~m? -# 1717| r1717_4(int) = Load[?] : &:r1717_3, ~m? -# 1717| mu1717_5(int) = Store[w] : &:r1717_1, r1717_4 -# 1719| v1719_1(void) = NoOp : -# 1694| v1694_4(void) = ReturnVoid : -# 1694| v1694_5(void) = AliasedUse : ~m? -# 1694| v1694_6(void) = ExitFunction : +# 1717| r1717_4(glval) = CopyValue : r1717_3 +# 1717| mu1717_5(int) = Store[?] : &:r1717_4, r1717_1 +# 1718| r1718_1(glval) = VariableAddress[rr] : +# 1718| r1718_2(glval) = VariableAddress[r] : +# 1718| r1718_3(int &) = Load[r] : &:r1718_2, ~m? +# 1718| r1718_4(glval) = CopyValue : r1718_3 +# 1718| r1718_5(int &) = CopyValue : r1718_4 +# 1718| mu1718_6(int &) = Store[rr] : &:r1718_1, r1718_5 +# 1719| r1719_1(glval) = VariableAddress[w] : +# 1719| r1719_2(glval) = VariableAddress[r] : +# 1719| r1719_3(int &) = Load[r] : &:r1719_2, ~m? +# 1719| r1719_4(int) = Load[?] : &:r1719_3, ~m? +# 1719| mu1719_5(int) = Store[w] : &:r1719_1, r1719_4 +# 1721| v1721_1(void) = NoOp : +# 1696| v1696_4(void) = ReturnVoid : +# 1696| v1696_5(void) = AliasedUse : ~m? +# 1696| v1696_6(void) = ExitFunction : -# 1721| void array_structured_binding_non_ref_init() -# 1721| Block 0 -# 1721| v1721_1(void) = EnterFunction : -# 1721| mu1721_2(unknown) = AliasedDefinition : -# 1721| mu1721_3(unknown) = InitializeNonLocal : -# 1722| r1722_1(glval) = VariableAddress[xs] : -# 1722| mu1722_2(int[2]) = Uninitialized[xs] : &:r1722_1 -# 1722| r1722_3(int) = Constant[0] : -# 1722| r1722_4(glval) = PointerAdd[4] : r1722_1, r1722_3 -# 1722| r1722_5(int) = Constant[1] : -# 1722| mu1722_6(int) = Store[?] : &:r1722_4, r1722_5 -# 1722| r1722_7(int) = Constant[1] : -# 1722| r1722_8(glval) = PointerAdd[4] : r1722_1, r1722_7 -# 1722| r1722_9(int) = Constant[2] : -# 1722| mu1722_10(int) = Store[?] : &:r1722_8, r1722_9 -# 1723| r1723_1(glval) = VariableAddress[(unnamed local variable)] : -# 1723| r1723_2(glval) = VariableAddress[xs] : -# 1723| r1723_3(int[2]) = Load[xs] : &:r1723_2, ~m? -# 1723| mu1723_4(int[2]) = Store[(unnamed local variable)] : &:r1723_1, r1723_3 -# 1723| r1723_5(glval) = VariableAddress[x0] : +# 1723| void array_structured_binding_non_ref_init() +# 1723| Block 0 +# 1723| v1723_1(void) = EnterFunction : +# 1723| mu1723_2(unknown) = AliasedDefinition : +# 1723| mu1723_3(unknown) = InitializeNonLocal : +# 1724| r1724_1(glval) = VariableAddress[xs] : +# 1724| mu1724_2(int[2]) = Uninitialized[xs] : &:r1724_1 +# 1724| r1724_3(int) = Constant[0] : +# 1724| r1724_4(glval) = PointerAdd[4] : r1724_1, r1724_3 +# 1724| r1724_5(int) = Constant[1] : +# 1724| mu1724_6(int) = Store[?] : &:r1724_4, r1724_5 +# 1724| r1724_7(int) = Constant[1] : +# 1724| r1724_8(glval) = PointerAdd[4] : r1724_1, r1724_7 +# 1724| r1724_9(int) = Constant[2] : +# 1724| mu1724_10(int) = Store[?] : &:r1724_8, r1724_9 +# 1725| r1725_1(glval) = VariableAddress[(unnamed local variable)] : +# 1725| r1725_2(glval) = VariableAddress[xs] : +# 1725| r1725_3(int[2]) = Load[xs] : &:r1725_2, ~m? +# 1725| mu1725_4(int[2]) = Store[(unnamed local variable)] : &:r1725_1, r1725_3 +# 1725| r1725_5(glval) = VariableAddress[x0] : #-----| r0_1(glval) = VariableAddress[(unnamed local variable)] : #-----| r0_2(int *) = Convert : r0_1 #-----| r0_3(unsigned long) = Constant[0] : #-----| r0_4(glval) = PointerAdd[4] : r0_2, r0_3 -#-----| mu0_5(int &) = Store[x0] : &:r1723_5, r0_4 -# 1723| r1723_6(glval) = VariableAddress[x1] : +#-----| mu0_5(int &) = Store[x0] : &:r1725_5, r0_4 +# 1725| r1725_6(glval) = VariableAddress[x1] : #-----| r0_6(glval) = VariableAddress[(unnamed local variable)] : #-----| r0_7(int *) = Convert : r0_6 #-----| r0_8(unsigned long) = Constant[1] : #-----| r0_9(glval) = PointerAdd[4] : r0_7, r0_8 -#-----| mu0_10(int &) = Store[x1] : &:r1723_6, r0_9 -# 1724| v1724_1(void) = NoOp : -# 1721| v1721_4(void) = ReturnVoid : -# 1721| v1721_5(void) = AliasedUse : ~m? -# 1721| v1721_6(void) = ExitFunction : +#-----| mu0_10(int &) = Store[x1] : &:r1725_6, r0_9 +# 1726| v1726_1(void) = NoOp : +# 1723| v1723_4(void) = ReturnVoid : +# 1723| v1723_5(void) = AliasedUse : ~m? +# 1723| v1723_6(void) = ExitFunction : -# 1729| void CapturedLambdaMyObj::CapturedLambdaMyObj() -# 1729| Block 0 -# 1729| v1729_1(void) = EnterFunction : -# 1729| mu1729_2(unknown) = AliasedDefinition : -# 1729| mu1729_3(unknown) = InitializeNonLocal : -# 1729| r1729_4(glval) = VariableAddress[#this] : -# 1729| mu1729_5(glval) = InitializeParameter[#this] : &:r1729_4 -# 1729| r1729_6(glval) = Load[#this] : &:r1729_4, ~m? -# 1729| mu1729_7(CapturedLambdaMyObj) = InitializeIndirection[#this] : &:r1729_6 -# 1729| v1729_8(void) = NoOp : -# 1729| v1729_9(void) = ReturnIndirection[#this] : &:r1729_6, ~m? -# 1729| v1729_10(void) = ReturnVoid : -# 1729| v1729_11(void) = AliasedUse : ~m? -# 1729| v1729_12(void) = ExitFunction : +# 1731| void CapturedLambdaMyObj::CapturedLambdaMyObj() +# 1731| Block 0 +# 1731| v1731_1(void) = EnterFunction : +# 1731| mu1731_2(unknown) = AliasedDefinition : +# 1731| mu1731_3(unknown) = InitializeNonLocal : +# 1731| r1731_4(glval) = VariableAddress[#this] : +# 1731| mu1731_5(glval) = InitializeParameter[#this] : &:r1731_4 +# 1731| r1731_6(glval) = Load[#this] : &:r1731_4, ~m? +# 1731| mu1731_7(CapturedLambdaMyObj) = InitializeIndirection[#this] : &:r1731_6 +# 1731| v1731_8(void) = NoOp : +# 1731| v1731_9(void) = ReturnIndirection[#this] : &:r1731_6, ~m? +# 1731| v1731_10(void) = ReturnVoid : +# 1731| v1731_11(void) = AliasedUse : ~m? +# 1731| v1731_12(void) = ExitFunction : -# 1732| void captured_lambda(int, int&, int&&) -# 1732| Block 0 -# 1732| v1732_1(void) = EnterFunction : -# 1732| mu1732_2(unknown) = AliasedDefinition : -# 1732| mu1732_3(unknown) = InitializeNonLocal : -# 1732| r1732_4(glval) = VariableAddress[x] : -# 1732| mu1732_5(int) = InitializeParameter[x] : &:r1732_4 -# 1732| r1732_6(glval) = VariableAddress[y] : -# 1732| mu1732_7(int &) = InitializeParameter[y] : &:r1732_6 -# 1732| r1732_8(int &) = Load[y] : &:r1732_6, ~m? -# 1732| mu1732_9(unknown) = InitializeIndirection[y] : &:r1732_8 -# 1732| r1732_10(glval) = VariableAddress[z] : -# 1732| mu1732_11(int &&) = InitializeParameter[z] : &:r1732_10 -# 1732| r1732_12(int &&) = Load[z] : &:r1732_10, ~m? -# 1732| mu1732_13(unknown) = InitializeIndirection[z] : &:r1732_12 -# 1734| r1734_1(glval) = VariableAddress[obj1] : -# 1734| r1734_2(glval) = VariableAddress[#temp1734:24] : -# 1734| mu1734_3(CapturedLambdaMyObj) = Uninitialized[#temp1734:24] : &:r1734_2 -# 1734| r1734_4(glval) = FunctionAddress[CapturedLambdaMyObj] : -# 1734| v1734_5(void) = Call[CapturedLambdaMyObj] : func:r1734_4, this:r1734_2 -# 1734| mu1734_6(unknown) = ^CallSideEffect : ~m? -# 1734| mu1734_7(CapturedLambdaMyObj) = ^IndirectMayWriteSideEffect[-1] : &:r1734_2 -# 1734| r1734_8(glval) = Convert : r1734_2 -# 1734| r1734_9(CapturedLambdaMyObj &) = CopyValue : r1734_8 -# 1734| mu1734_10(CapturedLambdaMyObj &) = Store[obj1] : &:r1734_1, r1734_9 -# 1735| r1735_1(glval) = VariableAddress[obj2] : -# 1735| mu1735_2(CapturedLambdaMyObj) = Uninitialized[obj2] : &:r1735_1 -# 1735| r1735_3(glval) = FunctionAddress[CapturedLambdaMyObj] : -# 1735| v1735_4(void) = Call[CapturedLambdaMyObj] : func:r1735_3, this:r1735_1 -# 1735| mu1735_5(unknown) = ^CallSideEffect : ~m? -# 1735| mu1735_6(CapturedLambdaMyObj) = ^IndirectMayWriteSideEffect[-1] : &:r1735_1 -# 1737| r1737_1(glval) = VariableAddress[lambda_outer] : -# 1737| r1737_2(glval) = VariableAddress[#temp1737:24] : -# 1737| mu1737_3(decltype([...](...){...})) = Uninitialized[#temp1737:24] : &:r1737_2 -# 1737| r1737_4(glval) = FieldAddress[obj1] : r1737_2 -# 1737| r1737_5(glval) = VariableAddress[obj1] : -# 1737| r1737_6(CapturedLambdaMyObj &) = Load[obj1] : &:r1737_5, ~m? -#-----| r0_1(CapturedLambdaMyObj) = Load[?] : &:r1737_6, ~m? -#-----| mu0_2(CapturedLambdaMyObj) = Store[?] : &:r1737_4, r0_1 -# 1737| r1737_7(glval) = FieldAddress[obj2] : r1737_2 -# 1737| r1737_8(glval) = VariableAddress[obj2] : -# 1737| r1737_9(CapturedLambdaMyObj) = Load[obj2] : &:r1737_8, ~m? -# 1737| mu1737_10(CapturedLambdaMyObj) = Store[?] : &:r1737_7, r1737_9 -# 1737| r1737_11(glval) = FieldAddress[x] : r1737_2 -# 1737| r1737_12(glval) = VariableAddress[x] : -# 1737| r1737_13(int) = Load[x] : &:r1737_12, ~m? -# 1737| mu1737_14(int) = Store[?] : &:r1737_11, r1737_13 -# 1737| r1737_15(glval) = FieldAddress[y] : r1737_2 -# 1737| r1737_16(glval) = VariableAddress[y] : -# 1737| r1737_17(int &) = Load[y] : &:r1737_16, ~m? -# 1739| r1739_1(int) = Load[?] : &:r1737_17, ~m? -# 1739| mu1739_2(int) = Store[?] : &:r1737_15, r1739_1 -# 1737| r1737_18(glval) = FieldAddress[z] : r1737_2 -# 1737| r1737_19(glval) = VariableAddress[z] : -# 1737| r1737_20(int &&) = Load[z] : &:r1737_19, ~m? -# 1739| r1739_3(int) = Load[?] : &:r1737_20, ~m? -# 1739| mu1739_4(int) = Store[?] : &:r1737_18, r1739_3 -# 1737| r1737_21(decltype([...](...){...})) = Load[#temp1737:24] : &:r1737_2, ~m? -# 1737| mu1737_22(decltype([...](...){...})) = Store[lambda_outer] : &:r1737_1, r1737_21 -# 1740| v1740_1(void) = NoOp : -# 1732| v1732_14(void) = ReturnIndirection[y] : &:r1732_8, ~m? -# 1732| v1732_15(void) = ReturnIndirection[z] : &:r1732_12, ~m? -# 1732| v1732_16(void) = ReturnVoid : -# 1732| v1732_17(void) = AliasedUse : ~m? -# 1732| v1732_18(void) = ExitFunction : +# 1734| void captured_lambda(int, int&, int&&) +# 1734| Block 0 +# 1734| v1734_1(void) = EnterFunction : +# 1734| mu1734_2(unknown) = AliasedDefinition : +# 1734| mu1734_3(unknown) = InitializeNonLocal : +# 1734| r1734_4(glval) = VariableAddress[x] : +# 1734| mu1734_5(int) = InitializeParameter[x] : &:r1734_4 +# 1734| r1734_6(glval) = VariableAddress[y] : +# 1734| mu1734_7(int &) = InitializeParameter[y] : &:r1734_6 +# 1734| r1734_8(int &) = Load[y] : &:r1734_6, ~m? +# 1734| mu1734_9(unknown) = InitializeIndirection[y] : &:r1734_8 +# 1734| r1734_10(glval) = VariableAddress[z] : +# 1734| mu1734_11(int &&) = InitializeParameter[z] : &:r1734_10 +# 1734| r1734_12(int &&) = Load[z] : &:r1734_10, ~m? +# 1734| mu1734_13(unknown) = InitializeIndirection[z] : &:r1734_12 +# 1736| r1736_1(glval) = VariableAddress[obj1] : +# 1736| r1736_2(glval) = VariableAddress[#temp1736:24] : +# 1736| mu1736_3(CapturedLambdaMyObj) = Uninitialized[#temp1736:24] : &:r1736_2 +# 1736| r1736_4(glval) = FunctionAddress[CapturedLambdaMyObj] : +# 1736| v1736_5(void) = Call[CapturedLambdaMyObj] : func:r1736_4, this:r1736_2 +# 1736| mu1736_6(unknown) = ^CallSideEffect : ~m? +# 1736| mu1736_7(CapturedLambdaMyObj) = ^IndirectMayWriteSideEffect[-1] : &:r1736_2 +# 1736| r1736_8(glval) = Convert : r1736_2 +# 1736| r1736_9(CapturedLambdaMyObj &) = CopyValue : r1736_8 +# 1736| mu1736_10(CapturedLambdaMyObj &) = Store[obj1] : &:r1736_1, r1736_9 +# 1737| r1737_1(glval) = VariableAddress[obj2] : +# 1737| mu1737_2(CapturedLambdaMyObj) = Uninitialized[obj2] : &:r1737_1 +# 1737| r1737_3(glval) = FunctionAddress[CapturedLambdaMyObj] : +# 1737| v1737_4(void) = Call[CapturedLambdaMyObj] : func:r1737_3, this:r1737_1 +# 1737| mu1737_5(unknown) = ^CallSideEffect : ~m? +# 1737| mu1737_6(CapturedLambdaMyObj) = ^IndirectMayWriteSideEffect[-1] : &:r1737_1 +# 1739| r1739_1(glval) = VariableAddress[lambda_outer] : +# 1739| r1739_2(glval) = VariableAddress[#temp1739:24] : +# 1739| mu1739_3(decltype([...](...){...})) = Uninitialized[#temp1739:24] : &:r1739_2 +# 1739| r1739_4(glval) = FieldAddress[obj1] : r1739_2 +# 1739| r1739_5(glval) = VariableAddress[obj1] : +# 1739| r1739_6(CapturedLambdaMyObj &) = Load[obj1] : &:r1739_5, ~m? +#-----| r0_1(CapturedLambdaMyObj) = Load[?] : &:r1739_6, ~m? +#-----| mu0_2(CapturedLambdaMyObj) = Store[?] : &:r1739_4, r0_1 +# 1739| r1739_7(glval) = FieldAddress[obj2] : r1739_2 +# 1739| r1739_8(glval) = VariableAddress[obj2] : +# 1739| r1739_9(CapturedLambdaMyObj) = Load[obj2] : &:r1739_8, ~m? +# 1739| mu1739_10(CapturedLambdaMyObj) = Store[?] : &:r1739_7, r1739_9 +# 1739| r1739_11(glval) = FieldAddress[x] : r1739_2 +# 1739| r1739_12(glval) = VariableAddress[x] : +# 1739| r1739_13(int) = Load[x] : &:r1739_12, ~m? +# 1739| mu1739_14(int) = Store[?] : &:r1739_11, r1739_13 +# 1739| r1739_15(glval) = FieldAddress[y] : r1739_2 +# 1739| r1739_16(glval) = VariableAddress[y] : +# 1739| r1739_17(int &) = Load[y] : &:r1739_16, ~m? +# 1741| r1741_1(int) = Load[?] : &:r1739_17, ~m? +# 1741| mu1741_2(int) = Store[?] : &:r1739_15, r1741_1 +# 1739| r1739_18(glval) = FieldAddress[z] : r1739_2 +# 1739| r1739_19(glval) = VariableAddress[z] : +# 1739| r1739_20(int &&) = Load[z] : &:r1739_19, ~m? +# 1741| r1741_3(int) = Load[?] : &:r1739_20, ~m? +# 1741| mu1741_4(int) = Store[?] : &:r1739_18, r1741_3 +# 1739| r1739_21(decltype([...](...){...})) = Load[#temp1739:24] : &:r1739_2, ~m? +# 1739| mu1739_22(decltype([...](...){...})) = Store[lambda_outer] : &:r1739_1, r1739_21 +# 1742| v1742_1(void) = NoOp : +# 1734| v1734_14(void) = ReturnIndirection[y] : &:r1734_8, ~m? +# 1734| v1734_15(void) = ReturnIndirection[z] : &:r1734_12, ~m? +# 1734| v1734_16(void) = ReturnVoid : +# 1734| v1734_17(void) = AliasedUse : ~m? +# 1734| v1734_18(void) = ExitFunction : -# 1737| void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1737, col. 25)::operator()() const -# 1737| Block 0 -# 1737| v1737_1(void) = EnterFunction : -# 1737| mu1737_2(unknown) = AliasedDefinition : -# 1737| mu1737_3(unknown) = InitializeNonLocal : -# 1737| r1737_4(glval) = VariableAddress[#this] : -# 1737| mu1737_5(glval) = InitializeParameter[#this] : &:r1737_4 -# 1737| r1737_6(glval) = Load[#this] : &:r1737_4, ~m? -# 1737| mu1737_7(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1737_6 -# 1738| r1738_1(glval) = VariableAddress[lambda_inner] : -# 1738| r1738_2(glval) = VariableAddress[#temp1738:28] : -# 1738| mu1738_3(decltype([...](...){...})) = Uninitialized[#temp1738:28] : &:r1738_2 -# 1738| r1738_4(glval) = FieldAddress[obj1] : r1738_2 -# 1738| r1738_5(glval) = VariableAddress[#this] : -# 1738| r1738_6(lambda [] type at line 1738, col. 29 *) = Load[#this] : &:r1738_5, ~m? -# 1738| r1738_7(glval) = FieldAddress[obj1] : r1738_6 -# 1738| r1738_8(CapturedLambdaMyObj) = Load[?] : &:r1738_7, ~m? -# 1738| mu1738_9(CapturedLambdaMyObj) = Store[?] : &:r1738_4, r1738_8 -# 1738| r1738_10(glval) = FieldAddress[obj2] : r1738_2 -# 1738| r1738_11(glval) = VariableAddress[#this] : -# 1738| r1738_12(lambda [] type at line 1738, col. 29 *) = Load[#this] : &:r1738_11, ~m? -# 1738| r1738_13(glval) = FieldAddress[obj2] : r1738_12 -# 1738| r1738_14(CapturedLambdaMyObj) = Load[?] : &:r1738_13, ~m? -# 1738| mu1738_15(CapturedLambdaMyObj) = Store[?] : &:r1738_10, r1738_14 -# 1738| r1738_16(glval) = FieldAddress[x] : r1738_2 -# 1738| r1738_17(glval) = VariableAddress[#this] : -# 1738| r1738_18(lambda [] type at line 1737, col. 25 *) = Load[#this] : &:r1738_17, ~m? -# 1738| r1738_19(glval) = FieldAddress[x] : r1738_18 -# 1738| r1738_20(int) = Load[?] : &:r1738_19, ~m? -# 1738| mu1738_21(int) = Store[?] : &:r1738_16, r1738_20 -# 1738| r1738_22(glval) = FieldAddress[y] : r1738_2 -# 1738| r1738_23(glval) = VariableAddress[#this] : -# 1738| r1738_24(lambda [] type at line 1737, col. 25 *) = Load[#this] : &:r1738_23, ~m? -# 1738| r1738_25(glval) = FieldAddress[y] : r1738_24 -# 1738| r1738_26(int) = Load[?] : &:r1738_25, ~m? -# 1738| mu1738_27(int) = Store[?] : &:r1738_22, r1738_26 -# 1738| r1738_28(glval) = FieldAddress[z] : r1738_2 -# 1738| r1738_29(glval) = VariableAddress[#this] : -# 1738| r1738_30(lambda [] type at line 1737, col. 25 *) = Load[#this] : &:r1738_29, ~m? -# 1738| r1738_31(glval) = FieldAddress[z] : r1738_30 -# 1738| r1738_32(int) = Load[?] : &:r1738_31, ~m? -# 1738| mu1738_33(int) = Store[?] : &:r1738_28, r1738_32 -# 1738| r1738_34(decltype([...](...){...})) = Load[#temp1738:28] : &:r1738_2, ~m? -# 1738| mu1738_35(decltype([...](...){...})) = Store[lambda_inner] : &:r1738_1, r1738_34 -# 1739| v1739_1(void) = NoOp : -# 1737| v1737_8(void) = ReturnIndirection[#this] : &:r1737_6, ~m? -# 1737| v1737_9(void) = ReturnVoid : -# 1737| v1737_10(void) = AliasedUse : ~m? -# 1737| v1737_11(void) = ExitFunction : +# 1739| void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1739, col. 25)::operator()() const +# 1739| Block 0 +# 1739| v1739_1(void) = EnterFunction : +# 1739| mu1739_2(unknown) = AliasedDefinition : +# 1739| mu1739_3(unknown) = InitializeNonLocal : +# 1739| r1739_4(glval) = VariableAddress[#this] : +# 1739| mu1739_5(glval) = InitializeParameter[#this] : &:r1739_4 +# 1739| r1739_6(glval) = Load[#this] : &:r1739_4, ~m? +# 1739| mu1739_7(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1739_6 +# 1740| r1740_1(glval) = VariableAddress[lambda_inner] : +# 1740| r1740_2(glval) = VariableAddress[#temp1740:28] : +# 1740| mu1740_3(decltype([...](...){...})) = Uninitialized[#temp1740:28] : &:r1740_2 +# 1740| r1740_4(glval) = FieldAddress[obj1] : r1740_2 +# 1740| r1740_5(glval) = VariableAddress[#this] : +# 1740| r1740_6(lambda [] type at line 1740, col. 29 *) = Load[#this] : &:r1740_5, ~m? +# 1740| r1740_7(glval) = FieldAddress[obj1] : r1740_6 +# 1740| r1740_8(CapturedLambdaMyObj) = Load[?] : &:r1740_7, ~m? +# 1740| mu1740_9(CapturedLambdaMyObj) = Store[?] : &:r1740_4, r1740_8 +# 1740| r1740_10(glval) = FieldAddress[obj2] : r1740_2 +# 1740| r1740_11(glval) = VariableAddress[#this] : +# 1740| r1740_12(lambda [] type at line 1740, col. 29 *) = Load[#this] : &:r1740_11, ~m? +# 1740| r1740_13(glval) = FieldAddress[obj2] : r1740_12 +# 1740| r1740_14(CapturedLambdaMyObj) = Load[?] : &:r1740_13, ~m? +# 1740| mu1740_15(CapturedLambdaMyObj) = Store[?] : &:r1740_10, r1740_14 +# 1740| r1740_16(glval) = FieldAddress[x] : r1740_2 +# 1740| r1740_17(glval) = VariableAddress[#this] : +# 1740| r1740_18(lambda [] type at line 1739, col. 25 *) = Load[#this] : &:r1740_17, ~m? +# 1740| r1740_19(glval) = FieldAddress[x] : r1740_18 +# 1740| r1740_20(int) = Load[?] : &:r1740_19, ~m? +# 1740| mu1740_21(int) = Store[?] : &:r1740_16, r1740_20 +# 1740| r1740_22(glval) = FieldAddress[y] : r1740_2 +# 1740| r1740_23(glval) = VariableAddress[#this] : +# 1740| r1740_24(lambda [] type at line 1739, col. 25 *) = Load[#this] : &:r1740_23, ~m? +# 1740| r1740_25(glval) = FieldAddress[y] : r1740_24 +# 1740| r1740_26(int) = Load[?] : &:r1740_25, ~m? +# 1740| mu1740_27(int) = Store[?] : &:r1740_22, r1740_26 +# 1740| r1740_28(glval) = FieldAddress[z] : r1740_2 +# 1740| r1740_29(glval) = VariableAddress[#this] : +# 1740| r1740_30(lambda [] type at line 1739, col. 25 *) = Load[#this] : &:r1740_29, ~m? +# 1740| r1740_31(glval) = FieldAddress[z] : r1740_30 +# 1740| r1740_32(int) = Load[?] : &:r1740_31, ~m? +# 1740| mu1740_33(int) = Store[?] : &:r1740_28, r1740_32 +# 1740| r1740_34(decltype([...](...){...})) = Load[#temp1740:28] : &:r1740_2, ~m? +# 1740| mu1740_35(decltype([...](...){...})) = Store[lambda_inner] : &:r1740_1, r1740_34 +# 1741| v1741_1(void) = NoOp : +# 1739| v1739_8(void) = ReturnIndirection[#this] : &:r1739_6, ~m? +# 1739| v1739_9(void) = ReturnVoid : +# 1739| v1739_10(void) = AliasedUse : ~m? +# 1739| v1739_11(void) = ExitFunction : -# 1738| void (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1737, col. 25)::operator()() const)::(lambda [] type at line 1738, col. 29)::operator()() const -# 1738| Block 0 -# 1738| v1738_1(void) = EnterFunction : -# 1738| mu1738_2(unknown) = AliasedDefinition : -# 1738| mu1738_3(unknown) = InitializeNonLocal : -# 1738| r1738_4(glval) = VariableAddress[#this] : -# 1738| mu1738_5(glval) = InitializeParameter[#this] : &:r1738_4 -# 1738| r1738_6(glval) = Load[#this] : &:r1738_4, ~m? -# 1738| mu1738_7(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1738_6 -# 1738| v1738_8(void) = NoOp : -# 1738| v1738_9(void) = NoOp : -# 1738| v1738_10(void) = ReturnIndirection[#this] : &:r1738_6, ~m? -# 1738| v1738_11(void) = ReturnVoid : -# 1738| v1738_12(void) = AliasedUse : ~m? -# 1738| v1738_13(void) = ExitFunction : +# 1740| void (void (void captured_lambda(int, int&, int&&))::(lambda [] type at line 1739, col. 25)::operator()() const)::(lambda [] type at line 1740, col. 29)::operator()() const +# 1740| Block 0 +# 1740| v1740_1(void) = EnterFunction : +# 1740| mu1740_2(unknown) = AliasedDefinition : +# 1740| mu1740_3(unknown) = InitializeNonLocal : +# 1740| r1740_4(glval) = VariableAddress[#this] : +# 1740| mu1740_5(glval) = InitializeParameter[#this] : &:r1740_4 +# 1740| r1740_6(glval) = Load[#this] : &:r1740_4, ~m? +# 1740| mu1740_7(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1740_6 +# 1740| v1740_8(void) = NoOp : +# 1740| v1740_9(void) = NoOp : +# 1740| v1740_10(void) = ReturnIndirection[#this] : &:r1740_6, ~m? +# 1740| v1740_11(void) = ReturnVoid : +# 1740| v1740_12(void) = AliasedUse : ~m? +# 1740| v1740_13(void) = ExitFunction : -# 1742| int goto_on_same_line() -# 1742| Block 0 -# 1742| v1742_1(void) = EnterFunction : -# 1742| mu1742_2(unknown) = AliasedDefinition : -# 1742| mu1742_3(unknown) = InitializeNonLocal : -# 1743| r1743_1(glval) = VariableAddress[x] : -# 1743| r1743_2(int) = Constant[42] : -# 1743| mu1743_3(int) = Store[x] : &:r1743_1, r1743_2 -# 1744| v1744_1(void) = NoOp : -# 1744| v1744_2(void) = NoOp : -# 1745| r1745_1(glval) = VariableAddress[#return] : -# 1745| r1745_2(glval) = VariableAddress[x] : -# 1745| r1745_3(int) = Load[x] : &:r1745_2, ~m? -# 1745| mu1745_4(int) = Store[#return] : &:r1745_1, r1745_3 -# 1742| r1742_4(glval) = VariableAddress[#return] : -# 1742| v1742_5(void) = ReturnValue : &:r1742_4, ~m? -# 1742| v1742_6(void) = AliasedUse : ~m? -# 1742| v1742_7(void) = ExitFunction : +# 1744| int goto_on_same_line() +# 1744| Block 0 +# 1744| v1744_1(void) = EnterFunction : +# 1744| mu1744_2(unknown) = AliasedDefinition : +# 1744| mu1744_3(unknown) = InitializeNonLocal : +# 1745| r1745_1(glval) = VariableAddress[x] : +# 1745| r1745_2(int) = Constant[42] : +# 1745| mu1745_3(int) = Store[x] : &:r1745_1, r1745_2 +# 1746| v1746_1(void) = NoOp : +# 1746| v1746_2(void) = NoOp : +# 1747| r1747_1(glval) = VariableAddress[#return] : +# 1747| r1747_2(glval) = VariableAddress[x] : +# 1747| r1747_3(int) = Load[x] : &:r1747_2, ~m? +# 1747| mu1747_4(int) = Store[#return] : &:r1747_1, r1747_3 +# 1744| r1744_4(glval) = VariableAddress[#return] : +# 1744| v1744_5(void) = ReturnValue : &:r1744_4, ~m? +# 1744| v1744_6(void) = AliasedUse : ~m? +# 1744| v1744_7(void) = ExitFunction : -# 1750| void TrivialLambdaClass::m() const -# 1750| Block 0 -# 1750| v1750_1(void) = EnterFunction : -# 1750| mu1750_2(unknown) = AliasedDefinition : -# 1750| mu1750_3(unknown) = InitializeNonLocal : -# 1750| r1750_4(glval) = VariableAddress[#this] : -# 1750| mu1750_5(glval) = InitializeParameter[#this] : &:r1750_4 -# 1750| r1750_6(glval) = Load[#this] : &:r1750_4, ~m? -# 1750| mu1750_7(TrivialLambdaClass) = InitializeIndirection[#this] : &:r1750_6 -# 1751| r1751_1(glval) = VariableAddress[l_m_outer] : -# 1751| r1751_2(glval) = VariableAddress[#temp1751:25] : -# 1751| mu1751_3(decltype([...](...){...})) = Uninitialized[#temp1751:25] : &:r1751_2 -# 1751| r1751_4(glval) = FieldAddress[(captured this)] : r1751_2 -# 1751| r1751_5(glval) = VariableAddress[#this] : -# 1751| r1751_6(TrivialLambdaClass *) = Load[#this] : &:r1751_5, ~m? -# 1751| r1751_7(TrivialLambdaClass) = Load[?] : &:r1751_6, ~m? -# 1751| mu1751_8(TrivialLambdaClass) = Store[?] : &:r1751_4, r1751_7 -# 1751| r1751_9(decltype([...](...){...})) = Load[#temp1751:25] : &:r1751_2, ~m? -# 1751| mu1751_10(decltype([...](...){...})) = Store[l_m_outer] : &:r1751_1, r1751_9 -# 1758| v1758_1(void) = NoOp : -# 1750| v1750_8(void) = ReturnIndirection[#this] : &:r1750_6, ~m? -# 1750| v1750_9(void) = ReturnVoid : -# 1750| v1750_10(void) = AliasedUse : ~m? -# 1750| v1750_11(void) = ExitFunction : +# 1752| void TrivialLambdaClass::m() const +# 1752| Block 0 +# 1752| v1752_1(void) = EnterFunction : +# 1752| mu1752_2(unknown) = AliasedDefinition : +# 1752| mu1752_3(unknown) = InitializeNonLocal : +# 1752| r1752_4(glval) = VariableAddress[#this] : +# 1752| mu1752_5(glval) = InitializeParameter[#this] : &:r1752_4 +# 1752| r1752_6(glval) = Load[#this] : &:r1752_4, ~m? +# 1752| mu1752_7(TrivialLambdaClass) = InitializeIndirection[#this] : &:r1752_6 +# 1753| r1753_1(glval) = VariableAddress[l_m_outer] : +# 1753| r1753_2(glval) = VariableAddress[#temp1753:25] : +# 1753| mu1753_3(decltype([...](...){...})) = Uninitialized[#temp1753:25] : &:r1753_2 +# 1753| r1753_4(glval) = FieldAddress[(captured this)] : r1753_2 +# 1753| r1753_5(glval) = VariableAddress[#this] : +# 1753| r1753_6(TrivialLambdaClass *) = Load[#this] : &:r1753_5, ~m? +# 1753| r1753_7(TrivialLambdaClass) = Load[?] : &:r1753_6, ~m? +# 1753| mu1753_8(TrivialLambdaClass) = Store[?] : &:r1753_4, r1753_7 +# 1753| r1753_9(decltype([...](...){...})) = Load[#temp1753:25] : &:r1753_2, ~m? +# 1753| mu1753_10(decltype([...](...){...})) = Store[l_m_outer] : &:r1753_1, r1753_9 +# 1760| v1760_1(void) = NoOp : +# 1752| v1752_8(void) = ReturnIndirection[#this] : &:r1752_6, ~m? +# 1752| v1752_9(void) = ReturnVoid : +# 1752| v1752_10(void) = AliasedUse : ~m? +# 1752| v1752_11(void) = ExitFunction : -# 1751| void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1751, col. 26)::operator()() const -# 1751| Block 0 -# 1751| v1751_1(void) = EnterFunction : -# 1751| mu1751_2(unknown) = AliasedDefinition : -# 1751| mu1751_3(unknown) = InitializeNonLocal : -# 1751| r1751_4(glval) = VariableAddress[#this] : -# 1751| mu1751_5(glval) = InitializeParameter[#this] : &:r1751_4 -# 1751| r1751_6(glval) = Load[#this] : &:r1751_4, ~m? -# 1751| mu1751_7(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1751_6 -# 1752| r1752_1(glval) = VariableAddress[#this] : -# 1752| r1752_2(lambda [] type at line 1751, col. 26 *) = Load[#this] : &:r1752_1, ~m? -# 1752| r1752_3(glval) = FieldAddress[(captured this)] : r1752_2 -# 1752| r1752_4(TrivialLambdaClass *) = CopyValue : r1752_3 -# 1752| r1752_5(glval) = FunctionAddress[m] : -# 1752| v1752_6(void) = Call[m] : func:r1752_5, this:r1752_4 -# 1752| mu1752_7(unknown) = ^CallSideEffect : ~m? -# 1752| v1752_8(void) = ^IndirectReadSideEffect[-1] : &:r1752_4, ~m? -# 1754| r1754_1(glval) = VariableAddress[l_m_inner] : -# 1754| r1754_2(glval) = VariableAddress[#temp1754:29] : -# 1754| mu1754_3(decltype([...](...){...})) = Uninitialized[#temp1754:29] : &:r1754_2 -# 1754| r1754_4(glval) = FieldAddress[(captured this)] : r1754_2 -# 1754| r1754_5(glval) = VariableAddress[#this] : -# 1754| r1754_6(lambda [] type at line 1754, col. 30 *) = Load[#this] : &:r1754_5, ~m? -# 1754| r1754_7(glval) = FieldAddress[(captured this)] : r1754_6 -# 1754| r1754_8(TrivialLambdaClass) = Load[?] : &:r1754_7, ~m? -# 1754| mu1754_9(TrivialLambdaClass) = Store[?] : &:r1754_4, r1754_8 -# 1754| r1754_10(decltype([...](...){...})) = Load[#temp1754:29] : &:r1754_2, ~m? -# 1754| mu1754_11(decltype([...](...){...})) = Store[l_m_inner] : &:r1754_1, r1754_10 -# 1757| v1757_1(void) = NoOp : -# 1751| v1751_8(void) = ReturnIndirection[#this] : &:r1751_6, ~m? -# 1751| v1751_9(void) = ReturnVoid : -# 1751| v1751_10(void) = AliasedUse : ~m? -# 1751| v1751_11(void) = ExitFunction : +# 1753| void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1753, col. 26)::operator()() const +# 1753| Block 0 +# 1753| v1753_1(void) = EnterFunction : +# 1753| mu1753_2(unknown) = AliasedDefinition : +# 1753| mu1753_3(unknown) = InitializeNonLocal : +# 1753| r1753_4(glval) = VariableAddress[#this] : +# 1753| mu1753_5(glval) = InitializeParameter[#this] : &:r1753_4 +# 1753| r1753_6(glval) = Load[#this] : &:r1753_4, ~m? +# 1753| mu1753_7(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1753_6 +# 1754| r1754_1(glval) = VariableAddress[#this] : +# 1754| r1754_2(lambda [] type at line 1753, col. 26 *) = Load[#this] : &:r1754_1, ~m? +# 1754| r1754_3(glval) = FieldAddress[(captured this)] : r1754_2 +# 1754| r1754_4(TrivialLambdaClass *) = CopyValue : r1754_3 +# 1754| r1754_5(glval) = FunctionAddress[m] : +# 1754| v1754_6(void) = Call[m] : func:r1754_5, this:r1754_4 +# 1754| mu1754_7(unknown) = ^CallSideEffect : ~m? +# 1754| v1754_8(void) = ^IndirectReadSideEffect[-1] : &:r1754_4, ~m? +# 1756| r1756_1(glval) = VariableAddress[l_m_inner] : +# 1756| r1756_2(glval) = VariableAddress[#temp1756:29] : +# 1756| mu1756_3(decltype([...](...){...})) = Uninitialized[#temp1756:29] : &:r1756_2 +# 1756| r1756_4(glval) = FieldAddress[(captured this)] : r1756_2 +# 1756| r1756_5(glval) = VariableAddress[#this] : +# 1756| r1756_6(lambda [] type at line 1756, col. 30 *) = Load[#this] : &:r1756_5, ~m? +# 1756| r1756_7(glval) = FieldAddress[(captured this)] : r1756_6 +# 1756| r1756_8(TrivialLambdaClass) = Load[?] : &:r1756_7, ~m? +# 1756| mu1756_9(TrivialLambdaClass) = Store[?] : &:r1756_4, r1756_8 +# 1756| r1756_10(decltype([...](...){...})) = Load[#temp1756:29] : &:r1756_2, ~m? +# 1756| mu1756_11(decltype([...](...){...})) = Store[l_m_inner] : &:r1756_1, r1756_10 +# 1759| v1759_1(void) = NoOp : +# 1753| v1753_8(void) = ReturnIndirection[#this] : &:r1753_6, ~m? +# 1753| v1753_9(void) = ReturnVoid : +# 1753| v1753_10(void) = AliasedUse : ~m? +# 1753| v1753_11(void) = ExitFunction : -# 1754| void (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1751, col. 26)::operator()() const)::(lambda [] type at line 1754, col. 30)::operator()() const -# 1754| Block 0 -# 1754| v1754_1(void) = EnterFunction : -# 1754| mu1754_2(unknown) = AliasedDefinition : -# 1754| mu1754_3(unknown) = InitializeNonLocal : -# 1754| r1754_4(glval) = VariableAddress[#this] : -# 1754| mu1754_5(glval) = InitializeParameter[#this] : &:r1754_4 -# 1754| r1754_6(glval) = Load[#this] : &:r1754_4, ~m? -# 1754| mu1754_7(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1754_6 -# 1755| r1755_1(glval) = VariableAddress[#this] : -# 1755| r1755_2(lambda [] type at line 1754, col. 30 *) = Load[#this] : &:r1755_1, ~m? -# 1755| r1755_3(glval) = FieldAddress[(captured this)] : r1755_2 -# 1755| r1755_4(TrivialLambdaClass *) = CopyValue : r1755_3 -# 1755| r1755_5(glval) = FunctionAddress[m] : -# 1755| v1755_6(void) = Call[m] : func:r1755_5, this:r1755_4 -# 1755| mu1755_7(unknown) = ^CallSideEffect : ~m? -# 1755| v1755_8(void) = ^IndirectReadSideEffect[-1] : &:r1755_4, ~m? -# 1756| v1756_1(void) = NoOp : -# 1754| v1754_8(void) = ReturnIndirection[#this] : &:r1754_6, ~m? -# 1754| v1754_9(void) = ReturnVoid : -# 1754| v1754_10(void) = AliasedUse : ~m? -# 1754| v1754_11(void) = ExitFunction : +# 1756| void (void (void TrivialLambdaClass::m() const)::(lambda [] type at line 1753, col. 26)::operator()() const)::(lambda [] type at line 1756, col. 30)::operator()() const +# 1756| Block 0 +# 1756| v1756_1(void) = EnterFunction : +# 1756| mu1756_2(unknown) = AliasedDefinition : +# 1756| mu1756_3(unknown) = InitializeNonLocal : +# 1756| r1756_4(glval) = VariableAddress[#this] : +# 1756| mu1756_5(glval) = InitializeParameter[#this] : &:r1756_4 +# 1756| r1756_6(glval) = Load[#this] : &:r1756_4, ~m? +# 1756| mu1756_7(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1756_6 +# 1757| r1757_1(glval) = VariableAddress[#this] : +# 1757| r1757_2(lambda [] type at line 1756, col. 30 *) = Load[#this] : &:r1757_1, ~m? +# 1757| r1757_3(glval) = FieldAddress[(captured this)] : r1757_2 +# 1757| r1757_4(TrivialLambdaClass *) = CopyValue : r1757_3 +# 1757| r1757_5(glval) = FunctionAddress[m] : +# 1757| v1757_6(void) = Call[m] : func:r1757_5, this:r1757_4 +# 1757| mu1757_7(unknown) = ^CallSideEffect : ~m? +# 1757| v1757_8(void) = ^IndirectReadSideEffect[-1] : &:r1757_4, ~m? +# 1758| v1758_1(void) = NoOp : +# 1756| v1756_8(void) = ReturnIndirection[#this] : &:r1756_6, ~m? +# 1756| v1756_9(void) = ReturnVoid : +# 1756| v1756_10(void) = AliasedUse : ~m? +# 1756| v1756_11(void) = ExitFunction : -# 1761| void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&) -# 1761| Block 0 -# 1761| v1761_1(void) = EnterFunction : -# 1761| mu1761_2(unknown) = AliasedDefinition : -# 1761| mu1761_3(unknown) = InitializeNonLocal : -# 1761| r1761_4(glval) = VariableAddress[p1] : -# 1761| mu1761_5(TrivialLambdaClass) = InitializeParameter[p1] : &:r1761_4 -# 1761| r1761_6(glval) = VariableAddress[p2] : -# 1761| mu1761_7(TrivialLambdaClass &) = InitializeParameter[p2] : &:r1761_6 -# 1761| r1761_8(TrivialLambdaClass &) = Load[p2] : &:r1761_6, ~m? -# 1761| mu1761_9(unknown) = InitializeIndirection[p2] : &:r1761_8 -# 1761| r1761_10(glval) = VariableAddress[p3] : -# 1761| mu1761_11(TrivialLambdaClass &&) = InitializeParameter[p3] : &:r1761_10 -# 1761| r1761_12(TrivialLambdaClass &&) = Load[p3] : &:r1761_10, ~m? -# 1761| mu1761_13(unknown) = InitializeIndirection[p3] : &:r1761_12 -# 1762| r1762_1(glval) = VariableAddress[l1] : -# 1762| mu1762_2(TrivialLambdaClass) = Uninitialized[l1] : &:r1762_1 -# 1763| r1763_1(glval) = VariableAddress[l2] : -# 1763| r1763_2(glval) = VariableAddress[#temp1763:36] : -# 1763| r1763_3(TrivialLambdaClass) = Constant[0] : -# 1763| mu1763_4(TrivialLambdaClass) = Store[#temp1763:36] : &:r1763_2, r1763_3 -# 1763| r1763_5(glval) = Convert : r1763_2 -# 1763| r1763_6(TrivialLambdaClass &) = CopyValue : r1763_5 -# 1763| mu1763_7(TrivialLambdaClass &) = Store[l2] : &:r1763_1, r1763_6 -# 1765| r1765_1(glval) = VariableAddress[l_outer1] : -# 1765| r1765_2(glval) = VariableAddress[#temp1765:20] : -# 1765| mu1765_3(decltype([...](...){...})) = Uninitialized[#temp1765:20] : &:r1765_2 -# 1765| r1765_4(glval) = FieldAddress[p1] : r1765_2 -# 1765| r1765_5(glval) = VariableAddress[p1] : -# 1765| r1765_6(TrivialLambdaClass) = Load[p1] : &:r1765_5, ~m? -# 1765| mu1765_7(TrivialLambdaClass) = Store[?] : &:r1765_4, r1765_6 -# 1765| r1765_8(glval) = FieldAddress[p2] : r1765_2 -# 1765| r1765_9(glval) = VariableAddress[p2] : -# 1765| r1765_10(TrivialLambdaClass &) = Load[p2] : &:r1765_9, ~m? -#-----| r0_1(TrivialLambdaClass) = Load[?] : &:r1765_10, ~m? -#-----| mu0_2(TrivialLambdaClass) = Store[?] : &:r1765_8, r0_1 -# 1765| r1765_11(glval) = FieldAddress[p3] : r1765_2 -# 1765| r1765_12(glval) = VariableAddress[p3] : -# 1765| r1765_13(TrivialLambdaClass &&) = Load[p3] : &:r1765_12, ~m? -#-----| r0_3(TrivialLambdaClass) = Load[?] : &:r1765_13, ~m? -#-----| mu0_4(TrivialLambdaClass) = Store[?] : &:r1765_11, r0_3 -# 1765| r1765_14(glval) = FieldAddress[l1] : r1765_2 -# 1765| r1765_15(glval) = VariableAddress[l1] : -# 1765| r1765_16(TrivialLambdaClass) = Load[l1] : &:r1765_15, ~m? -# 1765| mu1765_17(TrivialLambdaClass) = Store[?] : &:r1765_14, r1765_16 -# 1765| r1765_18(glval) = FieldAddress[l2] : r1765_2 -# 1765| r1765_19(glval) = VariableAddress[l2] : -# 1765| r1765_20(TrivialLambdaClass &) = Load[l2] : &:r1765_19, ~m? -#-----| r0_5(TrivialLambdaClass) = Load[?] : &:r1765_20, ~m? -#-----| mu0_6(TrivialLambdaClass) = Store[?] : &:r1765_18, r0_5 -# 1765| r1765_21(decltype([...](...){...})) = Load[#temp1765:20] : &:r1765_2, ~m? -# 1765| mu1765_22(decltype([...](...){...})) = Store[l_outer1] : &:r1765_1, r1765_21 -# 1768| v1768_1(void) = NoOp : -# 1761| v1761_14(void) = ReturnIndirection[p2] : &:r1761_8, ~m? -# 1761| v1761_15(void) = ReturnIndirection[p3] : &:r1761_12, ~m? -# 1761| v1761_16(void) = ReturnVoid : -# 1761| v1761_17(void) = AliasedUse : ~m? -# 1761| v1761_18(void) = ExitFunction : +# 1763| void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&) +# 1763| Block 0 +# 1763| v1763_1(void) = EnterFunction : +# 1763| mu1763_2(unknown) = AliasedDefinition : +# 1763| mu1763_3(unknown) = InitializeNonLocal : +# 1763| r1763_4(glval) = VariableAddress[p1] : +# 1763| mu1763_5(TrivialLambdaClass) = InitializeParameter[p1] : &:r1763_4 +# 1763| r1763_6(glval) = VariableAddress[p2] : +# 1763| mu1763_7(TrivialLambdaClass &) = InitializeParameter[p2] : &:r1763_6 +# 1763| r1763_8(TrivialLambdaClass &) = Load[p2] : &:r1763_6, ~m? +# 1763| mu1763_9(unknown) = InitializeIndirection[p2] : &:r1763_8 +# 1763| r1763_10(glval) = VariableAddress[p3] : +# 1763| mu1763_11(TrivialLambdaClass &&) = InitializeParameter[p3] : &:r1763_10 +# 1763| r1763_12(TrivialLambdaClass &&) = Load[p3] : &:r1763_10, ~m? +# 1763| mu1763_13(unknown) = InitializeIndirection[p3] : &:r1763_12 +# 1764| r1764_1(glval) = VariableAddress[l1] : +# 1764| mu1764_2(TrivialLambdaClass) = Uninitialized[l1] : &:r1764_1 +# 1765| r1765_1(glval) = VariableAddress[l2] : +# 1765| r1765_2(glval) = VariableAddress[#temp1765:36] : +# 1765| r1765_3(TrivialLambdaClass) = Constant[0] : +# 1765| mu1765_4(TrivialLambdaClass) = Store[#temp1765:36] : &:r1765_2, r1765_3 +# 1765| r1765_5(glval) = Convert : r1765_2 +# 1765| r1765_6(TrivialLambdaClass &) = CopyValue : r1765_5 +# 1765| mu1765_7(TrivialLambdaClass &) = Store[l2] : &:r1765_1, r1765_6 +# 1767| r1767_1(glval) = VariableAddress[l_outer1] : +# 1767| r1767_2(glval) = VariableAddress[#temp1767:20] : +# 1767| mu1767_3(decltype([...](...){...})) = Uninitialized[#temp1767:20] : &:r1767_2 +# 1767| r1767_4(glval) = FieldAddress[p1] : r1767_2 +# 1767| r1767_5(glval) = VariableAddress[p1] : +# 1767| r1767_6(TrivialLambdaClass) = Load[p1] : &:r1767_5, ~m? +# 1767| mu1767_7(TrivialLambdaClass) = Store[?] : &:r1767_4, r1767_6 +# 1767| r1767_8(glval) = FieldAddress[p2] : r1767_2 +# 1767| r1767_9(glval) = VariableAddress[p2] : +# 1767| r1767_10(TrivialLambdaClass &) = Load[p2] : &:r1767_9, ~m? +#-----| r0_1(TrivialLambdaClass) = Load[?] : &:r1767_10, ~m? +#-----| mu0_2(TrivialLambdaClass) = Store[?] : &:r1767_8, r0_1 +# 1767| r1767_11(glval) = FieldAddress[p3] : r1767_2 +# 1767| r1767_12(glval) = VariableAddress[p3] : +# 1767| r1767_13(TrivialLambdaClass &&) = Load[p3] : &:r1767_12, ~m? +#-----| r0_3(TrivialLambdaClass) = Load[?] : &:r1767_13, ~m? +#-----| mu0_4(TrivialLambdaClass) = Store[?] : &:r1767_11, r0_3 +# 1767| r1767_14(glval) = FieldAddress[l1] : r1767_2 +# 1767| r1767_15(glval) = VariableAddress[l1] : +# 1767| r1767_16(TrivialLambdaClass) = Load[l1] : &:r1767_15, ~m? +# 1767| mu1767_17(TrivialLambdaClass) = Store[?] : &:r1767_14, r1767_16 +# 1767| r1767_18(glval) = FieldAddress[l2] : r1767_2 +# 1767| r1767_19(glval) = VariableAddress[l2] : +# 1767| r1767_20(TrivialLambdaClass &) = Load[l2] : &:r1767_19, ~m? +#-----| r0_5(TrivialLambdaClass) = Load[?] : &:r1767_20, ~m? +#-----| mu0_6(TrivialLambdaClass) = Store[?] : &:r1767_18, r0_5 +# 1767| r1767_21(decltype([...](...){...})) = Load[#temp1767:20] : &:r1767_2, ~m? +# 1767| mu1767_22(decltype([...](...){...})) = Store[l_outer1] : &:r1767_1, r1767_21 +# 1770| v1770_1(void) = NoOp : +# 1763| v1763_14(void) = ReturnIndirection[p2] : &:r1763_8, ~m? +# 1763| v1763_15(void) = ReturnIndirection[p3] : &:r1763_12, ~m? +# 1763| v1763_16(void) = ReturnVoid : +# 1763| v1763_17(void) = AliasedUse : ~m? +# 1763| v1763_18(void) = ExitFunction : -# 1765| void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1765, col. 21)::operator()() const -# 1765| Block 0 -# 1765| v1765_1(void) = EnterFunction : -# 1765| mu1765_2(unknown) = AliasedDefinition : -# 1765| mu1765_3(unknown) = InitializeNonLocal : -# 1765| r1765_4(glval) = VariableAddress[#this] : -# 1765| mu1765_5(glval) = InitializeParameter[#this] : &:r1765_4 -# 1765| r1765_6(glval) = Load[#this] : &:r1765_4, ~m? -# 1765| mu1765_7(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1765_6 -# 1766| r1766_1(glval) = VariableAddress[l_inner1] : -# 1766| r1766_2(glval) = VariableAddress[#temp1766:24] : -# 1766| mu1766_3(decltype([...](...){...})) = Uninitialized[#temp1766:24] : &:r1766_2 -# 1766| r1766_4(glval) = FieldAddress[p1] : r1766_2 -# 1766| r1766_5(glval) = VariableAddress[#this] : -# 1766| r1766_6(lambda [] type at line 1766, col. 25 *) = Load[#this] : &:r1766_5, ~m? -# 1766| r1766_7(glval) = FieldAddress[p1] : r1766_6 -# 1766| r1766_8(TrivialLambdaClass) = Load[?] : &:r1766_7, ~m? -# 1766| mu1766_9(TrivialLambdaClass) = Store[?] : &:r1766_4, r1766_8 -# 1766| r1766_10(decltype([...](...){...})) = Load[#temp1766:24] : &:r1766_2, ~m? -# 1766| mu1766_11(decltype([...](...){...})) = Store[l_inner1] : &:r1766_1, r1766_10 -# 1767| v1767_1(void) = NoOp : -# 1765| v1765_8(void) = ReturnIndirection[#this] : &:r1765_6, ~m? -# 1765| v1765_9(void) = ReturnVoid : -# 1765| v1765_10(void) = AliasedUse : ~m? -# 1765| v1765_11(void) = ExitFunction : +# 1767| void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1767, col. 21)::operator()() const +# 1767| Block 0 +# 1767| v1767_1(void) = EnterFunction : +# 1767| mu1767_2(unknown) = AliasedDefinition : +# 1767| mu1767_3(unknown) = InitializeNonLocal : +# 1767| r1767_4(glval) = VariableAddress[#this] : +# 1767| mu1767_5(glval) = InitializeParameter[#this] : &:r1767_4 +# 1767| r1767_6(glval) = Load[#this] : &:r1767_4, ~m? +# 1767| mu1767_7(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1767_6 +# 1768| r1768_1(glval) = VariableAddress[l_inner1] : +# 1768| r1768_2(glval) = VariableAddress[#temp1768:24] : +# 1768| mu1768_3(decltype([...](...){...})) = Uninitialized[#temp1768:24] : &:r1768_2 +# 1768| r1768_4(glval) = FieldAddress[p1] : r1768_2 +# 1768| r1768_5(glval) = VariableAddress[#this] : +# 1768| r1768_6(lambda [] type at line 1768, col. 25 *) = Load[#this] : &:r1768_5, ~m? +# 1768| r1768_7(glval) = FieldAddress[p1] : r1768_6 +# 1768| r1768_8(TrivialLambdaClass) = Load[?] : &:r1768_7, ~m? +# 1768| mu1768_9(TrivialLambdaClass) = Store[?] : &:r1768_4, r1768_8 +# 1768| r1768_10(decltype([...](...){...})) = Load[#temp1768:24] : &:r1768_2, ~m? +# 1768| mu1768_11(decltype([...](...){...})) = Store[l_inner1] : &:r1768_1, r1768_10 +# 1769| v1769_1(void) = NoOp : +# 1767| v1767_8(void) = ReturnIndirection[#this] : &:r1767_6, ~m? +# 1767| v1767_9(void) = ReturnVoid : +# 1767| v1767_10(void) = AliasedUse : ~m? +# 1767| v1767_11(void) = ExitFunction : -# 1766| void (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1765, col. 21)::operator()() const)::(lambda [] type at line 1766, col. 25)::operator()() const -# 1766| Block 0 -# 1766| v1766_1(void) = EnterFunction : -# 1766| mu1766_2(unknown) = AliasedDefinition : -# 1766| mu1766_3(unknown) = InitializeNonLocal : -# 1766| r1766_4(glval) = VariableAddress[#this] : -# 1766| mu1766_5(glval) = InitializeParameter[#this] : &:r1766_4 -# 1766| r1766_6(glval) = Load[#this] : &:r1766_4, ~m? -# 1766| mu1766_7(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1766_6 -# 1766| v1766_8(void) = NoOp : -# 1766| v1766_9(void) = ReturnIndirection[#this] : &:r1766_6, ~m? -# 1766| v1766_10(void) = ReturnVoid : -# 1766| v1766_11(void) = AliasedUse : ~m? -# 1766| v1766_12(void) = ExitFunction : +# 1768| void (void (void captured_lambda2(TrivialLambdaClass, TrivialLambdaClass&, TrivialLambdaClass&&))::(lambda [] type at line 1767, col. 21)::operator()() const)::(lambda [] type at line 1768, col. 25)::operator()() const +# 1768| Block 0 +# 1768| v1768_1(void) = EnterFunction : +# 1768| mu1768_2(unknown) = AliasedDefinition : +# 1768| mu1768_3(unknown) = InitializeNonLocal : +# 1768| r1768_4(glval) = VariableAddress[#this] : +# 1768| mu1768_5(glval) = InitializeParameter[#this] : &:r1768_4 +# 1768| r1768_6(glval) = Load[#this] : &:r1768_4, ~m? +# 1768| mu1768_7(decltype([...](...){...})) = InitializeIndirection[#this] : &:r1768_6 +# 1768| v1768_8(void) = NoOp : +# 1768| v1768_9(void) = ReturnIndirection[#this] : &:r1768_6, ~m? +# 1768| v1768_10(void) = ReturnVoid : +# 1768| v1768_11(void) = AliasedUse : ~m? +# 1768| v1768_12(void) = ExitFunction : -# 1773| void CopyConstructorWithImplicitArgumentClass::CopyConstructorWithImplicitArgumentClass() -# 1773| Block 0 -# 1773| v1773_1(void) = EnterFunction : -# 1773| mu1773_2(unknown) = AliasedDefinition : -# 1773| mu1773_3(unknown) = InitializeNonLocal : -# 1773| r1773_4(glval) = VariableAddress[#this] : -# 1773| mu1773_5(glval) = InitializeParameter[#this] : &:r1773_4 -# 1773| r1773_6(glval) = Load[#this] : &:r1773_4, ~m? -# 1773| mu1773_7(CopyConstructorWithImplicitArgumentClass) = InitializeIndirection[#this] : &:r1773_6 -# 1773| v1773_8(void) = NoOp : -# 1773| v1773_9(void) = ReturnIndirection[#this] : &:r1773_6, ~m? -# 1773| v1773_10(void) = ReturnVoid : -# 1773| v1773_11(void) = AliasedUse : ~m? -# 1773| v1773_12(void) = ExitFunction : +# 1775| void CopyConstructorWithImplicitArgumentClass::CopyConstructorWithImplicitArgumentClass() +# 1775| Block 0 +# 1775| v1775_1(void) = EnterFunction : +# 1775| mu1775_2(unknown) = AliasedDefinition : +# 1775| mu1775_3(unknown) = InitializeNonLocal : +# 1775| r1775_4(glval) = VariableAddress[#this] : +# 1775| mu1775_5(glval) = InitializeParameter[#this] : &:r1775_4 +# 1775| r1775_6(glval) = Load[#this] : &:r1775_4, ~m? +# 1775| mu1775_7(CopyConstructorWithImplicitArgumentClass) = InitializeIndirection[#this] : &:r1775_6 +# 1775| v1775_8(void) = NoOp : +# 1775| v1775_9(void) = ReturnIndirection[#this] : &:r1775_6, ~m? +# 1775| v1775_10(void) = ReturnVoid : +# 1775| v1775_11(void) = AliasedUse : ~m? +# 1775| v1775_12(void) = ExitFunction : -# 1774| void CopyConstructorWithImplicitArgumentClass::CopyConstructorWithImplicitArgumentClass(CopyConstructorWithImplicitArgumentClass const&) -# 1774| Block 0 -# 1774| v1774_1(void) = EnterFunction : -# 1774| mu1774_2(unknown) = AliasedDefinition : -# 1774| mu1774_3(unknown) = InitializeNonLocal : -# 1774| r1774_4(glval) = VariableAddress[#this] : -# 1774| mu1774_5(glval) = InitializeParameter[#this] : &:r1774_4 -# 1774| r1774_6(glval) = Load[#this] : &:r1774_4, ~m? -# 1774| mu1774_7(CopyConstructorWithImplicitArgumentClass) = InitializeIndirection[#this] : &:r1774_6 -# 1774| r1774_8(glval) = VariableAddress[c] : -# 1774| mu1774_9(CopyConstructorWithImplicitArgumentClass &) = InitializeParameter[c] : &:r1774_8 -# 1774| r1774_10(CopyConstructorWithImplicitArgumentClass &) = Load[c] : &:r1774_8, ~m? -# 1774| mu1774_11(unknown) = InitializeIndirection[c] : &:r1774_10 -# 1775| r1775_1(glval) = VariableAddress[c] : -# 1775| r1775_2(CopyConstructorWithImplicitArgumentClass &) = Load[c] : &:r1775_1, ~m? -# 1775| r1775_3(glval) = CopyValue : r1775_2 -# 1775| r1775_4(glval) = FieldAddress[x] : r1775_3 -# 1775| r1775_5(int) = Load[?] : &:r1775_4, ~m? -# 1775| r1775_6(glval) = VariableAddress[#this] : -# 1775| r1775_7(CopyConstructorWithImplicitArgumentClass *) = Load[#this] : &:r1775_6, ~m? -# 1775| r1775_8(glval) = FieldAddress[x] : r1775_7 -# 1775| mu1775_9(int) = Store[?] : &:r1775_8, r1775_5 -# 1776| v1776_1(void) = NoOp : -# 1774| v1774_12(void) = ReturnIndirection[#this] : &:r1774_6, ~m? -# 1774| v1774_13(void) = ReturnIndirection[c] : &:r1774_10, ~m? -# 1774| v1774_14(void) = ReturnVoid : -# 1774| v1774_15(void) = AliasedUse : ~m? -# 1774| v1774_16(void) = ExitFunction : +# 1776| void CopyConstructorWithImplicitArgumentClass::CopyConstructorWithImplicitArgumentClass(CopyConstructorWithImplicitArgumentClass const&) +# 1776| Block 0 +# 1776| v1776_1(void) = EnterFunction : +# 1776| mu1776_2(unknown) = AliasedDefinition : +# 1776| mu1776_3(unknown) = InitializeNonLocal : +# 1776| r1776_4(glval) = VariableAddress[#this] : +# 1776| mu1776_5(glval) = InitializeParameter[#this] : &:r1776_4 +# 1776| r1776_6(glval) = Load[#this] : &:r1776_4, ~m? +# 1776| mu1776_7(CopyConstructorWithImplicitArgumentClass) = InitializeIndirection[#this] : &:r1776_6 +# 1776| r1776_8(glval) = VariableAddress[c] : +# 1776| mu1776_9(CopyConstructorWithImplicitArgumentClass &) = InitializeParameter[c] : &:r1776_8 +# 1776| r1776_10(CopyConstructorWithImplicitArgumentClass &) = Load[c] : &:r1776_8, ~m? +# 1776| mu1776_11(unknown) = InitializeIndirection[c] : &:r1776_10 +# 1777| r1777_1(glval) = VariableAddress[c] : +# 1777| r1777_2(CopyConstructorWithImplicitArgumentClass &) = Load[c] : &:r1777_1, ~m? +# 1777| r1777_3(glval) = CopyValue : r1777_2 +# 1777| r1777_4(glval) = FieldAddress[x] : r1777_3 +# 1777| r1777_5(int) = Load[?] : &:r1777_4, ~m? +# 1777| r1777_6(glval) = VariableAddress[#this] : +# 1777| r1777_7(CopyConstructorWithImplicitArgumentClass *) = Load[#this] : &:r1777_6, ~m? +# 1777| r1777_8(glval) = FieldAddress[x] : r1777_7 +# 1777| mu1777_9(int) = Store[?] : &:r1777_8, r1777_5 +# 1778| v1778_1(void) = NoOp : +# 1776| v1776_12(void) = ReturnIndirection[#this] : &:r1776_6, ~m? +# 1776| v1776_13(void) = ReturnIndirection[c] : &:r1776_10, ~m? +# 1776| v1776_14(void) = ReturnVoid : +# 1776| v1776_15(void) = AliasedUse : ~m? +# 1776| v1776_16(void) = ExitFunction : -# 1782| void CopyConstructorWithBitwiseCopyClass::CopyConstructorWithBitwiseCopyClass() -# 1782| Block 0 -# 1782| v1782_1(void) = EnterFunction : -# 1782| mu1782_2(unknown) = AliasedDefinition : -# 1782| mu1782_3(unknown) = InitializeNonLocal : -# 1782| r1782_4(glval) = VariableAddress[#this] : -# 1782| mu1782_5(glval) = InitializeParameter[#this] : &:r1782_4 -# 1782| r1782_6(glval) = Load[#this] : &:r1782_4, ~m? -# 1782| mu1782_7(CopyConstructorWithBitwiseCopyClass) = InitializeIndirection[#this] : &:r1782_6 -# 1782| v1782_8(void) = NoOp : -# 1782| v1782_9(void) = ReturnIndirection[#this] : &:r1782_6, ~m? -# 1782| v1782_10(void) = ReturnVoid : -# 1782| v1782_11(void) = AliasedUse : ~m? -# 1782| v1782_12(void) = ExitFunction : +# 1784| void CopyConstructorWithBitwiseCopyClass::CopyConstructorWithBitwiseCopyClass() +# 1784| Block 0 +# 1784| v1784_1(void) = EnterFunction : +# 1784| mu1784_2(unknown) = AliasedDefinition : +# 1784| mu1784_3(unknown) = InitializeNonLocal : +# 1784| r1784_4(glval) = VariableAddress[#this] : +# 1784| mu1784_5(glval) = InitializeParameter[#this] : &:r1784_4 +# 1784| r1784_6(glval) = Load[#this] : &:r1784_4, ~m? +# 1784| mu1784_7(CopyConstructorWithBitwiseCopyClass) = InitializeIndirection[#this] : &:r1784_6 +# 1784| v1784_8(void) = NoOp : +# 1784| v1784_9(void) = ReturnIndirection[#this] : &:r1784_6, ~m? +# 1784| v1784_10(void) = ReturnVoid : +# 1784| v1784_11(void) = AliasedUse : ~m? +# 1784| v1784_12(void) = ExitFunction : -# 1785| void CopyConstructorTestNonVirtualClass::CopyConstructorTestNonVirtualClass(CopyConstructorTestNonVirtualClass const&) -# 1785| Block 0 -# 1785| v1785_1(void) = EnterFunction : -# 1785| mu1785_2(unknown) = AliasedDefinition : -# 1785| mu1785_3(unknown) = InitializeNonLocal : -# 1785| r1785_4(glval) = VariableAddress[#this] : -# 1785| mu1785_5(glval) = InitializeParameter[#this] : &:r1785_4 -# 1785| r1785_6(glval) = Load[#this] : &:r1785_4, ~m? -# 1785| mu1785_7(CopyConstructorTestNonVirtualClass) = InitializeIndirection[#this] : &:r1785_6 +# 1787| void CopyConstructorTestNonVirtualClass::CopyConstructorTestNonVirtualClass(CopyConstructorTestNonVirtualClass const&) +# 1787| Block 0 +# 1787| v1787_1(void) = EnterFunction : +# 1787| mu1787_2(unknown) = AliasedDefinition : +# 1787| mu1787_3(unknown) = InitializeNonLocal : +# 1787| r1787_4(glval) = VariableAddress[#this] : +# 1787| mu1787_5(glval) = InitializeParameter[#this] : &:r1787_4 +# 1787| r1787_6(glval) = Load[#this] : &:r1787_4, ~m? +# 1787| mu1787_7(CopyConstructorTestNonVirtualClass) = InitializeIndirection[#this] : &:r1787_6 #-----| r0_1(glval) = VariableAddress[(unnamed parameter 0)] : #-----| mu0_2(CopyConstructorTestNonVirtualClass &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(CopyConstructorTestNonVirtualClass &) = Load[(unnamed parameter 0)] : &:r0_1, ~m? #-----| mu0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 1785| r1785_8(glval) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithImplicitArgumentClass] : r1785_6 -# 1785| r1785_9(glval) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : -# 1785| r1785_10(glval) = VariableAddress[(unnamed parameter 0)] : -# 1785| r1785_11(CopyConstructorTestNonVirtualClass &) = Load[(unnamed parameter 0)] : &:r1785_10, ~m? -# 1785| r1785_12(glval) = CopyValue : r1785_11 -# 1785| r1785_13(glval) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithImplicitArgumentClass] : r1785_12 -# 1785| r1785_14(CopyConstructorWithImplicitArgumentClass &) = CopyValue : r1785_13 -# 1785| v1785_15(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1785_9, this:r1785_8, 0:r1785_14 -# 1785| mu1785_16(unknown) = ^CallSideEffect : ~m? -# 1785| v1785_17(void) = ^BufferReadSideEffect[0] : &:r1785_14, ~m? -# 1785| mu1785_18(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1785_8 -# 1785| v1785_19(void) = NoOp : -# 1785| v1785_20(void) = ReturnIndirection[#this] : &:r1785_6, ~m? +# 1787| r1787_8(glval) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithImplicitArgumentClass] : r1787_6 +# 1787| r1787_9(glval) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : +# 1787| r1787_10(glval) = VariableAddress[(unnamed parameter 0)] : +# 1787| r1787_11(CopyConstructorTestNonVirtualClass &) = Load[(unnamed parameter 0)] : &:r1787_10, ~m? +# 1787| r1787_12(glval) = CopyValue : r1787_11 +# 1787| r1787_13(glval) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithImplicitArgumentClass] : r1787_12 +# 1787| r1787_14(CopyConstructorWithImplicitArgumentClass &) = CopyValue : r1787_13 +# 1787| v1787_15(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1787_9, this:r1787_8, 0:r1787_14 +# 1787| mu1787_16(unknown) = ^CallSideEffect : ~m? +# 1787| v1787_17(void) = ^BufferReadSideEffect[0] : &:r1787_14, ~m? +# 1787| mu1787_18(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1787_8 +# 1787| v1787_19(void) = NoOp : +# 1787| v1787_20(void) = ReturnIndirection[#this] : &:r1787_6, ~m? #-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, ~m? -# 1785| v1785_21(void) = ReturnVoid : -# 1785| v1785_22(void) = AliasedUse : ~m? -# 1785| v1785_23(void) = ExitFunction : +# 1787| v1787_21(void) = ReturnVoid : +# 1787| v1787_22(void) = AliasedUse : ~m? +# 1787| v1787_23(void) = ExitFunction : -# 1789| void CopyConstructorTestNonVirtualClass::CopyConstructorTestNonVirtualClass() -# 1789| Block 0 -# 1789| v1789_1(void) = EnterFunction : -# 1789| mu1789_2(unknown) = AliasedDefinition : -# 1789| mu1789_3(unknown) = InitializeNonLocal : -# 1789| r1789_4(glval) = VariableAddress[#this] : -# 1789| mu1789_5(glval) = InitializeParameter[#this] : &:r1789_4 -# 1789| r1789_6(glval) = Load[#this] : &:r1789_4, ~m? -# 1789| mu1789_7(CopyConstructorTestNonVirtualClass) = InitializeIndirection[#this] : &:r1789_6 -# 1789| r1789_8(glval) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithImplicitArgumentClass] : r1789_6 -# 1789| r1789_9(glval) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : -# 1789| v1789_10(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1789_9, this:r1789_8 -# 1789| mu1789_11(unknown) = ^CallSideEffect : ~m? -# 1789| mu1789_12(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1789_8 -# 1789| r1789_13(glval) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithBitwiseCopyClass] : r1789_6 -# 1789| r1789_14(glval) = FunctionAddress[CopyConstructorWithBitwiseCopyClass] : -# 1789| v1789_15(void) = Call[CopyConstructorWithBitwiseCopyClass] : func:r1789_14, this:r1789_13 -# 1789| mu1789_16(unknown) = ^CallSideEffect : ~m? -# 1789| mu1789_17(CopyConstructorWithBitwiseCopyClass) = ^IndirectMayWriteSideEffect[-1] : &:r1789_13 -# 1789| v1789_18(void) = NoOp : -# 1789| v1789_19(void) = ReturnIndirection[#this] : &:r1789_6, ~m? -# 1789| v1789_20(void) = ReturnVoid : -# 1789| v1789_21(void) = AliasedUse : ~m? -# 1789| v1789_22(void) = ExitFunction : +# 1791| void CopyConstructorTestNonVirtualClass::CopyConstructorTestNonVirtualClass() +# 1791| Block 0 +# 1791| v1791_1(void) = EnterFunction : +# 1791| mu1791_2(unknown) = AliasedDefinition : +# 1791| mu1791_3(unknown) = InitializeNonLocal : +# 1791| r1791_4(glval) = VariableAddress[#this] : +# 1791| mu1791_5(glval) = InitializeParameter[#this] : &:r1791_4 +# 1791| r1791_6(glval) = Load[#this] : &:r1791_4, ~m? +# 1791| mu1791_7(CopyConstructorTestNonVirtualClass) = InitializeIndirection[#this] : &:r1791_6 +# 1791| r1791_8(glval) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithImplicitArgumentClass] : r1791_6 +# 1791| r1791_9(glval) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : +# 1791| v1791_10(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1791_9, this:r1791_8 +# 1791| mu1791_11(unknown) = ^CallSideEffect : ~m? +# 1791| mu1791_12(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1791_8 +# 1791| r1791_13(glval) = ConvertToNonVirtualBase[CopyConstructorTestNonVirtualClass : CopyConstructorWithBitwiseCopyClass] : r1791_6 +# 1791| r1791_14(glval) = FunctionAddress[CopyConstructorWithBitwiseCopyClass] : +# 1791| v1791_15(void) = Call[CopyConstructorWithBitwiseCopyClass] : func:r1791_14, this:r1791_13 +# 1791| mu1791_16(unknown) = ^CallSideEffect : ~m? +# 1791| mu1791_17(CopyConstructorWithBitwiseCopyClass) = ^IndirectMayWriteSideEffect[-1] : &:r1791_13 +# 1791| v1791_18(void) = NoOp : +# 1791| v1791_19(void) = ReturnIndirection[#this] : &:r1791_6, ~m? +# 1791| v1791_20(void) = ReturnVoid : +# 1791| v1791_21(void) = AliasedUse : ~m? +# 1791| v1791_22(void) = ExitFunction : -# 1792| void CopyConstructorTestVirtualClass::CopyConstructorTestVirtualClass(CopyConstructorTestVirtualClass const&) -# 1792| Block 0 -# 1792| v1792_1(void) = EnterFunction : -# 1792| mu1792_2(unknown) = AliasedDefinition : -# 1792| mu1792_3(unknown) = InitializeNonLocal : -# 1792| r1792_4(glval) = VariableAddress[#this] : -# 1792| mu1792_5(glval) = InitializeParameter[#this] : &:r1792_4 -# 1792| r1792_6(glval) = Load[#this] : &:r1792_4, ~m? -# 1792| mu1792_7(CopyConstructorTestVirtualClass) = InitializeIndirection[#this] : &:r1792_6 +# 1794| void CopyConstructorTestVirtualClass::CopyConstructorTestVirtualClass(CopyConstructorTestVirtualClass const&) +# 1794| Block 0 +# 1794| v1794_1(void) = EnterFunction : +# 1794| mu1794_2(unknown) = AliasedDefinition : +# 1794| mu1794_3(unknown) = InitializeNonLocal : +# 1794| r1794_4(glval) = VariableAddress[#this] : +# 1794| mu1794_5(glval) = InitializeParameter[#this] : &:r1794_4 +# 1794| r1794_6(glval) = Load[#this] : &:r1794_4, ~m? +# 1794| mu1794_7(CopyConstructorTestVirtualClass) = InitializeIndirection[#this] : &:r1794_6 #-----| r0_1(glval) = VariableAddress[(unnamed parameter 0)] : #-----| mu0_2(CopyConstructorTestVirtualClass &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(CopyConstructorTestVirtualClass &) = Load[(unnamed parameter 0)] : &:r0_1, ~m? #-----| mu0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 1792| r1792_8(glval) = ConvertToNonVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithImplicitArgumentClass] : r1792_6 -# 1792| r1792_9(glval) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : -# 1792| r1792_10(glval) = VariableAddress[(unnamed parameter 0)] : -# 1792| r1792_11(CopyConstructorTestVirtualClass &) = Load[(unnamed parameter 0)] : &:r1792_10, ~m? -# 1792| r1792_12(glval) = CopyValue : r1792_11 -# 1792| r1792_13(glval) = ConvertToVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithImplicitArgumentClass] : r1792_12 -# 1792| r1792_14(CopyConstructorWithImplicitArgumentClass &) = CopyValue : r1792_13 -# 1792| v1792_15(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1792_9, this:r1792_8, 0:r1792_14 -# 1792| mu1792_16(unknown) = ^CallSideEffect : ~m? -# 1792| v1792_17(void) = ^BufferReadSideEffect[0] : &:r1792_14, ~m? -# 1792| mu1792_18(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1792_8 -# 1792| v1792_19(void) = NoOp : -# 1792| v1792_20(void) = ReturnIndirection[#this] : &:r1792_6, ~m? +# 1794| r1794_8(glval) = ConvertToNonVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithImplicitArgumentClass] : r1794_6 +# 1794| r1794_9(glval) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : +# 1794| r1794_10(glval) = VariableAddress[(unnamed parameter 0)] : +# 1794| r1794_11(CopyConstructorTestVirtualClass &) = Load[(unnamed parameter 0)] : &:r1794_10, ~m? +# 1794| r1794_12(glval) = CopyValue : r1794_11 +# 1794| r1794_13(glval) = ConvertToVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithImplicitArgumentClass] : r1794_12 +# 1794| r1794_14(CopyConstructorWithImplicitArgumentClass &) = CopyValue : r1794_13 +# 1794| v1794_15(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1794_9, this:r1794_8, 0:r1794_14 +# 1794| mu1794_16(unknown) = ^CallSideEffect : ~m? +# 1794| v1794_17(void) = ^BufferReadSideEffect[0] : &:r1794_14, ~m? +# 1794| mu1794_18(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1794_8 +# 1794| v1794_19(void) = NoOp : +# 1794| v1794_20(void) = ReturnIndirection[#this] : &:r1794_6, ~m? #-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, ~m? -# 1792| v1792_21(void) = ReturnVoid : -# 1792| v1792_22(void) = AliasedUse : ~m? -# 1792| v1792_23(void) = ExitFunction : +# 1794| v1794_21(void) = ReturnVoid : +# 1794| v1794_22(void) = AliasedUse : ~m? +# 1794| v1794_23(void) = ExitFunction : -# 1796| void CopyConstructorTestVirtualClass::CopyConstructorTestVirtualClass() -# 1796| Block 0 -# 1796| v1796_1(void) = EnterFunction : -# 1796| mu1796_2(unknown) = AliasedDefinition : -# 1796| mu1796_3(unknown) = InitializeNonLocal : -# 1796| r1796_4(glval) = VariableAddress[#this] : -# 1796| mu1796_5(glval) = InitializeParameter[#this] : &:r1796_4 -# 1796| r1796_6(glval) = Load[#this] : &:r1796_4, ~m? -# 1796| mu1796_7(CopyConstructorTestVirtualClass) = InitializeIndirection[#this] : &:r1796_6 -# 1796| r1796_8(glval) = ConvertToNonVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithImplicitArgumentClass] : r1796_6 -# 1796| r1796_9(glval) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : -# 1796| v1796_10(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1796_9, this:r1796_8 -# 1796| mu1796_11(unknown) = ^CallSideEffect : ~m? -# 1796| mu1796_12(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1796_8 -# 1796| r1796_13(glval) = ConvertToNonVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithBitwiseCopyClass] : r1796_6 -# 1796| r1796_14(glval) = FunctionAddress[CopyConstructorWithBitwiseCopyClass] : -# 1796| v1796_15(void) = Call[CopyConstructorWithBitwiseCopyClass] : func:r1796_14, this:r1796_13 -# 1796| mu1796_16(unknown) = ^CallSideEffect : ~m? -# 1796| mu1796_17(CopyConstructorWithBitwiseCopyClass) = ^IndirectMayWriteSideEffect[-1] : &:r1796_13 -# 1796| v1796_18(void) = NoOp : -# 1796| v1796_19(void) = ReturnIndirection[#this] : &:r1796_6, ~m? -# 1796| v1796_20(void) = ReturnVoid : -# 1796| v1796_21(void) = AliasedUse : ~m? -# 1796| v1796_22(void) = ExitFunction : +# 1798| void CopyConstructorTestVirtualClass::CopyConstructorTestVirtualClass() +# 1798| Block 0 +# 1798| v1798_1(void) = EnterFunction : +# 1798| mu1798_2(unknown) = AliasedDefinition : +# 1798| mu1798_3(unknown) = InitializeNonLocal : +# 1798| r1798_4(glval) = VariableAddress[#this] : +# 1798| mu1798_5(glval) = InitializeParameter[#this] : &:r1798_4 +# 1798| r1798_6(glval) = Load[#this] : &:r1798_4, ~m? +# 1798| mu1798_7(CopyConstructorTestVirtualClass) = InitializeIndirection[#this] : &:r1798_6 +# 1798| r1798_8(glval) = ConvertToNonVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithImplicitArgumentClass] : r1798_6 +# 1798| r1798_9(glval) = FunctionAddress[CopyConstructorWithImplicitArgumentClass] : +# 1798| v1798_10(void) = Call[CopyConstructorWithImplicitArgumentClass] : func:r1798_9, this:r1798_8 +# 1798| mu1798_11(unknown) = ^CallSideEffect : ~m? +# 1798| mu1798_12(CopyConstructorWithImplicitArgumentClass) = ^IndirectMayWriteSideEffect[-1] : &:r1798_8 +# 1798| r1798_13(glval) = ConvertToNonVirtualBase[CopyConstructorTestVirtualClass : CopyConstructorWithBitwiseCopyClass] : r1798_6 +# 1798| r1798_14(glval) = FunctionAddress[CopyConstructorWithBitwiseCopyClass] : +# 1798| v1798_15(void) = Call[CopyConstructorWithBitwiseCopyClass] : func:r1798_14, this:r1798_13 +# 1798| mu1798_16(unknown) = ^CallSideEffect : ~m? +# 1798| mu1798_17(CopyConstructorWithBitwiseCopyClass) = ^IndirectMayWriteSideEffect[-1] : &:r1798_13 +# 1798| v1798_18(void) = NoOp : +# 1798| v1798_19(void) = ReturnIndirection[#this] : &:r1798_6, ~m? +# 1798| v1798_20(void) = ReturnVoid : +# 1798| v1798_21(void) = AliasedUse : ~m? +# 1798| v1798_22(void) = ExitFunction : -# 1799| int implicit_copy_constructor_test(CopyConstructorTestNonVirtualClass const&, CopyConstructorTestVirtualClass const&) -# 1799| Block 0 -# 1799| v1799_1(void) = EnterFunction : -# 1799| mu1799_2(unknown) = AliasedDefinition : -# 1799| mu1799_3(unknown) = InitializeNonLocal : -# 1800| r1800_1(glval) = VariableAddress[x] : -# 1800| mu1800_2(CopyConstructorTestNonVirtualClass &) = InitializeParameter[x] : &:r1800_1 -# 1800| r1800_3(CopyConstructorTestNonVirtualClass &) = Load[x] : &:r1800_1, ~m? -# 1800| mu1800_4(unknown) = InitializeIndirection[x] : &:r1800_3 -# 1801| r1801_1(glval) = VariableAddress[y] : -# 1801| mu1801_2(CopyConstructorTestVirtualClass &) = InitializeParameter[y] : &:r1801_1 -# 1801| r1801_3(CopyConstructorTestVirtualClass &) = Load[y] : &:r1801_1, ~m? -# 1801| mu1801_4(unknown) = InitializeIndirection[y] : &:r1801_3 -# 1802| r1802_1(glval) = VariableAddress[cx] : -# 1802| mu1802_2(CopyConstructorTestNonVirtualClass) = Uninitialized[cx] : &:r1802_1 -# 1802| r1802_3(glval) = FunctionAddress[CopyConstructorTestNonVirtualClass] : -# 1802| r1802_4(glval) = VariableAddress[x] : -# 1802| r1802_5(CopyConstructorTestNonVirtualClass &) = Load[x] : &:r1802_4, ~m? -# 1802| r1802_6(glval) = CopyValue : r1802_5 -# 1802| r1802_7(CopyConstructorTestNonVirtualClass &) = CopyValue : r1802_6 -# 1802| v1802_8(void) = Call[CopyConstructorTestNonVirtualClass] : func:r1802_3, this:r1802_1, 0:r1802_7 -# 1802| mu1802_9(unknown) = ^CallSideEffect : ~m? -# 1802| v1802_10(void) = ^BufferReadSideEffect[0] : &:r1802_7, ~m? -# 1802| mu1802_11(CopyConstructorTestNonVirtualClass) = ^IndirectMayWriteSideEffect[-1] : &:r1802_1 -# 1803| r1803_1(glval) = VariableAddress[cy] : -# 1803| mu1803_2(CopyConstructorTestVirtualClass) = Uninitialized[cy] : &:r1803_1 -# 1803| r1803_3(glval) = FunctionAddress[CopyConstructorTestVirtualClass] : -# 1803| r1803_4(glval) = VariableAddress[y] : -# 1803| r1803_5(CopyConstructorTestVirtualClass &) = Load[y] : &:r1803_4, ~m? -# 1803| r1803_6(glval) = CopyValue : r1803_5 -# 1803| r1803_7(CopyConstructorTestVirtualClass &) = CopyValue : r1803_6 -# 1803| v1803_8(void) = Call[CopyConstructorTestVirtualClass] : func:r1803_3, this:r1803_1, 0:r1803_7 -# 1803| mu1803_9(unknown) = ^CallSideEffect : ~m? -# 1803| v1803_10(void) = ^BufferReadSideEffect[0] : &:r1803_7, ~m? -# 1803| mu1803_11(CopyConstructorTestVirtualClass) = ^IndirectMayWriteSideEffect[-1] : &:r1803_1 -# 1804| r1804_1(glval) = VariableAddress[#return] : -# 1804| mu1804_2(int) = Uninitialized[#return] : &:r1804_1 -# 1800| v1800_5(void) = ReturnIndirection[x] : &:r1800_3, ~m? -# 1801| v1801_5(void) = ReturnIndirection[y] : &:r1801_3, ~m? -# 1799| r1799_4(glval) = VariableAddress[#return] : -# 1799| v1799_5(void) = ReturnValue : &:r1799_4, ~m? -# 1799| v1799_6(void) = AliasedUse : ~m? -# 1799| v1799_7(void) = ExitFunction : +# 1801| int implicit_copy_constructor_test(CopyConstructorTestNonVirtualClass const&, CopyConstructorTestVirtualClass const&) +# 1801| Block 0 +# 1801| v1801_1(void) = EnterFunction : +# 1801| mu1801_2(unknown) = AliasedDefinition : +# 1801| mu1801_3(unknown) = InitializeNonLocal : +# 1802| r1802_1(glval) = VariableAddress[x] : +# 1802| mu1802_2(CopyConstructorTestNonVirtualClass &) = InitializeParameter[x] : &:r1802_1 +# 1802| r1802_3(CopyConstructorTestNonVirtualClass &) = Load[x] : &:r1802_1, ~m? +# 1802| mu1802_4(unknown) = InitializeIndirection[x] : &:r1802_3 +# 1803| r1803_1(glval) = VariableAddress[y] : +# 1803| mu1803_2(CopyConstructorTestVirtualClass &) = InitializeParameter[y] : &:r1803_1 +# 1803| r1803_3(CopyConstructorTestVirtualClass &) = Load[y] : &:r1803_1, ~m? +# 1803| mu1803_4(unknown) = InitializeIndirection[y] : &:r1803_3 +# 1804| r1804_1(glval) = VariableAddress[cx] : +# 1804| mu1804_2(CopyConstructorTestNonVirtualClass) = Uninitialized[cx] : &:r1804_1 +# 1804| r1804_3(glval) = FunctionAddress[CopyConstructorTestNonVirtualClass] : +# 1804| r1804_4(glval) = VariableAddress[x] : +# 1804| r1804_5(CopyConstructorTestNonVirtualClass &) = Load[x] : &:r1804_4, ~m? +# 1804| r1804_6(glval) = CopyValue : r1804_5 +# 1804| r1804_7(CopyConstructorTestNonVirtualClass &) = CopyValue : r1804_6 +# 1804| v1804_8(void) = Call[CopyConstructorTestNonVirtualClass] : func:r1804_3, this:r1804_1, 0:r1804_7 +# 1804| mu1804_9(unknown) = ^CallSideEffect : ~m? +# 1804| v1804_10(void) = ^BufferReadSideEffect[0] : &:r1804_7, ~m? +# 1804| mu1804_11(CopyConstructorTestNonVirtualClass) = ^IndirectMayWriteSideEffect[-1] : &:r1804_1 +# 1805| r1805_1(glval) = VariableAddress[cy] : +# 1805| mu1805_2(CopyConstructorTestVirtualClass) = Uninitialized[cy] : &:r1805_1 +# 1805| r1805_3(glval) = FunctionAddress[CopyConstructorTestVirtualClass] : +# 1805| r1805_4(glval) = VariableAddress[y] : +# 1805| r1805_5(CopyConstructorTestVirtualClass &) = Load[y] : &:r1805_4, ~m? +# 1805| r1805_6(glval) = CopyValue : r1805_5 +# 1805| r1805_7(CopyConstructorTestVirtualClass &) = CopyValue : r1805_6 +# 1805| v1805_8(void) = Call[CopyConstructorTestVirtualClass] : func:r1805_3, this:r1805_1, 0:r1805_7 +# 1805| mu1805_9(unknown) = ^CallSideEffect : ~m? +# 1805| v1805_10(void) = ^BufferReadSideEffect[0] : &:r1805_7, ~m? +# 1805| mu1805_11(CopyConstructorTestVirtualClass) = ^IndirectMayWriteSideEffect[-1] : &:r1805_1 +# 1806| r1806_1(glval) = VariableAddress[#return] : +# 1806| mu1806_2(int) = Uninitialized[#return] : &:r1806_1 +# 1802| v1802_5(void) = ReturnIndirection[x] : &:r1802_3, ~m? +# 1803| v1803_5(void) = ReturnIndirection[y] : &:r1803_3, ~m? +# 1801| r1801_4(glval) = VariableAddress[#return] : +# 1801| v1801_5(void) = ReturnValue : &:r1801_4, ~m? +# 1801| v1801_6(void) = AliasedUse : ~m? +# 1801| v1801_7(void) = ExitFunction : -# 1806| void if_initialization(int) -# 1806| Block 0 -# 1806| v1806_1(void) = EnterFunction : -# 1806| mu1806_2(unknown) = AliasedDefinition : -# 1806| mu1806_3(unknown) = InitializeNonLocal : -# 1806| r1806_4(glval) = VariableAddress[x] : -# 1806| mu1806_5(int) = InitializeParameter[x] : &:r1806_4 -# 1807| r1807_1(glval) = VariableAddress[y] : -# 1807| r1807_2(glval) = VariableAddress[x] : -# 1807| r1807_3(int) = Load[x] : &:r1807_2, ~m? -# 1807| mu1807_4(int) = Store[y] : &:r1807_1, r1807_3 -# 1807| r1807_5(glval) = VariableAddress[x] : -# 1807| r1807_6(int) = Load[x] : &:r1807_5, ~m? -# 1807| r1807_7(int) = Constant[1] : -# 1807| r1807_8(int) = Add : r1807_6, r1807_7 -# 1807| r1807_9(int) = Constant[0] : -# 1807| r1807_10(bool) = CompareNE : r1807_8, r1807_9 -# 1807| v1807_11(void) = ConditionalBranch : r1807_10 +# 1808| void if_initialization(int) +# 1808| Block 0 +# 1808| v1808_1(void) = EnterFunction : +# 1808| mu1808_2(unknown) = AliasedDefinition : +# 1808| mu1808_3(unknown) = InitializeNonLocal : +# 1808| r1808_4(glval) = VariableAddress[x] : +# 1808| mu1808_5(int) = InitializeParameter[x] : &:r1808_4 +# 1809| r1809_1(glval) = VariableAddress[y] : +# 1809| r1809_2(glval) = VariableAddress[x] : +# 1809| r1809_3(int) = Load[x] : &:r1809_2, ~m? +# 1809| mu1809_4(int) = Store[y] : &:r1809_1, r1809_3 +# 1809| r1809_5(glval) = VariableAddress[x] : +# 1809| r1809_6(int) = Load[x] : &:r1809_5, ~m? +# 1809| r1809_7(int) = Constant[1] : +# 1809| r1809_8(int) = Add : r1809_6, r1809_7 +# 1809| r1809_9(int) = Constant[0] : +# 1809| r1809_10(bool) = CompareNE : r1809_8, r1809_9 +# 1809| v1809_11(void) = ConditionalBranch : r1809_10 #-----| False -> Block 2 #-----| True -> Block 1 -# 1808| Block 1 -# 1808| r1808_1(glval) = VariableAddress[x] : -# 1808| r1808_2(int) = Load[x] : &:r1808_1, ~m? -# 1808| r1808_3(glval) = VariableAddress[y] : -# 1808| r1808_4(int) = Load[y] : &:r1808_3, ~m? -# 1808| r1808_5(int) = Add : r1808_2, r1808_4 -# 1808| r1808_6(glval) = VariableAddress[x] : -# 1808| mu1808_7(int) = Store[x] : &:r1808_6, r1808_5 +# 1810| Block 1 +# 1810| r1810_1(glval) = VariableAddress[x] : +# 1810| r1810_2(int) = Load[x] : &:r1810_1, ~m? +# 1810| r1810_3(glval) = VariableAddress[y] : +# 1810| r1810_4(int) = Load[y] : &:r1810_3, ~m? +# 1810| r1810_5(int) = Add : r1810_2, r1810_4 +# 1810| r1810_6(glval) = VariableAddress[x] : +# 1810| mu1810_7(int) = Store[x] : &:r1810_6, r1810_5 #-----| Goto -> Block 2 -# 1811| Block 2 -# 1811| r1811_1(glval) = VariableAddress[w] : -# 1811| mu1811_2(int) = Uninitialized[w] : &:r1811_1 -# 1812| r1812_1(glval) = VariableAddress[x] : -# 1812| r1812_2(int) = Load[x] : &:r1812_1, ~m? -# 1812| r1812_3(glval) = VariableAddress[w] : -# 1812| mu1812_4(int) = Store[w] : &:r1812_3, r1812_2 -# 1812| r1812_5(glval) = VariableAddress[x] : -# 1812| r1812_6(int) = Load[x] : &:r1812_5, ~m? -# 1812| r1812_7(int) = Constant[1] : -# 1812| r1812_8(int) = Add : r1812_6, r1812_7 -# 1812| r1812_9(int) = Constant[0] : -# 1812| r1812_10(bool) = CompareNE : r1812_8, r1812_9 -# 1812| v1812_11(void) = ConditionalBranch : r1812_10 +# 1813| Block 2 +# 1813| r1813_1(glval) = VariableAddress[w] : +# 1813| mu1813_2(int) = Uninitialized[w] : &:r1813_1 +# 1814| r1814_1(glval) = VariableAddress[x] : +# 1814| r1814_2(int) = Load[x] : &:r1814_1, ~m? +# 1814| r1814_3(glval) = VariableAddress[w] : +# 1814| mu1814_4(int) = Store[w] : &:r1814_3, r1814_2 +# 1814| r1814_5(glval) = VariableAddress[x] : +# 1814| r1814_6(int) = Load[x] : &:r1814_5, ~m? +# 1814| r1814_7(int) = Constant[1] : +# 1814| r1814_8(int) = Add : r1814_6, r1814_7 +# 1814| r1814_9(int) = Constant[0] : +# 1814| r1814_10(bool) = CompareNE : r1814_8, r1814_9 +# 1814| v1814_11(void) = ConditionalBranch : r1814_10 #-----| False -> Block 4 #-----| True -> Block 3 -# 1813| Block 3 -# 1813| r1813_1(glval) = VariableAddress[x] : -# 1813| r1813_2(int) = Load[x] : &:r1813_1, ~m? -# 1813| r1813_3(glval) = VariableAddress[w] : -# 1813| r1813_4(int) = Load[w] : &:r1813_3, ~m? -# 1813| r1813_5(int) = Add : r1813_2, r1813_4 -# 1813| r1813_6(glval) = VariableAddress[x] : -# 1813| mu1813_7(int) = Store[x] : &:r1813_6, r1813_5 +# 1815| Block 3 +# 1815| r1815_1(glval) = VariableAddress[x] : +# 1815| r1815_2(int) = Load[x] : &:r1815_1, ~m? +# 1815| r1815_3(glval) = VariableAddress[w] : +# 1815| r1815_4(int) = Load[w] : &:r1815_3, ~m? +# 1815| r1815_5(int) = Add : r1815_2, r1815_4 +# 1815| r1815_6(glval) = VariableAddress[x] : +# 1815| mu1815_7(int) = Store[x] : &:r1815_6, r1815_5 #-----| Goto -> Block 4 -# 1816| Block 4 -# 1816| r1816_1(glval) = VariableAddress[x] : -# 1816| r1816_2(int) = Load[x] : &:r1816_1, ~m? -# 1816| r1816_3(glval) = VariableAddress[w] : -# 1816| mu1816_4(int) = Store[w] : &:r1816_3, r1816_2 -# 1816| r1816_5(glval) = VariableAddress[w2] : -# 1816| r1816_6(glval) = VariableAddress[w] : -# 1816| r1816_7(int) = Load[w] : &:r1816_6, ~m? -# 1816| mu1816_8(int) = Store[w2] : &:r1816_5, r1816_7 -# 1816| r1816_9(glval) = VariableAddress[w2] : -# 1816| r1816_10(int) = Load[w2] : &:r1816_9, ~m? -# 1816| r1816_11(int) = Constant[0] : -# 1816| r1816_12(bool) = CompareNE : r1816_10, r1816_11 -# 1816| r1816_13(bool) = CopyValue : r1816_12 -# 1816| v1816_14(void) = ConditionalBranch : r1816_13 +# 1818| Block 4 +# 1818| r1818_1(glval) = VariableAddress[x] : +# 1818| r1818_2(int) = Load[x] : &:r1818_1, ~m? +# 1818| r1818_3(glval) = VariableAddress[w] : +# 1818| mu1818_4(int) = Store[w] : &:r1818_3, r1818_2 +# 1818| r1818_5(glval) = VariableAddress[w2] : +# 1818| r1818_6(glval) = VariableAddress[w] : +# 1818| r1818_7(int) = Load[w] : &:r1818_6, ~m? +# 1818| mu1818_8(int) = Store[w2] : &:r1818_5, r1818_7 +# 1818| r1818_9(glval) = VariableAddress[w2] : +# 1818| r1818_10(int) = Load[w2] : &:r1818_9, ~m? +# 1818| r1818_11(int) = Constant[0] : +# 1818| r1818_12(bool) = CompareNE : r1818_10, r1818_11 +# 1818| r1818_13(bool) = CopyValue : r1818_12 +# 1818| v1818_14(void) = ConditionalBranch : r1818_13 #-----| False -> Block 6 #-----| True -> Block 5 -# 1817| Block 5 -# 1817| r1817_1(glval) = VariableAddress[x] : -# 1817| r1817_2(int) = Load[x] : &:r1817_1, ~m? -# 1817| r1817_3(glval) = VariableAddress[w] : -# 1817| r1817_4(int) = Load[w] : &:r1817_3, ~m? -# 1817| r1817_5(int) = Add : r1817_2, r1817_4 -# 1817| r1817_6(glval) = VariableAddress[x] : -# 1817| mu1817_7(int) = Store[x] : &:r1817_6, r1817_5 +# 1819| Block 5 +# 1819| r1819_1(glval) = VariableAddress[x] : +# 1819| r1819_2(int) = Load[x] : &:r1819_1, ~m? +# 1819| r1819_3(glval) = VariableAddress[w] : +# 1819| r1819_4(int) = Load[w] : &:r1819_3, ~m? +# 1819| r1819_5(int) = Add : r1819_2, r1819_4 +# 1819| r1819_6(glval) = VariableAddress[x] : +# 1819| mu1819_7(int) = Store[x] : &:r1819_6, r1819_5 #-----| Goto -> Block 6 -# 1820| Block 6 -# 1820| r1820_1(glval) = VariableAddress[v] : -# 1820| r1820_2(glval) = VariableAddress[x] : -# 1820| r1820_3(int) = Load[x] : &:r1820_2, ~m? -# 1820| mu1820_4(int) = Store[v] : &:r1820_1, r1820_3 -# 1820| r1820_5(glval) = VariableAddress[v2] : -# 1820| r1820_6(glval) = VariableAddress[v] : -# 1820| r1820_7(int) = Load[v] : &:r1820_6, ~m? -# 1820| mu1820_8(int) = Store[v2] : &:r1820_5, r1820_7 -# 1820| r1820_9(glval) = VariableAddress[v2] : -# 1820| r1820_10(int) = Load[v2] : &:r1820_9, ~m? -# 1820| r1820_11(int) = Constant[0] : -# 1820| r1820_12(bool) = CompareNE : r1820_10, r1820_11 -# 1820| r1820_13(bool) = CopyValue : r1820_12 -# 1820| v1820_14(void) = ConditionalBranch : r1820_13 +# 1822| Block 6 +# 1822| r1822_1(glval) = VariableAddress[v] : +# 1822| r1822_2(glval) = VariableAddress[x] : +# 1822| r1822_3(int) = Load[x] : &:r1822_2, ~m? +# 1822| mu1822_4(int) = Store[v] : &:r1822_1, r1822_3 +# 1822| r1822_5(glval) = VariableAddress[v2] : +# 1822| r1822_6(glval) = VariableAddress[v] : +# 1822| r1822_7(int) = Load[v] : &:r1822_6, ~m? +# 1822| mu1822_8(int) = Store[v2] : &:r1822_5, r1822_7 +# 1822| r1822_9(glval) = VariableAddress[v2] : +# 1822| r1822_10(int) = Load[v2] : &:r1822_9, ~m? +# 1822| r1822_11(int) = Constant[0] : +# 1822| r1822_12(bool) = CompareNE : r1822_10, r1822_11 +# 1822| r1822_13(bool) = CopyValue : r1822_12 +# 1822| v1822_14(void) = ConditionalBranch : r1822_13 #-----| False -> Block 8 #-----| True -> Block 7 -# 1821| Block 7 -# 1821| r1821_1(glval) = VariableAddress[x] : -# 1821| r1821_2(int) = Load[x] : &:r1821_1, ~m? -# 1821| r1821_3(glval) = VariableAddress[v] : -# 1821| r1821_4(int) = Load[v] : &:r1821_3, ~m? -# 1821| r1821_5(int) = Add : r1821_2, r1821_4 -# 1821| r1821_6(glval) = VariableAddress[x] : -# 1821| mu1821_7(int) = Store[x] : &:r1821_6, r1821_5 +# 1823| Block 7 +# 1823| r1823_1(glval) = VariableAddress[x] : +# 1823| r1823_2(int) = Load[x] : &:r1823_1, ~m? +# 1823| r1823_3(glval) = VariableAddress[v] : +# 1823| r1823_4(int) = Load[v] : &:r1823_3, ~m? +# 1823| r1823_5(int) = Add : r1823_2, r1823_4 +# 1823| r1823_6(glval) = VariableAddress[x] : +# 1823| mu1823_7(int) = Store[x] : &:r1823_6, r1823_5 #-----| Goto -> Block 8 -# 1824| Block 8 -# 1824| r1824_1(glval) = VariableAddress[z] : -# 1824| r1824_2(glval) = VariableAddress[x] : -# 1824| r1824_3(int) = Load[x] : &:r1824_2, ~m? -# 1824| mu1824_4(int) = Store[z] : &:r1824_1, r1824_3 -# 1825| r1825_1(glval) = VariableAddress[z] : -# 1825| r1825_2(int) = Load[z] : &:r1825_1, ~m? -# 1825| r1825_3(int) = Constant[0] : -# 1825| r1825_4(bool) = CompareNE : r1825_2, r1825_3 -# 1825| v1825_5(void) = ConditionalBranch : r1825_4 +# 1826| Block 8 +# 1826| r1826_1(glval) = VariableAddress[z] : +# 1826| r1826_2(glval) = VariableAddress[x] : +# 1826| r1826_3(int) = Load[x] : &:r1826_2, ~m? +# 1826| mu1826_4(int) = Store[z] : &:r1826_1, r1826_3 +# 1827| r1827_1(glval) = VariableAddress[z] : +# 1827| r1827_2(int) = Load[z] : &:r1827_1, ~m? +# 1827| r1827_3(int) = Constant[0] : +# 1827| r1827_4(bool) = CompareNE : r1827_2, r1827_3 +# 1827| v1827_5(void) = ConditionalBranch : r1827_4 #-----| False -> Block 10 #-----| True -> Block 9 -# 1826| Block 9 -# 1826| r1826_1(glval) = VariableAddress[x] : -# 1826| r1826_2(int) = Load[x] : &:r1826_1, ~m? -# 1826| r1826_3(glval) = VariableAddress[z] : -# 1826| r1826_4(int) = Load[z] : &:r1826_3, ~m? -# 1826| r1826_5(int) = Add : r1826_2, r1826_4 -# 1826| r1826_6(glval) = VariableAddress[x] : -# 1826| mu1826_7(int) = Store[x] : &:r1826_6, r1826_5 +# 1828| Block 9 +# 1828| r1828_1(glval) = VariableAddress[x] : +# 1828| r1828_2(int) = Load[x] : &:r1828_1, ~m? +# 1828| r1828_3(glval) = VariableAddress[z] : +# 1828| r1828_4(int) = Load[z] : &:r1828_3, ~m? +# 1828| r1828_5(int) = Add : r1828_2, r1828_4 +# 1828| r1828_6(glval) = VariableAddress[x] : +# 1828| mu1828_7(int) = Store[x] : &:r1828_6, r1828_5 #-----| Goto -> Block 10 -# 1829| Block 10 -# 1829| r1829_1(glval) = VariableAddress[z2] : -# 1829| r1829_2(glval) = VariableAddress[z] : -# 1829| r1829_3(int) = Load[z] : &:r1829_2, ~m? -# 1829| mu1829_4(int) = Store[z2] : &:r1829_1, r1829_3 -# 1829| r1829_5(glval) = VariableAddress[z2] : -# 1829| r1829_6(int) = Load[z2] : &:r1829_5, ~m? -# 1829| r1829_7(int) = Constant[0] : -# 1829| r1829_8(bool) = CompareNE : r1829_6, r1829_7 -# 1829| r1829_9(bool) = CopyValue : r1829_8 -# 1829| v1829_10(void) = ConditionalBranch : r1829_9 +# 1831| Block 10 +# 1831| r1831_1(glval) = VariableAddress[z2] : +# 1831| r1831_2(glval) = VariableAddress[z] : +# 1831| r1831_3(int) = Load[z] : &:r1831_2, ~m? +# 1831| mu1831_4(int) = Store[z2] : &:r1831_1, r1831_3 +# 1831| r1831_5(glval) = VariableAddress[z2] : +# 1831| r1831_6(int) = Load[z2] : &:r1831_5, ~m? +# 1831| r1831_7(int) = Constant[0] : +# 1831| r1831_8(bool) = CompareNE : r1831_6, r1831_7 +# 1831| r1831_9(bool) = CopyValue : r1831_8 +# 1831| v1831_10(void) = ConditionalBranch : r1831_9 #-----| False -> Block 12 #-----| True -> Block 11 -# 1830| Block 11 -# 1830| r1830_1(glval) = VariableAddress[z2] : -# 1830| r1830_2(int) = Load[z2] : &:r1830_1, ~m? -# 1830| r1830_3(glval) = VariableAddress[x] : -# 1830| r1830_4(int) = Load[x] : &:r1830_3, ~m? -# 1830| r1830_5(int) = Add : r1830_4, r1830_2 -# 1830| mu1830_6(int) = Store[x] : &:r1830_3, r1830_5 +# 1832| Block 11 +# 1832| r1832_1(glval) = VariableAddress[z2] : +# 1832| r1832_2(int) = Load[z2] : &:r1832_1, ~m? +# 1832| r1832_3(glval) = VariableAddress[x] : +# 1832| r1832_4(int) = Load[x] : &:r1832_3, ~m? +# 1832| r1832_5(int) = Add : r1832_4, r1832_2 +# 1832| mu1832_6(int) = Store[x] : &:r1832_3, r1832_5 #-----| Goto -> Block 12 -# 1832| Block 12 -# 1832| v1832_1(void) = NoOp : -# 1806| v1806_6(void) = ReturnVoid : -# 1806| v1806_7(void) = AliasedUse : ~m? -# 1806| v1806_8(void) = ExitFunction : +# 1834| Block 12 +# 1834| v1834_1(void) = NoOp : +# 1808| v1808_6(void) = ReturnVoid : +# 1808| v1808_7(void) = AliasedUse : ~m? +# 1808| v1808_8(void) = ExitFunction : -# 1834| void switch_initialization(int) -# 1834| Block 0 -# 1834| v1834_1(void) = EnterFunction : -# 1834| mu1834_2(unknown) = AliasedDefinition : -# 1834| mu1834_3(unknown) = InitializeNonLocal : -# 1834| r1834_4(glval) = VariableAddress[x] : -# 1834| mu1834_5(int) = InitializeParameter[x] : &:r1834_4 -# 1835| r1835_1(glval) = VariableAddress[y] : -# 1835| r1835_2(glval) = VariableAddress[x] : -# 1835| r1835_3(int) = Load[x] : &:r1835_2, ~m? -# 1835| mu1835_4(int) = Store[y] : &:r1835_1, r1835_3 -# 1835| r1835_5(glval) = VariableAddress[x] : -# 1835| r1835_6(int) = Load[x] : &:r1835_5, ~m? -# 1835| r1835_7(int) = Constant[1] : -# 1835| r1835_8(int) = Add : r1835_6, r1835_7 -# 1835| v1835_9(void) = Switch : r1835_8 +# 1836| void switch_initialization(int) +# 1836| Block 0 +# 1836| v1836_1(void) = EnterFunction : +# 1836| mu1836_2(unknown) = AliasedDefinition : +# 1836| mu1836_3(unknown) = InitializeNonLocal : +# 1836| r1836_4(glval) = VariableAddress[x] : +# 1836| mu1836_5(int) = InitializeParameter[x] : &:r1836_4 +# 1837| r1837_1(glval) = VariableAddress[y] : +# 1837| r1837_2(glval) = VariableAddress[x] : +# 1837| r1837_3(int) = Load[x] : &:r1837_2, ~m? +# 1837| mu1837_4(int) = Store[y] : &:r1837_1, r1837_3 +# 1837| r1837_5(glval) = VariableAddress[x] : +# 1837| r1837_6(int) = Load[x] : &:r1837_5, ~m? +# 1837| r1837_7(int) = Constant[1] : +# 1837| r1837_8(int) = Add : r1837_6, r1837_7 +# 1837| v1837_9(void) = Switch : r1837_8 #-----| Default -> Block 1 -# 1836| Block 1 -# 1836| v1836_1(void) = NoOp : -# 1837| r1837_1(glval) = VariableAddress[x] : -# 1837| r1837_2(int) = Load[x] : &:r1837_1, ~m? -# 1837| r1837_3(glval) = VariableAddress[y] : -# 1837| r1837_4(int) = Load[y] : &:r1837_3, ~m? -# 1837| r1837_5(int) = Add : r1837_2, r1837_4 -# 1837| r1837_6(glval) = VariableAddress[x] : -# 1837| mu1837_7(int) = Store[x] : &:r1837_6, r1837_5 -# 1840| r1840_1(glval) = VariableAddress[w] : -# 1840| mu1840_2(int) = Uninitialized[w] : &:r1840_1 -# 1841| r1841_1(glval) = VariableAddress[x] : -# 1841| r1841_2(int) = Load[x] : &:r1841_1, ~m? -# 1841| r1841_3(glval) = VariableAddress[w] : -# 1841| mu1841_4(int) = Store[w] : &:r1841_3, r1841_2 -# 1841| r1841_5(glval) = VariableAddress[x] : -# 1841| r1841_6(int) = Load[x] : &:r1841_5, ~m? -# 1841| r1841_7(int) = Constant[1] : -# 1841| r1841_8(int) = Add : r1841_6, r1841_7 -# 1841| v1841_9(void) = Switch : r1841_8 +# 1838| Block 1 +# 1838| v1838_1(void) = NoOp : +# 1839| r1839_1(glval) = VariableAddress[x] : +# 1839| r1839_2(int) = Load[x] : &:r1839_1, ~m? +# 1839| r1839_3(glval) = VariableAddress[y] : +# 1839| r1839_4(int) = Load[y] : &:r1839_3, ~m? +# 1839| r1839_5(int) = Add : r1839_2, r1839_4 +# 1839| r1839_6(glval) = VariableAddress[x] : +# 1839| mu1839_7(int) = Store[x] : &:r1839_6, r1839_5 +# 1842| r1842_1(glval) = VariableAddress[w] : +# 1842| mu1842_2(int) = Uninitialized[w] : &:r1842_1 +# 1843| r1843_1(glval) = VariableAddress[x] : +# 1843| r1843_2(int) = Load[x] : &:r1843_1, ~m? +# 1843| r1843_3(glval) = VariableAddress[w] : +# 1843| mu1843_4(int) = Store[w] : &:r1843_3, r1843_2 +# 1843| r1843_5(glval) = VariableAddress[x] : +# 1843| r1843_6(int) = Load[x] : &:r1843_5, ~m? +# 1843| r1843_7(int) = Constant[1] : +# 1843| r1843_8(int) = Add : r1843_6, r1843_7 +# 1843| v1843_9(void) = Switch : r1843_8 #-----| Default -> Block 2 -# 1842| Block 2 -# 1842| v1842_1(void) = NoOp : -# 1843| r1843_1(glval) = VariableAddress[x] : -# 1843| r1843_2(int) = Load[x] : &:r1843_1, ~m? -# 1843| r1843_3(glval) = VariableAddress[w] : -# 1843| r1843_4(int) = Load[w] : &:r1843_3, ~m? -# 1843| r1843_5(int) = Add : r1843_2, r1843_4 -# 1843| r1843_6(glval) = VariableAddress[x] : -# 1843| mu1843_7(int) = Store[x] : &:r1843_6, r1843_5 -# 1846| r1846_1(glval) = VariableAddress[x] : -# 1846| r1846_2(int) = Load[x] : &:r1846_1, ~m? -# 1846| r1846_3(glval) = VariableAddress[w] : -# 1846| mu1846_4(int) = Store[w] : &:r1846_3, r1846_2 -# 1846| r1846_5(glval) = VariableAddress[w2] : -# 1846| r1846_6(glval) = VariableAddress[w] : -# 1846| r1846_7(int) = Load[w] : &:r1846_6, ~m? -# 1846| mu1846_8(int) = Store[w2] : &:r1846_5, r1846_7 -# 1846| r1846_9(glval) = VariableAddress[w2] : -# 1846| r1846_10(int) = Load[w2] : &:r1846_9, ~m? -# 1846| r1846_11(int) = CopyValue : r1846_10 -# 1846| v1846_12(void) = Switch : r1846_11 -#-----| Default -> Block 3 - -# 1847| Block 3 -# 1847| v1847_1(void) = NoOp : +# 1844| Block 2 +# 1844| v1844_1(void) = NoOp : +# 1845| r1845_1(glval) = VariableAddress[x] : +# 1845| r1845_2(int) = Load[x] : &:r1845_1, ~m? +# 1845| r1845_3(glval) = VariableAddress[w] : +# 1845| r1845_4(int) = Load[w] : &:r1845_3, ~m? +# 1845| r1845_5(int) = Add : r1845_2, r1845_4 +# 1845| r1845_6(glval) = VariableAddress[x] : +# 1845| mu1845_7(int) = Store[x] : &:r1845_6, r1845_5 # 1848| r1848_1(glval) = VariableAddress[x] : # 1848| r1848_2(int) = Load[x] : &:r1848_1, ~m? # 1848| r1848_3(glval) = VariableAddress[w] : -# 1848| r1848_4(int) = Load[w] : &:r1848_3, ~m? -# 1848| r1848_5(int) = Add : r1848_2, r1848_4 -# 1848| r1848_6(glval) = VariableAddress[x] : -# 1848| mu1848_7(int) = Store[x] : &:r1848_6, r1848_5 -# 1851| r1851_1(glval) = VariableAddress[v] : -# 1851| r1851_2(glval) = VariableAddress[x] : -# 1851| r1851_3(int) = Load[x] : &:r1851_2, ~m? -# 1851| mu1851_4(int) = Store[v] : &:r1851_1, r1851_3 -# 1851| r1851_5(glval) = VariableAddress[v2] : -# 1851| r1851_6(glval) = VariableAddress[v] : -# 1851| r1851_7(int) = Load[v] : &:r1851_6, ~m? -# 1851| mu1851_8(int) = Store[v2] : &:r1851_5, r1851_7 -# 1851| r1851_9(glval) = VariableAddress[v2] : -# 1851| r1851_10(int) = Load[v2] : &:r1851_9, ~m? -# 1851| r1851_11(int) = CopyValue : r1851_10 -# 1851| v1851_12(void) = Switch : r1851_11 +# 1848| mu1848_4(int) = Store[w] : &:r1848_3, r1848_2 +# 1848| r1848_5(glval) = VariableAddress[w2] : +# 1848| r1848_6(glval) = VariableAddress[w] : +# 1848| r1848_7(int) = Load[w] : &:r1848_6, ~m? +# 1848| mu1848_8(int) = Store[w2] : &:r1848_5, r1848_7 +# 1848| r1848_9(glval) = VariableAddress[w2] : +# 1848| r1848_10(int) = Load[w2] : &:r1848_9, ~m? +# 1848| r1848_11(int) = CopyValue : r1848_10 +# 1848| v1848_12(void) = Switch : r1848_11 +#-----| Default -> Block 3 + +# 1849| Block 3 +# 1849| v1849_1(void) = NoOp : +# 1850| r1850_1(glval) = VariableAddress[x] : +# 1850| r1850_2(int) = Load[x] : &:r1850_1, ~m? +# 1850| r1850_3(glval) = VariableAddress[w] : +# 1850| r1850_4(int) = Load[w] : &:r1850_3, ~m? +# 1850| r1850_5(int) = Add : r1850_2, r1850_4 +# 1850| r1850_6(glval) = VariableAddress[x] : +# 1850| mu1850_7(int) = Store[x] : &:r1850_6, r1850_5 +# 1853| r1853_1(glval) = VariableAddress[v] : +# 1853| r1853_2(glval) = VariableAddress[x] : +# 1853| r1853_3(int) = Load[x] : &:r1853_2, ~m? +# 1853| mu1853_4(int) = Store[v] : &:r1853_1, r1853_3 +# 1853| r1853_5(glval) = VariableAddress[v2] : +# 1853| r1853_6(glval) = VariableAddress[v] : +# 1853| r1853_7(int) = Load[v] : &:r1853_6, ~m? +# 1853| mu1853_8(int) = Store[v2] : &:r1853_5, r1853_7 +# 1853| r1853_9(glval) = VariableAddress[v2] : +# 1853| r1853_10(int) = Load[v2] : &:r1853_9, ~m? +# 1853| r1853_11(int) = CopyValue : r1853_10 +# 1853| v1853_12(void) = Switch : r1853_11 #-----| Default -> Block 4 -# 1852| Block 4 -# 1852| v1852_1(void) = NoOp : -# 1853| r1853_1(glval) = VariableAddress[x] : -# 1853| r1853_2(int) = Load[x] : &:r1853_1, ~m? -# 1853| r1853_3(glval) = VariableAddress[v] : -# 1853| r1853_4(int) = Load[v] : &:r1853_3, ~m? -# 1853| r1853_5(int) = Add : r1853_2, r1853_4 -# 1853| r1853_6(glval) = VariableAddress[x] : -# 1853| mu1853_7(int) = Store[x] : &:r1853_6, r1853_5 -# 1856| r1856_1(glval) = VariableAddress[z] : -# 1856| r1856_2(glval) = VariableAddress[x] : -# 1856| r1856_3(int) = Load[x] : &:r1856_2, ~m? -# 1856| mu1856_4(int) = Store[z] : &:r1856_1, r1856_3 -# 1857| r1857_1(glval) = VariableAddress[z] : -# 1857| r1857_2(int) = Load[z] : &:r1857_1, ~m? -# 1857| v1857_3(void) = Switch : r1857_2 +# 1854| Block 4 +# 1854| v1854_1(void) = NoOp : +# 1855| r1855_1(glval) = VariableAddress[x] : +# 1855| r1855_2(int) = Load[x] : &:r1855_1, ~m? +# 1855| r1855_3(glval) = VariableAddress[v] : +# 1855| r1855_4(int) = Load[v] : &:r1855_3, ~m? +# 1855| r1855_5(int) = Add : r1855_2, r1855_4 +# 1855| r1855_6(glval) = VariableAddress[x] : +# 1855| mu1855_7(int) = Store[x] : &:r1855_6, r1855_5 +# 1858| r1858_1(glval) = VariableAddress[z] : +# 1858| r1858_2(glval) = VariableAddress[x] : +# 1858| r1858_3(int) = Load[x] : &:r1858_2, ~m? +# 1858| mu1858_4(int) = Store[z] : &:r1858_1, r1858_3 +# 1859| r1859_1(glval) = VariableAddress[z] : +# 1859| r1859_2(int) = Load[z] : &:r1859_1, ~m? +# 1859| v1859_3(void) = Switch : r1859_2 #-----| Default -> Block 5 -# 1858| Block 5 -# 1858| v1858_1(void) = NoOp : -# 1859| r1859_1(glval) = VariableAddress[x] : -# 1859| r1859_2(int) = Load[x] : &:r1859_1, ~m? -# 1859| r1859_3(glval) = VariableAddress[z] : -# 1859| r1859_4(int) = Load[z] : &:r1859_3, ~m? -# 1859| r1859_5(int) = Add : r1859_2, r1859_4 -# 1859| r1859_6(glval) = VariableAddress[x] : -# 1859| mu1859_7(int) = Store[x] : &:r1859_6, r1859_5 -# 1862| r1862_1(glval) = VariableAddress[z2] : -# 1862| r1862_2(glval) = VariableAddress[z] : -# 1862| r1862_3(int) = Load[z] : &:r1862_2, ~m? -# 1862| mu1862_4(int) = Store[z2] : &:r1862_1, r1862_3 -# 1862| r1862_5(glval) = VariableAddress[z2] : -# 1862| r1862_6(int) = Load[z2] : &:r1862_5, ~m? -# 1862| r1862_7(int) = CopyValue : r1862_6 -# 1862| v1862_8(void) = Switch : r1862_7 +# 1860| Block 5 +# 1860| v1860_1(void) = NoOp : +# 1861| r1861_1(glval) = VariableAddress[x] : +# 1861| r1861_2(int) = Load[x] : &:r1861_1, ~m? +# 1861| r1861_3(glval) = VariableAddress[z] : +# 1861| r1861_4(int) = Load[z] : &:r1861_3, ~m? +# 1861| r1861_5(int) = Add : r1861_2, r1861_4 +# 1861| r1861_6(glval) = VariableAddress[x] : +# 1861| mu1861_7(int) = Store[x] : &:r1861_6, r1861_5 +# 1864| r1864_1(glval) = VariableAddress[z2] : +# 1864| r1864_2(glval) = VariableAddress[z] : +# 1864| r1864_3(int) = Load[z] : &:r1864_2, ~m? +# 1864| mu1864_4(int) = Store[z2] : &:r1864_1, r1864_3 +# 1864| r1864_5(glval) = VariableAddress[z2] : +# 1864| r1864_6(int) = Load[z2] : &:r1864_5, ~m? +# 1864| r1864_7(int) = CopyValue : r1864_6 +# 1864| v1864_8(void) = Switch : r1864_7 #-----| Default -> Block 6 -# 1863| Block 6 -# 1863| v1863_1(void) = NoOp : -# 1864| r1864_1(glval) = VariableAddress[z2] : -# 1864| r1864_2(int) = Load[z2] : &:r1864_1, ~m? -# 1864| r1864_3(glval) = VariableAddress[x] : -# 1864| r1864_4(int) = Load[x] : &:r1864_3, ~m? -# 1864| r1864_5(int) = Add : r1864_4, r1864_2 -# 1864| mu1864_6(int) = Store[x] : &:r1864_3, r1864_5 -# 1866| v1866_1(void) = NoOp : -# 1834| v1834_6(void) = ReturnVoid : -# 1834| v1834_7(void) = AliasedUse : ~m? -# 1834| v1834_8(void) = ExitFunction : +# 1865| Block 6 +# 1865| v1865_1(void) = NoOp : +# 1866| r1866_1(glval) = VariableAddress[z2] : +# 1866| r1866_2(int) = Load[z2] : &:r1866_1, ~m? +# 1866| r1866_3(glval) = VariableAddress[x] : +# 1866| r1866_4(int) = Load[x] : &:r1866_3, ~m? +# 1866| r1866_5(int) = Add : r1866_4, r1866_2 +# 1866| mu1866_6(int) = Store[x] : &:r1866_3, r1866_5 +# 1868| v1868_1(void) = NoOp : +# 1836| v1836_6(void) = ReturnVoid : +# 1836| v1836_7(void) = AliasedUse : ~m? +# 1836| v1836_8(void) = ExitFunction : -# 1870| int global_2 -# 1870| Block 0 -# 1870| v1870_1(void) = EnterFunction : -# 1870| mu1870_2(unknown) = AliasedDefinition : -# 1870| r1870_3(glval) = VariableAddress[global_2] : -# 1870| r1870_4(int) = Constant[1] : -# 1870| mu1870_5(int) = Store[global_2] : &:r1870_3, r1870_4 -# 1870| v1870_6(void) = ReturnVoid : -# 1870| v1870_7(void) = AliasedUse : ~m? -# 1870| v1870_8(void) = ExitFunction : +# 1872| int global_2 +# 1872| Block 0 +# 1872| v1872_1(void) = EnterFunction : +# 1872| mu1872_2(unknown) = AliasedDefinition : +# 1872| r1872_3(glval) = VariableAddress[global_2] : +# 1872| r1872_4(int) = Constant[1] : +# 1872| mu1872_5(int) = Store[global_2] : &:r1872_3, r1872_4 +# 1872| v1872_6(void) = ReturnVoid : +# 1872| v1872_7(void) = AliasedUse : ~m? +# 1872| v1872_8(void) = ExitFunction : -# 1874| constructor_only global_4 -# 1874| Block 0 -# 1874| v1874_1(void) = EnterFunction : -# 1874| mu1874_2(unknown) = AliasedDefinition : -# 1874| r1874_3(glval) = VariableAddress[global_4] : -# 1874| r1874_4(glval) = FunctionAddress[constructor_only] : -# 1874| r1874_5(int) = Constant[1] : -# 1874| v1874_6(void) = Call[constructor_only] : func:r1874_4, this:r1874_3, 0:r1874_5 -# 1874| mu1874_7(unknown) = ^CallSideEffect : ~m? -# 1874| mu1874_8(constructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1874_3 -# 1874| v1874_9(void) = ReturnVoid : -# 1874| v1874_10(void) = AliasedUse : ~m? -# 1874| v1874_11(void) = ExitFunction : - -# 1876| constructor_only global_5 +# 1876| constructor_only global_4 # 1876| Block 0 # 1876| v1876_1(void) = EnterFunction : # 1876| mu1876_2(unknown) = AliasedDefinition : -# 1876| r1876_3(glval) = VariableAddress[global_5] : +# 1876| r1876_3(glval) = VariableAddress[global_4] : # 1876| r1876_4(glval) = FunctionAddress[constructor_only] : -# 1876| r1876_5(int) = Constant[2] : +# 1876| r1876_5(int) = Constant[1] : # 1876| v1876_6(void) = Call[constructor_only] : func:r1876_4, this:r1876_3, 0:r1876_5 # 1876| mu1876_7(unknown) = ^CallSideEffect : ~m? # 1876| mu1876_8(constructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1876_3 @@ -13002,40 +12988,54 @@ ir.cpp: # 1876| v1876_10(void) = AliasedUse : ~m? # 1876| v1876_11(void) = ExitFunction : -# 1878| char* global_string +# 1878| constructor_only global_5 # 1878| Block 0 -# 1878| v1878_1(void) = EnterFunction : -# 1878| mu1878_2(unknown) = AliasedDefinition : -# 1878| r1878_3(glval) = VariableAddress[global_string] : -# 1878| r1878_4(glval) = StringConstant["global string"] : -# 1878| r1878_5(char *) = Convert : r1878_4 -# 1878| r1878_6(char *) = Convert : r1878_5 -# 1878| mu1878_7(char *) = Store[global_string] : &:r1878_3, r1878_6 -# 1878| v1878_8(void) = ReturnVoid : -# 1878| v1878_9(void) = AliasedUse : ~m? -# 1878| v1878_10(void) = ExitFunction : +# 1878| v1878_1(void) = EnterFunction : +# 1878| mu1878_2(unknown) = AliasedDefinition : +# 1878| r1878_3(glval) = VariableAddress[global_5] : +# 1878| r1878_4(glval) = FunctionAddress[constructor_only] : +# 1878| r1878_5(int) = Constant[2] : +# 1878| v1878_6(void) = Call[constructor_only] : func:r1878_4, this:r1878_3, 0:r1878_5 +# 1878| mu1878_7(unknown) = ^CallSideEffect : ~m? +# 1878| mu1878_8(constructor_only) = ^IndirectMayWriteSideEffect[-1] : &:r1878_3 +# 1878| v1878_9(void) = ReturnVoid : +# 1878| v1878_10(void) = AliasedUse : ~m? +# 1878| v1878_11(void) = ExitFunction : -# 1880| int global_6 +# 1880| char* global_string # 1880| Block 0 -# 1880| v1880_1(void) = EnterFunction : -# 1880| mu1880_2(unknown) = AliasedDefinition : -# 1880| r1880_3(glval) = VariableAddress[global_6] : -# 1880| r1880_4(glval) = VariableAddress[global_2] : -# 1880| r1880_5(int) = Load[global_2] : &:r1880_4, ~m? -# 1880| mu1880_6(int) = Store[global_6] : &:r1880_3, r1880_5 -# 1880| v1880_7(void) = ReturnVoid : -# 1880| v1880_8(void) = AliasedUse : ~m? -# 1880| v1880_9(void) = ExitFunction : +# 1880| v1880_1(void) = EnterFunction : +# 1880| mu1880_2(unknown) = AliasedDefinition : +# 1880| r1880_3(glval) = VariableAddress[global_string] : +# 1880| r1880_4(glval) = StringConstant["global string"] : +# 1880| r1880_5(char *) = Convert : r1880_4 +# 1880| r1880_6(char *) = Convert : r1880_5 +# 1880| mu1880_7(char *) = Store[global_string] : &:r1880_3, r1880_6 +# 1880| v1880_8(void) = ReturnVoid : +# 1880| v1880_9(void) = AliasedUse : ~m? +# 1880| v1880_10(void) = ExitFunction : -# 1883| block_assignment::A& block_assignment::A::operator=(block_assignment::A&&) -# 1883| Block 0 -# 1883| v1883_1(void) = EnterFunction : -# 1883| mu1883_2(unknown) = AliasedDefinition : -# 1883| mu1883_3(unknown) = InitializeNonLocal : -# 1883| r1883_4(glval) = VariableAddress[#this] : -# 1883| mu1883_5(glval) = InitializeParameter[#this] : &:r1883_4 -# 1883| r1883_6(glval) = Load[#this] : &:r1883_4, ~m? -# 1883| mu1883_7(A) = InitializeIndirection[#this] : &:r1883_6 +# 1882| int global_6 +# 1882| Block 0 +# 1882| v1882_1(void) = EnterFunction : +# 1882| mu1882_2(unknown) = AliasedDefinition : +# 1882| r1882_3(glval) = VariableAddress[global_6] : +# 1882| r1882_4(glval) = VariableAddress[global_2] : +# 1882| r1882_5(int) = Load[global_2] : &:r1882_4, ~m? +# 1882| mu1882_6(int) = Store[global_6] : &:r1882_3, r1882_5 +# 1882| v1882_7(void) = ReturnVoid : +# 1882| v1882_8(void) = AliasedUse : ~m? +# 1882| v1882_9(void) = ExitFunction : + +# 1885| block_assignment::A& block_assignment::A::operator=(block_assignment::A&&) +# 1885| Block 0 +# 1885| v1885_1(void) = EnterFunction : +# 1885| mu1885_2(unknown) = AliasedDefinition : +# 1885| mu1885_3(unknown) = InitializeNonLocal : +# 1885| r1885_4(glval) = VariableAddress[#this] : +# 1885| mu1885_5(glval) = InitializeParameter[#this] : &:r1885_4 +# 1885| r1885_6(glval) = Load[#this] : &:r1885_4, ~m? +# 1885| mu1885_7(A) = InitializeIndirection[#this] : &:r1885_6 #-----| r0_1(glval) = VariableAddress[(unnamed parameter 0)] : #-----| mu0_2(A &&) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(A &&) = Load[(unnamed parameter 0)] : &:r0_1, ~m? @@ -13055,957 +13055,957 @@ ir.cpp: #-----| r0_17(glval) = CopyValue : r0_16 #-----| r0_18(A &) = CopyValue : r0_17 #-----| mu0_19(A &) = Store[#return] : &:r0_14, r0_18 -# 1883| v1883_8(void) = ReturnIndirection[#this] : &:r1883_6, ~m? +# 1885| v1885_8(void) = ReturnIndirection[#this] : &:r1885_6, ~m? #-----| v0_20(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, ~m? -# 1883| r1883_9(glval) = VariableAddress[#return] : -# 1883| v1883_10(void) = ReturnValue : &:r1883_9, ~m? -# 1883| v1883_11(void) = AliasedUse : ~m? -# 1883| v1883_12(void) = ExitFunction : +# 1885| r1885_9(glval) = VariableAddress[#return] : +# 1885| v1885_10(void) = ReturnValue : &:r1885_9, ~m? +# 1885| v1885_11(void) = AliasedUse : ~m? +# 1885| v1885_12(void) = ExitFunction : -# 1888| block_assignment::B& block_assignment::B::operator=(block_assignment::B&&) -# 1888| Block 0 -# 1888| v1888_1(void) = EnterFunction : -# 1888| mu1888_2(unknown) = AliasedDefinition : -# 1888| mu1888_3(unknown) = InitializeNonLocal : -# 1888| r1888_4(glval) = VariableAddress[#this] : -# 1888| mu1888_5(glval) = InitializeParameter[#this] : &:r1888_4 -# 1888| r1888_6(glval) = Load[#this] : &:r1888_4, ~m? -# 1888| mu1888_7(B) = InitializeIndirection[#this] : &:r1888_6 +# 1890| block_assignment::B& block_assignment::B::operator=(block_assignment::B&&) +# 1890| Block 0 +# 1890| v1890_1(void) = EnterFunction : +# 1890| mu1890_2(unknown) = AliasedDefinition : +# 1890| mu1890_3(unknown) = InitializeNonLocal : +# 1890| r1890_4(glval) = VariableAddress[#this] : +# 1890| mu1890_5(glval) = InitializeParameter[#this] : &:r1890_4 +# 1890| r1890_6(glval) = Load[#this] : &:r1890_4, ~m? +# 1890| mu1890_7(B) = InitializeIndirection[#this] : &:r1890_6 #-----| r0_1(glval) = VariableAddress[(unnamed parameter 0)] : #-----| mu0_2(B &&) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(B &&) = Load[(unnamed parameter 0)] : &:r0_1, ~m? #-----| mu0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 1888| r1888_8(glval) = VariableAddress[#this] : -# 1888| r1888_9(B *) = Load[#this] : &:r1888_8, ~m? -#-----| r0_5(A *) = ConvertToNonVirtualBase[B : A] : r1888_9 -# 1888| r1888_10(glval) = FunctionAddress[operator=] : -# 1888| r1888_11(glval) = VariableAddress[(unnamed parameter 0)] : -# 1888| r1888_12(B &&) = Load[(unnamed parameter 0)] : &:r1888_11, ~m? -#-----| r0_6(glval) = CopyValue : r1888_12 -# 1888| r1888_13(B *) = CopyValue : r0_6 -#-----| r0_7(A *) = ConvertToNonVirtualBase[B : A] : r1888_13 -# 1888| r1888_14(glval) = CopyValue : r0_7 -#-----| r0_8(A &) = CopyValue : r1888_14 -# 1888| r1888_15(A &) = Call[operator=] : func:r1888_10, this:r0_5, 0:r0_8 -# 1888| mu1888_16(unknown) = ^CallSideEffect : ~m? +# 1890| r1890_8(glval) = VariableAddress[#this] : +# 1890| r1890_9(B *) = Load[#this] : &:r1890_8, ~m? +#-----| r0_5(A *) = ConvertToNonVirtualBase[B : A] : r1890_9 +# 1890| r1890_10(glval) = FunctionAddress[operator=] : +# 1890| r1890_11(glval) = VariableAddress[(unnamed parameter 0)] : +# 1890| r1890_12(B &&) = Load[(unnamed parameter 0)] : &:r1890_11, ~m? +#-----| r0_6(glval) = CopyValue : r1890_12 +# 1890| r1890_13(B *) = CopyValue : r0_6 +#-----| r0_7(A *) = ConvertToNonVirtualBase[B : A] : r1890_13 +# 1890| r1890_14(glval) = CopyValue : r0_7 +#-----| r0_8(A &) = CopyValue : r1890_14 +# 1890| r1890_15(A &) = Call[operator=] : func:r1890_10, this:r0_5, 0:r0_8 +# 1890| mu1890_16(unknown) = ^CallSideEffect : ~m? #-----| v0_9(void) = ^IndirectReadSideEffect[-1] : &:r0_5, ~m? #-----| v0_10(void) = ^BufferReadSideEffect[0] : &:r0_8, ~m? #-----| mu0_11(A) = ^IndirectMayWriteSideEffect[-1] : &:r0_5 #-----| mu0_12(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_8 -#-----| r0_13(glval) = CopyValue : r1888_15 +#-----| r0_13(glval) = CopyValue : r1890_15 #-----| r0_14(glval) = VariableAddress[#return] : #-----| r0_15(glval) = VariableAddress[#this] : #-----| r0_16(B *) = Load[#this] : &:r0_15, ~m? #-----| r0_17(glval) = CopyValue : r0_16 #-----| r0_18(B &) = CopyValue : r0_17 #-----| mu0_19(B &) = Store[#return] : &:r0_14, r0_18 -# 1888| v1888_17(void) = ReturnIndirection[#this] : &:r1888_6, ~m? +# 1890| v1890_17(void) = ReturnIndirection[#this] : &:r1890_6, ~m? #-----| v0_20(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, ~m? -# 1888| r1888_18(glval) = VariableAddress[#return] : -# 1888| v1888_19(void) = ReturnValue : &:r1888_18, ~m? -# 1888| v1888_20(void) = AliasedUse : ~m? -# 1888| v1888_21(void) = ExitFunction : +# 1890| r1890_18(glval) = VariableAddress[#return] : +# 1890| v1890_19(void) = ReturnValue : &:r1890_18, ~m? +# 1890| v1890_20(void) = AliasedUse : ~m? +# 1890| v1890_21(void) = ExitFunction : -# 1892| void block_assignment::foo() -# 1892| Block 0 -# 1892| v1892_1(void) = EnterFunction : -# 1892| mu1892_2(unknown) = AliasedDefinition : -# 1892| mu1892_3(unknown) = InitializeNonLocal : -# 1893| r1893_1(glval) = VariableAddress[v] : -# 1893| mu1893_2(B) = Uninitialized[v] : &:r1893_1 -# 1893| r1893_3(glval) = FunctionAddress[B] : -# 1893| r1893_4(A *) = Constant[0] : -# 1893| v1893_5(void) = Call[B] : func:r1893_3, this:r1893_1, 0:r1893_4 -# 1893| mu1893_6(unknown) = ^CallSideEffect : ~m? -# 1893| v1893_7(void) = ^BufferReadSideEffect[0] : &:r1893_4, ~m? -# 1893| mu1893_8(B) = ^IndirectMayWriteSideEffect[-1] : &:r1893_1 -# 1893| mu1893_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r1893_4 -# 1894| r1894_1(glval) = VariableAddress[v] : -# 1894| r1894_2(glval) = FunctionAddress[operator=] : -# 1894| r1894_3(glval) = VariableAddress[#temp1894:13] : -# 1894| mu1894_4(B) = Uninitialized[#temp1894:13] : &:r1894_3 -# 1894| r1894_5(glval) = FunctionAddress[B] : -# 1894| r1894_6(A *) = Constant[0] : -# 1894| v1894_7(void) = Call[B] : func:r1894_5, this:r1894_3, 0:r1894_6 -# 1894| mu1894_8(unknown) = ^CallSideEffect : ~m? -# 1894| v1894_9(void) = ^BufferReadSideEffect[0] : &:r1894_6, ~m? -# 1894| mu1894_10(B) = ^IndirectMayWriteSideEffect[-1] : &:r1894_3 -# 1894| mu1894_11(unknown) = ^BufferMayWriteSideEffect[0] : &:r1894_6 -# 1894| r1894_12(B &) = CopyValue : r1894_3 -# 1894| r1894_13(B &) = Call[operator=] : func:r1894_2, this:r1894_1, 0:r1894_12 -# 1894| mu1894_14(unknown) = ^CallSideEffect : ~m? -# 1894| v1894_15(void) = ^IndirectReadSideEffect[-1] : &:r1894_1, ~m? -# 1894| v1894_16(void) = ^BufferReadSideEffect[0] : &:r1894_12, ~m? -# 1894| mu1894_17(B) = ^IndirectMayWriteSideEffect[-1] : &:r1894_1 -# 1894| mu1894_18(unknown) = ^BufferMayWriteSideEffect[0] : &:r1894_12 -# 1894| r1894_19(glval) = CopyValue : r1894_13 -# 1895| v1895_1(void) = NoOp : -# 1892| v1892_4(void) = ReturnVoid : -# 1892| v1892_5(void) = AliasedUse : ~m? -# 1892| v1892_6(void) = ExitFunction : +# 1894| void block_assignment::foo() +# 1894| Block 0 +# 1894| v1894_1(void) = EnterFunction : +# 1894| mu1894_2(unknown) = AliasedDefinition : +# 1894| mu1894_3(unknown) = InitializeNonLocal : +# 1895| r1895_1(glval) = VariableAddress[v] : +# 1895| mu1895_2(B) = Uninitialized[v] : &:r1895_1 +# 1895| r1895_3(glval) = FunctionAddress[B] : +# 1895| r1895_4(A *) = Constant[0] : +# 1895| v1895_5(void) = Call[B] : func:r1895_3, this:r1895_1, 0:r1895_4 +# 1895| mu1895_6(unknown) = ^CallSideEffect : ~m? +# 1895| v1895_7(void) = ^BufferReadSideEffect[0] : &:r1895_4, ~m? +# 1895| mu1895_8(B) = ^IndirectMayWriteSideEffect[-1] : &:r1895_1 +# 1895| mu1895_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r1895_4 +# 1896| r1896_1(glval) = VariableAddress[v] : +# 1896| r1896_2(glval) = FunctionAddress[operator=] : +# 1896| r1896_3(glval) = VariableAddress[#temp1896:13] : +# 1896| mu1896_4(B) = Uninitialized[#temp1896:13] : &:r1896_3 +# 1896| r1896_5(glval) = FunctionAddress[B] : +# 1896| r1896_6(A *) = Constant[0] : +# 1896| v1896_7(void) = Call[B] : func:r1896_5, this:r1896_3, 0:r1896_6 +# 1896| mu1896_8(unknown) = ^CallSideEffect : ~m? +# 1896| v1896_9(void) = ^BufferReadSideEffect[0] : &:r1896_6, ~m? +# 1896| mu1896_10(B) = ^IndirectMayWriteSideEffect[-1] : &:r1896_3 +# 1896| mu1896_11(unknown) = ^BufferMayWriteSideEffect[0] : &:r1896_6 +# 1896| r1896_12(B &) = CopyValue : r1896_3 +# 1896| r1896_13(B &) = Call[operator=] : func:r1896_2, this:r1896_1, 0:r1896_12 +# 1896| mu1896_14(unknown) = ^CallSideEffect : ~m? +# 1896| v1896_15(void) = ^IndirectReadSideEffect[-1] : &:r1896_1, ~m? +# 1896| v1896_16(void) = ^BufferReadSideEffect[0] : &:r1896_12, ~m? +# 1896| mu1896_17(B) = ^IndirectMayWriteSideEffect[-1] : &:r1896_1 +# 1896| mu1896_18(unknown) = ^BufferMayWriteSideEffect[0] : &:r1896_12 +# 1896| r1896_19(glval) = CopyValue : r1896_13 +# 1897| v1897_1(void) = NoOp : +# 1894| v1894_4(void) = ReturnVoid : +# 1894| v1894_5(void) = AliasedUse : ~m? +# 1894| v1894_6(void) = ExitFunction : -# 1898| void magicvars() -# 1898| Block 0 -# 1898| v1898_1(void) = EnterFunction : -# 1898| mu1898_2(unknown) = AliasedDefinition : -# 1898| mu1898_3(unknown) = InitializeNonLocal : -# 1899| r1899_1(glval) = VariableAddress[pf] : -# 1899| r1899_2(glval) = VariableAddress[__PRETTY_FUNCTION__] : -# 1899| r1899_3(char *) = Convert : r1899_2 -# 1899| mu1899_4(char *) = Store[pf] : &:r1899_1, r1899_3 -# 1900| r1900_1(glval) = VariableAddress[strfunc] : -# 1900| r1900_2(glval) = VariableAddress[__func__] : -# 1900| r1900_3(char *) = Convert : r1900_2 -# 1900| mu1900_4(char *) = Store[strfunc] : &:r1900_1, r1900_3 -# 1901| v1901_1(void) = NoOp : -# 1898| v1898_4(void) = ReturnVoid : -# 1898| v1898_5(void) = AliasedUse : ~m? -# 1898| v1898_6(void) = ExitFunction : - -# 1899| const char[17] __PRETTY_FUNCTION__ -# 1899| Block 0 -# 1899| v1899_1(void) = EnterFunction : -# 1899| mu1899_2(unknown) = AliasedDefinition : -# 1899| r1899_3(glval) = VariableAddress[__PRETTY_FUNCTION__] : -# 1899| r1899_4(glval) = StringConstant[__PRETTY_FUNCTION__] : -# 1899| r1899_5(char[17]) = Load[?] : &:r1899_4, ~m? -# 1899| mu1899_6(char[17]) = Store[__PRETTY_FUNCTION__] : &:r1899_3, r1899_5 -# 1899| v1899_7(void) = ReturnVoid : -# 1899| v1899_8(void) = AliasedUse : ~m? -# 1899| v1899_9(void) = ExitFunction : - -# 1900| const char[10] __func__ +# 1900| void magicvars() # 1900| Block 0 -# 1900| v1900_1(void) = EnterFunction : -# 1900| mu1900_2(unknown) = AliasedDefinition : -# 1900| r1900_3(glval) = VariableAddress[__func__] : -# 1900| r1900_4(glval) = StringConstant[__func__] : -# 1900| r1900_5(char[10]) = Load[?] : &:r1900_4, ~m? -# 1900| mu1900_6(char[10]) = Store[__func__] : &:r1900_3, r1900_5 -# 1900| v1900_7(void) = ReturnVoid : -# 1900| v1900_8(void) = AliasedUse : ~m? -# 1900| v1900_9(void) = ExitFunction : +# 1900| v1900_1(void) = EnterFunction : +# 1900| mu1900_2(unknown) = AliasedDefinition : +# 1900| mu1900_3(unknown) = InitializeNonLocal : +# 1901| r1901_1(glval) = VariableAddress[pf] : +# 1901| r1901_2(glval) = VariableAddress[__PRETTY_FUNCTION__] : +# 1901| r1901_3(char *) = Convert : r1901_2 +# 1901| mu1901_4(char *) = Store[pf] : &:r1901_1, r1901_3 +# 1902| r1902_1(glval) = VariableAddress[strfunc] : +# 1902| r1902_2(glval) = VariableAddress[__func__] : +# 1902| r1902_3(char *) = Convert : r1902_2 +# 1902| mu1902_4(char *) = Store[strfunc] : &:r1902_1, r1902_3 +# 1903| v1903_1(void) = NoOp : +# 1900| v1900_4(void) = ReturnVoid : +# 1900| v1900_5(void) = AliasedUse : ~m? +# 1900| v1900_6(void) = ExitFunction : -# 1911| void* missing_declaration_entries::Bar1::missing_type_decl_entry(missing_declaration_entries::Bar1::pointer) -# 1911| Block 0 -# 1911| v1911_1(void) = EnterFunction : -# 1911| mu1911_2(unknown) = AliasedDefinition : -# 1911| mu1911_3(unknown) = InitializeNonLocal : -# 1911| r1911_4(glval) = VariableAddress[#this] : -# 1911| mu1911_5(glval>) = InitializeParameter[#this] : &:r1911_4 -# 1911| r1911_6(glval>) = Load[#this] : &:r1911_4, ~m? -# 1911| mu1911_7(Bar1) = InitializeIndirection[#this] : &:r1911_6 -# 1911| r1911_8(glval) = VariableAddress[p] : -# 1911| mu1911_9(S *) = InitializeParameter[p] : &:r1911_8 -# 1911| r1911_10(S *) = Load[p] : &:r1911_8, ~m? -# 1911| mu1911_11(unknown) = InitializeIndirection[p] : &:r1911_10 -# 1913| r1913_1(glval) = VariableAddress[#return] : -# 1913| r1913_2(glval) = VariableAddress[p] : -# 1913| r1913_3(S *) = Load[p] : &:r1913_2, ~m? -# 1913| r1913_4(void *) = Convert : r1913_3 -# 1913| mu1913_5(void *) = Store[#return] : &:r1913_1, r1913_4 -# 1911| v1911_12(void) = ReturnIndirection[#this] : &:r1911_6, ~m? -# 1911| v1911_13(void) = ReturnIndirection[p] : &:r1911_10, ~m? -# 1911| r1911_14(glval) = VariableAddress[#return] : -# 1911| v1911_15(void) = ReturnValue : &:r1911_14, ~m? -# 1911| v1911_16(void) = AliasedUse : ~m? -# 1911| v1911_17(void) = ExitFunction : +# 1901| const char[17] __PRETTY_FUNCTION__ +# 1901| Block 0 +# 1901| v1901_1(void) = EnterFunction : +# 1901| mu1901_2(unknown) = AliasedDefinition : +# 1901| r1901_3(glval) = VariableAddress[__PRETTY_FUNCTION__] : +# 1901| r1901_4(glval) = StringConstant[__PRETTY_FUNCTION__] : +# 1901| r1901_5(char[17]) = Load[?] : &:r1901_4, ~m? +# 1901| mu1901_6(char[17]) = Store[__PRETTY_FUNCTION__] : &:r1901_3, r1901_5 +# 1901| v1901_7(void) = ReturnVoid : +# 1901| v1901_8(void) = AliasedUse : ~m? +# 1901| v1901_9(void) = ExitFunction : -# 1917| void missing_declaration_entries::test1() -# 1917| Block 0 -# 1917| v1917_1(void) = EnterFunction : -# 1917| mu1917_2(unknown) = AliasedDefinition : -# 1917| mu1917_3(unknown) = InitializeNonLocal : -# 1918| r1918_1(glval>) = VariableAddress[b] : -# 1918| mu1918_2(Bar1) = Uninitialized[b] : &:r1918_1 -# 1919| r1919_1(glval>) = VariableAddress[b] : -# 1919| r1919_2(glval) = FunctionAddress[missing_type_decl_entry] : -# 1919| r1919_3(S *) = Constant[0] : -# 1919| r1919_4(void *) = Call[missing_type_decl_entry] : func:r1919_2, this:r1919_1, 0:r1919_3 -# 1919| mu1919_5(unknown) = ^CallSideEffect : ~m? -# 1919| v1919_6(void) = ^IndirectReadSideEffect[-1] : &:r1919_1, ~m? -# 1919| v1919_7(void) = ^BufferReadSideEffect[0] : &:r1919_3, ~m? -# 1919| mu1919_8(Bar1) = ^IndirectMayWriteSideEffect[-1] : &:r1919_1 -# 1919| mu1919_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r1919_3 -# 1920| v1920_1(void) = NoOp : -# 1917| v1917_4(void) = ReturnVoid : -# 1917| v1917_5(void) = AliasedUse : ~m? -# 1917| v1917_6(void) = ExitFunction : +# 1902| const char[10] __func__ +# 1902| Block 0 +# 1902| v1902_1(void) = EnterFunction : +# 1902| mu1902_2(unknown) = AliasedDefinition : +# 1902| r1902_3(glval) = VariableAddress[__func__] : +# 1902| r1902_4(glval) = StringConstant[__func__] : +# 1902| r1902_5(char[10]) = Load[?] : &:r1902_4, ~m? +# 1902| mu1902_6(char[10]) = Store[__func__] : &:r1902_3, r1902_5 +# 1902| v1902_7(void) = ReturnVoid : +# 1902| v1902_8(void) = AliasedUse : ~m? +# 1902| v1902_9(void) = ExitFunction : -# 1924| int missing_declaration_entries::Bar2::two_missing_variable_declaration_entries() -# 1924| Block 0 -# 1924| v1924_1(void) = EnterFunction : -# 1924| mu1924_2(unknown) = AliasedDefinition : -# 1924| mu1924_3(unknown) = InitializeNonLocal : -# 1924| r1924_4(glval) = VariableAddress[#this] : -# 1924| mu1924_5(glval>) = InitializeParameter[#this] : &:r1924_4 -# 1924| r1924_6(glval>) = Load[#this] : &:r1924_4, ~m? -# 1924| mu1924_7(Bar2) = InitializeIndirection[#this] : &:r1924_6 -# 1925| r1925_1(glval) = VariableAddress[x] : -# 1925| mu1925_2(int[10]) = Uninitialized[x] : &:r1925_1 -# 1925| r1925_3(glval) = VariableAddress[y] : -# 1925| mu1925_4(int[10]) = Uninitialized[y] : &:r1925_3 -# 1926| r1926_1(int) = Constant[10] : -# 1926| r1926_2(glval) = VariableAddress[x] : -# 1926| r1926_3(int *) = Convert : r1926_2 -# 1926| r1926_4(glval) = CopyValue : r1926_3 -# 1926| mu1926_5(int) = Store[?] : &:r1926_4, r1926_1 -# 1927| r1927_1(int) = Constant[10] : -# 1927| r1927_2(glval) = VariableAddress[y] : -# 1927| r1927_3(int *) = Convert : r1927_2 -# 1927| r1927_4(glval) = CopyValue : r1927_3 -# 1927| mu1927_5(int) = Store[?] : &:r1927_4, r1927_1 -# 1928| r1928_1(glval) = VariableAddress[#return] : +# 1913| void* missing_declaration_entries::Bar1::missing_type_decl_entry(missing_declaration_entries::Bar1::pointer) +# 1913| Block 0 +# 1913| v1913_1(void) = EnterFunction : +# 1913| mu1913_2(unknown) = AliasedDefinition : +# 1913| mu1913_3(unknown) = InitializeNonLocal : +# 1913| r1913_4(glval) = VariableAddress[#this] : +# 1913| mu1913_5(glval>) = InitializeParameter[#this] : &:r1913_4 +# 1913| r1913_6(glval>) = Load[#this] : &:r1913_4, ~m? +# 1913| mu1913_7(Bar1) = InitializeIndirection[#this] : &:r1913_6 +# 1913| r1913_8(glval) = VariableAddress[p] : +# 1913| mu1913_9(S *) = InitializeParameter[p] : &:r1913_8 +# 1913| r1913_10(S *) = Load[p] : &:r1913_8, ~m? +# 1913| mu1913_11(unknown) = InitializeIndirection[p] : &:r1913_10 +# 1915| r1915_1(glval) = VariableAddress[#return] : +# 1915| r1915_2(glval) = VariableAddress[p] : +# 1915| r1915_3(S *) = Load[p] : &:r1915_2, ~m? +# 1915| r1915_4(void *) = Convert : r1915_3 +# 1915| mu1915_5(void *) = Store[#return] : &:r1915_1, r1915_4 +# 1913| v1913_12(void) = ReturnIndirection[#this] : &:r1913_6, ~m? +# 1913| v1913_13(void) = ReturnIndirection[p] : &:r1913_10, ~m? +# 1913| r1913_14(glval) = VariableAddress[#return] : +# 1913| v1913_15(void) = ReturnValue : &:r1913_14, ~m? +# 1913| v1913_16(void) = AliasedUse : ~m? +# 1913| v1913_17(void) = ExitFunction : + +# 1919| void missing_declaration_entries::test1() +# 1919| Block 0 +# 1919| v1919_1(void) = EnterFunction : +# 1919| mu1919_2(unknown) = AliasedDefinition : +# 1919| mu1919_3(unknown) = InitializeNonLocal : +# 1920| r1920_1(glval>) = VariableAddress[b] : +# 1920| mu1920_2(Bar1) = Uninitialized[b] : &:r1920_1 +# 1921| r1921_1(glval>) = VariableAddress[b] : +# 1921| r1921_2(glval) = FunctionAddress[missing_type_decl_entry] : +# 1921| r1921_3(S *) = Constant[0] : +# 1921| r1921_4(void *) = Call[missing_type_decl_entry] : func:r1921_2, this:r1921_1, 0:r1921_3 +# 1921| mu1921_5(unknown) = ^CallSideEffect : ~m? +# 1921| v1921_6(void) = ^IndirectReadSideEffect[-1] : &:r1921_1, ~m? +# 1921| v1921_7(void) = ^BufferReadSideEffect[0] : &:r1921_3, ~m? +# 1921| mu1921_8(Bar1) = ^IndirectMayWriteSideEffect[-1] : &:r1921_1 +# 1921| mu1921_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r1921_3 +# 1922| v1922_1(void) = NoOp : +# 1919| v1919_4(void) = ReturnVoid : +# 1919| v1919_5(void) = AliasedUse : ~m? +# 1919| v1919_6(void) = ExitFunction : + +# 1926| int missing_declaration_entries::Bar2::two_missing_variable_declaration_entries() +# 1926| Block 0 +# 1926| v1926_1(void) = EnterFunction : +# 1926| mu1926_2(unknown) = AliasedDefinition : +# 1926| mu1926_3(unknown) = InitializeNonLocal : +# 1926| r1926_4(glval) = VariableAddress[#this] : +# 1926| mu1926_5(glval>) = InitializeParameter[#this] : &:r1926_4 +# 1926| r1926_6(glval>) = Load[#this] : &:r1926_4, ~m? +# 1926| mu1926_7(Bar2) = InitializeIndirection[#this] : &:r1926_6 +# 1927| r1927_1(glval) = VariableAddress[x] : +# 1927| mu1927_2(int[10]) = Uninitialized[x] : &:r1927_1 +# 1927| r1927_3(glval) = VariableAddress[y] : +# 1927| mu1927_4(int[10]) = Uninitialized[y] : &:r1927_3 +# 1928| r1928_1(int) = Constant[10] : # 1928| r1928_2(glval) = VariableAddress[x] : # 1928| r1928_3(int *) = Convert : r1928_2 -# 1928| r1928_4(int) = Load[?] : &:r1928_3, ~m? -# 1928| r1928_5(glval) = VariableAddress[y] : -# 1928| r1928_6(int *) = Convert : r1928_5 -# 1928| r1928_7(int) = Load[?] : &:r1928_6, ~m? -# 1928| r1928_8(int) = Add : r1928_4, r1928_7 -# 1928| mu1928_9(int) = Store[#return] : &:r1928_1, r1928_8 -# 1924| v1924_8(void) = ReturnIndirection[#this] : &:r1924_6, ~m? -# 1924| r1924_9(glval) = VariableAddress[#return] : -# 1924| v1924_10(void) = ReturnValue : &:r1924_9, ~m? -# 1924| v1924_11(void) = AliasedUse : ~m? -# 1924| v1924_12(void) = ExitFunction : +# 1928| r1928_4(glval) = CopyValue : r1928_3 +# 1928| mu1928_5(int) = Store[?] : &:r1928_4, r1928_1 +# 1929| r1929_1(int) = Constant[10] : +# 1929| r1929_2(glval) = VariableAddress[y] : +# 1929| r1929_3(int *) = Convert : r1929_2 +# 1929| r1929_4(glval) = CopyValue : r1929_3 +# 1929| mu1929_5(int) = Store[?] : &:r1929_4, r1929_1 +# 1930| r1930_1(glval) = VariableAddress[#return] : +# 1930| r1930_2(glval) = VariableAddress[x] : +# 1930| r1930_3(int *) = Convert : r1930_2 +# 1930| r1930_4(int) = Load[?] : &:r1930_3, ~m? +# 1930| r1930_5(glval) = VariableAddress[y] : +# 1930| r1930_6(int *) = Convert : r1930_5 +# 1930| r1930_7(int) = Load[?] : &:r1930_6, ~m? +# 1930| r1930_8(int) = Add : r1930_4, r1930_7 +# 1930| mu1930_9(int) = Store[#return] : &:r1930_1, r1930_8 +# 1926| v1926_8(void) = ReturnIndirection[#this] : &:r1926_6, ~m? +# 1926| r1926_9(glval) = VariableAddress[#return] : +# 1926| v1926_10(void) = ReturnValue : &:r1926_9, ~m? +# 1926| v1926_11(void) = AliasedUse : ~m? +# 1926| v1926_12(void) = ExitFunction : -# 1932| void missing_declaration_entries::test2() -# 1932| Block 0 -# 1932| v1932_1(void) = EnterFunction : -# 1932| mu1932_2(unknown) = AliasedDefinition : -# 1932| mu1932_3(unknown) = InitializeNonLocal : -# 1933| r1933_1(glval>) = VariableAddress[b] : -# 1933| mu1933_2(Bar2) = Uninitialized[b] : &:r1933_1 -# 1934| r1934_1(glval>) = VariableAddress[b] : -# 1934| r1934_2(glval) = FunctionAddress[two_missing_variable_declaration_entries] : -# 1934| r1934_3(int) = Call[two_missing_variable_declaration_entries] : func:r1934_2, this:r1934_1 -# 1934| mu1934_4(unknown) = ^CallSideEffect : ~m? -# 1934| v1934_5(void) = ^IndirectReadSideEffect[-1] : &:r1934_1, ~m? -# 1934| mu1934_6(Bar2) = ^IndirectMayWriteSideEffect[-1] : &:r1934_1 -# 1935| v1935_1(void) = NoOp : -# 1932| v1932_4(void) = ReturnVoid : -# 1932| v1932_5(void) = AliasedUse : ~m? -# 1932| v1932_6(void) = ExitFunction : +# 1934| void missing_declaration_entries::test2() +# 1934| Block 0 +# 1934| v1934_1(void) = EnterFunction : +# 1934| mu1934_2(unknown) = AliasedDefinition : +# 1934| mu1934_3(unknown) = InitializeNonLocal : +# 1935| r1935_1(glval>) = VariableAddress[b] : +# 1935| mu1935_2(Bar2) = Uninitialized[b] : &:r1935_1 +# 1936| r1936_1(glval>) = VariableAddress[b] : +# 1936| r1936_2(glval) = FunctionAddress[two_missing_variable_declaration_entries] : +# 1936| r1936_3(int) = Call[two_missing_variable_declaration_entries] : func:r1936_2, this:r1936_1 +# 1936| mu1936_4(unknown) = ^CallSideEffect : ~m? +# 1936| v1936_5(void) = ^IndirectReadSideEffect[-1] : &:r1936_1, ~m? +# 1936| mu1936_6(Bar2) = ^IndirectMayWriteSideEffect[-1] : &:r1936_1 +# 1937| v1937_1(void) = NoOp : +# 1934| v1934_4(void) = ReturnVoid : +# 1934| v1934_5(void) = AliasedUse : ~m? +# 1934| v1934_6(void) = ExitFunction : -# 1939| int missing_declaration_entries::Bar3::two_more_missing_variable_declaration_entries() -# 1939| Block 0 -# 1939| v1939_1(void) = EnterFunction : -# 1939| mu1939_2(unknown) = AliasedDefinition : -# 1939| mu1939_3(unknown) = InitializeNonLocal : -# 1939| r1939_4(glval) = VariableAddress[#this] : -# 1939| mu1939_5(glval>) = InitializeParameter[#this] : &:r1939_4 -# 1939| r1939_6(glval>) = Load[#this] : &:r1939_4, ~m? -# 1939| mu1939_7(Bar3) = InitializeIndirection[#this] : &:r1939_6 -# 1942| r1942_1(glval) = VariableAddress[#return] : -# 1942| r1942_2(glval) = VariableAddress[g] : -# 1942| r1942_3(int) = Load[g] : &:r1942_2, ~m? -# 1942| mu1942_4(int) = Store[#return] : &:r1942_1, r1942_3 -# 1939| v1939_8(void) = ReturnIndirection[#this] : &:r1939_6, ~m? -# 1939| r1939_9(glval) = VariableAddress[#return] : -# 1939| v1939_10(void) = ReturnValue : &:r1939_9, ~m? -# 1939| v1939_11(void) = AliasedUse : ~m? -# 1939| v1939_12(void) = ExitFunction : +# 1941| int missing_declaration_entries::Bar3::two_more_missing_variable_declaration_entries() +# 1941| Block 0 +# 1941| v1941_1(void) = EnterFunction : +# 1941| mu1941_2(unknown) = AliasedDefinition : +# 1941| mu1941_3(unknown) = InitializeNonLocal : +# 1941| r1941_4(glval) = VariableAddress[#this] : +# 1941| mu1941_5(glval>) = InitializeParameter[#this] : &:r1941_4 +# 1941| r1941_6(glval>) = Load[#this] : &:r1941_4, ~m? +# 1941| mu1941_7(Bar3) = InitializeIndirection[#this] : &:r1941_6 +# 1944| r1944_1(glval) = VariableAddress[#return] : +# 1944| r1944_2(glval) = VariableAddress[g] : +# 1944| r1944_3(int) = Load[g] : &:r1944_2, ~m? +# 1944| mu1944_4(int) = Store[#return] : &:r1944_1, r1944_3 +# 1941| v1941_8(void) = ReturnIndirection[#this] : &:r1941_6, ~m? +# 1941| r1941_9(glval) = VariableAddress[#return] : +# 1941| v1941_10(void) = ReturnValue : &:r1941_9, ~m? +# 1941| v1941_11(void) = AliasedUse : ~m? +# 1941| v1941_12(void) = ExitFunction : -# 1946| void missing_declaration_entries::test3() -# 1946| Block 0 -# 1946| v1946_1(void) = EnterFunction : -# 1946| mu1946_2(unknown) = AliasedDefinition : -# 1946| mu1946_3(unknown) = InitializeNonLocal : -# 1947| r1947_1(glval>) = VariableAddress[b] : -# 1947| mu1947_2(Bar3) = Uninitialized[b] : &:r1947_1 -# 1948| r1948_1(glval>) = VariableAddress[b] : -# 1948| r1948_2(glval) = FunctionAddress[two_more_missing_variable_declaration_entries] : -# 1948| r1948_3(int) = Call[two_more_missing_variable_declaration_entries] : func:r1948_2, this:r1948_1 -# 1948| mu1948_4(unknown) = ^CallSideEffect : ~m? -# 1948| v1948_5(void) = ^IndirectReadSideEffect[-1] : &:r1948_1, ~m? -# 1948| mu1948_6(Bar3) = ^IndirectMayWriteSideEffect[-1] : &:r1948_1 -# 1949| v1949_1(void) = NoOp : -# 1946| v1946_4(void) = ReturnVoid : -# 1946| v1946_5(void) = AliasedUse : ~m? -# 1946| v1946_6(void) = ExitFunction : +# 1948| void missing_declaration_entries::test3() +# 1948| Block 0 +# 1948| v1948_1(void) = EnterFunction : +# 1948| mu1948_2(unknown) = AliasedDefinition : +# 1948| mu1948_3(unknown) = InitializeNonLocal : +# 1949| r1949_1(glval>) = VariableAddress[b] : +# 1949| mu1949_2(Bar3) = Uninitialized[b] : &:r1949_1 +# 1950| r1950_1(glval>) = VariableAddress[b] : +# 1950| r1950_2(glval) = FunctionAddress[two_more_missing_variable_declaration_entries] : +# 1950| r1950_3(int) = Call[two_more_missing_variable_declaration_entries] : func:r1950_2, this:r1950_1 +# 1950| mu1950_4(unknown) = ^CallSideEffect : ~m? +# 1950| v1950_5(void) = ^IndirectReadSideEffect[-1] : &:r1950_1, ~m? +# 1950| mu1950_6(Bar3) = ^IndirectMayWriteSideEffect[-1] : &:r1950_1 +# 1951| v1951_1(void) = NoOp : +# 1948| v1948_4(void) = ReturnVoid : +# 1948| v1948_5(void) = AliasedUse : ~m? +# 1948| v1948_6(void) = ExitFunction : -# 1952| char global_template -# 1952| Block 0 -# 1952| v1952_1(void) = EnterFunction : -# 1952| mu1952_2(unknown) = AliasedDefinition : -# 1952| r1952_3(glval) = VariableAddress[global_template] : -# 1952| r1952_4(char) = Constant[42] : -# 1952| mu1952_5(char) = Store[global_template] : &:r1952_3, r1952_4 -# 1952| v1952_6(void) = ReturnVoid : -# 1952| v1952_7(void) = AliasedUse : ~m? -# 1952| v1952_8(void) = ExitFunction : - -# 1952| int global_template -# 1952| Block 0 -# 1952| v1952_1(void) = EnterFunction : -# 1952| mu1952_2(unknown) = AliasedDefinition : -# 1952| r1952_3(glval) = VariableAddress[global_template] : -# 1952| r1952_4(int) = Constant[42] : -# 1952| mu1952_5(int) = Store[global_template] : &:r1952_3, r1952_4 -# 1952| v1952_6(void) = ReturnVoid : -# 1952| v1952_7(void) = AliasedUse : ~m? -# 1952| v1952_8(void) = ExitFunction : - -# 1954| int test_global_template_int() +# 1954| char global_template # 1954| Block 0 # 1954| v1954_1(void) = EnterFunction : # 1954| mu1954_2(unknown) = AliasedDefinition : -# 1954| mu1954_3(unknown) = InitializeNonLocal : -# 1955| r1955_1(glval) = VariableAddress[local_int] : -# 1955| r1955_2(glval) = VariableAddress[global_template] : -# 1955| r1955_3(int) = Load[global_template] : &:r1955_2, ~m? -# 1955| mu1955_4(int) = Store[local_int] : &:r1955_1, r1955_3 -# 1956| r1956_1(glval) = VariableAddress[local_char] : -# 1956| r1956_2(glval) = VariableAddress[global_template] : -# 1956| r1956_3(char) = Load[global_template] : &:r1956_2, ~m? -# 1956| mu1956_4(char) = Store[local_char] : &:r1956_1, r1956_3 -# 1957| r1957_1(glval) = VariableAddress[#return] : -# 1957| r1957_2(glval) = VariableAddress[local_int] : -# 1957| r1957_3(int) = Load[local_int] : &:r1957_2, ~m? -# 1957| r1957_4(glval) = VariableAddress[local_char] : -# 1957| r1957_5(char) = Load[local_char] : &:r1957_4, ~m? -# 1957| r1957_6(int) = Convert : r1957_5 -# 1957| r1957_7(int) = Add : r1957_3, r1957_6 -# 1957| mu1957_8(int) = Store[#return] : &:r1957_1, r1957_7 -# 1954| r1954_4(glval) = VariableAddress[#return] : -# 1954| v1954_5(void) = ReturnValue : &:r1954_4, ~m? -# 1954| v1954_6(void) = AliasedUse : ~m? -# 1954| v1954_7(void) = ExitFunction : +# 1954| r1954_3(glval) = VariableAddress[global_template] : +# 1954| r1954_4(char) = Constant[42] : +# 1954| mu1954_5(char) = Store[global_template] : &:r1954_3, r1954_4 +# 1954| v1954_6(void) = ReturnVoid : +# 1954| v1954_7(void) = AliasedUse : ~m? +# 1954| v1954_8(void) = ExitFunction : -# 1962| int noreturnTest(int) -# 1962| Block 0 -# 1962| v1962_1(void) = EnterFunction : -# 1962| mu1962_2(unknown) = AliasedDefinition : -# 1962| mu1962_3(unknown) = InitializeNonLocal : -# 1962| r1962_4(glval) = VariableAddress[x] : -# 1962| mu1962_5(int) = InitializeParameter[x] : &:r1962_4 -# 1963| r1963_1(glval) = VariableAddress[x] : -# 1963| r1963_2(int) = Load[x] : &:r1963_1, ~m? -# 1963| r1963_3(int) = Constant[10] : -# 1963| r1963_4(bool) = CompareLT : r1963_2, r1963_3 -# 1963| v1963_5(void) = ConditionalBranch : r1963_4 +# 1954| int global_template +# 1954| Block 0 +# 1954| v1954_1(void) = EnterFunction : +# 1954| mu1954_2(unknown) = AliasedDefinition : +# 1954| r1954_3(glval) = VariableAddress[global_template] : +# 1954| r1954_4(int) = Constant[42] : +# 1954| mu1954_5(int) = Store[global_template] : &:r1954_3, r1954_4 +# 1954| v1954_6(void) = ReturnVoid : +# 1954| v1954_7(void) = AliasedUse : ~m? +# 1954| v1954_8(void) = ExitFunction : + +# 1956| int test_global_template_int() +# 1956| Block 0 +# 1956| v1956_1(void) = EnterFunction : +# 1956| mu1956_2(unknown) = AliasedDefinition : +# 1956| mu1956_3(unknown) = InitializeNonLocal : +# 1957| r1957_1(glval) = VariableAddress[local_int] : +# 1957| r1957_2(glval) = VariableAddress[global_template] : +# 1957| r1957_3(int) = Load[global_template] : &:r1957_2, ~m? +# 1957| mu1957_4(int) = Store[local_int] : &:r1957_1, r1957_3 +# 1958| r1958_1(glval) = VariableAddress[local_char] : +# 1958| r1958_2(glval) = VariableAddress[global_template] : +# 1958| r1958_3(char) = Load[global_template] : &:r1958_2, ~m? +# 1958| mu1958_4(char) = Store[local_char] : &:r1958_1, r1958_3 +# 1959| r1959_1(glval) = VariableAddress[#return] : +# 1959| r1959_2(glval) = VariableAddress[local_int] : +# 1959| r1959_3(int) = Load[local_int] : &:r1959_2, ~m? +# 1959| r1959_4(glval) = VariableAddress[local_char] : +# 1959| r1959_5(char) = Load[local_char] : &:r1959_4, ~m? +# 1959| r1959_6(int) = Convert : r1959_5 +# 1959| r1959_7(int) = Add : r1959_3, r1959_6 +# 1959| mu1959_8(int) = Store[#return] : &:r1959_1, r1959_7 +# 1956| r1956_4(glval) = VariableAddress[#return] : +# 1956| v1956_5(void) = ReturnValue : &:r1956_4, ~m? +# 1956| v1956_6(void) = AliasedUse : ~m? +# 1956| v1956_7(void) = ExitFunction : + +# 1964| int noreturnTest(int) +# 1964| Block 0 +# 1964| v1964_1(void) = EnterFunction : +# 1964| mu1964_2(unknown) = AliasedDefinition : +# 1964| mu1964_3(unknown) = InitializeNonLocal : +# 1964| r1964_4(glval) = VariableAddress[x] : +# 1964| mu1964_5(int) = InitializeParameter[x] : &:r1964_4 +# 1965| r1965_1(glval) = VariableAddress[x] : +# 1965| r1965_2(int) = Load[x] : &:r1965_1, ~m? +# 1965| r1965_3(int) = Constant[10] : +# 1965| r1965_4(bool) = CompareLT : r1965_2, r1965_3 +# 1965| v1965_5(void) = ConditionalBranch : r1965_4 #-----| False -> Block 3 #-----| True -> Block 2 -# 1962| Block 1 -# 1962| r1962_6(glval) = VariableAddress[#return] : -# 1962| v1962_7(void) = ReturnValue : &:r1962_6, ~m? -# 1962| v1962_8(void) = AliasedUse : ~m? -# 1962| v1962_9(void) = ExitFunction : +# 1964| Block 1 +# 1964| r1964_6(glval) = VariableAddress[#return] : +# 1964| v1964_7(void) = ReturnValue : &:r1964_6, ~m? +# 1964| v1964_8(void) = AliasedUse : ~m? +# 1964| v1964_9(void) = ExitFunction : -# 1964| Block 2 -# 1964| r1964_1(glval) = VariableAddress[#return] : -# 1964| r1964_2(glval) = VariableAddress[x] : -# 1964| r1964_3(int) = Load[x] : &:r1964_2, ~m? -# 1964| mu1964_4(int) = Store[#return] : &:r1964_1, r1964_3 +# 1966| Block 2 +# 1966| r1966_1(glval) = VariableAddress[#return] : +# 1966| r1966_2(glval) = VariableAddress[x] : +# 1966| r1966_3(int) = Load[x] : &:r1966_2, ~m? +# 1966| mu1966_4(int) = Store[#return] : &:r1966_1, r1966_3 #-----| Goto -> Block 1 -# 1966| Block 3 -# 1966| r1966_1(glval) = FunctionAddress[noreturnFunc] : -# 1966| v1966_2(void) = Call[noreturnFunc] : func:r1966_1 -# 1966| mu1966_3(unknown) = ^CallSideEffect : ~m? -# 1962| v1962_10(void) = Unreached : +# 1968| Block 3 +# 1968| r1968_1(glval) = FunctionAddress[noreturnFunc] : +# 1968| v1968_2(void) = Call[noreturnFunc] : func:r1968_1 +# 1968| mu1968_3(unknown) = ^CallSideEffect : ~m? +# 1964| v1964_10(void) = Unreached : -# 1968| Block 4 -# 1968| r1968_1(glval) = VariableAddress[#return] : -# 1968| mu1968_2(int) = Uninitialized[#return] : &:r1968_1 +# 1970| Block 4 +# 1970| r1970_1(glval) = VariableAddress[#return] : +# 1970| mu1970_2(int) = Uninitialized[#return] : &:r1970_1 #-----| Goto -> Block 1 -# 1970| int noreturnTest2(int) -# 1970| Block 0 -# 1970| v1970_1(void) = EnterFunction : -# 1970| mu1970_2(unknown) = AliasedDefinition : -# 1970| mu1970_3(unknown) = InitializeNonLocal : -# 1970| r1970_4(glval) = VariableAddress[x] : -# 1970| mu1970_5(int) = InitializeParameter[x] : &:r1970_4 -# 1971| r1971_1(glval) = VariableAddress[x] : -# 1971| r1971_2(int) = Load[x] : &:r1971_1, ~m? -# 1971| r1971_3(int) = Constant[10] : -# 1971| r1971_4(bool) = CompareLT : r1971_2, r1971_3 -# 1971| v1971_5(void) = ConditionalBranch : r1971_4 +# 1972| int noreturnTest2(int) +# 1972| Block 0 +# 1972| v1972_1(void) = EnterFunction : +# 1972| mu1972_2(unknown) = AliasedDefinition : +# 1972| mu1972_3(unknown) = InitializeNonLocal : +# 1972| r1972_4(glval) = VariableAddress[x] : +# 1972| mu1972_5(int) = InitializeParameter[x] : &:r1972_4 +# 1973| r1973_1(glval) = VariableAddress[x] : +# 1973| r1973_2(int) = Load[x] : &:r1973_1, ~m? +# 1973| r1973_3(int) = Constant[10] : +# 1973| r1973_4(bool) = CompareLT : r1973_2, r1973_3 +# 1973| v1973_5(void) = ConditionalBranch : r1973_4 #-----| False -> Block 2 #-----| True -> Block 1 -# 1972| Block 1 -# 1972| r1972_1(glval) = FunctionAddress[noreturnFunc] : -# 1972| v1972_2(void) = Call[noreturnFunc] : func:r1972_1 -# 1972| mu1972_3(unknown) = ^CallSideEffect : ~m? -# 1970| v1970_6(void) = Unreached : +# 1974| Block 1 +# 1974| r1974_1(glval) = FunctionAddress[noreturnFunc] : +# 1974| v1974_2(void) = Call[noreturnFunc] : func:r1974_1 +# 1974| mu1974_3(unknown) = ^CallSideEffect : ~m? +# 1972| v1972_6(void) = Unreached : -# 1974| Block 2 -# 1974| r1974_1(glval) = VariableAddress[#return] : -# 1974| r1974_2(glval) = VariableAddress[x] : -# 1974| r1974_3(int) = Load[x] : &:r1974_2, ~m? -# 1974| mu1974_4(int) = Store[#return] : &:r1974_1, r1974_3 -# 1970| r1970_7(glval) = VariableAddress[#return] : -# 1970| v1970_8(void) = ReturnValue : &:r1970_7, ~m? -# 1970| v1970_9(void) = AliasedUse : ~m? -# 1970| v1970_10(void) = ExitFunction : +# 1976| Block 2 +# 1976| r1976_1(glval) = VariableAddress[#return] : +# 1976| r1976_2(glval) = VariableAddress[x] : +# 1976| r1976_3(int) = Load[x] : &:r1976_2, ~m? +# 1976| mu1976_4(int) = Store[#return] : &:r1976_1, r1976_3 +# 1972| r1972_7(glval) = VariableAddress[#return] : +# 1972| v1972_8(void) = ReturnValue : &:r1972_7, ~m? +# 1972| v1972_9(void) = AliasedUse : ~m? +# 1972| v1972_10(void) = ExitFunction : -# 1977| int static_function(int) -# 1977| Block 0 -# 1977| v1977_1(void) = EnterFunction : -# 1977| mu1977_2(unknown) = AliasedDefinition : -# 1977| mu1977_3(unknown) = InitializeNonLocal : -# 1977| r1977_4(glval) = VariableAddress[x] : -# 1977| mu1977_5(int) = InitializeParameter[x] : &:r1977_4 -# 1978| r1978_1(glval) = VariableAddress[#return] : -# 1978| r1978_2(glval) = VariableAddress[x] : -# 1978| r1978_3(int) = Load[x] : &:r1978_2, ~m? -# 1978| mu1978_4(int) = Store[#return] : &:r1978_1, r1978_3 -# 1977| r1977_6(glval) = VariableAddress[#return] : -# 1977| v1977_7(void) = ReturnValue : &:r1977_6, ~m? -# 1977| v1977_8(void) = AliasedUse : ~m? -# 1977| v1977_9(void) = ExitFunction : +# 1979| int static_function(int) +# 1979| Block 0 +# 1979| v1979_1(void) = EnterFunction : +# 1979| mu1979_2(unknown) = AliasedDefinition : +# 1979| mu1979_3(unknown) = InitializeNonLocal : +# 1979| r1979_4(glval) = VariableAddress[x] : +# 1979| mu1979_5(int) = InitializeParameter[x] : &:r1979_4 +# 1980| r1980_1(glval) = VariableAddress[#return] : +# 1980| r1980_2(glval) = VariableAddress[x] : +# 1980| r1980_3(int) = Load[x] : &:r1980_2, ~m? +# 1980| mu1980_4(int) = Store[#return] : &:r1980_1, r1980_3 +# 1979| r1979_6(glval) = VariableAddress[#return] : +# 1979| v1979_7(void) = ReturnValue : &:r1979_6, ~m? +# 1979| v1979_8(void) = AliasedUse : ~m? +# 1979| v1979_9(void) = ExitFunction : -# 1981| void test_static_functions_with_assignments() -# 1981| Block 0 -# 1981| v1981_1(void) = EnterFunction : -# 1981| mu1981_2(unknown) = AliasedDefinition : -# 1981| mu1981_3(unknown) = InitializeNonLocal : -# 1982| r1982_1(glval) = VariableAddress[c] : -# 1982| mu1982_2(C) = Uninitialized[c] : &:r1982_1 -# 1982| r1982_3(glval) = FunctionAddress[C] : -# 1982| v1982_4(void) = Call[C] : func:r1982_3, this:r1982_1 -# 1982| mu1982_5(unknown) = ^CallSideEffect : ~m? -# 1982| mu1982_6(C) = ^IndirectMayWriteSideEffect[-1] : &:r1982_1 -# 1983| r1983_1(glval) = VariableAddress[x] : -# 1983| mu1983_2(int) = Uninitialized[x] : &:r1983_1 +# 1983| void test_static_functions_with_assignments() +# 1983| Block 0 +# 1983| v1983_1(void) = EnterFunction : +# 1983| mu1983_2(unknown) = AliasedDefinition : +# 1983| mu1983_3(unknown) = InitializeNonLocal : # 1984| r1984_1(glval) = VariableAddress[c] : -# 1984| r1984_2(glval) = FunctionAddress[StaticMemberFunction] : -# 1984| r1984_3(int) = Constant[10] : -# 1984| r1984_4(int) = Call[StaticMemberFunction] : func:r1984_2, 0:r1984_3 +# 1984| mu1984_2(C) = Uninitialized[c] : &:r1984_1 +# 1984| r1984_3(glval) = FunctionAddress[C] : +# 1984| v1984_4(void) = Call[C] : func:r1984_3, this:r1984_1 # 1984| mu1984_5(unknown) = ^CallSideEffect : ~m? -# 1984| r1984_6(glval) = VariableAddress[x] : -# 1984| mu1984_7(int) = Store[x] : &:r1984_6, r1984_4 -# 1985| r1985_1(glval) = VariableAddress[y] : -# 1985| mu1985_2(int) = Uninitialized[y] : &:r1985_1 -# 1986| r1986_1(glval) = FunctionAddress[StaticMemberFunction] : -# 1986| r1986_2(int) = Constant[10] : -# 1986| r1986_3(int) = Call[StaticMemberFunction] : func:r1986_1, 0:r1986_2 -# 1986| mu1986_4(unknown) = ^CallSideEffect : ~m? -# 1986| r1986_5(glval) = VariableAddress[y] : -# 1986| mu1986_6(int) = Store[y] : &:r1986_5, r1986_3 -# 1987| r1987_1(glval) = VariableAddress[z] : -# 1987| mu1987_2(int) = Uninitialized[z] : &:r1987_1 -# 1988| r1988_1(glval) = FunctionAddress[static_function] : +# 1984| mu1984_6(C) = ^IndirectMayWriteSideEffect[-1] : &:r1984_1 +# 1985| r1985_1(glval) = VariableAddress[x] : +# 1985| mu1985_2(int) = Uninitialized[x] : &:r1985_1 +# 1986| r1986_1(glval) = VariableAddress[c] : +# 1986| r1986_2(glval) = FunctionAddress[StaticMemberFunction] : +# 1986| r1986_3(int) = Constant[10] : +# 1986| r1986_4(int) = Call[StaticMemberFunction] : func:r1986_2, 0:r1986_3 +# 1986| mu1986_5(unknown) = ^CallSideEffect : ~m? +# 1986| r1986_6(glval) = VariableAddress[x] : +# 1986| mu1986_7(int) = Store[x] : &:r1986_6, r1986_4 +# 1987| r1987_1(glval) = VariableAddress[y] : +# 1987| mu1987_2(int) = Uninitialized[y] : &:r1987_1 +# 1988| r1988_1(glval) = FunctionAddress[StaticMemberFunction] : # 1988| r1988_2(int) = Constant[10] : -# 1988| r1988_3(int) = Call[static_function] : func:r1988_1, 0:r1988_2 +# 1988| r1988_3(int) = Call[StaticMemberFunction] : func:r1988_1, 0:r1988_2 # 1988| mu1988_4(unknown) = ^CallSideEffect : ~m? -# 1988| r1988_5(glval) = VariableAddress[z] : -# 1988| mu1988_6(int) = Store[z] : &:r1988_5, r1988_3 -# 1989| v1989_1(void) = NoOp : -# 1989| r1989_2(glval) = VariableAddress[c] : -# 1989| r1989_3(glval) = FunctionAddress[~C] : -# 1989| v1989_4(void) = Call[~C] : func:r1989_3, this:r1989_2 -# 1989| mu1989_5(unknown) = ^CallSideEffect : ~m? -# 1989| v1989_6(void) = ^IndirectReadSideEffect[-1] : &:r1989_2, ~m? -# 1989| mu1989_7(C) = ^IndirectMayWriteSideEffect[-1] : &:r1989_2 -# 1981| v1981_4(void) = ReturnVoid : -# 1981| v1981_5(void) = AliasedUse : ~m? -# 1981| v1981_6(void) = ExitFunction : +# 1988| r1988_5(glval) = VariableAddress[y] : +# 1988| mu1988_6(int) = Store[y] : &:r1988_5, r1988_3 +# 1989| r1989_1(glval) = VariableAddress[z] : +# 1989| mu1989_2(int) = Uninitialized[z] : &:r1989_1 +# 1990| r1990_1(glval) = FunctionAddress[static_function] : +# 1990| r1990_2(int) = Constant[10] : +# 1990| r1990_3(int) = Call[static_function] : func:r1990_1, 0:r1990_2 +# 1990| mu1990_4(unknown) = ^CallSideEffect : ~m? +# 1990| r1990_5(glval) = VariableAddress[z] : +# 1990| mu1990_6(int) = Store[z] : &:r1990_5, r1990_3 +# 1991| v1991_1(void) = NoOp : +# 1991| r1991_2(glval) = VariableAddress[c] : +# 1991| r1991_3(glval) = FunctionAddress[~C] : +# 1991| v1991_4(void) = Call[~C] : func:r1991_3, this:r1991_2 +# 1991| mu1991_5(unknown) = ^CallSideEffect : ~m? +# 1991| v1991_6(void) = ^IndirectReadSideEffect[-1] : &:r1991_2, ~m? +# 1991| mu1991_7(C) = ^IndirectMayWriteSideEffect[-1] : &:r1991_2 +# 1983| v1983_4(void) = ReturnVoid : +# 1983| v1983_5(void) = AliasedUse : ~m? +# 1983| v1983_6(void) = ExitFunction : -# 1991| void test_double_assign() -# 1991| Block 0 -# 1991| v1991_1(void) = EnterFunction : -# 1991| mu1991_2(unknown) = AliasedDefinition : -# 1991| mu1991_3(unknown) = InitializeNonLocal : -# 1992| r1992_1(glval) = VariableAddress[i] : -# 1992| mu1992_2(int) = Uninitialized[i] : &:r1992_1 -# 1992| r1992_3(glval) = VariableAddress[j] : -# 1992| mu1992_4(int) = Uninitialized[j] : &:r1992_3 -# 1993| r1993_1(int) = Constant[40] : -# 1993| r1993_2(glval) = VariableAddress[j] : -# 1993| mu1993_3(int) = Store[j] : &:r1993_2, r1993_1 -# 1993| r1993_4(int) = Load[j] : &:r1993_2, ~m? -# 1993| r1993_5(glval) = VariableAddress[i] : -# 1993| mu1993_6(int) = Store[i] : &:r1993_5, r1993_4 -# 1994| v1994_1(void) = NoOp : -# 1991| v1991_4(void) = ReturnVoid : -# 1991| v1991_5(void) = AliasedUse : ~m? -# 1991| v1991_6(void) = ExitFunction : +# 1993| void test_double_assign() +# 1993| Block 0 +# 1993| v1993_1(void) = EnterFunction : +# 1993| mu1993_2(unknown) = AliasedDefinition : +# 1993| mu1993_3(unknown) = InitializeNonLocal : +# 1994| r1994_1(glval) = VariableAddress[i] : +# 1994| mu1994_2(int) = Uninitialized[i] : &:r1994_1 +# 1994| r1994_3(glval) = VariableAddress[j] : +# 1994| mu1994_4(int) = Uninitialized[j] : &:r1994_3 +# 1995| r1995_1(int) = Constant[40] : +# 1995| r1995_2(glval) = VariableAddress[j] : +# 1995| mu1995_3(int) = Store[j] : &:r1995_2, r1995_1 +# 1995| r1995_4(int) = Load[j] : &:r1995_2, ~m? +# 1995| r1995_5(glval) = VariableAddress[i] : +# 1995| mu1995_6(int) = Store[i] : &:r1995_5, r1995_4 +# 1996| v1996_1(void) = NoOp : +# 1993| v1993_4(void) = ReturnVoid : +# 1993| v1993_5(void) = AliasedUse : ~m? +# 1993| v1993_6(void) = ExitFunction : -# 1996| void test_assign_with_assign_operation() -# 1996| Block 0 -# 1996| v1996_1(void) = EnterFunction : -# 1996| mu1996_2(unknown) = AliasedDefinition : -# 1996| mu1996_3(unknown) = InitializeNonLocal : -# 1997| r1997_1(glval) = VariableAddress[i] : -# 1997| mu1997_2(int) = Uninitialized[i] : &:r1997_1 -# 1997| r1997_3(glval) = VariableAddress[j] : -# 1997| r1997_4(int) = Constant[0] : -# 1997| mu1997_5(int) = Store[j] : &:r1997_3, r1997_4 -# 1998| r1998_1(int) = Constant[40] : -# 1998| r1998_2(glval) = VariableAddress[j] : -# 1998| r1998_3(int) = Load[j] : &:r1998_2, ~m? -# 1998| r1998_4(int) = Add : r1998_3, r1998_1 -# 1998| mu1998_5(int) = Store[j] : &:r1998_2, r1998_4 -# 1998| r1998_6(int) = Load[j] : &:r1998_2, ~m? -# 1998| r1998_7(glval) = VariableAddress[i] : -# 1998| mu1998_8(int) = Store[i] : &:r1998_7, r1998_6 -# 1999| v1999_1(void) = NoOp : -# 1996| v1996_4(void) = ReturnVoid : -# 1996| v1996_5(void) = AliasedUse : ~m? -# 1996| v1996_6(void) = ExitFunction : +# 1998| void test_assign_with_assign_operation() +# 1998| Block 0 +# 1998| v1998_1(void) = EnterFunction : +# 1998| mu1998_2(unknown) = AliasedDefinition : +# 1998| mu1998_3(unknown) = InitializeNonLocal : +# 1999| r1999_1(glval) = VariableAddress[i] : +# 1999| mu1999_2(int) = Uninitialized[i] : &:r1999_1 +# 1999| r1999_3(glval) = VariableAddress[j] : +# 1999| r1999_4(int) = Constant[0] : +# 1999| mu1999_5(int) = Store[j] : &:r1999_3, r1999_4 +# 2000| r2000_1(int) = Constant[40] : +# 2000| r2000_2(glval) = VariableAddress[j] : +# 2000| r2000_3(int) = Load[j] : &:r2000_2, ~m? +# 2000| r2000_4(int) = Add : r2000_3, r2000_1 +# 2000| mu2000_5(int) = Store[j] : &:r2000_2, r2000_4 +# 2000| r2000_6(int) = Load[j] : &:r2000_2, ~m? +# 2000| r2000_7(glval) = VariableAddress[i] : +# 2000| mu2000_8(int) = Store[i] : &:r2000_7, r2000_6 +# 2001| v2001_1(void) = NoOp : +# 1998| v1998_4(void) = ReturnVoid : +# 1998| v1998_5(void) = AliasedUse : ~m? +# 1998| v1998_6(void) = ExitFunction : -# 2005| D& D::ReferenceStaticMemberFunction() -# 2005| Block 0 -# 2005| v2005_1(void) = EnterFunction : -# 2005| mu2005_2(unknown) = AliasedDefinition : -# 2005| mu2005_3(unknown) = InitializeNonLocal : -# 2006| r2006_1(glval) = VariableAddress[#return] : -# 2006| r2006_2(glval) = VariableAddress[x] : -# 2006| r2006_3(D &) = CopyValue : r2006_2 -# 2006| mu2006_4(D &) = Store[#return] : &:r2006_1, r2006_3 -# 2005| r2005_4(glval) = VariableAddress[#return] : -# 2005| v2005_5(void) = ReturnValue : &:r2005_4, ~m? -# 2005| v2005_6(void) = AliasedUse : ~m? -# 2005| v2005_7(void) = ExitFunction : +# 2007| D& D::ReferenceStaticMemberFunction() +# 2007| Block 0 +# 2007| v2007_1(void) = EnterFunction : +# 2007| mu2007_2(unknown) = AliasedDefinition : +# 2007| mu2007_3(unknown) = InitializeNonLocal : +# 2008| r2008_1(glval) = VariableAddress[#return] : +# 2008| r2008_2(glval) = VariableAddress[x] : +# 2008| r2008_3(D &) = CopyValue : r2008_2 +# 2008| mu2008_4(D &) = Store[#return] : &:r2008_1, r2008_3 +# 2007| r2007_4(glval) = VariableAddress[#return] : +# 2007| v2007_5(void) = ReturnValue : &:r2007_4, ~m? +# 2007| v2007_6(void) = AliasedUse : ~m? +# 2007| v2007_7(void) = ExitFunction : -# 2008| D D::ObjectStaticMemberFunction() -# 2008| Block 0 -# 2008| v2008_1(void) = EnterFunction : -# 2008| mu2008_2(unknown) = AliasedDefinition : -# 2008| mu2008_3(unknown) = InitializeNonLocal : -# 2009| r2009_1(glval) = VariableAddress[#return] : -# 2009| r2009_2(glval) = VariableAddress[x] : -# 2009| r2009_3(D) = Load[x] : &:r2009_2, ~m? -# 2009| mu2009_4(D) = Store[#return] : &:r2009_1, r2009_3 -# 2008| r2008_4(glval) = VariableAddress[#return] : -# 2008| v2008_5(void) = ReturnValue : &:r2008_4, ~m? -# 2008| v2008_6(void) = AliasedUse : ~m? -# 2008| v2008_7(void) = ExitFunction : +# 2010| D D::ObjectStaticMemberFunction() +# 2010| Block 0 +# 2010| v2010_1(void) = EnterFunction : +# 2010| mu2010_2(unknown) = AliasedDefinition : +# 2010| mu2010_3(unknown) = InitializeNonLocal : +# 2011| r2011_1(glval) = VariableAddress[#return] : +# 2011| r2011_2(glval) = VariableAddress[x] : +# 2011| r2011_3(D) = Load[x] : &:r2011_2, ~m? +# 2011| mu2011_4(D) = Store[#return] : &:r2011_1, r2011_3 +# 2010| r2010_4(glval) = VariableAddress[#return] : +# 2010| v2010_5(void) = ReturnValue : &:r2010_4, ~m? +# 2010| v2010_6(void) = AliasedUse : ~m? +# 2010| v2010_7(void) = ExitFunction : -# 2013| void test_static_member_functions_with_reference_return() -# 2013| Block 0 -# 2013| v2013_1(void) = EnterFunction : -# 2013| mu2013_2(unknown) = AliasedDefinition : -# 2013| mu2013_3(unknown) = InitializeNonLocal : -# 2014| r2014_1(glval) = VariableAddress[d] : -# 2014| mu2014_2(D) = Uninitialized[d] : &:r2014_1 +# 2015| void test_static_member_functions_with_reference_return() +# 2015| Block 0 +# 2015| v2015_1(void) = EnterFunction : +# 2015| mu2015_2(unknown) = AliasedDefinition : +# 2015| mu2015_3(unknown) = InitializeNonLocal : # 2016| r2016_1(glval) = VariableAddress[d] : -# 2016| r2016_2(glval) = FunctionAddress[ReferenceStaticMemberFunction] : -# 2016| r2016_3(D &) = Call[ReferenceStaticMemberFunction] : func:r2016_2 -# 2016| mu2016_4(unknown) = ^CallSideEffect : ~m? -# 2016| r2016_5(glval) = CopyValue : r2016_3 -# 2017| r2017_1(glval) = FunctionAddress[ReferenceStaticMemberFunction] : -# 2017| r2017_2(D &) = Call[ReferenceStaticMemberFunction] : func:r2017_1 -# 2017| mu2017_3(unknown) = ^CallSideEffect : ~m? -# 2017| r2017_4(glval) = CopyValue : r2017_2 +# 2016| mu2016_2(D) = Uninitialized[d] : &:r2016_1 # 2018| r2018_1(glval) = VariableAddress[d] : -# 2018| r2018_2(glval) = FunctionAddress[ObjectStaticMemberFunction] : -# 2018| r2018_3(D) = Call[ObjectStaticMemberFunction] : func:r2018_2 +# 2018| r2018_2(glval) = FunctionAddress[ReferenceStaticMemberFunction] : +# 2018| r2018_3(D &) = Call[ReferenceStaticMemberFunction] : func:r2018_2 # 2018| mu2018_4(unknown) = ^CallSideEffect : ~m? -# 2019| r2019_1(glval) = FunctionAddress[ObjectStaticMemberFunction] : -# 2019| r2019_2(D) = Call[ObjectStaticMemberFunction] : func:r2019_1 +# 2018| r2018_5(glval) = CopyValue : r2018_3 +# 2019| r2019_1(glval) = FunctionAddress[ReferenceStaticMemberFunction] : +# 2019| r2019_2(D &) = Call[ReferenceStaticMemberFunction] : func:r2019_1 # 2019| mu2019_3(unknown) = ^CallSideEffect : ~m? -# 2021| r2021_1(glval) = VariableAddress[x] : -# 2021| mu2021_2(D) = Uninitialized[x] : &:r2021_1 -# 2022| r2022_1(glval) = VariableAddress[d] : -# 2022| r2022_2(glval) = FunctionAddress[ReferenceStaticMemberFunction] : -# 2022| r2022_3(D &) = Call[ReferenceStaticMemberFunction] : func:r2022_2 -# 2022| mu2022_4(unknown) = ^CallSideEffect : ~m? -# 2022| r2022_5(D) = Load[?] : &:r2022_3, ~m? -# 2022| r2022_6(glval) = VariableAddress[x] : -# 2022| mu2022_7(D) = Store[x] : &:r2022_6, r2022_5 -# 2023| r2023_1(glval) = VariableAddress[y] : -# 2023| mu2023_2(D) = Uninitialized[y] : &:r2023_1 -# 2024| r2024_1(glval) = FunctionAddress[ReferenceStaticMemberFunction] : -# 2024| r2024_2(D &) = Call[ReferenceStaticMemberFunction] : func:r2024_1 -# 2024| mu2024_3(unknown) = ^CallSideEffect : ~m? -# 2024| r2024_4(D) = Load[?] : &:r2024_2, ~m? -# 2024| r2024_5(glval) = VariableAddress[y] : -# 2024| mu2024_6(D) = Store[y] : &:r2024_5, r2024_4 -# 2025| r2025_1(glval) = VariableAddress[j] : -# 2025| mu2025_2(D) = Uninitialized[j] : &:r2025_1 -# 2026| r2026_1(glval) = VariableAddress[d] : -# 2026| r2026_2(glval) = FunctionAddress[ObjectStaticMemberFunction] : -# 2026| r2026_3(D) = Call[ObjectStaticMemberFunction] : func:r2026_2 -# 2026| mu2026_4(unknown) = ^CallSideEffect : ~m? -# 2026| r2026_5(glval) = VariableAddress[j] : -# 2026| mu2026_6(D) = Store[j] : &:r2026_5, r2026_3 -# 2027| r2027_1(glval) = VariableAddress[k] : -# 2027| mu2027_2(D) = Uninitialized[k] : &:r2027_1 -# 2028| r2028_1(glval) = FunctionAddress[ObjectStaticMemberFunction] : -# 2028| r2028_2(D) = Call[ObjectStaticMemberFunction] : func:r2028_1 -# 2028| mu2028_3(unknown) = ^CallSideEffect : ~m? -# 2028| r2028_4(glval) = VariableAddress[k] : -# 2028| mu2028_5(D) = Store[k] : &:r2028_4, r2028_2 -# 2029| v2029_1(void) = NoOp : -# 2013| v2013_4(void) = ReturnVoid : -# 2013| v2013_5(void) = AliasedUse : ~m? -# 2013| v2013_6(void) = ExitFunction : +# 2019| r2019_4(glval) = CopyValue : r2019_2 +# 2020| r2020_1(glval) = VariableAddress[d] : +# 2020| r2020_2(glval) = FunctionAddress[ObjectStaticMemberFunction] : +# 2020| r2020_3(D) = Call[ObjectStaticMemberFunction] : func:r2020_2 +# 2020| mu2020_4(unknown) = ^CallSideEffect : ~m? +# 2021| r2021_1(glval) = FunctionAddress[ObjectStaticMemberFunction] : +# 2021| r2021_2(D) = Call[ObjectStaticMemberFunction] : func:r2021_1 +# 2021| mu2021_3(unknown) = ^CallSideEffect : ~m? +# 2023| r2023_1(glval) = VariableAddress[x] : +# 2023| mu2023_2(D) = Uninitialized[x] : &:r2023_1 +# 2024| r2024_1(glval) = VariableAddress[d] : +# 2024| r2024_2(glval) = FunctionAddress[ReferenceStaticMemberFunction] : +# 2024| r2024_3(D &) = Call[ReferenceStaticMemberFunction] : func:r2024_2 +# 2024| mu2024_4(unknown) = ^CallSideEffect : ~m? +# 2024| r2024_5(D) = Load[?] : &:r2024_3, ~m? +# 2024| r2024_6(glval) = VariableAddress[x] : +# 2024| mu2024_7(D) = Store[x] : &:r2024_6, r2024_5 +# 2025| r2025_1(glval) = VariableAddress[y] : +# 2025| mu2025_2(D) = Uninitialized[y] : &:r2025_1 +# 2026| r2026_1(glval) = FunctionAddress[ReferenceStaticMemberFunction] : +# 2026| r2026_2(D &) = Call[ReferenceStaticMemberFunction] : func:r2026_1 +# 2026| mu2026_3(unknown) = ^CallSideEffect : ~m? +# 2026| r2026_4(D) = Load[?] : &:r2026_2, ~m? +# 2026| r2026_5(glval) = VariableAddress[y] : +# 2026| mu2026_6(D) = Store[y] : &:r2026_5, r2026_4 +# 2027| r2027_1(glval) = VariableAddress[j] : +# 2027| mu2027_2(D) = Uninitialized[j] : &:r2027_1 +# 2028| r2028_1(glval) = VariableAddress[d] : +# 2028| r2028_2(glval) = FunctionAddress[ObjectStaticMemberFunction] : +# 2028| r2028_3(D) = Call[ObjectStaticMemberFunction] : func:r2028_2 +# 2028| mu2028_4(unknown) = ^CallSideEffect : ~m? +# 2028| r2028_5(glval) = VariableAddress[j] : +# 2028| mu2028_6(D) = Store[j] : &:r2028_5, r2028_3 +# 2029| r2029_1(glval) = VariableAddress[k] : +# 2029| mu2029_2(D) = Uninitialized[k] : &:r2029_1 +# 2030| r2030_1(glval) = FunctionAddress[ObjectStaticMemberFunction] : +# 2030| r2030_2(D) = Call[ObjectStaticMemberFunction] : func:r2030_1 +# 2030| mu2030_3(unknown) = ^CallSideEffect : ~m? +# 2030| r2030_4(glval) = VariableAddress[k] : +# 2030| mu2030_5(D) = Store[k] : &:r2030_4, r2030_2 +# 2031| v2031_1(void) = NoOp : +# 2015| v2015_4(void) = ReturnVoid : +# 2015| v2015_5(void) = AliasedUse : ~m? +# 2015| v2015_6(void) = ExitFunction : -# 2031| void test_volatile() -# 2031| Block 0 -# 2031| v2031_1(void) = EnterFunction : -# 2031| mu2031_2(unknown) = AliasedDefinition : -# 2031| mu2031_3(unknown) = InitializeNonLocal : -# 2032| r2032_1(glval) = VariableAddress[x] : -# 2032| mu2032_2(int) = Uninitialized[x] : &:r2032_1 -# 2033| r2033_1(glval) = VariableAddress[x] : -# 2033| r2033_2(int) = Load[x] : &:r2033_1, ~m? -# 2034| v2034_1(void) = NoOp : -# 2031| v2031_4(void) = ReturnVoid : -# 2031| v2031_5(void) = AliasedUse : ~m? -# 2031| v2031_6(void) = ExitFunction : +# 2033| void test_volatile() +# 2033| Block 0 +# 2033| v2033_1(void) = EnterFunction : +# 2033| mu2033_2(unknown) = AliasedDefinition : +# 2033| mu2033_3(unknown) = InitializeNonLocal : +# 2034| r2034_1(glval) = VariableAddress[x] : +# 2034| mu2034_2(int) = Uninitialized[x] : &:r2034_1 +# 2035| r2035_1(glval) = VariableAddress[x] : +# 2035| r2035_2(int) = Load[x] : &:r2035_1, ~m? +# 2036| v2036_1(void) = NoOp : +# 2033| v2033_4(void) = ReturnVoid : +# 2033| v2033_5(void) = AliasedUse : ~m? +# 2033| v2033_6(void) = ExitFunction : -# 2042| void value_category_test() -# 2042| Block 0 -# 2042| v2042_1(void) = EnterFunction : -# 2042| mu2042_2(unknown) = AliasedDefinition : -# 2042| mu2042_3(unknown) = InitializeNonLocal : -# 2043| r2043_1(glval) = VariableAddress[c] : -# 2043| mu2043_2(ValCat) = Uninitialized[c] : &:r2043_1 +# 2044| void value_category_test() +# 2044| Block 0 +# 2044| v2044_1(void) = EnterFunction : +# 2044| mu2044_2(unknown) = AliasedDefinition : +# 2044| mu2044_3(unknown) = InitializeNonLocal : +# 2045| r2045_1(glval) = VariableAddress[c] : +# 2045| mu2045_2(ValCat) = Uninitialized[c] : &:r2045_1 #-----| r0_1(glval) = VariableAddress[#temp0:0] : #-----| mu0_2(ValCat) = Uninitialized[#temp0:0] : &:r0_1 #-----| r0_3(ValCat) = Load[#temp0:0] : &:r0_1, ~m? -# 2045| r2045_1(glval) = VariableAddress[c] : -# 2045| r2045_2(glval) = FunctionAddress[lvalue] : -# 2045| r2045_3(ValCat &) = Call[lvalue] : func:r2045_2 -# 2045| mu2045_4(unknown) = ^CallSideEffect : ~m? -# 2045| r2045_5(glval) = CopyValue : r2045_3 -# 2045| mu2045_6(ValCat) = Store[?] : &:r2045_5, r0_3 +# 2047| r2047_1(glval) = VariableAddress[c] : +# 2047| r2047_2(glval) = FunctionAddress[lvalue] : +# 2047| r2047_3(ValCat &) = Call[lvalue] : func:r2047_2 +# 2047| mu2047_4(unknown) = ^CallSideEffect : ~m? +# 2047| r2047_5(glval) = CopyValue : r2047_3 +# 2047| mu2047_6(ValCat) = Store[?] : &:r2047_5, r0_3 #-----| r0_4(glval) = VariableAddress[#temp0:0] : #-----| mu0_5(ValCat) = Uninitialized[#temp0:0] : &:r0_4 #-----| r0_6(ValCat) = Load[#temp0:0] : &:r0_4, ~m? -# 2046| r2046_1(glval) = VariableAddress[c] : -# 2046| r2046_2(glval) = FunctionAddress[xvalue] : -# 2046| r2046_3(ValCat &&) = Call[xvalue] : func:r2046_2 -# 2046| mu2046_4(unknown) = ^CallSideEffect : ~m? -# 2046| r2046_5(glval) = CopyValue : r2046_3 -# 2046| mu2046_6(ValCat) = Store[?] : &:r2046_5, r0_6 +# 2048| r2048_1(glval) = VariableAddress[c] : +# 2048| r2048_2(glval) = FunctionAddress[xvalue] : +# 2048| r2048_3(ValCat &&) = Call[xvalue] : func:r2048_2 +# 2048| mu2048_4(unknown) = ^CallSideEffect : ~m? +# 2048| r2048_5(glval) = CopyValue : r2048_3 +# 2048| mu2048_6(ValCat) = Store[?] : &:r2048_5, r0_6 #-----| r0_7(glval) = VariableAddress[#temp0:0] : #-----| mu0_8(ValCat) = Uninitialized[#temp0:0] : &:r0_7 #-----| r0_9(ValCat) = Load[#temp0:0] : &:r0_7, ~m? -# 2047| r2047_1(glval) = VariableAddress[#temp2047:5] : -# 2047| r2047_2(glval) = VariableAddress[c] : -# 2047| r2047_3(glval) = FunctionAddress[prvalue] : -# 2047| r2047_4(ValCat) = Call[prvalue] : func:r2047_3 -# 2047| mu2047_5(unknown) = ^CallSideEffect : ~m? -# 2047| mu2047_6(ValCat) = Store[#temp2047:5] : &:r2047_1, r2047_4 -# 2047| mu2047_7(ValCat) = Store[#temp2047:5] : &:r2047_1, r0_9 +# 2049| r2049_1(glval) = VariableAddress[#temp2049:5] : +# 2049| r2049_2(glval) = VariableAddress[c] : +# 2049| r2049_3(glval) = FunctionAddress[prvalue] : +# 2049| r2049_4(ValCat) = Call[prvalue] : func:r2049_3 +# 2049| mu2049_5(unknown) = ^CallSideEffect : ~m? +# 2049| mu2049_6(ValCat) = Store[#temp2049:5] : &:r2049_1, r2049_4 +# 2049| mu2049_7(ValCat) = Store[#temp2049:5] : &:r2049_1, r0_9 #-----| r0_10(glval) = VariableAddress[#temp0:0] : #-----| mu0_11(ValCat) = Uninitialized[#temp0:0] : &:r0_10 #-----| r0_12(ValCat) = Load[#temp0:0] : &:r0_10, ~m? -# 2048| r2048_1(glval) = FunctionAddress[lvalue] : -# 2048| r2048_2(ValCat &) = Call[lvalue] : func:r2048_1 -# 2048| mu2048_3(unknown) = ^CallSideEffect : ~m? -# 2048| r2048_4(glval) = CopyValue : r2048_2 -# 2048| mu2048_5(ValCat) = Store[?] : &:r2048_4, r0_12 +# 2050| r2050_1(glval) = FunctionAddress[lvalue] : +# 2050| r2050_2(ValCat &) = Call[lvalue] : func:r2050_1 +# 2050| mu2050_3(unknown) = ^CallSideEffect : ~m? +# 2050| r2050_4(glval) = CopyValue : r2050_2 +# 2050| mu2050_5(ValCat) = Store[?] : &:r2050_4, r0_12 #-----| r0_13(glval) = VariableAddress[#temp0:0] : #-----| mu0_14(ValCat) = Uninitialized[#temp0:0] : &:r0_13 #-----| r0_15(ValCat) = Load[#temp0:0] : &:r0_13, ~m? -# 2049| r2049_1(glval) = FunctionAddress[xvalue] : -# 2049| r2049_2(ValCat &&) = Call[xvalue] : func:r2049_1 -# 2049| mu2049_3(unknown) = ^CallSideEffect : ~m? -# 2049| r2049_4(glval) = CopyValue : r2049_2 -# 2049| mu2049_5(ValCat) = Store[?] : &:r2049_4, r0_15 +# 2051| r2051_1(glval) = FunctionAddress[xvalue] : +# 2051| r2051_2(ValCat &&) = Call[xvalue] : func:r2051_1 +# 2051| mu2051_3(unknown) = ^CallSideEffect : ~m? +# 2051| r2051_4(glval) = CopyValue : r2051_2 +# 2051| mu2051_5(ValCat) = Store[?] : &:r2051_4, r0_15 #-----| r0_16(glval) = VariableAddress[#temp0:0] : #-----| mu0_17(ValCat) = Uninitialized[#temp0:0] : &:r0_16 #-----| r0_18(ValCat) = Load[#temp0:0] : &:r0_16, ~m? -# 2050| r2050_1(glval) = VariableAddress[#temp2050:5] : -# 2050| r2050_2(glval) = FunctionAddress[prvalue] : -# 2050| r2050_3(ValCat) = Call[prvalue] : func:r2050_2 -# 2050| mu2050_4(unknown) = ^CallSideEffect : ~m? -# 2050| mu2050_5(ValCat) = Store[#temp2050:5] : &:r2050_1, r2050_3 -# 2050| mu2050_6(ValCat) = Store[#temp2050:5] : &:r2050_1, r0_18 -# 2051| v2051_1(void) = NoOp : -# 2042| v2042_4(void) = ReturnVoid : -# 2042| v2042_5(void) = AliasedUse : ~m? -# 2042| v2042_6(void) = ExitFunction : +# 2052| r2052_1(glval) = VariableAddress[#temp2052:5] : +# 2052| r2052_2(glval) = FunctionAddress[prvalue] : +# 2052| r2052_3(ValCat) = Call[prvalue] : func:r2052_2 +# 2052| mu2052_4(unknown) = ^CallSideEffect : ~m? +# 2052| mu2052_5(ValCat) = Store[#temp2052:5] : &:r2052_1, r2052_3 +# 2052| mu2052_6(ValCat) = Store[#temp2052:5] : &:r2052_1, r0_18 +# 2053| v2053_1(void) = NoOp : +# 2044| v2044_4(void) = ReturnVoid : +# 2044| v2044_5(void) = AliasedUse : ~m? +# 2044| v2044_6(void) = ExitFunction : -# 2053| void SetStaticFuncPtr() -# 2053| Block 0 -# 2053| v2053_1(void) = EnterFunction : -# 2053| mu2053_2(unknown) = AliasedDefinition : -# 2053| mu2053_3(unknown) = InitializeNonLocal : -# 2054| r2054_1(glval) = VariableAddress[c] : -# 2054| mu2054_2(C) = Uninitialized[c] : &:r2054_1 -# 2054| r2054_3(glval) = FunctionAddress[C] : -# 2054| v2054_4(void) = Call[C] : func:r2054_3, this:r2054_1 -# 2054| mu2054_5(unknown) = ^CallSideEffect : ~m? -# 2054| mu2054_6(C) = ^IndirectMayWriteSideEffect[-1] : &:r2054_1 -# 2055| r2055_1(glval<..(*)(..)>) = VariableAddress[pfn] : -# 2055| r2055_2(..(*)(..)) = FunctionAddress[StaticMemberFunction] : -# 2055| mu2055_3(..(*)(..)) = Store[pfn] : &:r2055_1, r2055_2 +# 2055| void SetStaticFuncPtr() +# 2055| Block 0 +# 2055| v2055_1(void) = EnterFunction : +# 2055| mu2055_2(unknown) = AliasedDefinition : +# 2055| mu2055_3(unknown) = InitializeNonLocal : # 2056| r2056_1(glval) = VariableAddress[c] : -# 2056| r2056_2(..(*)(..)) = FunctionAddress[StaticMemberFunction] : -# 2056| r2056_3(glval<..(*)(..)>) = VariableAddress[pfn] : -# 2056| mu2056_4(..(*)(..)) = Store[pfn] : &:r2056_3, r2056_2 -# 2057| v2057_1(void) = NoOp : -# 2057| r2057_2(glval) = VariableAddress[c] : -# 2057| r2057_3(glval) = FunctionAddress[~C] : -# 2057| v2057_4(void) = Call[~C] : func:r2057_3, this:r2057_2 -# 2057| mu2057_5(unknown) = ^CallSideEffect : ~m? -# 2057| v2057_6(void) = ^IndirectReadSideEffect[-1] : &:r2057_2, ~m? -# 2057| mu2057_7(C) = ^IndirectMayWriteSideEffect[-1] : &:r2057_2 -# 2053| v2053_4(void) = ReturnVoid : -# 2053| v2053_5(void) = AliasedUse : ~m? -# 2053| v2053_6(void) = ExitFunction : +# 2056| mu2056_2(C) = Uninitialized[c] : &:r2056_1 +# 2056| r2056_3(glval) = FunctionAddress[C] : +# 2056| v2056_4(void) = Call[C] : func:r2056_3, this:r2056_1 +# 2056| mu2056_5(unknown) = ^CallSideEffect : ~m? +# 2056| mu2056_6(C) = ^IndirectMayWriteSideEffect[-1] : &:r2056_1 +# 2057| r2057_1(glval<..(*)(..)>) = VariableAddress[pfn] : +# 2057| r2057_2(..(*)(..)) = FunctionAddress[StaticMemberFunction] : +# 2057| mu2057_3(..(*)(..)) = Store[pfn] : &:r2057_1, r2057_2 +# 2058| r2058_1(glval) = VariableAddress[c] : +# 2058| r2058_2(..(*)(..)) = FunctionAddress[StaticMemberFunction] : +# 2058| r2058_3(glval<..(*)(..)>) = VariableAddress[pfn] : +# 2058| mu2058_4(..(*)(..)) = Store[pfn] : &:r2058_3, r2058_2 +# 2059| v2059_1(void) = NoOp : +# 2059| r2059_2(glval) = VariableAddress[c] : +# 2059| r2059_3(glval) = FunctionAddress[~C] : +# 2059| v2059_4(void) = Call[~C] : func:r2059_3, this:r2059_2 +# 2059| mu2059_5(unknown) = ^CallSideEffect : ~m? +# 2059| v2059_6(void) = ^IndirectReadSideEffect[-1] : &:r2059_2, ~m? +# 2059| mu2059_7(C) = ^IndirectMayWriteSideEffect[-1] : &:r2059_2 +# 2055| v2055_4(void) = ReturnVoid : +# 2055| v2055_5(void) = AliasedUse : ~m? +# 2055| v2055_6(void) = ExitFunction : -# 2059| void TernaryTestInt(bool, int, int, int) -# 2059| Block 0 -# 2059| v2059_1(void) = EnterFunction : -# 2059| mu2059_2(unknown) = AliasedDefinition : -# 2059| mu2059_3(unknown) = InitializeNonLocal : -# 2059| r2059_4(glval) = VariableAddress[a] : -# 2059| mu2059_5(bool) = InitializeParameter[a] : &:r2059_4 -# 2059| r2059_6(glval) = VariableAddress[x] : -# 2059| mu2059_7(int) = InitializeParameter[x] : &:r2059_6 -# 2059| r2059_8(glval) = VariableAddress[y] : -# 2059| mu2059_9(int) = InitializeParameter[y] : &:r2059_8 -# 2059| r2059_10(glval) = VariableAddress[z] : -# 2059| mu2059_11(int) = InitializeParameter[z] : &:r2059_10 -# 2060| r2060_1(glval) = VariableAddress[a] : -# 2060| r2060_2(bool) = Load[a] : &:r2060_1, ~m? -# 2060| v2060_3(void) = ConditionalBranch : r2060_2 +# 2061| void TernaryTestInt(bool, int, int, int) +# 2061| Block 0 +# 2061| v2061_1(void) = EnterFunction : +# 2061| mu2061_2(unknown) = AliasedDefinition : +# 2061| mu2061_3(unknown) = InitializeNonLocal : +# 2061| r2061_4(glval) = VariableAddress[a] : +# 2061| mu2061_5(bool) = InitializeParameter[a] : &:r2061_4 +# 2061| r2061_6(glval) = VariableAddress[x] : +# 2061| mu2061_7(int) = InitializeParameter[x] : &:r2061_6 +# 2061| r2061_8(glval) = VariableAddress[y] : +# 2061| mu2061_9(int) = InitializeParameter[y] : &:r2061_8 +# 2061| r2061_10(glval) = VariableAddress[z] : +# 2061| mu2061_11(int) = InitializeParameter[z] : &:r2061_10 +# 2062| r2062_1(glval) = VariableAddress[a] : +# 2062| r2062_2(bool) = Load[a] : &:r2062_1, ~m? +# 2062| v2062_3(void) = ConditionalBranch : r2062_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 2060| Block 1 -# 2060| r2060_4(glval) = VariableAddress[#temp2060:9] : -# 2060| r2060_5(int) = Load[#temp2060:9] : &:r2060_4, ~m? -# 2060| r2060_6(glval) = VariableAddress[z] : -# 2060| mu2060_7(int) = Store[z] : &:r2060_6, r2060_5 -# 2061| r2061_1(glval) = VariableAddress[a] : -# 2061| r2061_2(bool) = Load[a] : &:r2061_1, ~m? -# 2061| v2061_3(void) = ConditionalBranch : r2061_2 -#-----| False -> Block 6 -#-----| True -> Block 5 - -# 2060| Block 2 -# 2060| r2060_8(glval) = VariableAddress[x] : -# 2060| r2060_9(int) = Load[x] : &:r2060_8, ~m? -# 2060| r2060_10(glval) = VariableAddress[#temp2060:9] : -# 2060| mu2060_11(int) = Store[#temp2060:9] : &:r2060_10, r2060_9 -#-----| Goto -> Block 1 - -# 2060| Block 3 -# 2060| r2060_12(glval) = VariableAddress[y] : -# 2060| r2060_13(int) = Load[y] : &:r2060_12, ~m? -# 2060| r2060_14(glval) = VariableAddress[#temp2060:9] : -# 2060| mu2060_15(int) = Store[#temp2060:9] : &:r2060_14, r2060_13 -#-----| Goto -> Block 1 - -# 2061| Block 4 -# 2061| r2061_4(glval) = VariableAddress[#temp2061:9] : -# 2061| r2061_5(int) = Load[#temp2061:9] : &:r2061_4, ~m? -# 2061| r2061_6(glval) = VariableAddress[z] : -# 2061| mu2061_7(int) = Store[z] : &:r2061_6, r2061_5 -# 2062| r2062_1(glval) = VariableAddress[a] : -# 2062| r2062_2(bool) = Load[a] : &:r2062_1, ~m? -# 2062| v2062_3(void) = ConditionalBranch : r2062_2 -#-----| False -> Block 9 -#-----| True -> Block 8 - -# 2061| Block 5 -# 2061| r2061_8(glval) = VariableAddress[x] : -# 2061| r2061_9(int) = Load[x] : &:r2061_8, ~m? -# 2061| r2061_10(glval) = VariableAddress[#temp2061:9] : -# 2061| mu2061_11(int) = Store[#temp2061:9] : &:r2061_10, r2061_9 -#-----| Goto -> Block 4 - -# 2061| Block 6 -# 2061| r2061_12(int) = Constant[5] : -# 2061| r2061_13(glval) = VariableAddress[#temp2061:9] : -# 2061| mu2061_14(int) = Store[#temp2061:9] : &:r2061_13, r2061_12 -#-----| Goto -> Block 4 - -# 2062| Block 7 +# 2062| Block 1 # 2062| r2062_4(glval) = VariableAddress[#temp2062:9] : # 2062| r2062_5(int) = Load[#temp2062:9] : &:r2062_4, ~m? # 2062| r2062_6(glval) = VariableAddress[z] : # 2062| mu2062_7(int) = Store[z] : &:r2062_6, r2062_5 -# 2063| r2063_1(int) = Constant[7] : -# 2063| r2063_2(glval) = VariableAddress[a] : -# 2063| r2063_3(bool) = Load[a] : &:r2063_2, ~m? -# 2063| v2063_4(void) = ConditionalBranch : r2063_3 -#-----| False -> Block 12 -#-----| True -> Block 11 - -# 2062| Block 8 -# 2062| r2062_8(int) = Constant[3] : -# 2062| r2062_9(glval) = VariableAddress[#temp2062:9] : -# 2062| mu2062_10(int) = Store[#temp2062:9] : &:r2062_9, r2062_8 -#-----| Goto -> Block 7 - -# 2062| Block 9 -# 2062| r2062_11(int) = Constant[5] : -# 2062| r2062_12(glval) = VariableAddress[#temp2062:9] : -# 2062| mu2062_13(int) = Store[#temp2062:9] : &:r2062_12, r2062_11 -#-----| Goto -> Block 7 - -# 2063| Block 10 -# 2063| r2063_5(glval) = VariableAddress[#temp2063:6] : -# 2063| r2063_6(glval) = Load[#temp2063:6] : &:r2063_5, ~m? -# 2063| mu2063_7(int) = Store[?] : &:r2063_6, r2063_1 -# 2064| v2064_1(void) = NoOp : -# 2059| v2059_12(void) = ReturnVoid : -# 2059| v2059_13(void) = AliasedUse : ~m? -# 2059| v2059_14(void) = ExitFunction : - -# 2063| Block 11 -# 2063| r2063_8(glval) = VariableAddress[x] : -# 2063| r2063_9(glval) = VariableAddress[#temp2063:6] : -# 2063| mu2063_10(glval) = Store[#temp2063:6] : &:r2063_9, r2063_8 -#-----| Goto -> Block 10 - -# 2063| Block 12 -# 2063| r2063_11(glval) = VariableAddress[y] : -# 2063| r2063_12(glval) = VariableAddress[#temp2063:6] : -# 2063| mu2063_13(glval) = Store[#temp2063:6] : &:r2063_12, r2063_11 -#-----| Goto -> Block 10 - -# 2069| void TernaryTestPodObj(bool, TernaryPodObj, TernaryPodObj, TernaryPodObj) -# 2069| Block 0 -# 2069| v2069_1(void) = EnterFunction : -# 2069| mu2069_2(unknown) = AliasedDefinition : -# 2069| mu2069_3(unknown) = InitializeNonLocal : -# 2069| r2069_4(glval) = VariableAddress[a] : -# 2069| mu2069_5(bool) = InitializeParameter[a] : &:r2069_4 -# 2069| r2069_6(glval) = VariableAddress[x] : -# 2069| mu2069_7(TernaryPodObj) = InitializeParameter[x] : &:r2069_6 -# 2069| r2069_8(glval) = VariableAddress[y] : -# 2069| mu2069_9(TernaryPodObj) = InitializeParameter[y] : &:r2069_8 -# 2069| r2069_10(glval) = VariableAddress[z] : -# 2069| mu2069_11(TernaryPodObj) = InitializeParameter[z] : &:r2069_10 -# 2070| r2070_1(glval) = VariableAddress[a] : -# 2070| r2070_2(bool) = Load[a] : &:r2070_1, ~m? -# 2070| v2070_3(void) = ConditionalBranch : r2070_2 -#-----| False -> Block 3 -#-----| True -> Block 2 - -# 2070| Block 1 -# 2070| r2070_4(glval) = VariableAddress[#temp2070:9] : -# 2070| r2070_5(TernaryPodObj) = Load[#temp2070:9] : &:r2070_4, ~m? -# 2070| r2070_6(glval) = VariableAddress[z] : -# 2070| mu2070_7(TernaryPodObj) = Store[z] : &:r2070_6, r2070_5 -# 2071| r2071_1(glval) = VariableAddress[#temp2071:9] : -# 2071| r2071_2(glval) = VariableAddress[a] : -# 2071| r2071_3(bool) = Load[a] : &:r2071_2, ~m? -# 2071| v2071_4(void) = ConditionalBranch : r2071_3 +# 2063| r2063_1(glval) = VariableAddress[a] : +# 2063| r2063_2(bool) = Load[a] : &:r2063_1, ~m? +# 2063| v2063_3(void) = ConditionalBranch : r2063_2 #-----| False -> Block 6 #-----| True -> Block 5 -# 2070| Block 2 -# 2070| r2070_8(glval) = VariableAddress[x] : -# 2070| r2070_9(TernaryPodObj) = Load[x] : &:r2070_8, ~m? -# 2070| r2070_10(glval) = VariableAddress[#temp2070:9] : -# 2070| mu2070_11(TernaryPodObj) = Store[#temp2070:9] : &:r2070_10, r2070_9 +# 2062| Block 2 +# 2062| r2062_8(glval) = VariableAddress[x] : +# 2062| r2062_9(int) = Load[x] : &:r2062_8, ~m? +# 2062| r2062_10(glval) = VariableAddress[#temp2062:9] : +# 2062| mu2062_11(int) = Store[#temp2062:9] : &:r2062_10, r2062_9 #-----| Goto -> Block 1 -# 2070| Block 3 -# 2070| r2070_12(glval) = VariableAddress[y] : -# 2070| r2070_13(TernaryPodObj) = Load[y] : &:r2070_12, ~m? -# 2070| r2070_14(glval) = VariableAddress[#temp2070:9] : -# 2070| mu2070_15(TernaryPodObj) = Store[#temp2070:9] : &:r2070_14, r2070_13 +# 2062| Block 3 +# 2062| r2062_12(glval) = VariableAddress[y] : +# 2062| r2062_13(int) = Load[y] : &:r2062_12, ~m? +# 2062| r2062_14(glval) = VariableAddress[#temp2062:9] : +# 2062| mu2062_15(int) = Store[#temp2062:9] : &:r2062_14, r2062_13 #-----| Goto -> Block 1 -# 2071| Block 4 -# 2071| r2071_5(glval) = VariableAddress[#temp2071:9] : -# 2071| r2071_6(TernaryPodObj) = Load[#temp2071:9] : &:r2071_5, ~m? -# 2071| mu2071_7(TernaryPodObj) = Store[#temp2071:9] : &:r2071_1, r2071_6 -# 2071| r2071_8(TernaryPodObj) = Load[#temp2071:9] : &:r2071_1, ~m? -# 2071| r2071_9(glval) = VariableAddress[z] : -# 2071| mu2071_10(TernaryPodObj) = Store[z] : &:r2071_9, r2071_8 -# 2072| r2072_1(glval) = VariableAddress[#temp2072:9] : -# 2072| r2072_2(glval) = VariableAddress[a] : -# 2072| r2072_3(bool) = Load[a] : &:r2072_2, ~m? -# 2072| v2072_4(void) = ConditionalBranch : r2072_3 +# 2063| Block 4 +# 2063| r2063_4(glval) = VariableAddress[#temp2063:9] : +# 2063| r2063_5(int) = Load[#temp2063:9] : &:r2063_4, ~m? +# 2063| r2063_6(glval) = VariableAddress[z] : +# 2063| mu2063_7(int) = Store[z] : &:r2063_6, r2063_5 +# 2064| r2064_1(glval) = VariableAddress[a] : +# 2064| r2064_2(bool) = Load[a] : &:r2064_1, ~m? +# 2064| v2064_3(void) = ConditionalBranch : r2064_2 #-----| False -> Block 9 #-----| True -> Block 8 -# 2071| Block 5 -# 2071| r2071_11(glval) = VariableAddress[#temp2071:13] : -# 2071| r2071_12(glval) = VariableAddress[x] : -# 2071| r2071_13(TernaryPodObj) = Load[x] : &:r2071_12, ~m? -# 2071| mu2071_14(TernaryPodObj) = Store[#temp2071:13] : &:r2071_11, r2071_13 -# 2071| r2071_15(TernaryPodObj) = Load[#temp2071:13] : &:r2071_11, ~m? -# 2071| r2071_16(glval) = VariableAddress[#temp2071:9] : -# 2071| mu2071_17(TernaryPodObj) = Store[#temp2071:9] : &:r2071_16, r2071_15 +# 2063| Block 5 +# 2063| r2063_8(glval) = VariableAddress[x] : +# 2063| r2063_9(int) = Load[x] : &:r2063_8, ~m? +# 2063| r2063_10(glval) = VariableAddress[#temp2063:9] : +# 2063| mu2063_11(int) = Store[#temp2063:9] : &:r2063_10, r2063_9 #-----| Goto -> Block 4 -# 2071| Block 6 -# 2071| r2071_18(glval) = VariableAddress[#temp2071:17] : -# 2071| r2071_19(TernaryPodObj) = Constant[0] : -# 2071| mu2071_20(TernaryPodObj) = Store[#temp2071:17] : &:r2071_18, r2071_19 -# 2071| r2071_21(TernaryPodObj) = Load[#temp2071:17] : &:r2071_18, ~m? -# 2071| r2071_22(glval) = VariableAddress[#temp2071:9] : -# 2071| mu2071_23(TernaryPodObj) = Store[#temp2071:9] : &:r2071_22, r2071_21 +# 2063| Block 6 +# 2063| r2063_12(int) = Constant[5] : +# 2063| r2063_13(glval) = VariableAddress[#temp2063:9] : +# 2063| mu2063_14(int) = Store[#temp2063:9] : &:r2063_13, r2063_12 #-----| Goto -> Block 4 -# 2072| Block 7 -# 2072| r2072_5(glval) = VariableAddress[#temp2072:9] : -# 2072| r2072_6(TernaryPodObj) = Load[#temp2072:9] : &:r2072_5, ~m? -# 2072| mu2072_7(TernaryPodObj) = Store[#temp2072:9] : &:r2072_1, r2072_6 -# 2072| r2072_8(TernaryPodObj) = Load[#temp2072:9] : &:r2072_1, ~m? -# 2072| r2072_9(glval) = VariableAddress[z] : -# 2072| mu2072_10(TernaryPodObj) = Store[z] : &:r2072_9, r2072_8 -# 2073| r2073_1(glval) = VariableAddress[#temp2073:23] : -# 2073| r2073_2(TernaryPodObj) = Constant[0] : -# 2073| mu2073_3(TernaryPodObj) = Store[#temp2073:23] : &:r2073_1, r2073_2 -# 2073| r2073_4(TernaryPodObj) = Load[#temp2073:23] : &:r2073_1, ~m? -# 2073| r2073_5(glval) = VariableAddress[a] : -# 2073| r2073_6(bool) = Load[a] : &:r2073_5, ~m? -# 2073| v2073_7(void) = ConditionalBranch : r2073_6 +# 2064| Block 7 +# 2064| r2064_4(glval) = VariableAddress[#temp2064:9] : +# 2064| r2064_5(int) = Load[#temp2064:9] : &:r2064_4, ~m? +# 2064| r2064_6(glval) = VariableAddress[z] : +# 2064| mu2064_7(int) = Store[z] : &:r2064_6, r2064_5 +# 2065| r2065_1(int) = Constant[7] : +# 2065| r2065_2(glval) = VariableAddress[a] : +# 2065| r2065_3(bool) = Load[a] : &:r2065_2, ~m? +# 2065| v2065_4(void) = ConditionalBranch : r2065_3 #-----| False -> Block 12 #-----| True -> Block 11 -# 2072| Block 8 -# 2072| r2072_11(glval) = VariableAddress[#temp2072:13] : -# 2072| r2072_12(TernaryPodObj) = Constant[0] : -# 2072| mu2072_13(TernaryPodObj) = Store[#temp2072:13] : &:r2072_11, r2072_12 -# 2072| r2072_14(TernaryPodObj) = Load[#temp2072:13] : &:r2072_11, ~m? -# 2072| r2072_15(glval) = VariableAddress[#temp2072:9] : -# 2072| mu2072_16(TernaryPodObj) = Store[#temp2072:9] : &:r2072_15, r2072_14 +# 2064| Block 8 +# 2064| r2064_8(int) = Constant[3] : +# 2064| r2064_9(glval) = VariableAddress[#temp2064:9] : +# 2064| mu2064_10(int) = Store[#temp2064:9] : &:r2064_9, r2064_8 #-----| Goto -> Block 7 -# 2072| Block 9 -# 2072| r2072_17(glval) = VariableAddress[#temp2072:31] : -# 2072| r2072_18(TernaryPodObj) = Constant[0] : -# 2072| mu2072_19(TernaryPodObj) = Store[#temp2072:31] : &:r2072_17, r2072_18 -# 2072| r2072_20(TernaryPodObj) = Load[#temp2072:31] : &:r2072_17, ~m? -# 2072| r2072_21(glval) = VariableAddress[#temp2072:9] : -# 2072| mu2072_22(TernaryPodObj) = Store[#temp2072:9] : &:r2072_21, r2072_20 +# 2064| Block 9 +# 2064| r2064_11(int) = Constant[5] : +# 2064| r2064_12(glval) = VariableAddress[#temp2064:9] : +# 2064| mu2064_13(int) = Store[#temp2064:9] : &:r2064_12, r2064_11 #-----| Goto -> Block 7 -# 2073| Block 10 -# 2073| r2073_8(glval) = VariableAddress[#temp2073:10] : -# 2073| r2073_9(TernaryPodObj) = Load[#temp2073:10] : &:r2073_8, ~m? -# 2073| r2073_10(glval) = VariableAddress[z] : -# 2073| mu2073_11(TernaryPodObj) = Store[z] : &:r2073_10, r2073_9 -# 2073| r2073_12(glval) = CopyValue : r2073_10 -# 2073| mu2073_13(TernaryPodObj) = Store[?] : &:r2073_12, r2073_4 -# 2074| v2074_1(void) = NoOp : -# 2069| v2069_12(void) = ReturnVoid : -# 2069| v2069_13(void) = AliasedUse : ~m? -# 2069| v2069_14(void) = ExitFunction : +# 2065| Block 10 +# 2065| r2065_5(glval) = VariableAddress[#temp2065:6] : +# 2065| r2065_6(glval) = Load[#temp2065:6] : &:r2065_5, ~m? +# 2065| mu2065_7(int) = Store[?] : &:r2065_6, r2065_1 +# 2066| v2066_1(void) = NoOp : +# 2061| v2061_12(void) = ReturnVoid : +# 2061| v2061_13(void) = AliasedUse : ~m? +# 2061| v2061_14(void) = ExitFunction : -# 2073| Block 11 -# 2073| r2073_14(glval) = VariableAddress[x] : -# 2073| r2073_15(TernaryPodObj) = Load[x] : &:r2073_14, ~m? -# 2073| r2073_16(glval) = VariableAddress[#temp2073:10] : -# 2073| mu2073_17(TernaryPodObj) = Store[#temp2073:10] : &:r2073_16, r2073_15 +# 2065| Block 11 +# 2065| r2065_8(glval) = VariableAddress[x] : +# 2065| r2065_9(glval) = VariableAddress[#temp2065:6] : +# 2065| mu2065_10(glval) = Store[#temp2065:6] : &:r2065_9, r2065_8 #-----| Goto -> Block 10 -# 2073| Block 12 -# 2073| r2073_18(glval) = VariableAddress[y] : -# 2073| r2073_19(TernaryPodObj) = Load[y] : &:r2073_18, ~m? -# 2073| r2073_20(glval) = VariableAddress[#temp2073:10] : -# 2073| mu2073_21(TernaryPodObj) = Store[#temp2073:10] : &:r2073_20, r2073_19 +# 2065| Block 12 +# 2065| r2065_11(glval) = VariableAddress[y] : +# 2065| r2065_12(glval) = VariableAddress[#temp2065:6] : +# 2065| mu2065_13(glval) = Store[#temp2065:6] : &:r2065_12, r2065_11 #-----| Goto -> Block 10 -# 2076| TernaryNonPodObj& TernaryNonPodObj::operator=(TernaryNonPodObj const&) -# 2076| Block 0 -# 2076| v2076_1(void) = EnterFunction : -# 2076| mu2076_2(unknown) = AliasedDefinition : -# 2076| mu2076_3(unknown) = InitializeNonLocal : -# 2076| r2076_4(glval) = VariableAddress[#this] : -# 2076| mu2076_5(glval) = InitializeParameter[#this] : &:r2076_4 -# 2076| r2076_6(glval) = Load[#this] : &:r2076_4, ~m? -# 2076| mu2076_7(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2076_6 +# 2071| void TernaryTestPodObj(bool, TernaryPodObj, TernaryPodObj, TernaryPodObj) +# 2071| Block 0 +# 2071| v2071_1(void) = EnterFunction : +# 2071| mu2071_2(unknown) = AliasedDefinition : +# 2071| mu2071_3(unknown) = InitializeNonLocal : +# 2071| r2071_4(glval) = VariableAddress[a] : +# 2071| mu2071_5(bool) = InitializeParameter[a] : &:r2071_4 +# 2071| r2071_6(glval) = VariableAddress[x] : +# 2071| mu2071_7(TernaryPodObj) = InitializeParameter[x] : &:r2071_6 +# 2071| r2071_8(glval) = VariableAddress[y] : +# 2071| mu2071_9(TernaryPodObj) = InitializeParameter[y] : &:r2071_8 +# 2071| r2071_10(glval) = VariableAddress[z] : +# 2071| mu2071_11(TernaryPodObj) = InitializeParameter[z] : &:r2071_10 +# 2072| r2072_1(glval) = VariableAddress[a] : +# 2072| r2072_2(bool) = Load[a] : &:r2072_1, ~m? +# 2072| v2072_3(void) = ConditionalBranch : r2072_2 +#-----| False -> Block 3 +#-----| True -> Block 2 + +# 2072| Block 1 +# 2072| r2072_4(glval) = VariableAddress[#temp2072:9] : +# 2072| r2072_5(TernaryPodObj) = Load[#temp2072:9] : &:r2072_4, ~m? +# 2072| r2072_6(glval) = VariableAddress[z] : +# 2072| mu2072_7(TernaryPodObj) = Store[z] : &:r2072_6, r2072_5 +# 2073| r2073_1(glval) = VariableAddress[#temp2073:9] : +# 2073| r2073_2(glval) = VariableAddress[a] : +# 2073| r2073_3(bool) = Load[a] : &:r2073_2, ~m? +# 2073| v2073_4(void) = ConditionalBranch : r2073_3 +#-----| False -> Block 6 +#-----| True -> Block 5 + +# 2072| Block 2 +# 2072| r2072_8(glval) = VariableAddress[x] : +# 2072| r2072_9(TernaryPodObj) = Load[x] : &:r2072_8, ~m? +# 2072| r2072_10(glval) = VariableAddress[#temp2072:9] : +# 2072| mu2072_11(TernaryPodObj) = Store[#temp2072:9] : &:r2072_10, r2072_9 +#-----| Goto -> Block 1 + +# 2072| Block 3 +# 2072| r2072_12(glval) = VariableAddress[y] : +# 2072| r2072_13(TernaryPodObj) = Load[y] : &:r2072_12, ~m? +# 2072| r2072_14(glval) = VariableAddress[#temp2072:9] : +# 2072| mu2072_15(TernaryPodObj) = Store[#temp2072:9] : &:r2072_14, r2072_13 +#-----| Goto -> Block 1 + +# 2073| Block 4 +# 2073| r2073_5(glval) = VariableAddress[#temp2073:9] : +# 2073| r2073_6(TernaryPodObj) = Load[#temp2073:9] : &:r2073_5, ~m? +# 2073| mu2073_7(TernaryPodObj) = Store[#temp2073:9] : &:r2073_1, r2073_6 +# 2073| r2073_8(TernaryPodObj) = Load[#temp2073:9] : &:r2073_1, ~m? +# 2073| r2073_9(glval) = VariableAddress[z] : +# 2073| mu2073_10(TernaryPodObj) = Store[z] : &:r2073_9, r2073_8 +# 2074| r2074_1(glval) = VariableAddress[#temp2074:9] : +# 2074| r2074_2(glval) = VariableAddress[a] : +# 2074| r2074_3(bool) = Load[a] : &:r2074_2, ~m? +# 2074| v2074_4(void) = ConditionalBranch : r2074_3 +#-----| False -> Block 9 +#-----| True -> Block 8 + +# 2073| Block 5 +# 2073| r2073_11(glval) = VariableAddress[#temp2073:13] : +# 2073| r2073_12(glval) = VariableAddress[x] : +# 2073| r2073_13(TernaryPodObj) = Load[x] : &:r2073_12, ~m? +# 2073| mu2073_14(TernaryPodObj) = Store[#temp2073:13] : &:r2073_11, r2073_13 +# 2073| r2073_15(TernaryPodObj) = Load[#temp2073:13] : &:r2073_11, ~m? +# 2073| r2073_16(glval) = VariableAddress[#temp2073:9] : +# 2073| mu2073_17(TernaryPodObj) = Store[#temp2073:9] : &:r2073_16, r2073_15 +#-----| Goto -> Block 4 + +# 2073| Block 6 +# 2073| r2073_18(glval) = VariableAddress[#temp2073:17] : +# 2073| r2073_19(TernaryPodObj) = Constant[0] : +# 2073| mu2073_20(TernaryPodObj) = Store[#temp2073:17] : &:r2073_18, r2073_19 +# 2073| r2073_21(TernaryPodObj) = Load[#temp2073:17] : &:r2073_18, ~m? +# 2073| r2073_22(glval) = VariableAddress[#temp2073:9] : +# 2073| mu2073_23(TernaryPodObj) = Store[#temp2073:9] : &:r2073_22, r2073_21 +#-----| Goto -> Block 4 + +# 2074| Block 7 +# 2074| r2074_5(glval) = VariableAddress[#temp2074:9] : +# 2074| r2074_6(TernaryPodObj) = Load[#temp2074:9] : &:r2074_5, ~m? +# 2074| mu2074_7(TernaryPodObj) = Store[#temp2074:9] : &:r2074_1, r2074_6 +# 2074| r2074_8(TernaryPodObj) = Load[#temp2074:9] : &:r2074_1, ~m? +# 2074| r2074_9(glval) = VariableAddress[z] : +# 2074| mu2074_10(TernaryPodObj) = Store[z] : &:r2074_9, r2074_8 +# 2075| r2075_1(glval) = VariableAddress[#temp2075:23] : +# 2075| r2075_2(TernaryPodObj) = Constant[0] : +# 2075| mu2075_3(TernaryPodObj) = Store[#temp2075:23] : &:r2075_1, r2075_2 +# 2075| r2075_4(TernaryPodObj) = Load[#temp2075:23] : &:r2075_1, ~m? +# 2075| r2075_5(glval) = VariableAddress[a] : +# 2075| r2075_6(bool) = Load[a] : &:r2075_5, ~m? +# 2075| v2075_7(void) = ConditionalBranch : r2075_6 +#-----| False -> Block 12 +#-----| True -> Block 11 + +# 2074| Block 8 +# 2074| r2074_11(glval) = VariableAddress[#temp2074:13] : +# 2074| r2074_12(TernaryPodObj) = Constant[0] : +# 2074| mu2074_13(TernaryPodObj) = Store[#temp2074:13] : &:r2074_11, r2074_12 +# 2074| r2074_14(TernaryPodObj) = Load[#temp2074:13] : &:r2074_11, ~m? +# 2074| r2074_15(glval) = VariableAddress[#temp2074:9] : +# 2074| mu2074_16(TernaryPodObj) = Store[#temp2074:9] : &:r2074_15, r2074_14 +#-----| Goto -> Block 7 + +# 2074| Block 9 +# 2074| r2074_17(glval) = VariableAddress[#temp2074:31] : +# 2074| r2074_18(TernaryPodObj) = Constant[0] : +# 2074| mu2074_19(TernaryPodObj) = Store[#temp2074:31] : &:r2074_17, r2074_18 +# 2074| r2074_20(TernaryPodObj) = Load[#temp2074:31] : &:r2074_17, ~m? +# 2074| r2074_21(glval) = VariableAddress[#temp2074:9] : +# 2074| mu2074_22(TernaryPodObj) = Store[#temp2074:9] : &:r2074_21, r2074_20 +#-----| Goto -> Block 7 + +# 2075| Block 10 +# 2075| r2075_8(glval) = VariableAddress[#temp2075:10] : +# 2075| r2075_9(TernaryPodObj) = Load[#temp2075:10] : &:r2075_8, ~m? +# 2075| r2075_10(glval) = VariableAddress[z] : +# 2075| mu2075_11(TernaryPodObj) = Store[z] : &:r2075_10, r2075_9 +# 2075| r2075_12(glval) = CopyValue : r2075_10 +# 2075| mu2075_13(TernaryPodObj) = Store[?] : &:r2075_12, r2075_4 +# 2076| v2076_1(void) = NoOp : +# 2071| v2071_12(void) = ReturnVoid : +# 2071| v2071_13(void) = AliasedUse : ~m? +# 2071| v2071_14(void) = ExitFunction : + +# 2075| Block 11 +# 2075| r2075_14(glval) = VariableAddress[x] : +# 2075| r2075_15(TernaryPodObj) = Load[x] : &:r2075_14, ~m? +# 2075| r2075_16(glval) = VariableAddress[#temp2075:10] : +# 2075| mu2075_17(TernaryPodObj) = Store[#temp2075:10] : &:r2075_16, r2075_15 +#-----| Goto -> Block 10 + +# 2075| Block 12 +# 2075| r2075_18(glval) = VariableAddress[y] : +# 2075| r2075_19(TernaryPodObj) = Load[y] : &:r2075_18, ~m? +# 2075| r2075_20(glval) = VariableAddress[#temp2075:10] : +# 2075| mu2075_21(TernaryPodObj) = Store[#temp2075:10] : &:r2075_20, r2075_19 +#-----| Goto -> Block 10 + +# 2078| TernaryNonPodObj& TernaryNonPodObj::operator=(TernaryNonPodObj const&) +# 2078| Block 0 +# 2078| v2078_1(void) = EnterFunction : +# 2078| mu2078_2(unknown) = AliasedDefinition : +# 2078| mu2078_3(unknown) = InitializeNonLocal : +# 2078| r2078_4(glval) = VariableAddress[#this] : +# 2078| mu2078_5(glval) = InitializeParameter[#this] : &:r2078_4 +# 2078| r2078_6(glval) = Load[#this] : &:r2078_4, ~m? +# 2078| mu2078_7(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2078_6 #-----| r0_1(glval) = VariableAddress[(unnamed parameter 0)] : #-----| mu0_2(TernaryNonPodObj &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(TernaryNonPodObj &) = Load[(unnamed parameter 0)] : &:r0_1, ~m? @@ -14016,1942 +14016,1927 @@ ir.cpp: #-----| r0_8(glval) = CopyValue : r0_7 #-----| r0_9(TernaryNonPodObj &) = CopyValue : r0_8 #-----| mu0_10(TernaryNonPodObj &) = Store[#return] : &:r0_5, r0_9 -# 2076| v2076_8(void) = ReturnIndirection[#this] : &:r2076_6, ~m? +# 2078| v2078_8(void) = ReturnIndirection[#this] : &:r2078_6, ~m? #-----| v0_11(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, ~m? -# 2076| r2076_9(glval) = VariableAddress[#return] : -# 2076| v2076_10(void) = ReturnValue : &:r2076_9, ~m? -# 2076| v2076_11(void) = AliasedUse : ~m? -# 2076| v2076_12(void) = ExitFunction : +# 2078| r2078_9(glval) = VariableAddress[#return] : +# 2078| v2078_10(void) = ReturnValue : &:r2078_9, ~m? +# 2078| v2078_11(void) = AliasedUse : ~m? +# 2078| v2078_12(void) = ExitFunction : -# 2076| void TernaryNonPodObj::TernaryNonPodObj() -# 2076| Block 0 -# 2076| v2076_1(void) = EnterFunction : -# 2076| mu2076_2(unknown) = AliasedDefinition : -# 2076| mu2076_3(unknown) = InitializeNonLocal : -# 2076| r2076_4(glval) = VariableAddress[#this] : -# 2076| mu2076_5(glval) = InitializeParameter[#this] : &:r2076_4 -# 2076| r2076_6(glval) = Load[#this] : &:r2076_4, ~m? -# 2076| mu2076_7(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2076_6 -# 2076| v2076_8(void) = NoOp : -# 2076| v2076_9(void) = ReturnIndirection[#this] : &:r2076_6, ~m? -# 2076| v2076_10(void) = ReturnVoid : -# 2076| v2076_11(void) = AliasedUse : ~m? -# 2076| v2076_12(void) = ExitFunction : +# 2078| void TernaryNonPodObj::TernaryNonPodObj() +# 2078| Block 0 +# 2078| v2078_1(void) = EnterFunction : +# 2078| mu2078_2(unknown) = AliasedDefinition : +# 2078| mu2078_3(unknown) = InitializeNonLocal : +# 2078| r2078_4(glval) = VariableAddress[#this] : +# 2078| mu2078_5(glval) = InitializeParameter[#this] : &:r2078_4 +# 2078| r2078_6(glval) = Load[#this] : &:r2078_4, ~m? +# 2078| mu2078_7(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2078_6 +# 2078| v2078_8(void) = NoOp : +# 2078| v2078_9(void) = ReturnIndirection[#this] : &:r2078_6, ~m? +# 2078| v2078_10(void) = ReturnVoid : +# 2078| v2078_11(void) = AliasedUse : ~m? +# 2078| v2078_12(void) = ExitFunction : -# 2076| void TernaryNonPodObj::TernaryNonPodObj(TernaryNonPodObj const&) -# 2076| Block 0 -# 2076| v2076_1(void) = EnterFunction : -# 2076| mu2076_2(unknown) = AliasedDefinition : -# 2076| mu2076_3(unknown) = InitializeNonLocal : -# 2076| r2076_4(glval) = VariableAddress[#this] : -# 2076| mu2076_5(glval) = InitializeParameter[#this] : &:r2076_4 -# 2076| r2076_6(glval) = Load[#this] : &:r2076_4, ~m? -# 2076| mu2076_7(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2076_6 +# 2078| void TernaryNonPodObj::TernaryNonPodObj(TernaryNonPodObj const&) +# 2078| Block 0 +# 2078| v2078_1(void) = EnterFunction : +# 2078| mu2078_2(unknown) = AliasedDefinition : +# 2078| mu2078_3(unknown) = InitializeNonLocal : +# 2078| r2078_4(glval) = VariableAddress[#this] : +# 2078| mu2078_5(glval) = InitializeParameter[#this] : &:r2078_4 +# 2078| r2078_6(glval) = Load[#this] : &:r2078_4, ~m? +# 2078| mu2078_7(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2078_6 #-----| r0_1(glval) = VariableAddress[(unnamed parameter 0)] : #-----| mu0_2(TernaryNonPodObj &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(TernaryNonPodObj &) = Load[(unnamed parameter 0)] : &:r0_1, ~m? #-----| mu0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 2076| v2076_8(void) = NoOp : -# 2076| v2076_9(void) = ReturnIndirection[#this] : &:r2076_6, ~m? +# 2078| v2078_8(void) = NoOp : +# 2078| v2078_9(void) = ReturnIndirection[#this] : &:r2078_6, ~m? #-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, ~m? -# 2076| v2076_10(void) = ReturnVoid : -# 2076| v2076_11(void) = AliasedUse : ~m? -# 2076| v2076_12(void) = ExitFunction : +# 2078| v2078_10(void) = ReturnVoid : +# 2078| v2078_11(void) = AliasedUse : ~m? +# 2078| v2078_12(void) = ExitFunction : -# 2077| void TernaryNonPodObj::~TernaryNonPodObj() -# 2077| Block 0 -# 2077| v2077_1(void) = EnterFunction : -# 2077| mu2077_2(unknown) = AliasedDefinition : -# 2077| mu2077_3(unknown) = InitializeNonLocal : -# 2077| r2077_4(glval) = VariableAddress[#this] : -# 2077| mu2077_5(glval) = InitializeParameter[#this] : &:r2077_4 -# 2077| r2077_6(glval) = Load[#this] : &:r2077_4, ~m? -# 2077| mu2077_7(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2077_6 -# 2077| v2077_8(void) = NoOp : -# 2077| v2077_9(void) = ReturnIndirection[#this] : &:r2077_6, ~m? -# 2077| v2077_10(void) = ReturnVoid : -# 2077| v2077_11(void) = AliasedUse : ~m? -# 2077| v2077_12(void) = ExitFunction : +# 2079| void TernaryNonPodObj::~TernaryNonPodObj() +# 2079| Block 0 +# 2079| v2079_1(void) = EnterFunction : +# 2079| mu2079_2(unknown) = AliasedDefinition : +# 2079| mu2079_3(unknown) = InitializeNonLocal : +# 2079| r2079_4(glval) = VariableAddress[#this] : +# 2079| mu2079_5(glval) = InitializeParameter[#this] : &:r2079_4 +# 2079| r2079_6(glval) = Load[#this] : &:r2079_4, ~m? +# 2079| mu2079_7(TernaryNonPodObj) = InitializeIndirection[#this] : &:r2079_6 +# 2079| v2079_8(void) = NoOp : +# 2079| v2079_9(void) = ReturnIndirection[#this] : &:r2079_6, ~m? +# 2079| v2079_10(void) = ReturnVoid : +# 2079| v2079_11(void) = AliasedUse : ~m? +# 2079| v2079_12(void) = ExitFunction : -# 2080| void TernaryTestNonPodObj(bool, TernaryNonPodObj, TernaryNonPodObj, TernaryNonPodObj) -# 2080| Block 0 -# 2080| v2080_1(void) = EnterFunction : -# 2080| mu2080_2(unknown) = AliasedDefinition : -# 2080| mu2080_3(unknown) = InitializeNonLocal : -# 2080| r2080_4(glval) = VariableAddress[a] : -# 2080| mu2080_5(bool) = InitializeParameter[a] : &:r2080_4 -# 2080| r2080_6(glval) = VariableAddress[x] : -# 2080| mu2080_7(TernaryNonPodObj) = InitializeParameter[x] : &:r2080_6 -# 2080| r2080_8(glval) = VariableAddress[y] : -# 2080| mu2080_9(TernaryNonPodObj) = InitializeParameter[y] : &:r2080_8 -# 2080| r2080_10(glval) = VariableAddress[z] : -# 2080| mu2080_11(TernaryNonPodObj) = InitializeParameter[z] : &:r2080_10 -# 2081| r2081_1(glval) = VariableAddress[z] : -# 2081| r2081_2(glval) = FunctionAddress[operator=] : -# 2081| r2081_3(glval) = VariableAddress[a] : -# 2081| r2081_4(bool) = Load[a] : &:r2081_3, ~m? -# 2081| v2081_5(void) = ConditionalBranch : r2081_4 +# 2082| void TernaryTestNonPodObj(bool, TernaryNonPodObj, TernaryNonPodObj, TernaryNonPodObj) +# 2082| Block 0 +# 2082| v2082_1(void) = EnterFunction : +# 2082| mu2082_2(unknown) = AliasedDefinition : +# 2082| mu2082_3(unknown) = InitializeNonLocal : +# 2082| r2082_4(glval) = VariableAddress[a] : +# 2082| mu2082_5(bool) = InitializeParameter[a] : &:r2082_4 +# 2082| r2082_6(glval) = VariableAddress[x] : +# 2082| mu2082_7(TernaryNonPodObj) = InitializeParameter[x] : &:r2082_6 +# 2082| r2082_8(glval) = VariableAddress[y] : +# 2082| mu2082_9(TernaryNonPodObj) = InitializeParameter[y] : &:r2082_8 +# 2082| r2082_10(glval) = VariableAddress[z] : +# 2082| mu2082_11(TernaryNonPodObj) = InitializeParameter[z] : &:r2082_10 +# 2083| r2083_1(glval) = VariableAddress[z] : +# 2083| r2083_2(glval) = FunctionAddress[operator=] : +# 2083| r2083_3(glval) = VariableAddress[a] : +# 2083| r2083_4(bool) = Load[a] : &:r2083_3, ~m? +# 2083| v2083_5(void) = ConditionalBranch : r2083_4 #-----| False -> Block 3 #-----| True -> Block 2 -# 2081| Block 1 -# 2081| r2081_6(glval) = VariableAddress[#temp2081:9] : -# 2081| r2081_7(glval) = Load[#temp2081:9] : &:r2081_6, ~m? -# 2081| r2081_8(glval) = Convert : r2081_7 -# 2081| r2081_9(TernaryNonPodObj &) = CopyValue : r2081_8 -# 2081| r2081_10(TernaryNonPodObj &) = Call[operator=] : func:r2081_2, this:r2081_1, 0:r2081_9 -# 2081| mu2081_11(unknown) = ^CallSideEffect : ~m? -# 2081| v2081_12(void) = ^IndirectReadSideEffect[-1] : &:r2081_1, ~m? -# 2081| v2081_13(void) = ^BufferReadSideEffect[0] : &:r2081_9, ~m? -# 2081| mu2081_14(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2081_1 -# 2081| r2081_15(glval) = CopyValue : r2081_10 -# 2082| r2082_1(glval) = VariableAddress[z] : -# 2082| r2082_2(glval) = FunctionAddress[operator=] : -# 2082| r2082_3(glval) = VariableAddress[#temp2082:9] : -# 2082| r2082_4(glval) = VariableAddress[a] : -# 2082| r2082_5(bool) = Load[a] : &:r2082_4, ~m? -# 2082| v2082_6(void) = ConditionalBranch : r2082_5 +# 2083| Block 1 +# 2083| r2083_6(glval) = VariableAddress[#temp2083:9] : +# 2083| r2083_7(glval) = Load[#temp2083:9] : &:r2083_6, ~m? +# 2083| r2083_8(glval) = Convert : r2083_7 +# 2083| r2083_9(TernaryNonPodObj &) = CopyValue : r2083_8 +# 2083| r2083_10(TernaryNonPodObj &) = Call[operator=] : func:r2083_2, this:r2083_1, 0:r2083_9 +# 2083| mu2083_11(unknown) = ^CallSideEffect : ~m? +# 2083| v2083_12(void) = ^IndirectReadSideEffect[-1] : &:r2083_1, ~m? +# 2083| v2083_13(void) = ^BufferReadSideEffect[0] : &:r2083_9, ~m? +# 2083| mu2083_14(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2083_1 +# 2083| r2083_15(glval) = CopyValue : r2083_10 +# 2084| r2084_1(glval) = VariableAddress[z] : +# 2084| r2084_2(glval) = FunctionAddress[operator=] : +# 2084| r2084_3(glval) = VariableAddress[#temp2084:9] : +# 2084| r2084_4(glval) = VariableAddress[a] : +# 2084| r2084_5(bool) = Load[a] : &:r2084_4, ~m? +# 2084| v2084_6(void) = ConditionalBranch : r2084_5 #-----| False -> Block 6 #-----| True -> Block 5 -# 2081| Block 2 -# 2081| r2081_16(glval) = VariableAddress[x] : -# 2081| r2081_17(glval) = VariableAddress[#temp2081:9] : -# 2081| mu2081_18(glval) = Store[#temp2081:9] : &:r2081_17, r2081_16 +# 2083| Block 2 +# 2083| r2083_16(glval) = VariableAddress[x] : +# 2083| r2083_17(glval) = VariableAddress[#temp2083:9] : +# 2083| mu2083_18(glval) = Store[#temp2083:9] : &:r2083_17, r2083_16 #-----| Goto -> Block 1 -# 2081| Block 3 -# 2081| r2081_19(glval) = VariableAddress[y] : -# 2081| r2081_20(glval) = VariableAddress[#temp2081:9] : -# 2081| mu2081_21(glval) = Store[#temp2081:9] : &:r2081_20, r2081_19 +# 2083| Block 3 +# 2083| r2083_19(glval) = VariableAddress[y] : +# 2083| r2083_20(glval) = VariableAddress[#temp2083:9] : +# 2083| mu2083_21(glval) = Store[#temp2083:9] : &:r2083_20, r2083_19 #-----| Goto -> Block 1 -# 2082| Block 4 -# 2082| r2082_7(glval) = VariableAddress[#temp2082:9] : -# 2082| r2082_8(TernaryNonPodObj) = Load[#temp2082:9] : &:r2082_7, ~m? -# 2082| mu2082_9(TernaryNonPodObj) = Store[#temp2082:9] : &:r2082_3, r2082_8 -# 2082| r2082_10(glval) = Convert : r2082_3 -# 2082| r2082_11(TernaryNonPodObj &) = CopyValue : r2082_10 -# 2082| r2082_12(TernaryNonPodObj &) = Call[operator=] : func:r2082_2, this:r2082_1, 0:r2082_11 -# 2082| mu2082_13(unknown) = ^CallSideEffect : ~m? -# 2082| v2082_14(void) = ^IndirectReadSideEffect[-1] : &:r2082_1, ~m? -# 2082| v2082_15(void) = ^BufferReadSideEffect[0] : &:r2082_11, ~m? -# 2082| mu2082_16(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2082_1 -# 2082| r2082_17(glval) = CopyValue : r2082_3 -# 2082| r2082_18(glval) = FunctionAddress[~TernaryNonPodObj] : -# 2082| v2082_19(void) = Call[~TernaryNonPodObj] : func:r2082_18, this:r2082_17 -# 2082| mu2082_20(unknown) = ^CallSideEffect : ~m? -# 2082| v2082_21(void) = ^IndirectReadSideEffect[-1] : &:r2082_17, ~m? -# 2082| mu2082_22(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2082_17 -# 2082| r2082_23(glval) = CopyValue : r2082_12 -# 2083| r2083_1(glval) = VariableAddress[z] : -# 2083| r2083_2(glval) = FunctionAddress[operator=] : -# 2083| r2083_3(glval) = VariableAddress[#temp2083:9] : -# 2083| r2083_4(glval) = VariableAddress[a] : -# 2083| r2083_5(bool) = Load[a] : &:r2083_4, ~m? -# 2083| v2083_6(void) = ConditionalBranch : r2083_5 +# 2084| Block 4 +# 2084| r2084_7(glval) = VariableAddress[#temp2084:9] : +# 2084| r2084_8(TernaryNonPodObj) = Load[#temp2084:9] : &:r2084_7, ~m? +# 2084| mu2084_9(TernaryNonPodObj) = Store[#temp2084:9] : &:r2084_3, r2084_8 +# 2084| r2084_10(glval) = Convert : r2084_3 +# 2084| r2084_11(TernaryNonPodObj &) = CopyValue : r2084_10 +# 2084| r2084_12(TernaryNonPodObj &) = Call[operator=] : func:r2084_2, this:r2084_1, 0:r2084_11 +# 2084| mu2084_13(unknown) = ^CallSideEffect : ~m? +# 2084| v2084_14(void) = ^IndirectReadSideEffect[-1] : &:r2084_1, ~m? +# 2084| v2084_15(void) = ^BufferReadSideEffect[0] : &:r2084_11, ~m? +# 2084| mu2084_16(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2084_1 +# 2084| r2084_17(glval) = CopyValue : r2084_3 +# 2084| r2084_18(glval) = FunctionAddress[~TernaryNonPodObj] : +# 2084| v2084_19(void) = Call[~TernaryNonPodObj] : func:r2084_18, this:r2084_17 +# 2084| mu2084_20(unknown) = ^CallSideEffect : ~m? +# 2084| v2084_21(void) = ^IndirectReadSideEffect[-1] : &:r2084_17, ~m? +# 2084| mu2084_22(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2084_17 +# 2084| r2084_23(glval) = CopyValue : r2084_12 +# 2085| r2085_1(glval) = VariableAddress[z] : +# 2085| r2085_2(glval) = FunctionAddress[operator=] : +# 2085| r2085_3(glval) = VariableAddress[#temp2085:9] : +# 2085| r2085_4(glval) = VariableAddress[a] : +# 2085| r2085_5(bool) = Load[a] : &:r2085_4, ~m? +# 2085| v2085_6(void) = ConditionalBranch : r2085_5 #-----| False -> Block 9 #-----| True -> Block 8 -# 2082| Block 5 -# 2082| r2082_24(glval) = VariableAddress[#temp2082:13] : -# 2082| mu2082_25(TernaryNonPodObj) = Uninitialized[#temp2082:13] : &:r2082_24 -# 2082| r2082_26(glval) = FunctionAddress[TernaryNonPodObj] : -# 2082| r2082_27(glval) = VariableAddress[x] : -# 2082| r2082_28(glval) = Convert : r2082_27 -# 2082| r2082_29(TernaryNonPodObj &) = CopyValue : r2082_28 -# 2082| v2082_30(void) = Call[TernaryNonPodObj] : func:r2082_26, this:r2082_24, 0:r2082_29 -# 2082| mu2082_31(unknown) = ^CallSideEffect : ~m? -# 2082| v2082_32(void) = ^BufferReadSideEffect[0] : &:r2082_29, ~m? -# 2082| mu2082_33(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2082_24 -# 2082| r2082_34(TernaryNonPodObj) = Load[#temp2082:13] : &:r2082_24, ~m? -# 2082| r2082_35(glval) = VariableAddress[#temp2082:9] : -# 2082| mu2082_36(TernaryNonPodObj) = Store[#temp2082:9] : &:r2082_35, r2082_34 +# 2084| Block 5 +# 2084| r2084_24(glval) = VariableAddress[#temp2084:13] : +# 2084| mu2084_25(TernaryNonPodObj) = Uninitialized[#temp2084:13] : &:r2084_24 +# 2084| r2084_26(glval) = FunctionAddress[TernaryNonPodObj] : +# 2084| r2084_27(glval) = VariableAddress[x] : +# 2084| r2084_28(glval) = Convert : r2084_27 +# 2084| r2084_29(TernaryNonPodObj &) = CopyValue : r2084_28 +# 2084| v2084_30(void) = Call[TernaryNonPodObj] : func:r2084_26, this:r2084_24, 0:r2084_29 +# 2084| mu2084_31(unknown) = ^CallSideEffect : ~m? +# 2084| v2084_32(void) = ^BufferReadSideEffect[0] : &:r2084_29, ~m? +# 2084| mu2084_33(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2084_24 +# 2084| r2084_34(TernaryNonPodObj) = Load[#temp2084:13] : &:r2084_24, ~m? +# 2084| r2084_35(glval) = VariableAddress[#temp2084:9] : +# 2084| mu2084_36(TernaryNonPodObj) = Store[#temp2084:9] : &:r2084_35, r2084_34 #-----| Goto -> Block 4 -# 2082| Block 6 -# 2082| r2082_37(glval) = VariableAddress[#temp2082:17] : -# 2082| mu2082_38(TernaryNonPodObj) = Uninitialized[#temp2082:17] : &:r2082_37 -# 2082| r2082_39(glval) = FunctionAddress[TernaryNonPodObj] : -# 2082| v2082_40(void) = Call[TernaryNonPodObj] : func:r2082_39, this:r2082_37 -# 2082| mu2082_41(unknown) = ^CallSideEffect : ~m? -# 2082| mu2082_42(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2082_37 -# 2082| r2082_43(TernaryNonPodObj) = Load[#temp2082:17] : &:r2082_37, ~m? -# 2082| r2082_44(glval) = VariableAddress[#temp2082:9] : -# 2082| mu2082_45(TernaryNonPodObj) = Store[#temp2082:9] : &:r2082_44, r2082_43 +# 2084| Block 6 +# 2084| r2084_37(glval) = VariableAddress[#temp2084:17] : +# 2084| mu2084_38(TernaryNonPodObj) = Uninitialized[#temp2084:17] : &:r2084_37 +# 2084| r2084_39(glval) = FunctionAddress[TernaryNonPodObj] : +# 2084| v2084_40(void) = Call[TernaryNonPodObj] : func:r2084_39, this:r2084_37 +# 2084| mu2084_41(unknown) = ^CallSideEffect : ~m? +# 2084| mu2084_42(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2084_37 +# 2084| r2084_43(TernaryNonPodObj) = Load[#temp2084:17] : &:r2084_37, ~m? +# 2084| r2084_44(glval) = VariableAddress[#temp2084:9] : +# 2084| mu2084_45(TernaryNonPodObj) = Store[#temp2084:9] : &:r2084_44, r2084_43 #-----| Goto -> Block 4 -# 2083| Block 7 -# 2083| r2083_7(glval) = VariableAddress[#temp2083:9] : -# 2083| r2083_8(TernaryNonPodObj) = Load[#temp2083:9] : &:r2083_7, ~m? -# 2083| mu2083_9(TernaryNonPodObj) = Store[#temp2083:9] : &:r2083_3, r2083_8 -# 2083| r2083_10(glval) = Convert : r2083_3 -# 2083| r2083_11(TernaryNonPodObj &) = CopyValue : r2083_10 -# 2083| r2083_12(TernaryNonPodObj &) = Call[operator=] : func:r2083_2, this:r2083_1, 0:r2083_11 -# 2083| mu2083_13(unknown) = ^CallSideEffect : ~m? -# 2083| v2083_14(void) = ^IndirectReadSideEffect[-1] : &:r2083_1, ~m? -# 2083| v2083_15(void) = ^BufferReadSideEffect[0] : &:r2083_11, ~m? -# 2083| mu2083_16(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2083_1 -# 2083| r2083_17(glval) = CopyValue : r2083_3 -# 2083| r2083_18(glval) = FunctionAddress[~TernaryNonPodObj] : -# 2083| v2083_19(void) = Call[~TernaryNonPodObj] : func:r2083_18, this:r2083_17 -# 2083| mu2083_20(unknown) = ^CallSideEffect : ~m? -# 2083| v2083_21(void) = ^IndirectReadSideEffect[-1] : &:r2083_17, ~m? -# 2083| mu2083_22(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2083_17 -# 2083| r2083_23(glval) = CopyValue : r2083_12 -# 2084| r2084_1(glval) = VariableAddress[z] : -# 2084| r2084_2(glval) = FunctionAddress[operator=] : -# 2084| r2084_3(glval) = VariableAddress[a] : -# 2084| r2084_4(bool) = Load[a] : &:r2084_3, ~m? -# 2084| v2084_5(void) = ConditionalBranch : r2084_4 +# 2085| Block 7 +# 2085| r2085_7(glval) = VariableAddress[#temp2085:9] : +# 2085| r2085_8(TernaryNonPodObj) = Load[#temp2085:9] : &:r2085_7, ~m? +# 2085| mu2085_9(TernaryNonPodObj) = Store[#temp2085:9] : &:r2085_3, r2085_8 +# 2085| r2085_10(glval) = Convert : r2085_3 +# 2085| r2085_11(TernaryNonPodObj &) = CopyValue : r2085_10 +# 2085| r2085_12(TernaryNonPodObj &) = Call[operator=] : func:r2085_2, this:r2085_1, 0:r2085_11 +# 2085| mu2085_13(unknown) = ^CallSideEffect : ~m? +# 2085| v2085_14(void) = ^IndirectReadSideEffect[-1] : &:r2085_1, ~m? +# 2085| v2085_15(void) = ^BufferReadSideEffect[0] : &:r2085_11, ~m? +# 2085| mu2085_16(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2085_1 +# 2085| r2085_17(glval) = CopyValue : r2085_3 +# 2085| r2085_18(glval) = FunctionAddress[~TernaryNonPodObj] : +# 2085| v2085_19(void) = Call[~TernaryNonPodObj] : func:r2085_18, this:r2085_17 +# 2085| mu2085_20(unknown) = ^CallSideEffect : ~m? +# 2085| v2085_21(void) = ^IndirectReadSideEffect[-1] : &:r2085_17, ~m? +# 2085| mu2085_22(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2085_17 +# 2085| r2085_23(glval) = CopyValue : r2085_12 +# 2086| r2086_1(glval) = VariableAddress[z] : +# 2086| r2086_2(glval) = FunctionAddress[operator=] : +# 2086| r2086_3(glval) = VariableAddress[a] : +# 2086| r2086_4(bool) = Load[a] : &:r2086_3, ~m? +# 2086| v2086_5(void) = ConditionalBranch : r2086_4 #-----| False -> Block 12 #-----| True -> Block 11 -# 2083| Block 8 -# 2083| r2083_24(glval) = VariableAddress[#temp2083:13] : -# 2083| mu2083_25(TernaryNonPodObj) = Uninitialized[#temp2083:13] : &:r2083_24 -# 2083| r2083_26(glval) = FunctionAddress[TernaryNonPodObj] : -# 2083| v2083_27(void) = Call[TernaryNonPodObj] : func:r2083_26, this:r2083_24 -# 2083| mu2083_28(unknown) = ^CallSideEffect : ~m? -# 2083| mu2083_29(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2083_24 -# 2083| r2083_30(TernaryNonPodObj) = Load[#temp2083:13] : &:r2083_24, ~m? -# 2083| r2083_31(glval) = VariableAddress[#temp2083:9] : -# 2083| mu2083_32(TernaryNonPodObj) = Store[#temp2083:9] : &:r2083_31, r2083_30 +# 2085| Block 8 +# 2085| r2085_24(glval) = VariableAddress[#temp2085:13] : +# 2085| mu2085_25(TernaryNonPodObj) = Uninitialized[#temp2085:13] : &:r2085_24 +# 2085| r2085_26(glval) = FunctionAddress[TernaryNonPodObj] : +# 2085| v2085_27(void) = Call[TernaryNonPodObj] : func:r2085_26, this:r2085_24 +# 2085| mu2085_28(unknown) = ^CallSideEffect : ~m? +# 2085| mu2085_29(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2085_24 +# 2085| r2085_30(TernaryNonPodObj) = Load[#temp2085:13] : &:r2085_24, ~m? +# 2085| r2085_31(glval) = VariableAddress[#temp2085:9] : +# 2085| mu2085_32(TernaryNonPodObj) = Store[#temp2085:9] : &:r2085_31, r2085_30 #-----| Goto -> Block 7 -# 2083| Block 9 -# 2083| r2083_33(glval) = VariableAddress[#temp2083:34] : -# 2083| mu2083_34(TernaryNonPodObj) = Uninitialized[#temp2083:34] : &:r2083_33 -# 2083| r2083_35(glval) = FunctionAddress[TernaryNonPodObj] : -# 2083| v2083_36(void) = Call[TernaryNonPodObj] : func:r2083_35, this:r2083_33 -# 2083| mu2083_37(unknown) = ^CallSideEffect : ~m? -# 2083| mu2083_38(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2083_33 -# 2083| r2083_39(TernaryNonPodObj) = Load[#temp2083:34] : &:r2083_33, ~m? -# 2083| r2083_40(glval) = VariableAddress[#temp2083:9] : -# 2083| mu2083_41(TernaryNonPodObj) = Store[#temp2083:9] : &:r2083_40, r2083_39 +# 2085| Block 9 +# 2085| r2085_33(glval) = VariableAddress[#temp2085:34] : +# 2085| mu2085_34(TernaryNonPodObj) = Uninitialized[#temp2085:34] : &:r2085_33 +# 2085| r2085_35(glval) = FunctionAddress[TernaryNonPodObj] : +# 2085| v2085_36(void) = Call[TernaryNonPodObj] : func:r2085_35, this:r2085_33 +# 2085| mu2085_37(unknown) = ^CallSideEffect : ~m? +# 2085| mu2085_38(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2085_33 +# 2085| r2085_39(TernaryNonPodObj) = Load[#temp2085:34] : &:r2085_33, ~m? +# 2085| r2085_40(glval) = VariableAddress[#temp2085:9] : +# 2085| mu2085_41(TernaryNonPodObj) = Store[#temp2085:9] : &:r2085_40, r2085_39 #-----| Goto -> Block 7 -# 2084| Block 10 -# 2084| r2084_6(glval) = VariableAddress[#temp2084:10] : -# 2084| r2084_7(glval) = Load[#temp2084:10] : &:r2084_6, ~m? -# 2084| r2084_8(glval) = Convert : r2084_7 -# 2084| r2084_9(TernaryNonPodObj &) = CopyValue : r2084_8 -# 2084| r2084_10(TernaryNonPodObj &) = Call[operator=] : func:r2084_2, this:r2084_1, 0:r2084_9 -# 2084| mu2084_11(unknown) = ^CallSideEffect : ~m? -# 2084| v2084_12(void) = ^IndirectReadSideEffect[-1] : &:r2084_1, ~m? -# 2084| v2084_13(void) = ^BufferReadSideEffect[0] : &:r2084_9, ~m? -# 2084| mu2084_14(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2084_1 -# 2084| r2084_15(glval) = CopyValue : r2084_10 -# 2084| r2084_16(glval) = FunctionAddress[operator=] : -# 2084| r2084_17(glval) = VariableAddress[#temp2084:23] : -# 2084| mu2084_18(TernaryNonPodObj) = Uninitialized[#temp2084:23] : &:r2084_17 -# 2084| r2084_19(glval) = FunctionAddress[TernaryNonPodObj] : -# 2084| v2084_20(void) = Call[TernaryNonPodObj] : func:r2084_19, this:r2084_17 -# 2084| mu2084_21(unknown) = ^CallSideEffect : ~m? -# 2084| mu2084_22(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2084_17 -# 2084| r2084_23(glval) = Convert : r2084_17 -# 2084| r2084_24(TernaryNonPodObj &) = CopyValue : r2084_23 -# 2084| r2084_25(TernaryNonPodObj &) = Call[operator=] : func:r2084_16, this:r2084_15, 0:r2084_24 -# 2084| mu2084_26(unknown) = ^CallSideEffect : ~m? -# 2084| v2084_27(void) = ^IndirectReadSideEffect[-1] : &:r2084_15, ~m? -# 2084| v2084_28(void) = ^BufferReadSideEffect[0] : &:r2084_24, ~m? -# 2084| mu2084_29(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2084_15 -# 2084| r2084_30(glval) = CopyValue : r2084_17 -# 2084| r2084_31(glval) = FunctionAddress[~TernaryNonPodObj] : -# 2084| v2084_32(void) = Call[~TernaryNonPodObj] : func:r2084_31, this:r2084_30 -# 2084| mu2084_33(unknown) = ^CallSideEffect : ~m? -# 2084| v2084_34(void) = ^IndirectReadSideEffect[-1] : &:r2084_30, ~m? -# 2084| mu2084_35(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2084_30 -# 2084| r2084_36(glval) = CopyValue : r2084_25 -# 2085| v2085_1(void) = NoOp : -# 2080| v2080_12(void) = ReturnVoid : -# 2080| v2080_13(void) = AliasedUse : ~m? -# 2080| v2080_14(void) = ExitFunction : +# 2086| Block 10 +# 2086| r2086_6(glval) = VariableAddress[#temp2086:10] : +# 2086| r2086_7(glval) = Load[#temp2086:10] : &:r2086_6, ~m? +# 2086| r2086_8(glval) = Convert : r2086_7 +# 2086| r2086_9(TernaryNonPodObj &) = CopyValue : r2086_8 +# 2086| r2086_10(TernaryNonPodObj &) = Call[operator=] : func:r2086_2, this:r2086_1, 0:r2086_9 +# 2086| mu2086_11(unknown) = ^CallSideEffect : ~m? +# 2086| v2086_12(void) = ^IndirectReadSideEffect[-1] : &:r2086_1, ~m? +# 2086| v2086_13(void) = ^BufferReadSideEffect[0] : &:r2086_9, ~m? +# 2086| mu2086_14(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2086_1 +# 2086| r2086_15(glval) = CopyValue : r2086_10 +# 2086| r2086_16(glval) = FunctionAddress[operator=] : +# 2086| r2086_17(glval) = VariableAddress[#temp2086:23] : +# 2086| mu2086_18(TernaryNonPodObj) = Uninitialized[#temp2086:23] : &:r2086_17 +# 2086| r2086_19(glval) = FunctionAddress[TernaryNonPodObj] : +# 2086| v2086_20(void) = Call[TernaryNonPodObj] : func:r2086_19, this:r2086_17 +# 2086| mu2086_21(unknown) = ^CallSideEffect : ~m? +# 2086| mu2086_22(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2086_17 +# 2086| r2086_23(glval) = Convert : r2086_17 +# 2086| r2086_24(TernaryNonPodObj &) = CopyValue : r2086_23 +# 2086| r2086_25(TernaryNonPodObj &) = Call[operator=] : func:r2086_16, this:r2086_15, 0:r2086_24 +# 2086| mu2086_26(unknown) = ^CallSideEffect : ~m? +# 2086| v2086_27(void) = ^IndirectReadSideEffect[-1] : &:r2086_15, ~m? +# 2086| v2086_28(void) = ^BufferReadSideEffect[0] : &:r2086_24, ~m? +# 2086| mu2086_29(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2086_15 +# 2086| r2086_30(glval) = CopyValue : r2086_17 +# 2086| r2086_31(glval) = FunctionAddress[~TernaryNonPodObj] : +# 2086| v2086_32(void) = Call[~TernaryNonPodObj] : func:r2086_31, this:r2086_30 +# 2086| mu2086_33(unknown) = ^CallSideEffect : ~m? +# 2086| v2086_34(void) = ^IndirectReadSideEffect[-1] : &:r2086_30, ~m? +# 2086| mu2086_35(TernaryNonPodObj) = ^IndirectMayWriteSideEffect[-1] : &:r2086_30 +# 2086| r2086_36(glval) = CopyValue : r2086_25 +# 2087| v2087_1(void) = NoOp : +# 2082| v2082_12(void) = ReturnVoid : +# 2082| v2082_13(void) = AliasedUse : ~m? +# 2082| v2082_14(void) = ExitFunction : -# 2084| Block 11 -# 2084| r2084_37(glval) = VariableAddress[x] : -# 2084| r2084_38(glval) = VariableAddress[#temp2084:10] : -# 2084| mu2084_39(glval) = Store[#temp2084:10] : &:r2084_38, r2084_37 +# 2086| Block 11 +# 2086| r2086_37(glval) = VariableAddress[x] : +# 2086| r2086_38(glval) = VariableAddress[#temp2086:10] : +# 2086| mu2086_39(glval) = Store[#temp2086:10] : &:r2086_38, r2086_37 #-----| Goto -> Block 10 -# 2084| Block 12 -# 2084| r2084_40(glval) = VariableAddress[y] : -# 2084| r2084_41(glval) = VariableAddress[#temp2084:10] : -# 2084| mu2084_42(glval) = Store[#temp2084:10] : &:r2084_41, r2084_40 +# 2086| Block 12 +# 2086| r2086_40(glval) = VariableAddress[y] : +# 2086| r2086_41(glval) = VariableAddress[#temp2086:10] : +# 2086| mu2086_42(glval) = Store[#temp2086:10] : &:r2086_41, r2086_40 #-----| Goto -> Block 10 -# 2089| unsigned int CommaTest(unsigned int) -# 2089| Block 0 -# 2089| v2089_1(void) = EnterFunction : -# 2089| mu2089_2(unknown) = AliasedDefinition : -# 2089| mu2089_3(unknown) = InitializeNonLocal : -# 2089| r2089_4(glval) = VariableAddress[x] : -# 2089| mu2089_5(unsigned int) = InitializeParameter[x] : &:r2089_4 -# 2090| r2090_1(glval) = VariableAddress[y] : -# 2090| mu2090_2(unsigned int) = Uninitialized[y] : &:r2090_1 -# 2091| r2091_1(glval) = VariableAddress[x] : -# 2091| r2091_2(unsigned int) = Load[x] : &:r2091_1, ~m? -# 2091| r2091_3(unsigned int) = Constant[100] : -# 2091| r2091_4(bool) = CompareLT : r2091_2, r2091_3 -# 2091| v2091_5(void) = ConditionalBranch : r2091_4 +# 2091| unsigned int CommaTest(unsigned int) +# 2091| Block 0 +# 2091| v2091_1(void) = EnterFunction : +# 2091| mu2091_2(unknown) = AliasedDefinition : +# 2091| mu2091_3(unknown) = InitializeNonLocal : +# 2091| r2091_4(glval) = VariableAddress[x] : +# 2091| mu2091_5(unsigned int) = InitializeParameter[x] : &:r2091_4 +# 2092| r2092_1(glval) = VariableAddress[y] : +# 2092| mu2092_2(unsigned int) = Uninitialized[y] : &:r2092_1 +# 2093| r2093_1(glval) = VariableAddress[x] : +# 2093| r2093_2(unsigned int) = Load[x] : &:r2093_1, ~m? +# 2093| r2093_3(unsigned int) = Constant[100] : +# 2093| r2093_4(bool) = CompareLT : r2093_2, r2093_3 +# 2093| v2093_5(void) = ConditionalBranch : r2093_4 #-----| False -> Block 3 #-----| True -> Block 2 -# 2091| Block 1 -# 2091| r2091_6(glval) = VariableAddress[#temp2091:7] : -# 2091| r2091_7(unsigned int) = Load[#temp2091:7] : &:r2091_6, ~m? -# 2091| r2091_8(glval) = VariableAddress[y] : -# 2091| mu2091_9(unsigned int) = Store[y] : &:r2091_8, r2091_7 -# 2094| r2094_1(glval) = VariableAddress[#return] : -# 2094| mu2094_2(unsigned int) = Uninitialized[#return] : &:r2094_1 -# 2089| r2089_6(glval) = VariableAddress[#return] : -# 2089| v2089_7(void) = ReturnValue : &:r2089_6, ~m? -# 2089| v2089_8(void) = AliasedUse : ~m? -# 2089| v2089_9(void) = ExitFunction : +# 2093| Block 1 +# 2093| r2093_6(glval) = VariableAddress[#temp2093:7] : +# 2093| r2093_7(unsigned int) = Load[#temp2093:7] : &:r2093_6, ~m? +# 2093| r2093_8(glval) = VariableAddress[y] : +# 2093| mu2093_9(unsigned int) = Store[y] : &:r2093_8, r2093_7 +# 2096| r2096_1(glval) = VariableAddress[#return] : +# 2096| mu2096_2(unsigned int) = Uninitialized[#return] : &:r2096_1 +# 2091| r2091_6(glval) = VariableAddress[#return] : +# 2091| v2091_7(void) = ReturnValue : &:r2091_6, ~m? +# 2091| v2091_8(void) = AliasedUse : ~m? +# 2091| v2091_9(void) = ExitFunction : -# 2092| Block 2 -# 2092| r2092_1(glval) = FunctionAddress[CommaTestHelper] : -# 2092| r2092_2(glval) = VariableAddress[x] : -# 2092| r2092_3(unsigned int) = Load[x] : &:r2092_2, ~m? -# 2092| v2092_4(void) = Call[CommaTestHelper] : func:r2092_1, 0:r2092_3 -# 2092| mu2092_5(unknown) = ^CallSideEffect : ~m? -# 2092| r2092_6(glval) = VariableAddress[x] : -# 2092| r2092_7(unsigned int) = Load[x] : &:r2092_6, ~m? -# 2092| r2092_8(unsigned int) = CopyValue : r2092_7 -# 2091| r2091_10(glval) = VariableAddress[#temp2091:7] : -# 2091| mu2091_11(unsigned int) = Store[#temp2091:7] : &:r2091_10, r2092_8 +# 2094| Block 2 +# 2094| r2094_1(glval) = FunctionAddress[CommaTestHelper] : +# 2094| r2094_2(glval) = VariableAddress[x] : +# 2094| r2094_3(unsigned int) = Load[x] : &:r2094_2, ~m? +# 2094| v2094_4(void) = Call[CommaTestHelper] : func:r2094_1, 0:r2094_3 +# 2094| mu2094_5(unknown) = ^CallSideEffect : ~m? +# 2094| r2094_6(glval) = VariableAddress[x] : +# 2094| r2094_7(unsigned int) = Load[x] : &:r2094_6, ~m? +# 2094| r2094_8(unsigned int) = CopyValue : r2094_7 +# 2093| r2093_10(glval) = VariableAddress[#temp2093:7] : +# 2093| mu2093_11(unsigned int) = Store[#temp2093:7] : &:r2093_10, r2094_8 #-----| Goto -> Block 1 -# 2093| Block 3 -# 2093| r2093_1(glval) = FunctionAddress[CommaTestHelper] : -# 2093| r2093_2(glval) = VariableAddress[x] : -# 2093| r2093_3(unsigned int) = Load[x] : &:r2093_2, ~m? -# 2093| v2093_4(void) = Call[CommaTestHelper] : func:r2093_1, 0:r2093_3 -# 2093| mu2093_5(unknown) = ^CallSideEffect : ~m? -# 2093| r2093_6(int) = Constant[10] : -# 2093| r2093_7(int) = CopyValue : r2093_6 -# 2093| r2093_8(unsigned int) = Convert : r2093_7 -# 2091| r2091_12(glval) = VariableAddress[#temp2091:7] : -# 2091| mu2091_13(unsigned int) = Store[#temp2091:7] : &:r2091_12, r2093_8 +# 2095| Block 3 +# 2095| r2095_1(glval) = FunctionAddress[CommaTestHelper] : +# 2095| r2095_2(glval) = VariableAddress[x] : +# 2095| r2095_3(unsigned int) = Load[x] : &:r2095_2, ~m? +# 2095| v2095_4(void) = Call[CommaTestHelper] : func:r2095_1, 0:r2095_3 +# 2095| mu2095_5(unknown) = ^CallSideEffect : ~m? +# 2095| r2095_6(int) = Constant[10] : +# 2095| r2095_7(int) = CopyValue : r2095_6 +# 2095| r2095_8(unsigned int) = Convert : r2095_7 +# 2093| r2093_12(glval) = VariableAddress[#temp2093:7] : +# 2093| mu2093_13(unsigned int) = Store[#temp2093:7] : &:r2093_12, r2095_8 #-----| Goto -> Block 1 -# 2096| void NewDeleteMem() -# 2096| Block 0 -# 2096| v2096_1(void) = EnterFunction : -# 2096| mu2096_2(unknown) = AliasedDefinition : -# 2096| mu2096_3(unknown) = InitializeNonLocal : -# 2097| r2097_1(glval) = VariableAddress[x] : -# 2097| r2097_2(glval) = FunctionAddress[operator new] : -# 2097| r2097_3(unsigned long) = Constant[4] : -# 2097| r2097_4(void *) = Call[operator new] : func:r2097_2, 0:r2097_3 -# 2097| mu2097_5(unknown) = ^CallSideEffect : ~m? -# 2097| mu2097_6(unknown) = ^InitializeDynamicAllocation : &:r2097_4 -# 2097| r2097_7(int *) = Convert : r2097_4 -# 2097| mu2097_8(int *) = Store[x] : &:r2097_1, r2097_7 -# 2098| r2098_1(int) = Constant[6] : -# 2098| r2098_2(glval) = VariableAddress[x] : -# 2098| r2098_3(int *) = Load[x] : &:r2098_2, ~m? -# 2098| r2098_4(glval) = CopyValue : r2098_3 -# 2098| mu2098_5(int) = Store[?] : &:r2098_4, r2098_1 -# 2099| r2099_1(glval) = FunctionAddress[operator delete] : -# 2099| r2099_2(glval) = VariableAddress[x] : -# 2099| r2099_3(int *) = Load[x] : &:r2099_2, ~m? -# 2099| v2099_4(void) = Call[operator delete] : func:r2099_1, 0:r2099_3 +# 2098| void NewDeleteMem() +# 2098| Block 0 +# 2098| v2098_1(void) = EnterFunction : +# 2098| mu2098_2(unknown) = AliasedDefinition : +# 2098| mu2098_3(unknown) = InitializeNonLocal : +# 2099| r2099_1(glval) = VariableAddress[x] : +# 2099| r2099_2(glval) = FunctionAddress[operator new] : +# 2099| r2099_3(unsigned long) = Constant[4] : +# 2099| r2099_4(void *) = Call[operator new] : func:r2099_2, 0:r2099_3 # 2099| mu2099_5(unknown) = ^CallSideEffect : ~m? -# 2100| v2100_1(void) = NoOp : -# 2096| v2096_4(void) = ReturnVoid : -# 2096| v2096_5(void) = AliasedUse : ~m? -# 2096| v2096_6(void) = ExitFunction : +# 2099| mu2099_6(unknown) = ^InitializeDynamicAllocation : &:r2099_4 +# 2099| r2099_7(int *) = Convert : r2099_4 +# 2099| mu2099_8(int *) = Store[x] : &:r2099_1, r2099_7 +# 2100| r2100_1(int) = Constant[6] : +# 2100| r2100_2(glval) = VariableAddress[x] : +# 2100| r2100_3(int *) = Load[x] : &:r2100_2, ~m? +# 2100| r2100_4(glval) = CopyValue : r2100_3 +# 2100| mu2100_5(int) = Store[?] : &:r2100_4, r2100_1 +# 2101| r2101_1(glval) = FunctionAddress[operator delete] : +# 2101| r2101_2(glval) = VariableAddress[x] : +# 2101| r2101_3(int *) = Load[x] : &:r2101_2, ~m? +# 2101| v2101_4(void) = Call[operator delete] : func:r2101_1, 0:r2101_3 +# 2101| mu2101_5(unknown) = ^CallSideEffect : ~m? +# 2102| v2102_1(void) = NoOp : +# 2098| v2098_4(void) = ReturnVoid : +# 2098| v2098_5(void) = AliasedUse : ~m? +# 2098| v2098_6(void) = ExitFunction : -# 2102| void Base2::Base2() -# 2102| Block 0 -# 2102| v2102_1(void) = EnterFunction : -# 2102| mu2102_2(unknown) = AliasedDefinition : -# 2102| mu2102_3(unknown) = InitializeNonLocal : -# 2102| r2102_4(glval) = VariableAddress[#this] : -# 2102| mu2102_5(glval) = InitializeParameter[#this] : &:r2102_4 -# 2102| r2102_6(glval) = Load[#this] : &:r2102_4, ~m? -# 2102| mu2102_7(Base2) = InitializeIndirection[#this] : &:r2102_6 -# 2102| v2102_8(void) = NoOp : -# 2102| v2102_9(void) = ReturnIndirection[#this] : &:r2102_6, ~m? -# 2102| v2102_10(void) = ReturnVoid : -# 2102| v2102_11(void) = AliasedUse : ~m? -# 2102| v2102_12(void) = ExitFunction : - -# 2104| void Base2::operator delete(void*) +# 2104| void Base2::Base2() # 2104| Block 0 -# 2104| v2104_1(void) = EnterFunction : -# 2104| mu2104_2(unknown) = AliasedDefinition : -# 2104| mu2104_3(unknown) = InitializeNonLocal : -# 2104| r2104_4(glval) = VariableAddress[p] : -# 2104| mu2104_5(void *) = InitializeParameter[p] : &:r2104_4 -# 2104| r2104_6(void *) = Load[p] : &:r2104_4, ~m? -# 2104| mu2104_7(unknown) = InitializeIndirection[p] : &:r2104_6 -# 2105| v2105_1(void) = NoOp : -# 2104| v2104_8(void) = ReturnIndirection[p] : &:r2104_6, ~m? -# 2104| v2104_9(void) = ReturnVoid : -# 2104| v2104_10(void) = AliasedUse : ~m? -# 2104| v2104_11(void) = ExitFunction : +# 2104| v2104_1(void) = EnterFunction : +# 2104| mu2104_2(unknown) = AliasedDefinition : +# 2104| mu2104_3(unknown) = InitializeNonLocal : +# 2104| r2104_4(glval) = VariableAddress[#this] : +# 2104| mu2104_5(glval) = InitializeParameter[#this] : &:r2104_4 +# 2104| r2104_6(glval) = Load[#this] : &:r2104_4, ~m? +# 2104| mu2104_7(Base2) = InitializeIndirection[#this] : &:r2104_6 +# 2104| v2104_8(void) = NoOp : +# 2104| v2104_9(void) = ReturnIndirection[#this] : &:r2104_6, ~m? +# 2104| v2104_10(void) = ReturnVoid : +# 2104| v2104_11(void) = AliasedUse : ~m? +# 2104| v2104_12(void) = ExitFunction : -# 2106| void Base2::~Base2() +# 2106| void Base2::operator delete(void*) # 2106| Block 0 -# 2106| v2106_1(void) = EnterFunction : -# 2106| mu2106_2(unknown) = AliasedDefinition : -# 2106| mu2106_3(unknown) = InitializeNonLocal : -# 2106| r2106_4(glval) = VariableAddress[#this] : -# 2106| mu2106_5(glval) = InitializeParameter[#this] : &:r2106_4 -# 2106| r2106_6(glval) = Load[#this] : &:r2106_4, ~m? -# 2106| mu2106_7(Base2) = InitializeIndirection[#this] : &:r2106_6 -# 2106| v2106_8(void) = NoOp : -# 2106| v2106_9(void) = ReturnIndirection[#this] : &:r2106_6, ~m? -# 2106| v2106_10(void) = ReturnVoid : -# 2106| v2106_11(void) = AliasedUse : ~m? -# 2106| v2106_12(void) = ExitFunction : +# 2106| v2106_1(void) = EnterFunction : +# 2106| mu2106_2(unknown) = AliasedDefinition : +# 2106| mu2106_3(unknown) = InitializeNonLocal : +# 2106| r2106_4(glval) = VariableAddress[p] : +# 2106| mu2106_5(void *) = InitializeParameter[p] : &:r2106_4 +# 2106| r2106_6(void *) = Load[p] : &:r2106_4, ~m? +# 2106| mu2106_7(unknown) = InitializeIndirection[p] : &:r2106_6 +# 2107| v2107_1(void) = NoOp : +# 2106| v2106_8(void) = ReturnIndirection[p] : &:r2106_6, ~m? +# 2106| v2106_9(void) = ReturnVoid : +# 2106| v2106_10(void) = AliasedUse : ~m? +# 2106| v2106_11(void) = ExitFunction : -# 2109| void Derived2::Derived2() -# 2109| Block 0 -# 2109| v2109_1(void) = EnterFunction : -# 2109| mu2109_2(unknown) = AliasedDefinition : -# 2109| mu2109_3(unknown) = InitializeNonLocal : -# 2109| r2109_4(glval) = VariableAddress[#this] : -# 2109| mu2109_5(glval) = InitializeParameter[#this] : &:r2109_4 -# 2109| r2109_6(glval) = Load[#this] : &:r2109_4, ~m? -# 2109| mu2109_7(Derived2) = InitializeIndirection[#this] : &:r2109_6 -# 2109| r2109_8(glval) = ConvertToNonVirtualBase[Derived2 : Base2] : r2109_6 -# 2109| r2109_9(glval) = FunctionAddress[Base2] : -# 2109| v2109_10(void) = Call[Base2] : func:r2109_9, this:r2109_8 -# 2109| mu2109_11(unknown) = ^CallSideEffect : ~m? -# 2109| mu2109_12(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2109_8 -# 2109| v2109_13(void) = NoOp : -# 2109| v2109_14(void) = ReturnIndirection[#this] : &:r2109_6, ~m? -# 2109| v2109_15(void) = ReturnVoid : -# 2109| v2109_16(void) = AliasedUse : ~m? -# 2109| v2109_17(void) = ExitFunction : +# 2108| void Base2::~Base2() +# 2108| Block 0 +# 2108| v2108_1(void) = EnterFunction : +# 2108| mu2108_2(unknown) = AliasedDefinition : +# 2108| mu2108_3(unknown) = InitializeNonLocal : +# 2108| r2108_4(glval) = VariableAddress[#this] : +# 2108| mu2108_5(glval) = InitializeParameter[#this] : &:r2108_4 +# 2108| r2108_6(glval) = Load[#this] : &:r2108_4, ~m? +# 2108| mu2108_7(Base2) = InitializeIndirection[#this] : &:r2108_6 +# 2108| v2108_8(void) = NoOp : +# 2108| v2108_9(void) = ReturnIndirection[#this] : &:r2108_6, ~m? +# 2108| v2108_10(void) = ReturnVoid : +# 2108| v2108_11(void) = AliasedUse : ~m? +# 2108| v2108_12(void) = ExitFunction : -# 2112| void Derived2::~Derived2() -# 2112| Block 0 -# 2112| v2112_1(void) = EnterFunction : -# 2112| mu2112_2(unknown) = AliasedDefinition : -# 2112| mu2112_3(unknown) = InitializeNonLocal : -# 2112| r2112_4(glval) = VariableAddress[#this] : -# 2112| mu2112_5(glval) = InitializeParameter[#this] : &:r2112_4 -# 2112| r2112_6(glval) = Load[#this] : &:r2112_4, ~m? -# 2112| mu2112_7(Derived2) = InitializeIndirection[#this] : &:r2112_6 -# 2112| v2112_8(void) = NoOp : -# 2112| r2112_9(glval) = ConvertToNonVirtualBase[Derived2 : Base2] : r2112_6 -# 2112| r2112_10(glval) = FunctionAddress[~Base2] : -# 2112| v2112_11(void) = Call[~Base2] : func:r2112_10, this:r2112_9 -# 2112| mu2112_12(unknown) = ^CallSideEffect : ~m? -# 2112| v2112_13(void) = ReturnIndirection[#this] : &:r2112_6, ~m? -# 2112| v2112_14(void) = ReturnVoid : -# 2112| v2112_15(void) = AliasedUse : ~m? -# 2112| v2112_16(void) = ExitFunction : +# 2111| void Derived2::Derived2() +# 2111| Block 0 +# 2111| v2111_1(void) = EnterFunction : +# 2111| mu2111_2(unknown) = AliasedDefinition : +# 2111| mu2111_3(unknown) = InitializeNonLocal : +# 2111| r2111_4(glval) = VariableAddress[#this] : +# 2111| mu2111_5(glval) = InitializeParameter[#this] : &:r2111_4 +# 2111| r2111_6(glval) = Load[#this] : &:r2111_4, ~m? +# 2111| mu2111_7(Derived2) = InitializeIndirection[#this] : &:r2111_6 +# 2111| r2111_8(glval) = ConvertToNonVirtualBase[Derived2 : Base2] : r2111_6 +# 2111| r2111_9(glval) = FunctionAddress[Base2] : +# 2111| v2111_10(void) = Call[Base2] : func:r2111_9, this:r2111_8 +# 2111| mu2111_11(unknown) = ^CallSideEffect : ~m? +# 2111| mu2111_12(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2111_8 +# 2111| v2111_13(void) = NoOp : +# 2111| v2111_14(void) = ReturnIndirection[#this] : &:r2111_6, ~m? +# 2111| v2111_15(void) = ReturnVoid : +# 2111| v2111_16(void) = AliasedUse : ~m? +# 2111| v2111_17(void) = ExitFunction : -# 2114| void Derived2::operator delete(void*) +# 2114| void Derived2::~Derived2() # 2114| Block 0 -# 2114| v2114_1(void) = EnterFunction : -# 2114| mu2114_2(unknown) = AliasedDefinition : -# 2114| mu2114_3(unknown) = InitializeNonLocal : -# 2114| r2114_4(glval) = VariableAddress[p] : -# 2114| mu2114_5(void *) = InitializeParameter[p] : &:r2114_4 -# 2114| r2114_6(void *) = Load[p] : &:r2114_4, ~m? -# 2114| mu2114_7(unknown) = InitializeIndirection[p] : &:r2114_6 -# 2115| v2115_1(void) = NoOp : -# 2114| v2114_8(void) = ReturnIndirection[p] : &:r2114_6, ~m? -# 2114| v2114_9(void) = ReturnVoid : -# 2114| v2114_10(void) = AliasedUse : ~m? -# 2114| v2114_11(void) = ExitFunction : +# 2114| v2114_1(void) = EnterFunction : +# 2114| mu2114_2(unknown) = AliasedDefinition : +# 2114| mu2114_3(unknown) = InitializeNonLocal : +# 2114| r2114_4(glval) = VariableAddress[#this] : +# 2114| mu2114_5(glval) = InitializeParameter[#this] : &:r2114_4 +# 2114| r2114_6(glval) = Load[#this] : &:r2114_4, ~m? +# 2114| mu2114_7(Derived2) = InitializeIndirection[#this] : &:r2114_6 +# 2114| v2114_8(void) = NoOp : +# 2114| r2114_9(glval) = ConvertToNonVirtualBase[Derived2 : Base2] : r2114_6 +# 2114| r2114_10(glval) = FunctionAddress[~Base2] : +# 2114| v2114_11(void) = Call[~Base2] : func:r2114_10, this:r2114_9 +# 2114| mu2114_12(unknown) = ^CallSideEffect : ~m? +# 2114| v2114_13(void) = ReturnIndirection[#this] : &:r2114_6, ~m? +# 2114| v2114_14(void) = ReturnVoid : +# 2114| v2114_15(void) = AliasedUse : ~m? +# 2114| v2114_16(void) = ExitFunction : -# 2119| int virtual_delete() -# 2119| Block 0 -# 2119| v2119_1(void) = EnterFunction : -# 2119| mu2119_2(unknown) = AliasedDefinition : -# 2119| mu2119_3(unknown) = InitializeNonLocal : -# 2121| r2121_1(glval) = VariableAddress[b1] : -# 2121| r2121_2(glval) = FunctionAddress[operator new] : -# 2121| r2121_3(unsigned long) = Constant[8] : -# 2121| r2121_4(void *) = Call[operator new] : func:r2121_2, 0:r2121_3 -# 2121| mu2121_5(unknown) = ^CallSideEffect : ~m? -# 2121| mu2121_6(unknown) = ^InitializeDynamicAllocation : &:r2121_4 -# 2121| r2121_7(Base2 *) = Convert : r2121_4 -# 2121| r2121_8(glval) = FunctionAddress[Base2] : -# 2121| v2121_9(void) = Call[Base2] : func:r2121_8, this:r2121_7 -# 2121| mu2121_10(unknown) = ^CallSideEffect : ~m? -# 2121| mu2121_11(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2121_7 -# 2121| mu2121_12(Base2 *) = Store[b1] : &:r2121_1, r2121_7 -# 2122| r2122_1(glval) = VariableAddress[b1] : -# 2122| r2122_2(Base2 *) = Load[b1] : &:r2122_1, ~m? -# 2122| r2122_3(glval) = FunctionAddress[~Base2] : -# 2122| v2122_4(void) = Call[~Base2] : func:r2122_3 -# 2122| mu2122_5(unknown) = ^CallSideEffect : ~m? -# 2122| v2122_6(void) = ^IndirectReadSideEffect[-1] : &:r2122_2, ~m? -# 2122| mu2122_7(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2122_2 -# 2122| r2122_8(glval) = VirtualDeleteFunctionAddress : -# 2122| r2122_9(Base2 *) = CopyValue : r2122_1 -# 2122| v2122_10(void) = Call[?] : func:r2122_8, 0:r2122_9 -# 2122| mu2122_11(unknown) = ^CallSideEffect : ~m? -# 2124| r2124_1(glval) = VariableAddress[b2] : -# 2124| r2124_2(glval) = FunctionAddress[operator new] : -# 2124| r2124_3(unsigned long) = Constant[16] : -# 2124| r2124_4(void *) = Call[operator new] : func:r2124_2, 0:r2124_3 +# 2116| void Derived2::operator delete(void*) +# 2116| Block 0 +# 2116| v2116_1(void) = EnterFunction : +# 2116| mu2116_2(unknown) = AliasedDefinition : +# 2116| mu2116_3(unknown) = InitializeNonLocal : +# 2116| r2116_4(glval) = VariableAddress[p] : +# 2116| mu2116_5(void *) = InitializeParameter[p] : &:r2116_4 +# 2116| r2116_6(void *) = Load[p] : &:r2116_4, ~m? +# 2116| mu2116_7(unknown) = InitializeIndirection[p] : &:r2116_6 +# 2117| v2117_1(void) = NoOp : +# 2116| v2116_8(void) = ReturnIndirection[p] : &:r2116_6, ~m? +# 2116| v2116_9(void) = ReturnVoid : +# 2116| v2116_10(void) = AliasedUse : ~m? +# 2116| v2116_11(void) = ExitFunction : + +# 2121| int virtual_delete() +# 2121| Block 0 +# 2121| v2121_1(void) = EnterFunction : +# 2121| mu2121_2(unknown) = AliasedDefinition : +# 2121| mu2121_3(unknown) = InitializeNonLocal : +# 2123| r2123_1(glval) = VariableAddress[b1] : +# 2123| r2123_2(glval) = FunctionAddress[operator new] : +# 2123| r2123_3(unsigned long) = Constant[8] : +# 2123| r2123_4(void *) = Call[operator new] : func:r2123_2, 0:r2123_3 +# 2123| mu2123_5(unknown) = ^CallSideEffect : ~m? +# 2123| mu2123_6(unknown) = ^InitializeDynamicAllocation : &:r2123_4 +# 2123| r2123_7(Base2 *) = Convert : r2123_4 +# 2123| r2123_8(glval) = FunctionAddress[Base2] : +# 2123| v2123_9(void) = Call[Base2] : func:r2123_8, this:r2123_7 +# 2123| mu2123_10(unknown) = ^CallSideEffect : ~m? +# 2123| mu2123_11(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2123_7 +# 2123| mu2123_12(Base2 *) = Store[b1] : &:r2123_1, r2123_7 +# 2124| r2124_1(glval) = VariableAddress[b1] : +# 2124| r2124_2(Base2 *) = Load[b1] : &:r2124_1, ~m? +# 2124| r2124_3(glval) = FunctionAddress[~Base2] : +# 2124| v2124_4(void) = Call[~Base2] : func:r2124_3 # 2124| mu2124_5(unknown) = ^CallSideEffect : ~m? -# 2124| mu2124_6(unknown) = ^InitializeDynamicAllocation : &:r2124_4 -# 2124| r2124_7(Derived2 *) = Convert : r2124_4 -# 2124| r2124_8(glval) = FunctionAddress[Derived2] : -# 2124| v2124_9(void) = Call[Derived2] : func:r2124_8, this:r2124_7 -# 2124| mu2124_10(unknown) = ^CallSideEffect : ~m? -# 2124| mu2124_11(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2124_7 -# 2124| r2124_12(Base2 *) = ConvertToNonVirtualBase[Derived2 : Base2] : r2124_7 -# 2124| mu2124_13(Base2 *) = Store[b2] : &:r2124_1, r2124_12 -# 2125| r2125_1(glval) = VariableAddress[b2] : -# 2125| r2125_2(Base2 *) = Load[b2] : &:r2125_1, ~m? -# 2125| r2125_3(glval) = FunctionAddress[~Base2] : -# 2125| v2125_4(void) = Call[~Base2] : func:r2125_3 -# 2125| mu2125_5(unknown) = ^CallSideEffect : ~m? -# 2125| v2125_6(void) = ^IndirectReadSideEffect[-1] : &:r2125_2, ~m? -# 2125| mu2125_7(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2125_2 -# 2125| r2125_8(glval) = VirtualDeleteFunctionAddress : -# 2125| r2125_9(Base2 *) = CopyValue : r2125_1 -# 2125| v2125_10(void) = Call[?] : func:r2125_8, 0:r2125_9 -# 2125| mu2125_11(unknown) = ^CallSideEffect : ~m? -# 2127| r2127_1(glval) = VariableAddress[d] : -# 2127| r2127_2(glval) = FunctionAddress[operator new] : -# 2127| r2127_3(unsigned long) = Constant[16] : -# 2127| r2127_4(void *) = Call[operator new] : func:r2127_2, 0:r2127_3 +# 2124| v2124_6(void) = ^IndirectReadSideEffect[-1] : &:r2124_2, ~m? +# 2124| mu2124_7(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2124_2 +# 2124| r2124_8(glval) = VirtualDeleteFunctionAddress : +# 2124| r2124_9(Base2 *) = CopyValue : r2124_1 +# 2124| v2124_10(void) = Call[?] : func:r2124_8, 0:r2124_9 +# 2124| mu2124_11(unknown) = ^CallSideEffect : ~m? +# 2126| r2126_1(glval) = VariableAddress[b2] : +# 2126| r2126_2(glval) = FunctionAddress[operator new] : +# 2126| r2126_3(unsigned long) = Constant[16] : +# 2126| r2126_4(void *) = Call[operator new] : func:r2126_2, 0:r2126_3 +# 2126| mu2126_5(unknown) = ^CallSideEffect : ~m? +# 2126| mu2126_6(unknown) = ^InitializeDynamicAllocation : &:r2126_4 +# 2126| r2126_7(Derived2 *) = Convert : r2126_4 +# 2126| r2126_8(glval) = FunctionAddress[Derived2] : +# 2126| v2126_9(void) = Call[Derived2] : func:r2126_8, this:r2126_7 +# 2126| mu2126_10(unknown) = ^CallSideEffect : ~m? +# 2126| mu2126_11(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2126_7 +# 2126| r2126_12(Base2 *) = ConvertToNonVirtualBase[Derived2 : Base2] : r2126_7 +# 2126| mu2126_13(Base2 *) = Store[b2] : &:r2126_1, r2126_12 +# 2127| r2127_1(glval) = VariableAddress[b2] : +# 2127| r2127_2(Base2 *) = Load[b2] : &:r2127_1, ~m? +# 2127| r2127_3(glval) = FunctionAddress[~Base2] : +# 2127| v2127_4(void) = Call[~Base2] : func:r2127_3 # 2127| mu2127_5(unknown) = ^CallSideEffect : ~m? -# 2127| mu2127_6(unknown) = ^InitializeDynamicAllocation : &:r2127_4 -# 2127| r2127_7(Derived2 *) = Convert : r2127_4 -# 2127| r2127_8(glval) = FunctionAddress[Derived2] : -# 2127| v2127_9(void) = Call[Derived2] : func:r2127_8, this:r2127_7 -# 2127| mu2127_10(unknown) = ^CallSideEffect : ~m? -# 2127| mu2127_11(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2127_7 -# 2127| mu2127_12(Derived2 *) = Store[d] : &:r2127_1, r2127_7 -# 2128| r2128_1(glval) = VariableAddress[d] : -# 2128| r2128_2(Derived2 *) = Load[d] : &:r2128_1, ~m? -# 2128| r2128_3(glval) = FunctionAddress[~Derived2] : -# 2128| v2128_4(void) = Call[~Derived2] : func:r2128_3 -# 2128| mu2128_5(unknown) = ^CallSideEffect : ~m? -# 2128| v2128_6(void) = ^IndirectReadSideEffect[-1] : &:r2128_2, ~m? -# 2128| mu2128_7(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2128_2 -# 2128| r2128_8(glval) = VirtualDeleteFunctionAddress : -# 2128| r2128_9(Derived2 *) = CopyValue : r2128_1 -# 2128| v2128_10(void) = Call[?] : func:r2128_8, 0:r2128_9 -# 2128| mu2128_11(unknown) = ^CallSideEffect : ~m? -# 2129| r2129_1(glval) = VariableAddress[#return] : -# 2129| mu2129_2(int) = Uninitialized[#return] : &:r2129_1 -# 2119| r2119_4(glval) = VariableAddress[#return] : -# 2119| v2119_5(void) = ReturnValue : &:r2119_4, ~m? -# 2119| v2119_6(void) = AliasedUse : ~m? -# 2119| v2119_7(void) = ExitFunction : +# 2127| v2127_6(void) = ^IndirectReadSideEffect[-1] : &:r2127_2, ~m? +# 2127| mu2127_7(Base2) = ^IndirectMayWriteSideEffect[-1] : &:r2127_2 +# 2127| r2127_8(glval) = VirtualDeleteFunctionAddress : +# 2127| r2127_9(Base2 *) = CopyValue : r2127_1 +# 2127| v2127_10(void) = Call[?] : func:r2127_8, 0:r2127_9 +# 2127| mu2127_11(unknown) = ^CallSideEffect : ~m? +# 2129| r2129_1(glval) = VariableAddress[d] : +# 2129| r2129_2(glval) = FunctionAddress[operator new] : +# 2129| r2129_3(unsigned long) = Constant[16] : +# 2129| r2129_4(void *) = Call[operator new] : func:r2129_2, 0:r2129_3 +# 2129| mu2129_5(unknown) = ^CallSideEffect : ~m? +# 2129| mu2129_6(unknown) = ^InitializeDynamicAllocation : &:r2129_4 +# 2129| r2129_7(Derived2 *) = Convert : r2129_4 +# 2129| r2129_8(glval) = FunctionAddress[Derived2] : +# 2129| v2129_9(void) = Call[Derived2] : func:r2129_8, this:r2129_7 +# 2129| mu2129_10(unknown) = ^CallSideEffect : ~m? +# 2129| mu2129_11(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2129_7 +# 2129| mu2129_12(Derived2 *) = Store[d] : &:r2129_1, r2129_7 +# 2130| r2130_1(glval) = VariableAddress[d] : +# 2130| r2130_2(Derived2 *) = Load[d] : &:r2130_1, ~m? +# 2130| r2130_3(glval) = FunctionAddress[~Derived2] : +# 2130| v2130_4(void) = Call[~Derived2] : func:r2130_3 +# 2130| mu2130_5(unknown) = ^CallSideEffect : ~m? +# 2130| v2130_6(void) = ^IndirectReadSideEffect[-1] : &:r2130_2, ~m? +# 2130| mu2130_7(Derived2) = ^IndirectMayWriteSideEffect[-1] : &:r2130_2 +# 2130| r2130_8(glval) = VirtualDeleteFunctionAddress : +# 2130| r2130_9(Derived2 *) = CopyValue : r2130_1 +# 2130| v2130_10(void) = Call[?] : func:r2130_8, 0:r2130_9 +# 2130| mu2130_11(unknown) = ^CallSideEffect : ~m? +# 2131| r2131_1(glval) = VariableAddress[#return] : +# 2131| mu2131_2(int) = Uninitialized[#return] : &:r2131_1 +# 2121| r2121_4(glval) = VariableAddress[#return] : +# 2121| v2121_5(void) = ReturnValue : &:r2121_4, ~m? +# 2121| v2121_6(void) = AliasedUse : ~m? +# 2121| v2121_7(void) = ExitFunction : -# 2133| void test_constant_folding() -# 2133| Block 0 -# 2133| v2133_1(void) = EnterFunction : -# 2133| mu2133_2(unknown) = AliasedDefinition : -# 2133| mu2133_3(unknown) = InitializeNonLocal : -# 2134| r2134_1(glval) = VariableAddress[x] : -# 2134| r2134_2(int) = Constant[116] : -# 2134| mu2134_3(int) = Store[x] : &:r2134_1, r2134_2 -# 2135| r2135_1(glval) = FunctionAddress[test_constant_folding_use] : -# 2135| r2135_2(int) = Constant[116] : -# 2135| v2135_3(void) = Call[test_constant_folding_use] : func:r2135_1, 0:r2135_2 -# 2135| mu2135_4(unknown) = ^CallSideEffect : ~m? -# 2136| v2136_1(void) = NoOp : -# 2133| v2133_4(void) = ReturnVoid : -# 2133| v2133_5(void) = AliasedUse : ~m? -# 2133| v2133_6(void) = ExitFunction : +# 2135| void test_constant_folding() +# 2135| Block 0 +# 2135| v2135_1(void) = EnterFunction : +# 2135| mu2135_2(unknown) = AliasedDefinition : +# 2135| mu2135_3(unknown) = InitializeNonLocal : +# 2136| r2136_1(glval) = VariableAddress[x] : +# 2136| r2136_2(int) = Constant[116] : +# 2136| mu2136_3(int) = Store[x] : &:r2136_1, r2136_2 +# 2137| r2137_1(glval) = FunctionAddress[test_constant_folding_use] : +# 2137| r2137_2(int) = Constant[116] : +# 2137| v2137_3(void) = Call[test_constant_folding_use] : func:r2137_1, 0:r2137_2 +# 2137| mu2137_4(unknown) = ^CallSideEffect : ~m? +# 2138| v2138_1(void) = NoOp : +# 2135| v2135_4(void) = ReturnVoid : +# 2135| v2135_5(void) = AliasedUse : ~m? +# 2135| v2135_6(void) = ExitFunction : -# 2140| int NonExit() -# 2140| Block 0 -# 2140| v2140_1(void) = EnterFunction : -# 2140| mu2140_2(unknown) = AliasedDefinition : -# 2140| mu2140_3(unknown) = InitializeNonLocal : -# 2141| r2141_1(glval) = VariableAddress[x] : -# 2141| r2141_2(glval) = FunctionAddress[Add] : -# 2141| r2141_3(int) = Constant[3] : -# 2141| r2141_4(int) = Constant[4] : -# 2141| r2141_5(int) = Call[Add] : func:r2141_2, 0:r2141_3, 1:r2141_4 -# 2141| mu2141_6(unknown) = ^CallSideEffect : ~m? -# 2141| mu2141_7(int) = Store[x] : &:r2141_1, r2141_5 -# 2142| r2142_1(glval) = VariableAddress[x] : -# 2142| r2142_2(int) = Load[x] : &:r2142_1, ~m? -# 2142| r2142_3(int) = Constant[7] : -# 2142| r2142_4(bool) = CompareEQ : r2142_2, r2142_3 -# 2142| v2142_5(void) = ConditionalBranch : r2142_4 +# 2142| int NonExit() +# 2142| Block 0 +# 2142| v2142_1(void) = EnterFunction : +# 2142| mu2142_2(unknown) = AliasedDefinition : +# 2142| mu2142_3(unknown) = InitializeNonLocal : +# 2143| r2143_1(glval) = VariableAddress[x] : +# 2143| r2143_2(glval) = FunctionAddress[Add] : +# 2143| r2143_3(int) = Constant[3] : +# 2143| r2143_4(int) = Constant[4] : +# 2143| r2143_5(int) = Call[Add] : func:r2143_2, 0:r2143_3, 1:r2143_4 +# 2143| mu2143_6(unknown) = ^CallSideEffect : ~m? +# 2143| mu2143_7(int) = Store[x] : &:r2143_1, r2143_5 +# 2144| r2144_1(glval) = VariableAddress[x] : +# 2144| r2144_2(int) = Load[x] : &:r2144_1, ~m? +# 2144| r2144_3(int) = Constant[7] : +# 2144| r2144_4(bool) = CompareEQ : r2144_2, r2144_3 +# 2144| v2144_5(void) = ConditionalBranch : r2144_4 #-----| False -> Block 2 #-----| True -> Block 1 -# 2143| Block 1 -# 2143| r2143_1(glval) = FunctionAddress[exit] : -# 2143| r2143_2(int) = Constant[3] : -# 2143| v2143_3(void) = Call[exit] : func:r2143_1, 0:r2143_2 -# 2143| mu2143_4(unknown) = ^CallSideEffect : ~m? -# 2140| v2140_4(void) = Unreached : +# 2145| Block 1 +# 2145| r2145_1(glval) = FunctionAddress[exit] : +# 2145| r2145_2(int) = Constant[3] : +# 2145| v2145_3(void) = Call[exit] : func:r2145_1, 0:r2145_2 +# 2145| mu2145_4(unknown) = ^CallSideEffect : ~m? +# 2142| v2142_4(void) = Unreached : -# 2144| Block 2 -# 2144| r2144_1(glval) = FunctionAddress[VoidFunc] : -# 2144| v2144_2(void) = Call[VoidFunc] : func:r2144_1 -# 2144| mu2144_3(unknown) = ^CallSideEffect : ~m? -# 2145| r2145_1(glval) = VariableAddress[#return] : -# 2145| r2145_2(glval) = VariableAddress[x] : -# 2145| r2145_3(int) = Load[x] : &:r2145_2, ~m? -# 2145| mu2145_4(int) = Store[#return] : &:r2145_1, r2145_3 -# 2140| r2140_5(glval) = VariableAddress[#return] : -# 2140| v2140_6(void) = ReturnValue : &:r2140_5, ~m? -# 2140| v2140_7(void) = AliasedUse : ~m? -# 2140| v2140_8(void) = ExitFunction : +# 2146| Block 2 +# 2146| r2146_1(glval) = FunctionAddress[VoidFunc] : +# 2146| v2146_2(void) = Call[VoidFunc] : func:r2146_1 +# 2146| mu2146_3(unknown) = ^CallSideEffect : ~m? +# 2147| r2147_1(glval) = VariableAddress[#return] : +# 2147| r2147_2(glval) = VariableAddress[x] : +# 2147| r2147_3(int) = Load[x] : &:r2147_2, ~m? +# 2147| mu2147_4(int) = Store[#return] : &:r2147_1, r2147_3 +# 2142| r2142_5(glval) = VariableAddress[#return] : +# 2142| v2142_6(void) = ReturnValue : &:r2142_5, ~m? +# 2142| v2142_7(void) = AliasedUse : ~m? +# 2142| v2142_8(void) = ExitFunction : -# 2148| void CallsNonExit() -# 2148| Block 0 -# 2148| v2148_1(void) = EnterFunction : -# 2148| mu2148_2(unknown) = AliasedDefinition : -# 2148| mu2148_3(unknown) = InitializeNonLocal : -# 2149| r2149_1(glval) = FunctionAddress[VoidFunc] : -# 2149| v2149_2(void) = Call[VoidFunc] : func:r2149_1 -# 2149| mu2149_3(unknown) = ^CallSideEffect : ~m? -# 2150| r2150_1(glval) = FunctionAddress[exit] : -# 2150| r2150_2(int) = Constant[3] : -# 2150| v2150_3(void) = Call[exit] : func:r2150_1, 0:r2150_2 -# 2150| mu2150_4(unknown) = ^CallSideEffect : ~m? -# 2148| v2148_4(void) = Unreached : +# 2150| void CallsNonExit() +# 2150| Block 0 +# 2150| v2150_1(void) = EnterFunction : +# 2150| mu2150_2(unknown) = AliasedDefinition : +# 2150| mu2150_3(unknown) = InitializeNonLocal : +# 2151| r2151_1(glval) = FunctionAddress[VoidFunc] : +# 2151| v2151_2(void) = Call[VoidFunc] : func:r2151_1 +# 2151| mu2151_3(unknown) = ^CallSideEffect : ~m? +# 2152| r2152_1(glval) = FunctionAddress[exit] : +# 2152| r2152_2(int) = Constant[3] : +# 2152| v2152_3(void) = Call[exit] : func:r2152_1, 0:r2152_2 +# 2152| mu2152_4(unknown) = ^CallSideEffect : ~m? +# 2150| v2150_4(void) = Unreached : -# 2151| Block 1 -# 2151| v2151_1(void) = NoOp : -# 2148| v2148_5(void) = ReturnVoid : -# 2148| v2148_6(void) = AliasedUse : ~m? -# 2148| v2148_7(void) = ExitFunction : +# 2153| Block 1 +# 2153| v2153_1(void) = NoOp : +# 2150| v2150_5(void) = ReturnVoid : +# 2150| v2150_6(void) = AliasedUse : ~m? +# 2150| v2150_7(void) = ExitFunction : -# 2153| int TransNonExit() -# 2153| Block 0 -# 2153| v2153_1(void) = EnterFunction : -# 2153| mu2153_2(unknown) = AliasedDefinition : -# 2153| mu2153_3(unknown) = InitializeNonLocal : -# 2154| r2154_1(glval) = VariableAddress[x] : -# 2154| r2154_2(glval) = FunctionAddress[Add] : -# 2154| r2154_3(int) = Constant[3] : -# 2154| r2154_4(int) = Constant[4] : -# 2154| r2154_5(int) = Call[Add] : func:r2154_2, 0:r2154_3, 1:r2154_4 -# 2154| mu2154_6(unknown) = ^CallSideEffect : ~m? -# 2154| mu2154_7(int) = Store[x] : &:r2154_1, r2154_5 -# 2155| r2155_1(glval) = VariableAddress[x] : -# 2155| r2155_2(int) = Load[x] : &:r2155_1, ~m? -# 2155| r2155_3(int) = Constant[7] : -# 2155| r2155_4(bool) = CompareEQ : r2155_2, r2155_3 -# 2155| v2155_5(void) = ConditionalBranch : r2155_4 +# 2155| int TransNonExit() +# 2155| Block 0 +# 2155| v2155_1(void) = EnterFunction : +# 2155| mu2155_2(unknown) = AliasedDefinition : +# 2155| mu2155_3(unknown) = InitializeNonLocal : +# 2156| r2156_1(glval) = VariableAddress[x] : +# 2156| r2156_2(glval) = FunctionAddress[Add] : +# 2156| r2156_3(int) = Constant[3] : +# 2156| r2156_4(int) = Constant[4] : +# 2156| r2156_5(int) = Call[Add] : func:r2156_2, 0:r2156_3, 1:r2156_4 +# 2156| mu2156_6(unknown) = ^CallSideEffect : ~m? +# 2156| mu2156_7(int) = Store[x] : &:r2156_1, r2156_5 +# 2157| r2157_1(glval) = VariableAddress[x] : +# 2157| r2157_2(int) = Load[x] : &:r2157_1, ~m? +# 2157| r2157_3(int) = Constant[7] : +# 2157| r2157_4(bool) = CompareEQ : r2157_2, r2157_3 +# 2157| v2157_5(void) = ConditionalBranch : r2157_4 #-----| False -> Block 2 #-----| True -> Block 1 -# 2156| Block 1 -# 2156| r2156_1(glval) = FunctionAddress[CallsNonExit] : -# 2156| v2156_2(void) = Call[CallsNonExit] : func:r2156_1 -# 2156| mu2156_3(unknown) = ^CallSideEffect : ~m? +# 2158| Block 1 +# 2158| r2158_1(glval) = FunctionAddress[CallsNonExit] : +# 2158| v2158_2(void) = Call[CallsNonExit] : func:r2158_1 +# 2158| mu2158_3(unknown) = ^CallSideEffect : ~m? #-----| Goto -> Block 2 -# 2157| Block 2 -# 2157| r2157_1(glval) = FunctionAddress[VoidFunc] : -# 2157| v2157_2(void) = Call[VoidFunc] : func:r2157_1 -# 2157| mu2157_3(unknown) = ^CallSideEffect : ~m? -# 2158| r2158_1(glval) = VariableAddress[#return] : -# 2158| r2158_2(glval) = VariableAddress[x] : -# 2158| r2158_3(int) = Load[x] : &:r2158_2, ~m? -# 2158| mu2158_4(int) = Store[#return] : &:r2158_1, r2158_3 -# 2153| r2153_4(glval) = VariableAddress[#return] : -# 2153| v2153_5(void) = ReturnValue : &:r2153_4, ~m? -# 2153| v2153_6(void) = AliasedUse : ~m? -# 2153| v2153_7(void) = ExitFunction : +# 2159| Block 2 +# 2159| r2159_1(glval) = FunctionAddress[VoidFunc] : +# 2159| v2159_2(void) = Call[VoidFunc] : func:r2159_1 +# 2159| mu2159_3(unknown) = ^CallSideEffect : ~m? +# 2160| r2160_1(glval) = VariableAddress[#return] : +# 2160| r2160_2(glval) = VariableAddress[x] : +# 2160| r2160_3(int) = Load[x] : &:r2160_2, ~m? +# 2160| mu2160_4(int) = Store[#return] : &:r2160_1, r2160_3 +# 2155| r2155_4(glval) = VariableAddress[#return] : +# 2155| v2155_5(void) = ReturnValue : &:r2155_4, ~m? +# 2155| v2155_6(void) = AliasedUse : ~m? +# 2155| v2155_7(void) = ExitFunction : -# 2161| void newArrayCorrectType(size_t) -# 2161| Block 0 -# 2161| v2161_1(void) = EnterFunction : -# 2161| mu2161_2(unknown) = AliasedDefinition : -# 2161| mu2161_3(unknown) = InitializeNonLocal : -# 2161| r2161_4(glval) = VariableAddress[n] : -# 2161| mu2161_5(unsigned long) = InitializeParameter[n] : &:r2161_4 -# 2162| r2162_1(glval) = FunctionAddress[operator new[]] : -# 2162| r2162_2(glval) = VariableAddress[n] : -# 2162| r2162_3(unsigned long) = Load[n] : &:r2162_2, ~m? -# 2162| r2162_4(unsigned long) = Constant[4] : -# 2162| r2162_5(unsigned long) = Mul : r2162_3, r2162_4 -# 2162| r2162_6(void *) = Call[operator new[]] : func:r2162_1, 0:r2162_5 -# 2162| mu2162_7(unknown) = ^CallSideEffect : ~m? -# 2162| mu2162_8(unknown) = ^InitializeDynamicAllocation : &:r2162_6 -# 2162| r2162_9(int *) = Convert : r2162_6 -# 2163| r2163_1(glval) = FunctionAddress[operator new[]] : -# 2163| r2163_2(glval) = VariableAddress[n] : -# 2163| r2163_3(unsigned long) = Load[n] : &:r2163_2, ~m? -# 2163| r2163_4(unsigned long) = Constant[4] : -# 2163| r2163_5(unsigned long) = Mul : r2163_3, r2163_4 -# 2163| r2163_6(float) = Constant[1.0] : -# 2163| r2163_7(void *) = Call[operator new[]] : func:r2163_1, 0:r2163_5, 1:r2163_6 -# 2163| mu2163_8(unknown) = ^CallSideEffect : ~m? -# 2163| mu2163_9(unknown) = ^InitializeDynamicAllocation : &:r2163_7 -# 2163| r2163_10(int *) = Convert : r2163_7 +# 2163| void newArrayCorrectType(size_t) +# 2163| Block 0 +# 2163| v2163_1(void) = EnterFunction : +# 2163| mu2163_2(unknown) = AliasedDefinition : +# 2163| mu2163_3(unknown) = InitializeNonLocal : +# 2163| r2163_4(glval) = VariableAddress[n] : +# 2163| mu2163_5(unsigned long) = InitializeParameter[n] : &:r2163_4 # 2164| r2164_1(glval) = FunctionAddress[operator new[]] : # 2164| r2164_2(glval) = VariableAddress[n] : # 2164| r2164_3(unsigned long) = Load[n] : &:r2164_2, ~m? -# 2164| r2164_4(unsigned long) = Constant[8] : +# 2164| r2164_4(unsigned long) = Constant[4] : # 2164| r2164_5(unsigned long) = Mul : r2164_3, r2164_4 # 2164| r2164_6(void *) = Call[operator new[]] : func:r2164_1, 0:r2164_5 # 2164| mu2164_7(unknown) = ^CallSideEffect : ~m? # 2164| mu2164_8(unknown) = ^InitializeDynamicAllocation : &:r2164_6 -# 2164| r2164_9(String *) = Convert : r2164_6 +# 2164| r2164_9(int *) = Convert : r2164_6 # 2165| r2165_1(glval) = FunctionAddress[operator new[]] : # 2165| r2165_2(glval) = VariableAddress[n] : # 2165| r2165_3(unsigned long) = Load[n] : &:r2165_2, ~m? -# 2165| r2165_4(unsigned long) = Constant[256] : +# 2165| r2165_4(unsigned long) = Constant[4] : # 2165| r2165_5(unsigned long) = Mul : r2165_3, r2165_4 -# 2165| r2165_6(align_val_t) = Constant[128] : +# 2165| r2165_6(float) = Constant[1.0] : # 2165| r2165_7(void *) = Call[operator new[]] : func:r2165_1, 0:r2165_5, 1:r2165_6 # 2165| mu2165_8(unknown) = ^CallSideEffect : ~m? # 2165| mu2165_9(unknown) = ^InitializeDynamicAllocation : &:r2165_7 -# 2165| r2165_10(Overaligned *) = Convert : r2165_7 +# 2165| r2165_10(int *) = Convert : r2165_7 # 2166| r2166_1(glval) = FunctionAddress[operator new[]] : # 2166| r2166_2(glval) = VariableAddress[n] : # 2166| r2166_3(unsigned long) = Load[n] : &:r2166_2, ~m? -# 2166| r2166_4(unsigned long) = Constant[1] : +# 2166| r2166_4(unsigned long) = Constant[8] : # 2166| r2166_5(unsigned long) = Mul : r2166_3, r2166_4 # 2166| r2166_6(void *) = Call[operator new[]] : func:r2166_1, 0:r2166_5 # 2166| mu2166_7(unknown) = ^CallSideEffect : ~m? # 2166| mu2166_8(unknown) = ^InitializeDynamicAllocation : &:r2166_6 -# 2166| r2166_9(DefaultCtorWithDefaultParam *) = Convert : r2166_6 +# 2166| r2166_9(String *) = Convert : r2166_6 # 2167| r2167_1(glval) = FunctionAddress[operator new[]] : # 2167| r2167_2(glval) = VariableAddress[n] : # 2167| r2167_3(unsigned long) = Load[n] : &:r2167_2, ~m? -# 2167| r2167_4(unsigned long) = Constant[4] : +# 2167| r2167_4(unsigned long) = Constant[256] : # 2167| r2167_5(unsigned long) = Mul : r2167_3, r2167_4 -# 2167| r2167_6(void *) = Call[operator new[]] : func:r2167_1, 0:r2167_5 -# 2167| mu2167_7(unknown) = ^CallSideEffect : ~m? -# 2167| mu2167_8(unknown) = ^InitializeDynamicAllocation : &:r2167_6 -# 2167| r2167_9(int *) = Convert : r2167_6 -# 2168| v2168_1(void) = NoOp : -# 2161| v2161_6(void) = ReturnVoid : -# 2161| v2161_7(void) = AliasedUse : ~m? -# 2161| v2161_8(void) = ExitFunction : +# 2167| r2167_6(align_val_t) = Constant[128] : +# 2167| r2167_7(void *) = Call[operator new[]] : func:r2167_1, 0:r2167_5, 1:r2167_6 +# 2167| mu2167_8(unknown) = ^CallSideEffect : ~m? +# 2167| mu2167_9(unknown) = ^InitializeDynamicAllocation : &:r2167_7 +# 2167| r2167_10(Overaligned *) = Convert : r2167_7 +# 2168| r2168_1(glval) = FunctionAddress[operator new[]] : +# 2168| r2168_2(glval) = VariableAddress[n] : +# 2168| r2168_3(unsigned long) = Load[n] : &:r2168_2, ~m? +# 2168| r2168_4(unsigned long) = Constant[1] : +# 2168| r2168_5(unsigned long) = Mul : r2168_3, r2168_4 +# 2168| r2168_6(void *) = Call[operator new[]] : func:r2168_1, 0:r2168_5 +# 2168| mu2168_7(unknown) = ^CallSideEffect : ~m? +# 2168| mu2168_8(unknown) = ^InitializeDynamicAllocation : &:r2168_6 +# 2168| r2168_9(DefaultCtorWithDefaultParam *) = Convert : r2168_6 +# 2169| r2169_1(glval) = FunctionAddress[operator new[]] : +# 2169| r2169_2(glval) = VariableAddress[n] : +# 2169| r2169_3(unsigned long) = Load[n] : &:r2169_2, ~m? +# 2169| r2169_4(unsigned long) = Constant[4] : +# 2169| r2169_5(unsigned long) = Mul : r2169_3, r2169_4 +# 2169| r2169_6(void *) = Call[operator new[]] : func:r2169_1, 0:r2169_5 +# 2169| mu2169_7(unknown) = ^CallSideEffect : ~m? +# 2169| mu2169_8(unknown) = ^InitializeDynamicAllocation : &:r2169_6 +# 2169| r2169_9(int *) = Convert : r2169_6 +# 2170| v2170_1(void) = NoOp : +# 2163| v2163_6(void) = ReturnVoid : +# 2163| v2163_7(void) = AliasedUse : ~m? +# 2163| v2163_8(void) = ExitFunction : -# 2172| char* test_strtod(char*) -# 2172| Block 0 -# 2172| v2172_1(void) = EnterFunction : -# 2172| mu2172_2(unknown) = AliasedDefinition : -# 2172| mu2172_3(unknown) = InitializeNonLocal : -# 2172| r2172_4(glval) = VariableAddress[s] : -# 2172| mu2172_5(char *) = InitializeParameter[s] : &:r2172_4 -# 2172| r2172_6(char *) = Load[s] : &:r2172_4, ~m? -# 2172| mu2172_7(unknown) = InitializeIndirection[s] : &:r2172_6 -# 2173| r2173_1(glval) = VariableAddress[end] : -# 2173| mu2173_2(char *) = Uninitialized[end] : &:r2173_1 -# 2174| r2174_1(glval) = VariableAddress[d] : -# 2174| r2174_2(glval) = FunctionAddress[strtod] : -# 2174| r2174_3(glval) = VariableAddress[s] : -# 2174| r2174_4(char *) = Load[s] : &:r2174_3, ~m? -# 2174| r2174_5(char *) = Convert : r2174_4 -# 2174| r2174_6(glval) = VariableAddress[end] : -# 2174| r2174_7(char **) = CopyValue : r2174_6 -# 2174| r2174_8(double) = Call[strtod] : func:r2174_2, 0:r2174_5, 1:r2174_7 -# 2174| v2174_9(void) = ^BufferReadSideEffect[0] : &:r2174_5, ~m? -# 2174| mu2174_10(char *) = ^IndirectMayWriteSideEffect[1] : &:r2174_7 -# 2174| mu2174_11(double) = Store[d] : &:r2174_1, r2174_8 -# 2175| r2175_1(glval) = VariableAddress[#return] : -# 2175| r2175_2(glval) = VariableAddress[end] : -# 2175| r2175_3(char *) = Load[end] : &:r2175_2, ~m? -# 2175| mu2175_4(char *) = Store[#return] : &:r2175_1, r2175_3 -# 2172| v2172_8(void) = ReturnIndirection[s] : &:r2172_6, ~m? -# 2172| r2172_9(glval) = VariableAddress[#return] : -# 2172| v2172_10(void) = ReturnValue : &:r2172_9, ~m? -# 2172| v2172_11(void) = AliasedUse : ~m? -# 2172| v2172_12(void) = ExitFunction : +# 2174| char* test_strtod(char*) +# 2174| Block 0 +# 2174| v2174_1(void) = EnterFunction : +# 2174| mu2174_2(unknown) = AliasedDefinition : +# 2174| mu2174_3(unknown) = InitializeNonLocal : +# 2174| r2174_4(glval) = VariableAddress[s] : +# 2174| mu2174_5(char *) = InitializeParameter[s] : &:r2174_4 +# 2174| r2174_6(char *) = Load[s] : &:r2174_4, ~m? +# 2174| mu2174_7(unknown) = InitializeIndirection[s] : &:r2174_6 +# 2175| r2175_1(glval) = VariableAddress[end] : +# 2175| mu2175_2(char *) = Uninitialized[end] : &:r2175_1 +# 2176| r2176_1(glval) = VariableAddress[d] : +# 2176| r2176_2(glval) = FunctionAddress[strtod] : +# 2176| r2176_3(glval) = VariableAddress[s] : +# 2176| r2176_4(char *) = Load[s] : &:r2176_3, ~m? +# 2176| r2176_5(char *) = Convert : r2176_4 +# 2176| r2176_6(glval) = VariableAddress[end] : +# 2176| r2176_7(char **) = CopyValue : r2176_6 +# 2176| r2176_8(double) = Call[strtod] : func:r2176_2, 0:r2176_5, 1:r2176_7 +# 2176| v2176_9(void) = ^BufferReadSideEffect[0] : &:r2176_5, ~m? +# 2176| mu2176_10(char *) = ^IndirectMayWriteSideEffect[1] : &:r2176_7 +# 2176| mu2176_11(double) = Store[d] : &:r2176_1, r2176_8 +# 2177| r2177_1(glval) = VariableAddress[#return] : +# 2177| r2177_2(glval) = VariableAddress[end] : +# 2177| r2177_3(char *) = Load[end] : &:r2177_2, ~m? +# 2177| mu2177_4(char *) = Store[#return] : &:r2177_1, r2177_3 +# 2174| v2174_8(void) = ReturnIndirection[s] : &:r2174_6, ~m? +# 2174| r2174_9(glval) = VariableAddress[#return] : +# 2174| v2174_10(void) = ReturnValue : &:r2174_9, ~m? +# 2174| v2174_11(void) = AliasedUse : ~m? +# 2174| v2174_12(void) = ExitFunction : -# 2182| void call_as_child_of_ConditionDeclExpr() -# 2182| Block 0 -# 2182| v2182_1(void) = EnterFunction : -# 2182| mu2182_2(unknown) = AliasedDefinition : -# 2182| mu2182_3(unknown) = InitializeNonLocal : -# 2183| r2183_1(glval) = VariableAddress[b] : -# 2183| r2183_2(HasOperatorBool) = Constant[0] : -# 2183| mu2183_3(HasOperatorBool) = Store[b] : &:r2183_1, r2183_2 -# 2183| r2183_4(glval) = VariableAddress[b] : -# 2183| r2183_5(glval) = FunctionAddress[operator bool] : -# 2183| r2183_6(bool) = Call[operator bool] : func:r2183_5, this:r2183_4 -# 2183| mu2183_7(unknown) = ^CallSideEffect : ~m? -# 2183| v2183_8(void) = ^IndirectReadSideEffect[-1] : &:r2183_4, ~m? -# 2183| mu2183_9(HasOperatorBool) = ^IndirectMayWriteSideEffect[-1] : &:r2183_4 -# 2183| r2183_10(bool) = CopyValue : r2183_6 -# 2183| v2183_11(void) = ConditionalBranch : r2183_10 +# 2184| void call_as_child_of_ConditionDeclExpr() +# 2184| Block 0 +# 2184| v2184_1(void) = EnterFunction : +# 2184| mu2184_2(unknown) = AliasedDefinition : +# 2184| mu2184_3(unknown) = InitializeNonLocal : +# 2185| r2185_1(glval) = VariableAddress[b] : +# 2185| r2185_2(HasOperatorBool) = Constant[0] : +# 2185| mu2185_3(HasOperatorBool) = Store[b] : &:r2185_1, r2185_2 +# 2185| r2185_4(glval) = VariableAddress[b] : +# 2185| r2185_5(glval) = FunctionAddress[operator bool] : +# 2185| r2185_6(bool) = Call[operator bool] : func:r2185_5, this:r2185_4 +# 2185| mu2185_7(unknown) = ^CallSideEffect : ~m? +# 2185| v2185_8(void) = ^IndirectReadSideEffect[-1] : &:r2185_4, ~m? +# 2185| mu2185_9(HasOperatorBool) = ^IndirectMayWriteSideEffect[-1] : &:r2185_4 +# 2185| r2185_10(bool) = CopyValue : r2185_6 +# 2185| v2185_11(void) = ConditionalBranch : r2185_10 #-----| False -> Block 2 #-----| True -> Block 1 -# 2183| Block 1 -# 2183| v2183_12(void) = NoOp : +# 2185| Block 1 +# 2185| v2185_12(void) = NoOp : #-----| Goto -> Block 2 -# 2184| Block 2 -# 2184| v2184_1(void) = NoOp : -# 2182| v2182_4(void) = ReturnVoid : -# 2182| v2182_5(void) = AliasedUse : ~m? -# 2182| v2182_6(void) = ExitFunction : +# 2186| Block 2 +# 2186| v2186_1(void) = NoOp : +# 2184| v2184_4(void) = ReturnVoid : +# 2184| v2184_5(void) = AliasedUse : ~m? +# 2184| v2184_6(void) = ExitFunction : -# 2186| void ClassWithDestructor::ClassWithDestructor(ClassWithDestructor const&) -# 2186| Block 0 -# 2186| v2186_1(void) = EnterFunction : -# 2186| mu2186_2(unknown) = AliasedDefinition : -# 2186| mu2186_3(unknown) = InitializeNonLocal : -# 2186| r2186_4(glval) = VariableAddress[#this] : -# 2186| mu2186_5(glval) = InitializeParameter[#this] : &:r2186_4 -# 2186| r2186_6(glval) = Load[#this] : &:r2186_4, ~m? -# 2186| mu2186_7(ClassWithDestructor) = InitializeIndirection[#this] : &:r2186_6 +# 2188| void ClassWithDestructor::ClassWithDestructor(ClassWithDestructor const&) +# 2188| Block 0 +# 2188| v2188_1(void) = EnterFunction : +# 2188| mu2188_2(unknown) = AliasedDefinition : +# 2188| mu2188_3(unknown) = InitializeNonLocal : +# 2188| r2188_4(glval) = VariableAddress[#this] : +# 2188| mu2188_5(glval) = InitializeParameter[#this] : &:r2188_4 +# 2188| r2188_6(glval) = Load[#this] : &:r2188_4, ~m? +# 2188| mu2188_7(ClassWithDestructor) = InitializeIndirection[#this] : &:r2188_6 #-----| r0_1(glval) = VariableAddress[(unnamed parameter 0)] : #-----| mu0_2(ClassWithDestructor &) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(ClassWithDestructor &) = Load[(unnamed parameter 0)] : &:r0_1, ~m? #-----| mu0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 2186| r2186_8(glval) = FieldAddress[x] : r2186_6 -# 2186| r2186_9(glval) = VariableAddress[(unnamed parameter 0)] : -# 2186| r2186_10(ClassWithDestructor &) = Load[(unnamed parameter 0)] : &:r2186_9, ~m? -# 2186| r2186_11(glval) = CopyValue : r2186_10 -# 2186| r2186_12(glval) = FieldAddress[x] : r2186_11 -# 2186| r2186_13(char *) = Load[?] : &:r2186_12, ~m? -# 2186| mu2186_14(char *) = Store[?] : &:r2186_8, r2186_13 -# 2186| v2186_15(void) = NoOp : -# 2186| v2186_16(void) = ReturnIndirection[#this] : &:r2186_6, ~m? +# 2188| r2188_8(glval) = FieldAddress[x] : r2188_6 +# 2188| r2188_9(glval) = VariableAddress[(unnamed parameter 0)] : +# 2188| r2188_10(ClassWithDestructor &) = Load[(unnamed parameter 0)] : &:r2188_9, ~m? +# 2188| r2188_11(glval) = CopyValue : r2188_10 +# 2188| r2188_12(glval) = FieldAddress[x] : r2188_11 +# 2188| r2188_13(char *) = Load[?] : &:r2188_12, ~m? +# 2188| mu2188_14(char *) = Store[?] : &:r2188_8, r2188_13 +# 2188| v2188_15(void) = NoOp : +# 2188| v2188_16(void) = ReturnIndirection[#this] : &:r2188_6, ~m? #-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, ~m? -# 2186| v2186_17(void) = ReturnVoid : -# 2186| v2186_18(void) = AliasedUse : ~m? -# 2186| v2186_19(void) = ExitFunction : +# 2188| v2188_17(void) = ReturnVoid : +# 2188| v2188_18(void) = AliasedUse : ~m? +# 2188| v2188_19(void) = ExitFunction : -# 2189| void ClassWithDestructor::ClassWithDestructor() -# 2189| Block 0 -# 2189| v2189_1(void) = EnterFunction : -# 2189| mu2189_2(unknown) = AliasedDefinition : -# 2189| mu2189_3(unknown) = InitializeNonLocal : -# 2189| r2189_4(glval) = VariableAddress[#this] : -# 2189| mu2189_5(glval) = InitializeParameter[#this] : &:r2189_4 -# 2189| r2189_6(glval) = Load[#this] : &:r2189_4, ~m? -# 2189| mu2189_7(ClassWithDestructor) = InitializeIndirection[#this] : &:r2189_6 -# 2189| r2189_8(glval) = FunctionAddress[operator new] : -# 2189| r2189_9(unsigned long) = Constant[1] : -# 2189| r2189_10(void *) = Call[operator new] : func:r2189_8, 0:r2189_9 -# 2189| mu2189_11(unknown) = ^CallSideEffect : ~m? -# 2189| mu2189_12(unknown) = ^InitializeDynamicAllocation : &:r2189_10 -# 2189| r2189_13(char *) = Convert : r2189_10 -# 2189| r2189_14(glval) = VariableAddress[#this] : -# 2189| r2189_15(ClassWithDestructor *) = Load[#this] : &:r2189_14, ~m? -# 2189| r2189_16(glval) = FieldAddress[x] : r2189_15 -# 2189| mu2189_17(char *) = Store[?] : &:r2189_16, r2189_13 -# 2189| v2189_18(void) = NoOp : -# 2189| v2189_19(void) = ReturnIndirection[#this] : &:r2189_6, ~m? -# 2189| v2189_20(void) = ReturnVoid : -# 2189| v2189_21(void) = AliasedUse : ~m? -# 2189| v2189_22(void) = ExitFunction : +# 2191| void ClassWithDestructor::ClassWithDestructor() +# 2191| Block 0 +# 2191| v2191_1(void) = EnterFunction : +# 2191| mu2191_2(unknown) = AliasedDefinition : +# 2191| mu2191_3(unknown) = InitializeNonLocal : +# 2191| r2191_4(glval) = VariableAddress[#this] : +# 2191| mu2191_5(glval) = InitializeParameter[#this] : &:r2191_4 +# 2191| r2191_6(glval) = Load[#this] : &:r2191_4, ~m? +# 2191| mu2191_7(ClassWithDestructor) = InitializeIndirection[#this] : &:r2191_6 +# 2191| r2191_8(glval) = FunctionAddress[operator new] : +# 2191| r2191_9(unsigned long) = Constant[1] : +# 2191| r2191_10(void *) = Call[operator new] : func:r2191_8, 0:r2191_9 +# 2191| mu2191_11(unknown) = ^CallSideEffect : ~m? +# 2191| mu2191_12(unknown) = ^InitializeDynamicAllocation : &:r2191_10 +# 2191| r2191_13(char *) = Convert : r2191_10 +# 2191| r2191_14(glval) = VariableAddress[#this] : +# 2191| r2191_15(ClassWithDestructor *) = Load[#this] : &:r2191_14, ~m? +# 2191| r2191_16(glval) = FieldAddress[x] : r2191_15 +# 2191| mu2191_17(char *) = Store[?] : &:r2191_16, r2191_13 +# 2191| v2191_18(void) = NoOp : +# 2191| v2191_19(void) = ReturnIndirection[#this] : &:r2191_6, ~m? +# 2191| v2191_20(void) = ReturnVoid : +# 2191| v2191_21(void) = AliasedUse : ~m? +# 2191| v2191_22(void) = ExitFunction : -# 2190| void ClassWithDestructor::~ClassWithDestructor() -# 2190| Block 0 -# 2190| v2190_1(void) = EnterFunction : -# 2190| mu2190_2(unknown) = AliasedDefinition : -# 2190| mu2190_3(unknown) = InitializeNonLocal : -# 2190| r2190_4(glval) = VariableAddress[#this] : -# 2190| mu2190_5(glval) = InitializeParameter[#this] : &:r2190_4 -# 2190| r2190_6(glval) = Load[#this] : &:r2190_4, ~m? -# 2190| mu2190_7(ClassWithDestructor) = InitializeIndirection[#this] : &:r2190_6 -# 2190| r2190_8(glval) = FunctionAddress[operator delete] : -# 2190| r2190_9(glval) = VariableAddress[#this] : -# 2190| r2190_10(ClassWithDestructor *) = Load[#this] : &:r2190_9, ~m? -# 2190| r2190_11(glval) = FieldAddress[x] : r2190_10 -# 2190| r2190_12(char *) = Load[?] : &:r2190_11, ~m? -# 2190| v2190_13(void) = Call[operator delete] : func:r2190_8, 0:r2190_12 -# 2190| mu2190_14(unknown) = ^CallSideEffect : ~m? -# 2190| v2190_15(void) = NoOp : -# 2190| v2190_16(void) = ReturnIndirection[#this] : &:r2190_6, ~m? -# 2190| v2190_17(void) = ReturnVoid : -# 2190| v2190_18(void) = AliasedUse : ~m? -# 2190| v2190_19(void) = ExitFunction : - -# 2192| void ClassWithDestructor::set_x(char) +# 2192| void ClassWithDestructor::~ClassWithDestructor() # 2192| Block 0 -# 2192| v2192_1(void) = EnterFunction : -# 2192| mu2192_2(unknown) = AliasedDefinition : -# 2192| mu2192_3(unknown) = InitializeNonLocal : -# 2192| r2192_4(glval) = VariableAddress[#this] : -# 2192| mu2192_5(glval) = InitializeParameter[#this] : &:r2192_4 -# 2192| r2192_6(glval) = Load[#this] : &:r2192_4, ~m? -# 2192| mu2192_7(ClassWithDestructor) = InitializeIndirection[#this] : &:r2192_6 -# 2192| r2192_8(glval) = VariableAddress[y] : -# 2192| mu2192_9(char) = InitializeParameter[y] : &:r2192_8 -# 2192| r2192_10(glval) = VariableAddress[y] : -# 2192| r2192_11(char) = Load[y] : &:r2192_10, ~m? -# 2192| r2192_12(glval) = VariableAddress[#this] : -# 2192| r2192_13(ClassWithDestructor *) = Load[#this] : &:r2192_12, ~m? -# 2192| r2192_14(glval) = FieldAddress[x] : r2192_13 -# 2192| r2192_15(char *) = Load[?] : &:r2192_14, ~m? -# 2192| r2192_16(glval) = CopyValue : r2192_15 -# 2192| mu2192_17(char) = Store[?] : &:r2192_16, r2192_11 -# 2192| v2192_18(void) = NoOp : -# 2192| v2192_19(void) = ReturnIndirection[#this] : &:r2192_6, ~m? -# 2192| v2192_20(void) = ReturnVoid : -# 2192| v2192_21(void) = AliasedUse : ~m? -# 2192| v2192_22(void) = ExitFunction : +# 2192| v2192_1(void) = EnterFunction : +# 2192| mu2192_2(unknown) = AliasedDefinition : +# 2192| mu2192_3(unknown) = InitializeNonLocal : +# 2192| r2192_4(glval) = VariableAddress[#this] : +# 2192| mu2192_5(glval) = InitializeParameter[#this] : &:r2192_4 +# 2192| r2192_6(glval) = Load[#this] : &:r2192_4, ~m? +# 2192| mu2192_7(ClassWithDestructor) = InitializeIndirection[#this] : &:r2192_6 +# 2192| r2192_8(glval) = FunctionAddress[operator delete] : +# 2192| r2192_9(glval) = VariableAddress[#this] : +# 2192| r2192_10(ClassWithDestructor *) = Load[#this] : &:r2192_9, ~m? +# 2192| r2192_11(glval) = FieldAddress[x] : r2192_10 +# 2192| r2192_12(char *) = Load[?] : &:r2192_11, ~m? +# 2192| v2192_13(void) = Call[operator delete] : func:r2192_8, 0:r2192_12 +# 2192| mu2192_14(unknown) = ^CallSideEffect : ~m? +# 2192| v2192_15(void) = NoOp : +# 2192| v2192_16(void) = ReturnIndirection[#this] : &:r2192_6, ~m? +# 2192| v2192_17(void) = ReturnVoid : +# 2192| v2192_18(void) = AliasedUse : ~m? +# 2192| v2192_19(void) = ExitFunction : -# 2193| char ClassWithDestructor::get_x() -# 2193| Block 0 -# 2193| v2193_1(void) = EnterFunction : -# 2193| mu2193_2(unknown) = AliasedDefinition : -# 2193| mu2193_3(unknown) = InitializeNonLocal : -# 2193| r2193_4(glval) = VariableAddress[#this] : -# 2193| mu2193_5(glval) = InitializeParameter[#this] : &:r2193_4 -# 2193| r2193_6(glval) = Load[#this] : &:r2193_4, ~m? -# 2193| mu2193_7(ClassWithDestructor) = InitializeIndirection[#this] : &:r2193_6 -# 2193| r2193_8(glval) = VariableAddress[#return] : -# 2193| r2193_9(glval) = VariableAddress[#this] : -# 2193| r2193_10(ClassWithDestructor *) = Load[#this] : &:r2193_9, ~m? -# 2193| r2193_11(glval) = FieldAddress[x] : r2193_10 -# 2193| r2193_12(char *) = Load[?] : &:r2193_11, ~m? -# 2193| r2193_13(char) = Load[?] : &:r2193_12, ~m? -# 2193| mu2193_14(char) = Store[#return] : &:r2193_8, r2193_13 -# 2193| v2193_15(void) = ReturnIndirection[#this] : &:r2193_6, ~m? -# 2193| r2193_16(glval) = VariableAddress[#return] : -# 2193| v2193_17(void) = ReturnValue : &:r2193_16, ~m? -# 2193| v2193_18(void) = AliasedUse : ~m? -# 2193| v2193_19(void) = ExitFunction : +# 2194| void ClassWithDestructor::set_x(char) +# 2194| Block 0 +# 2194| v2194_1(void) = EnterFunction : +# 2194| mu2194_2(unknown) = AliasedDefinition : +# 2194| mu2194_3(unknown) = InitializeNonLocal : +# 2194| r2194_4(glval) = VariableAddress[#this] : +# 2194| mu2194_5(glval) = InitializeParameter[#this] : &:r2194_4 +# 2194| r2194_6(glval) = Load[#this] : &:r2194_4, ~m? +# 2194| mu2194_7(ClassWithDestructor) = InitializeIndirection[#this] : &:r2194_6 +# 2194| r2194_8(glval) = VariableAddress[y] : +# 2194| mu2194_9(char) = InitializeParameter[y] : &:r2194_8 +# 2194| r2194_10(glval) = VariableAddress[y] : +# 2194| r2194_11(char) = Load[y] : &:r2194_10, ~m? +# 2194| r2194_12(glval) = VariableAddress[#this] : +# 2194| r2194_13(ClassWithDestructor *) = Load[#this] : &:r2194_12, ~m? +# 2194| r2194_14(glval) = FieldAddress[x] : r2194_13 +# 2194| r2194_15(char *) = Load[?] : &:r2194_14, ~m? +# 2194| r2194_16(glval) = CopyValue : r2194_15 +# 2194| mu2194_17(char) = Store[?] : &:r2194_16, r2194_11 +# 2194| v2194_18(void) = NoOp : +# 2194| v2194_19(void) = ReturnIndirection[#this] : &:r2194_6, ~m? +# 2194| v2194_20(void) = ReturnVoid : +# 2194| v2194_21(void) = AliasedUse : ~m? +# 2194| v2194_22(void) = ExitFunction : -# 2197| bool initialization_with_destructor_bool -# 2197| Block 0 -# 2197| v2197_1(void) = EnterFunction : -# 2197| mu2197_2(unknown) = AliasedDefinition : -# 2197| r2197_3(glval) = VariableAddress[initialization_with_destructor_bool] : -# 2197| r2197_4(bool) = Constant[1] : -# 2197| mu2197_5(bool) = Store[initialization_with_destructor_bool] : &:r2197_3, r2197_4 -# 2197| v2197_6(void) = ReturnVoid : -# 2197| v2197_7(void) = AliasedUse : ~m? -# 2197| v2197_8(void) = ExitFunction : +# 2195| char ClassWithDestructor::get_x() +# 2195| Block 0 +# 2195| v2195_1(void) = EnterFunction : +# 2195| mu2195_2(unknown) = AliasedDefinition : +# 2195| mu2195_3(unknown) = InitializeNonLocal : +# 2195| r2195_4(glval) = VariableAddress[#this] : +# 2195| mu2195_5(glval) = InitializeParameter[#this] : &:r2195_4 +# 2195| r2195_6(glval) = Load[#this] : &:r2195_4, ~m? +# 2195| mu2195_7(ClassWithDestructor) = InitializeIndirection[#this] : &:r2195_6 +# 2195| r2195_8(glval) = VariableAddress[#return] : +# 2195| r2195_9(glval) = VariableAddress[#this] : +# 2195| r2195_10(ClassWithDestructor *) = Load[#this] : &:r2195_9, ~m? +# 2195| r2195_11(glval) = FieldAddress[x] : r2195_10 +# 2195| r2195_12(char *) = Load[?] : &:r2195_11, ~m? +# 2195| r2195_13(char) = Load[?] : &:r2195_12, ~m? +# 2195| mu2195_14(char) = Store[#return] : &:r2195_8, r2195_13 +# 2195| v2195_15(void) = ReturnIndirection[#this] : &:r2195_6, ~m? +# 2195| r2195_16(glval) = VariableAddress[#return] : +# 2195| v2195_17(void) = ReturnValue : &:r2195_16, ~m? +# 2195| v2195_18(void) = AliasedUse : ~m? +# 2195| v2195_19(void) = ExitFunction : -# 2199| void initialization_with_destructor(bool, char) +# 2199| bool initialization_with_destructor_bool # 2199| Block 0 -# 2199| v2199_1(void) = EnterFunction : -# 2199| mu2199_2(unknown) = AliasedDefinition : -# 2199| mu2199_3(unknown) = InitializeNonLocal : -# 2199| r2199_4(glval) = VariableAddress[b] : -# 2199| mu2199_5(bool) = InitializeParameter[b] : &:r2199_4 -# 2199| r2199_6(glval) = VariableAddress[c] : -# 2199| mu2199_7(char) = InitializeParameter[c] : &:r2199_6 -# 2200| r2200_1(glval) = VariableAddress[x] : -# 2200| mu2200_2(ClassWithDestructor) = Uninitialized[x] : &:r2200_1 -# 2200| r2200_3(glval) = FunctionAddress[ClassWithDestructor] : -# 2200| v2200_4(void) = Call[ClassWithDestructor] : func:r2200_3, this:r2200_1 -# 2200| mu2200_5(unknown) = ^CallSideEffect : ~m? -# 2200| mu2200_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2200_1 -# 2200| r2200_7(glval) = VariableAddress[b] : -# 2200| r2200_8(bool) = Load[b] : &:r2200_7, ~m? -# 2200| v2200_9(void) = ConditionalBranch : r2200_8 +# 2199| v2199_1(void) = EnterFunction : +# 2199| mu2199_2(unknown) = AliasedDefinition : +# 2199| r2199_3(glval) = VariableAddress[initialization_with_destructor_bool] : +# 2199| r2199_4(bool) = Constant[1] : +# 2199| mu2199_5(bool) = Store[initialization_with_destructor_bool] : &:r2199_3, r2199_4 +# 2199| v2199_6(void) = ReturnVoid : +# 2199| v2199_7(void) = AliasedUse : ~m? +# 2199| v2199_8(void) = ExitFunction : + +# 2201| void initialization_with_destructor(bool, char) +# 2201| Block 0 +# 2201| v2201_1(void) = EnterFunction : +# 2201| mu2201_2(unknown) = AliasedDefinition : +# 2201| mu2201_3(unknown) = InitializeNonLocal : +# 2201| r2201_4(glval) = VariableAddress[b] : +# 2201| mu2201_5(bool) = InitializeParameter[b] : &:r2201_4 +# 2201| r2201_6(glval) = VariableAddress[c] : +# 2201| mu2201_7(char) = InitializeParameter[c] : &:r2201_6 +# 2202| r2202_1(glval) = VariableAddress[x] : +# 2202| mu2202_2(ClassWithDestructor) = Uninitialized[x] : &:r2202_1 +# 2202| r2202_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2202| v2202_4(void) = Call[ClassWithDestructor] : func:r2202_3, this:r2202_1 +# 2202| mu2202_5(unknown) = ^CallSideEffect : ~m? +# 2202| mu2202_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2202_1 +# 2202| r2202_7(glval) = VariableAddress[b] : +# 2202| r2202_8(bool) = Load[b] : &:r2202_7, ~m? +# 2202| v2202_9(void) = ConditionalBranch : r2202_8 #-----| False -> Block 3 #-----| True -> Block 2 -# 2199| Block 1 -# 2199| v2199_8(void) = ReturnVoid : -# 2199| v2199_9(void) = AliasedUse : ~m? -# 2199| v2199_10(void) = ExitFunction : +# 2201| Block 1 +# 2201| v2201_8(void) = ReturnVoid : +# 2201| v2201_9(void) = AliasedUse : ~m? +# 2201| v2201_10(void) = ExitFunction : -# 2201| Block 2 -# 2201| r2201_1(glval) = VariableAddress[x] : -# 2201| r2201_2(glval) = FunctionAddress[set_x] : -# 2201| r2201_3(char) = Constant[97] : -# 2201| v2201_4(void) = Call[set_x] : func:r2201_2, this:r2201_1, 0:r2201_3 -# 2201| mu2201_5(unknown) = ^CallSideEffect : ~m? -# 2201| v2201_6(void) = ^IndirectReadSideEffect[-1] : &:r2201_1, ~m? -# 2201| mu2201_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2201_1 +# 2203| Block 2 +# 2203| r2203_1(glval) = VariableAddress[x] : +# 2203| r2203_2(glval) = FunctionAddress[set_x] : +# 2203| r2203_3(char) = Constant[97] : +# 2203| v2203_4(void) = Call[set_x] : func:r2203_2, this:r2203_1, 0:r2203_3 +# 2203| mu2203_5(unknown) = ^CallSideEffect : ~m? +# 2203| v2203_6(void) = ^IndirectReadSideEffect[-1] : &:r2203_1, ~m? +# 2203| mu2203_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2203_1 #-----| Goto -> Block 3 -# 2201| Block 3 -# 2201| r2201_8(glval) = VariableAddress[x] : -# 2201| r2201_9(glval) = FunctionAddress[~ClassWithDestructor] : -# 2201| v2201_10(void) = Call[~ClassWithDestructor] : func:r2201_9, this:r2201_8 -# 2201| mu2201_11(unknown) = ^CallSideEffect : ~m? -# 2201| v2201_12(void) = ^IndirectReadSideEffect[-1] : &:r2201_8, ~m? -# 2201| mu2201_13(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2201_8 -# 2203| r2203_1(glval) = VariableAddress[x] : -# 2203| mu2203_2(ClassWithDestructor) = Uninitialized[x] : &:r2203_1 -# 2203| r2203_3(glval) = FunctionAddress[ClassWithDestructor] : -# 2203| v2203_4(void) = Call[ClassWithDestructor] : func:r2203_3, this:r2203_1 -# 2203| mu2203_5(unknown) = ^CallSideEffect : ~m? -# 2203| mu2203_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2203_1 -# 2203| r2203_7(bool) = Constant[1] : -# 2203| v2203_8(void) = ConditionalBranch : r2203_7 +# 2203| Block 3 +# 2203| r2203_8(glval) = VariableAddress[x] : +# 2203| r2203_9(glval) = FunctionAddress[~ClassWithDestructor] : +# 2203| v2203_10(void) = Call[~ClassWithDestructor] : func:r2203_9, this:r2203_8 +# 2203| mu2203_11(unknown) = ^CallSideEffect : ~m? +# 2203| v2203_12(void) = ^IndirectReadSideEffect[-1] : &:r2203_8, ~m? +# 2203| mu2203_13(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2203_8 +# 2205| r2205_1(glval) = VariableAddress[x] : +# 2205| mu2205_2(ClassWithDestructor) = Uninitialized[x] : &:r2205_1 +# 2205| r2205_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2205| v2205_4(void) = Call[ClassWithDestructor] : func:r2205_3, this:r2205_1 +# 2205| mu2205_5(unknown) = ^CallSideEffect : ~m? +# 2205| mu2205_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2205_1 +# 2205| r2205_7(bool) = Constant[1] : +# 2205| v2205_8(void) = ConditionalBranch : r2205_7 #-----| False -> Block 5 #-----| True -> Block 4 -# 2204| Block 4 -# 2204| r2204_1(glval) = VariableAddress[x] : -# 2204| r2204_2(glval) = FunctionAddress[set_x] : -# 2204| r2204_3(char) = Constant[97] : -# 2204| v2204_4(void) = Call[set_x] : func:r2204_2, this:r2204_1, 0:r2204_3 -# 2204| mu2204_5(unknown) = ^CallSideEffect : ~m? -# 2204| v2204_6(void) = ^IndirectReadSideEffect[-1] : &:r2204_1, ~m? -# 2204| mu2204_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2204_1 +# 2206| Block 4 +# 2206| r2206_1(glval) = VariableAddress[x] : +# 2206| r2206_2(glval) = FunctionAddress[set_x] : +# 2206| r2206_3(char) = Constant[97] : +# 2206| v2206_4(void) = Call[set_x] : func:r2206_2, this:r2206_1, 0:r2206_3 +# 2206| mu2206_5(unknown) = ^CallSideEffect : ~m? +# 2206| v2206_6(void) = ^IndirectReadSideEffect[-1] : &:r2206_1, ~m? +# 2206| mu2206_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2206_1 #-----| Goto -> Block 5 -# 2204| Block 5 -# 2204| r2204_8(glval) = VariableAddress[x] : -# 2204| r2204_9(glval) = FunctionAddress[~ClassWithDestructor] : -# 2204| v2204_10(void) = Call[~ClassWithDestructor] : func:r2204_9, this:r2204_8 -# 2204| mu2204_11(unknown) = ^CallSideEffect : ~m? -# 2204| v2204_12(void) = ^IndirectReadSideEffect[-1] : &:r2204_8, ~m? -# 2204| mu2204_13(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2204_8 -# 2206| r2206_1(glval) = VariableAddress[x] : -# 2206| mu2206_2(ClassWithDestructor) = Uninitialized[x] : &:r2206_1 -# 2206| r2206_3(glval) = FunctionAddress[ClassWithDestructor] : -# 2206| v2206_4(void) = Call[ClassWithDestructor] : func:r2206_3, this:r2206_1 -# 2206| mu2206_5(unknown) = ^CallSideEffect : ~m? -# 2206| mu2206_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2206_1 -# 2206| r2206_7(glval) = VariableAddress[c] : -# 2206| r2206_8(char) = Load[c] : &:r2206_7, ~m? -# 2206| r2206_9(int) = Convert : r2206_8 -# 2206| v2206_10(void) = Switch : r2206_9 +# 2206| Block 5 +# 2206| r2206_8(glval) = VariableAddress[x] : +# 2206| r2206_9(glval) = FunctionAddress[~ClassWithDestructor] : +# 2206| v2206_10(void) = Call[~ClassWithDestructor] : func:r2206_9, this:r2206_8 +# 2206| mu2206_11(unknown) = ^CallSideEffect : ~m? +# 2206| v2206_12(void) = ^IndirectReadSideEffect[-1] : &:r2206_8, ~m? +# 2206| mu2206_13(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2206_8 +# 2208| r2208_1(glval) = VariableAddress[x] : +# 2208| mu2208_2(ClassWithDestructor) = Uninitialized[x] : &:r2208_1 +# 2208| r2208_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2208| v2208_4(void) = Call[ClassWithDestructor] : func:r2208_3, this:r2208_1 +# 2208| mu2208_5(unknown) = ^CallSideEffect : ~m? +# 2208| mu2208_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2208_1 +# 2208| r2208_7(glval) = VariableAddress[c] : +# 2208| r2208_8(char) = Load[c] : &:r2208_7, ~m? +# 2208| r2208_9(int) = Convert : r2208_8 +# 2208| v2208_10(void) = Switch : r2208_9 #-----| Case[97] -> Block 6 #-----| Default -> Block 7 -# 2207| Block 6 -# 2207| v2207_1(void) = NoOp : -# 2208| r2208_1(glval) = VariableAddress[x] : -# 2208| r2208_2(glval) = FunctionAddress[set_x] : -# 2208| r2208_3(char) = Constant[97] : -# 2208| v2208_4(void) = Call[set_x] : func:r2208_2, this:r2208_1, 0:r2208_3 -# 2208| mu2208_5(unknown) = ^CallSideEffect : ~m? -# 2208| v2208_6(void) = ^IndirectReadSideEffect[-1] : &:r2208_1, ~m? -# 2208| mu2208_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2208_1 -# 2213| r2213_1(glval) = VariableAddress[x] : -# 2213| r2213_2(glval) = FunctionAddress[~ClassWithDestructor] : -# 2213| v2213_3(void) = Call[~ClassWithDestructor] : func:r2213_2, this:r2213_1 -# 2213| mu2213_4(unknown) = ^CallSideEffect : ~m? -# 2213| v2213_5(void) = ^IndirectReadSideEffect[-1] : &:r2213_1, ~m? -# 2213| mu2213_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2213_1 +# 2209| Block 6 # 2209| v2209_1(void) = NoOp : +# 2210| r2210_1(glval) = VariableAddress[x] : +# 2210| r2210_2(glval) = FunctionAddress[set_x] : +# 2210| r2210_3(char) = Constant[97] : +# 2210| v2210_4(void) = Call[set_x] : func:r2210_2, this:r2210_1, 0:r2210_3 +# 2210| mu2210_5(unknown) = ^CallSideEffect : ~m? +# 2210| v2210_6(void) = ^IndirectReadSideEffect[-1] : &:r2210_1, ~m? +# 2210| mu2210_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2210_1 +# 2215| r2215_1(glval) = VariableAddress[x] : +# 2215| r2215_2(glval) = FunctionAddress[~ClassWithDestructor] : +# 2215| v2215_3(void) = Call[~ClassWithDestructor] : func:r2215_2, this:r2215_1 +# 2215| mu2215_4(unknown) = ^CallSideEffect : ~m? +# 2215| v2215_5(void) = ^IndirectReadSideEffect[-1] : &:r2215_1, ~m? +# 2215| mu2215_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2215_1 +# 2211| v2211_1(void) = NoOp : #-----| Goto -> Block 9 -# 2210| Block 7 -# 2210| v2210_1(void) = NoOp : -# 2211| r2211_1(glval) = VariableAddress[x] : -# 2211| r2211_2(glval) = FunctionAddress[set_x] : -# 2211| r2211_3(char) = Constant[98] : -# 2211| v2211_4(void) = Call[set_x] : func:r2211_2, this:r2211_1, 0:r2211_3 -# 2211| mu2211_5(unknown) = ^CallSideEffect : ~m? -# 2211| v2211_6(void) = ^IndirectReadSideEffect[-1] : &:r2211_1, ~m? -# 2211| mu2211_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2211_1 -# 2213| r2213_7(glval) = VariableAddress[x] : -# 2213| r2213_8(glval) = FunctionAddress[~ClassWithDestructor] : -# 2213| v2213_9(void) = Call[~ClassWithDestructor] : func:r2213_8, this:r2213_7 -# 2213| mu2213_10(unknown) = ^CallSideEffect : ~m? -# 2213| v2213_11(void) = ^IndirectReadSideEffect[-1] : &:r2213_7, ~m? -# 2213| mu2213_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2213_7 +# 2212| Block 7 # 2212| v2212_1(void) = NoOp : +# 2213| r2213_1(glval) = VariableAddress[x] : +# 2213| r2213_2(glval) = FunctionAddress[set_x] : +# 2213| r2213_3(char) = Constant[98] : +# 2213| v2213_4(void) = Call[set_x] : func:r2213_2, this:r2213_1, 0:r2213_3 +# 2213| mu2213_5(unknown) = ^CallSideEffect : ~m? +# 2213| v2213_6(void) = ^IndirectReadSideEffect[-1] : &:r2213_1, ~m? +# 2213| mu2213_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2213_1 +# 2215| r2215_7(glval) = VariableAddress[x] : +# 2215| r2215_8(glval) = FunctionAddress[~ClassWithDestructor] : +# 2215| v2215_9(void) = Call[~ClassWithDestructor] : func:r2215_8, this:r2215_7 +# 2215| mu2215_10(unknown) = ^CallSideEffect : ~m? +# 2215| v2215_11(void) = ^IndirectReadSideEffect[-1] : &:r2215_7, ~m? +# 2215| mu2215_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2215_7 +# 2214| v2214_1(void) = NoOp : #-----| Goto -> Block 9 -# 2213| Block 8 -# 2213| r2213_13(glval) = VariableAddress[x] : -# 2213| r2213_14(glval) = FunctionAddress[~ClassWithDestructor] : -# 2213| v2213_15(void) = Call[~ClassWithDestructor] : func:r2213_14, this:r2213_13 -# 2213| mu2213_16(unknown) = ^CallSideEffect : ~m? -# 2213| v2213_17(void) = ^IndirectReadSideEffect[-1] : &:r2213_13, ~m? -# 2213| mu2213_18(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2213_13 +# 2215| Block 8 +# 2215| r2215_13(glval) = VariableAddress[x] : +# 2215| r2215_14(glval) = FunctionAddress[~ClassWithDestructor] : +# 2215| v2215_15(void) = Call[~ClassWithDestructor] : func:r2215_14, this:r2215_13 +# 2215| mu2215_16(unknown) = ^CallSideEffect : ~m? +# 2215| v2215_17(void) = ^IndirectReadSideEffect[-1] : &:r2215_13, ~m? +# 2215| mu2215_18(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2215_13 #-----| Goto -> Block 9 -# 2213| Block 9 -# 2213| v2213_19(void) = NoOp : -# 2215| r2215_1(glval) = VariableAddress[x] : -# 2215| mu2215_2(ClassWithDestructor) = Uninitialized[x] : &:r2215_1 -# 2215| r2215_3(glval) = FunctionAddress[ClassWithDestructor] : -# 2215| v2215_4(void) = Call[ClassWithDestructor] : func:r2215_3, this:r2215_1 -# 2215| mu2215_5(unknown) = ^CallSideEffect : ~m? -# 2215| mu2215_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2215_1 -# 2216| r2216_1(glval>) = VariableAddress[ys] : -# 2216| mu2216_2(vector) = Uninitialized[ys] : &:r2216_1 -# 2216| r2216_3(glval) = FunctionAddress[vector] : -# 2216| r2216_4(glval) = VariableAddress[#temp2216:45] : -# 2216| r2216_5(glval) = VariableAddress[x] : -# 2216| r2216_6(ClassWithDestructor) = Load[x] : &:r2216_5, ~m? -# 2216| mu2216_7(ClassWithDestructor) = Store[#temp2216:45] : &:r2216_4, r2216_6 -# 2216| r2216_8(ClassWithDestructor) = Load[#temp2216:45] : &:r2216_4, ~m? -# 2216| v2216_9(void) = Call[vector] : func:r2216_3, this:r2216_1, 0:r2216_8 -# 2216| mu2216_10(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2216_1 -# 2216| r2216_11(glval) = CopyValue : r2216_4 -# 2216| r2216_12(glval) = FunctionAddress[~ClassWithDestructor] : -# 2216| v2216_13(void) = Call[~ClassWithDestructor] : func:r2216_12, this:r2216_11 -# 2216| mu2216_14(unknown) = ^CallSideEffect : ~m? -# 2216| v2216_15(void) = ^IndirectReadSideEffect[-1] : &:r2216_11, ~m? -# 2216| mu2216_16(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2216_11 -# 2216| r2216_17(glval &>) = VariableAddress[(__range)] : -# 2216| r2216_18(glval>) = VariableAddress[ys] : -# 2216| r2216_19(vector &) = CopyValue : r2216_18 -# 2216| mu2216_20(vector &) = Store[(__range)] : &:r2216_17, r2216_19 -# 2216| r2216_21(glval>) = VariableAddress[(__begin)] : -# 2216| r2216_22(glval &>) = VariableAddress[(__range)] : -# 2216| r2216_23(vector &) = Load[(__range)] : &:r2216_22, ~m? -#-----| r0_1(glval>) = CopyValue : r2216_23 +# 2215| Block 9 +# 2215| v2215_19(void) = NoOp : +# 2217| r2217_1(glval) = VariableAddress[x] : +# 2217| mu2217_2(ClassWithDestructor) = Uninitialized[x] : &:r2217_1 +# 2217| r2217_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2217| v2217_4(void) = Call[ClassWithDestructor] : func:r2217_3, this:r2217_1 +# 2217| mu2217_5(unknown) = ^CallSideEffect : ~m? +# 2217| mu2217_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2217_1 +# 2218| r2218_1(glval>) = VariableAddress[ys] : +# 2218| mu2218_2(vector) = Uninitialized[ys] : &:r2218_1 +# 2218| r2218_3(glval) = FunctionAddress[vector] : +# 2218| r2218_4(glval) = VariableAddress[#temp2218:45] : +# 2218| r2218_5(glval) = VariableAddress[x] : +# 2218| r2218_6(ClassWithDestructor) = Load[x] : &:r2218_5, ~m? +# 2218| mu2218_7(ClassWithDestructor) = Store[#temp2218:45] : &:r2218_4, r2218_6 +# 2218| r2218_8(ClassWithDestructor) = Load[#temp2218:45] : &:r2218_4, ~m? +# 2218| v2218_9(void) = Call[vector] : func:r2218_3, this:r2218_1, 0:r2218_8 +# 2218| mu2218_10(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2218_1 +# 2218| r2218_11(glval) = CopyValue : r2218_4 +# 2218| r2218_12(glval) = FunctionAddress[~ClassWithDestructor] : +# 2218| v2218_13(void) = Call[~ClassWithDestructor] : func:r2218_12, this:r2218_11 +# 2218| mu2218_14(unknown) = ^CallSideEffect : ~m? +# 2218| v2218_15(void) = ^IndirectReadSideEffect[-1] : &:r2218_11, ~m? +# 2218| mu2218_16(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2218_11 +# 2218| r2218_17(glval &>) = VariableAddress[(__range)] : +# 2218| r2218_18(glval>) = VariableAddress[ys] : +# 2218| r2218_19(vector &) = CopyValue : r2218_18 +# 2218| mu2218_20(vector &) = Store[(__range)] : &:r2218_17, r2218_19 +# 2218| r2218_21(glval>) = VariableAddress[(__begin)] : +# 2218| r2218_22(glval &>) = VariableAddress[(__range)] : +# 2218| r2218_23(vector &) = Load[(__range)] : &:r2218_22, ~m? +#-----| r0_1(glval>) = CopyValue : r2218_23 #-----| r0_2(glval>) = Convert : r0_1 -# 2216| r2216_24(glval) = FunctionAddress[begin] : -# 2216| r2216_25(iterator) = Call[begin] : func:r2216_24, this:r0_2 +# 2218| r2218_24(glval) = FunctionAddress[begin] : +# 2218| r2218_25(iterator) = Call[begin] : func:r2218_24, this:r0_2 #-----| v0_3(void) = ^IndirectReadSideEffect[-1] : &:r0_2, ~m? -# 2216| mu2216_26(iterator) = Store[(__begin)] : &:r2216_21, r2216_25 -# 2216| r2216_27(glval>) = VariableAddress[(__end)] : -# 2216| r2216_28(glval &>) = VariableAddress[(__range)] : -# 2216| r2216_29(vector &) = Load[(__range)] : &:r2216_28, ~m? -#-----| r0_4(glval>) = CopyValue : r2216_29 +# 2218| mu2218_26(iterator) = Store[(__begin)] : &:r2218_21, r2218_25 +# 2218| r2218_27(glval>) = VariableAddress[(__end)] : +# 2218| r2218_28(glval &>) = VariableAddress[(__range)] : +# 2218| r2218_29(vector &) = Load[(__range)] : &:r2218_28, ~m? +#-----| r0_4(glval>) = CopyValue : r2218_29 #-----| r0_5(glval>) = Convert : r0_4 -# 2216| r2216_30(glval) = FunctionAddress[end] : -# 2216| r2216_31(iterator) = Call[end] : func:r2216_30, this:r0_5 +# 2218| r2218_30(glval) = FunctionAddress[end] : +# 2218| r2218_31(iterator) = Call[end] : func:r2218_30, this:r0_5 #-----| v0_6(void) = ^IndirectReadSideEffect[-1] : &:r0_5, ~m? -# 2216| mu2216_32(iterator) = Store[(__end)] : &:r2216_27, r2216_31 +# 2218| mu2218_32(iterator) = Store[(__end)] : &:r2218_27, r2218_31 #-----| Goto -> Block 10 -# 2216| Block 10 -# 2216| r2216_33(glval>) = VariableAddress[(__begin)] : -#-----| r0_7(glval>) = Convert : r2216_33 -# 2216| r2216_34(glval) = FunctionAddress[operator!=] : +# 2218| Block 10 +# 2218| r2218_33(glval>) = VariableAddress[(__begin)] : +#-----| r0_7(glval>) = Convert : r2218_33 +# 2218| r2218_34(glval) = FunctionAddress[operator!=] : #-----| r0_8(glval>) = VariableAddress[#temp0:0] : #-----| mu0_9(iterator) = Uninitialized[#temp0:0] : &:r0_8 -# 2216| r2216_35(glval) = FunctionAddress[iterator] : -# 2216| r2216_36(glval>) = VariableAddress[(__end)] : -#-----| r0_10(glval>) = Convert : r2216_36 +# 2218| r2218_35(glval) = FunctionAddress[iterator] : +# 2218| r2218_36(glval>) = VariableAddress[(__end)] : +#-----| r0_10(glval>) = Convert : r2218_36 #-----| r0_11(iterator &) = CopyValue : r0_10 -# 2216| v2216_37(void) = Call[iterator] : func:r2216_35, this:r0_8, 0:r0_11 -# 2216| mu2216_38(unknown) = ^CallSideEffect : ~m? +# 2218| v2218_37(void) = Call[iterator] : func:r2218_35, this:r0_8, 0:r0_11 +# 2218| mu2218_38(unknown) = ^CallSideEffect : ~m? #-----| v0_12(void) = ^BufferReadSideEffect[0] : &:r0_11, ~m? -# 2216| mu2216_39(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r0_8 +# 2218| mu2218_39(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r0_8 #-----| r0_13(iterator) = Load[#temp0:0] : &:r0_8, ~m? -# 2216| r2216_40(bool) = Call[operator!=] : func:r2216_34, this:r0_7, 0:r0_13 +# 2218| r2218_40(bool) = Call[operator!=] : func:r2218_34, this:r0_7, 0:r0_13 #-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_7, ~m? -# 2216| v2216_41(void) = ConditionalBranch : r2216_40 +# 2218| v2218_41(void) = ConditionalBranch : r2218_40 #-----| False -> Block 12 #-----| True -> Block 11 -# 2216| Block 11 -# 2216| r2216_42(glval) = VariableAddress[y] : -# 2216| r2216_43(glval>) = VariableAddress[(__begin)] : -#-----| r0_15(glval>) = Convert : r2216_43 -# 2216| r2216_44(glval) = FunctionAddress[operator*] : -# 2216| r2216_45(ClassWithDestructor &) = Call[operator*] : func:r2216_44, this:r0_15 +# 2218| Block 11 +# 2218| r2218_42(glval) = VariableAddress[y] : +# 2218| r2218_43(glval>) = VariableAddress[(__begin)] : +#-----| r0_15(glval>) = Convert : r2218_43 +# 2218| r2218_44(glval) = FunctionAddress[operator*] : +# 2218| r2218_45(ClassWithDestructor &) = Call[operator*] : func:r2218_44, this:r0_15 #-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, ~m? -# 2216| r2216_46(ClassWithDestructor) = Load[?] : &:r2216_45, ~m? -# 2216| mu2216_47(ClassWithDestructor) = Store[y] : &:r2216_42, r2216_46 -# 2217| r2217_1(glval) = VariableAddress[y] : -# 2217| r2217_2(glval) = FunctionAddress[set_x] : -# 2217| r2217_3(char) = Constant[97] : -# 2217| v2217_4(void) = Call[set_x] : func:r2217_2, this:r2217_1, 0:r2217_3 -# 2217| mu2217_5(unknown) = ^CallSideEffect : ~m? -# 2217| v2217_6(void) = ^IndirectReadSideEffect[-1] : &:r2217_1, ~m? -# 2217| mu2217_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2217_1 -# 2216| r2216_48(glval>) = VariableAddress[(__begin)] : -# 2216| r2216_49(glval) = FunctionAddress[operator++] : -# 2216| r2216_50(iterator &) = Call[operator++] : func:r2216_49, this:r2216_48 -# 2216| v2216_51(void) = ^IndirectReadSideEffect[-1] : &:r2216_48, ~m? -# 2216| mu2216_52(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r2216_48 -# 2216| r2216_53(glval) = VariableAddress[y] : -# 2216| r2216_54(glval) = FunctionAddress[~ClassWithDestructor] : -# 2216| v2216_55(void) = Call[~ClassWithDestructor] : func:r2216_54, this:r2216_53 -# 2216| mu2216_56(unknown) = ^CallSideEffect : ~m? -# 2216| v2216_57(void) = ^IndirectReadSideEffect[-1] : &:r2216_53, ~m? -# 2216| mu2216_58(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2216_53 -# 2216| r2216_59(glval>) = CopyValue : r2216_50 +# 2218| r2218_46(ClassWithDestructor) = Load[?] : &:r2218_45, ~m? +# 2218| mu2218_47(ClassWithDestructor) = Store[y] : &:r2218_42, r2218_46 +# 2219| r2219_1(glval) = VariableAddress[y] : +# 2219| r2219_2(glval) = FunctionAddress[set_x] : +# 2219| r2219_3(char) = Constant[97] : +# 2219| v2219_4(void) = Call[set_x] : func:r2219_2, this:r2219_1, 0:r2219_3 +# 2219| mu2219_5(unknown) = ^CallSideEffect : ~m? +# 2219| v2219_6(void) = ^IndirectReadSideEffect[-1] : &:r2219_1, ~m? +# 2219| mu2219_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2219_1 +# 2218| r2218_48(glval>) = VariableAddress[(__begin)] : +# 2218| r2218_49(glval) = FunctionAddress[operator++] : +# 2218| r2218_50(iterator &) = Call[operator++] : func:r2218_49, this:r2218_48 +# 2218| v2218_51(void) = ^IndirectReadSideEffect[-1] : &:r2218_48, ~m? +# 2218| mu2218_52(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r2218_48 +# 2218| r2218_53(glval) = VariableAddress[y] : +# 2218| r2218_54(glval) = FunctionAddress[~ClassWithDestructor] : +# 2218| v2218_55(void) = Call[~ClassWithDestructor] : func:r2218_54, this:r2218_53 +# 2218| mu2218_56(unknown) = ^CallSideEffect : ~m? +# 2218| v2218_57(void) = ^IndirectReadSideEffect[-1] : &:r2218_53, ~m? +# 2218| mu2218_58(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2218_53 +# 2218| r2218_59(glval>) = CopyValue : r2218_50 #-----| Goto (back edge) -> Block 10 -# 2216| Block 12 -# 2216| r2216_60(glval>) = VariableAddress[ys] : -# 2216| r2216_61(glval) = FunctionAddress[~vector] : -# 2216| v2216_62(void) = Call[~vector] : func:r2216_61, this:r2216_60 -# 2216| v2216_63(void) = ^IndirectReadSideEffect[-1] : &:r2216_60, ~m? -# 2216| mu2216_64(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2216_60 -# 2219| r2219_1(glval>) = VariableAddress[ys] : -# 2219| mu2219_2(vector) = Uninitialized[ys] : &:r2219_1 -# 2219| r2219_3(glval) = FunctionAddress[vector] : -# 2219| r2219_4(glval) = VariableAddress[#temp2219:45] : -# 2219| r2219_5(glval) = VariableAddress[x] : -# 2219| r2219_6(ClassWithDestructor) = Load[x] : &:r2219_5, ~m? -# 2219| mu2219_7(ClassWithDestructor) = Store[#temp2219:45] : &:r2219_4, r2219_6 -# 2219| r2219_8(ClassWithDestructor) = Load[#temp2219:45] : &:r2219_4, ~m? -# 2219| v2219_9(void) = Call[vector] : func:r2219_3, this:r2219_1, 0:r2219_8 -# 2219| mu2219_10(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2219_1 -# 2219| r2219_11(glval) = CopyValue : r2219_4 -# 2219| r2219_12(glval) = FunctionAddress[~ClassWithDestructor] : -# 2219| v2219_13(void) = Call[~ClassWithDestructor] : func:r2219_12, this:r2219_11 -# 2219| mu2219_14(unknown) = ^CallSideEffect : ~m? -# 2219| v2219_15(void) = ^IndirectReadSideEffect[-1] : &:r2219_11, ~m? -# 2219| mu2219_16(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2219_11 -# 2219| r2219_17(glval &>) = VariableAddress[(__range)] : -# 2219| r2219_18(glval>) = VariableAddress[ys] : -# 2219| r2219_19(vector &) = CopyValue : r2219_18 -# 2219| mu2219_20(vector &) = Store[(__range)] : &:r2219_17, r2219_19 -# 2219| r2219_21(glval>) = VariableAddress[(__begin)] : -# 2219| r2219_22(glval &>) = VariableAddress[(__range)] : -# 2219| r2219_23(vector &) = Load[(__range)] : &:r2219_22, ~m? -#-----| r0_17(glval>) = CopyValue : r2219_23 +# 2218| Block 12 +# 2218| r2218_60(glval>) = VariableAddress[ys] : +# 2218| r2218_61(glval) = FunctionAddress[~vector] : +# 2218| v2218_62(void) = Call[~vector] : func:r2218_61, this:r2218_60 +# 2218| v2218_63(void) = ^IndirectReadSideEffect[-1] : &:r2218_60, ~m? +# 2218| mu2218_64(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2218_60 +# 2221| r2221_1(glval>) = VariableAddress[ys] : +# 2221| mu2221_2(vector) = Uninitialized[ys] : &:r2221_1 +# 2221| r2221_3(glval) = FunctionAddress[vector] : +# 2221| r2221_4(glval) = VariableAddress[#temp2221:45] : +# 2221| r2221_5(glval) = VariableAddress[x] : +# 2221| r2221_6(ClassWithDestructor) = Load[x] : &:r2221_5, ~m? +# 2221| mu2221_7(ClassWithDestructor) = Store[#temp2221:45] : &:r2221_4, r2221_6 +# 2221| r2221_8(ClassWithDestructor) = Load[#temp2221:45] : &:r2221_4, ~m? +# 2221| v2221_9(void) = Call[vector] : func:r2221_3, this:r2221_1, 0:r2221_8 +# 2221| mu2221_10(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2221_1 +# 2221| r2221_11(glval) = CopyValue : r2221_4 +# 2221| r2221_12(glval) = FunctionAddress[~ClassWithDestructor] : +# 2221| v2221_13(void) = Call[~ClassWithDestructor] : func:r2221_12, this:r2221_11 +# 2221| mu2221_14(unknown) = ^CallSideEffect : ~m? +# 2221| v2221_15(void) = ^IndirectReadSideEffect[-1] : &:r2221_11, ~m? +# 2221| mu2221_16(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2221_11 +# 2221| r2221_17(glval &>) = VariableAddress[(__range)] : +# 2221| r2221_18(glval>) = VariableAddress[ys] : +# 2221| r2221_19(vector &) = CopyValue : r2221_18 +# 2221| mu2221_20(vector &) = Store[(__range)] : &:r2221_17, r2221_19 +# 2221| r2221_21(glval>) = VariableAddress[(__begin)] : +# 2221| r2221_22(glval &>) = VariableAddress[(__range)] : +# 2221| r2221_23(vector &) = Load[(__range)] : &:r2221_22, ~m? +#-----| r0_17(glval>) = CopyValue : r2221_23 #-----| r0_18(glval>) = Convert : r0_17 -# 2219| r2219_24(glval) = FunctionAddress[begin] : -# 2219| r2219_25(iterator) = Call[begin] : func:r2219_24, this:r0_18 +# 2221| r2221_24(glval) = FunctionAddress[begin] : +# 2221| r2221_25(iterator) = Call[begin] : func:r2221_24, this:r0_18 #-----| v0_19(void) = ^IndirectReadSideEffect[-1] : &:r0_18, ~m? -# 2219| mu2219_26(iterator) = Store[(__begin)] : &:r2219_21, r2219_25 -# 2219| r2219_27(glval>) = VariableAddress[(__end)] : -# 2219| r2219_28(glval &>) = VariableAddress[(__range)] : -# 2219| r2219_29(vector &) = Load[(__range)] : &:r2219_28, ~m? -#-----| r0_20(glval>) = CopyValue : r2219_29 +# 2221| mu2221_26(iterator) = Store[(__begin)] : &:r2221_21, r2221_25 +# 2221| r2221_27(glval>) = VariableAddress[(__end)] : +# 2221| r2221_28(glval &>) = VariableAddress[(__range)] : +# 2221| r2221_29(vector &) = Load[(__range)] : &:r2221_28, ~m? +#-----| r0_20(glval>) = CopyValue : r2221_29 #-----| r0_21(glval>) = Convert : r0_20 -# 2219| r2219_30(glval) = FunctionAddress[end] : -# 2219| r2219_31(iterator) = Call[end] : func:r2219_30, this:r0_21 +# 2221| r2221_30(glval) = FunctionAddress[end] : +# 2221| r2221_31(iterator) = Call[end] : func:r2221_30, this:r0_21 #-----| v0_22(void) = ^IndirectReadSideEffect[-1] : &:r0_21, ~m? -# 2219| mu2219_32(iterator) = Store[(__end)] : &:r2219_27, r2219_31 +# 2221| mu2221_32(iterator) = Store[(__end)] : &:r2221_27, r2221_31 #-----| Goto -> Block 13 -# 2219| Block 13 -# 2219| r2219_33(glval>) = VariableAddress[(__begin)] : -#-----| r0_23(glval>) = Convert : r2219_33 -# 2219| r2219_34(glval) = FunctionAddress[operator!=] : +# 2221| Block 13 +# 2221| r2221_33(glval>) = VariableAddress[(__begin)] : +#-----| r0_23(glval>) = Convert : r2221_33 +# 2221| r2221_34(glval) = FunctionAddress[operator!=] : #-----| r0_24(glval>) = VariableAddress[#temp0:0] : #-----| mu0_25(iterator) = Uninitialized[#temp0:0] : &:r0_24 -# 2219| r2219_35(glval) = FunctionAddress[iterator] : -# 2219| r2219_36(glval>) = VariableAddress[(__end)] : -#-----| r0_26(glval>) = Convert : r2219_36 +# 2221| r2221_35(glval) = FunctionAddress[iterator] : +# 2221| r2221_36(glval>) = VariableAddress[(__end)] : +#-----| r0_26(glval>) = Convert : r2221_36 #-----| r0_27(iterator &) = CopyValue : r0_26 -# 2219| v2219_37(void) = Call[iterator] : func:r2219_35, this:r0_24, 0:r0_27 -# 2219| mu2219_38(unknown) = ^CallSideEffect : ~m? +# 2221| v2221_37(void) = Call[iterator] : func:r2221_35, this:r0_24, 0:r0_27 +# 2221| mu2221_38(unknown) = ^CallSideEffect : ~m? #-----| v0_28(void) = ^BufferReadSideEffect[0] : &:r0_27, ~m? -# 2219| mu2219_39(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r0_24 +# 2221| mu2221_39(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r0_24 #-----| r0_29(iterator) = Load[#temp0:0] : &:r0_24, ~m? -# 2219| r2219_40(bool) = Call[operator!=] : func:r2219_34, this:r0_23, 0:r0_29 +# 2221| r2221_40(bool) = Call[operator!=] : func:r2221_34, this:r0_23, 0:r0_29 #-----| v0_30(void) = ^IndirectReadSideEffect[-1] : &:r0_23, ~m? -# 2219| v2219_41(void) = ConditionalBranch : r2219_40 +# 2221| v2221_41(void) = ConditionalBranch : r2221_40 #-----| False -> Block 17 #-----| True -> Block 15 -# 2219| Block 14 -# 2219| r2219_42(glval>) = VariableAddress[(__begin)] : -# 2219| r2219_43(glval) = FunctionAddress[operator++] : -# 2219| r2219_44(iterator &) = Call[operator++] : func:r2219_43, this:r2219_42 -# 2219| v2219_45(void) = ^IndirectReadSideEffect[-1] : &:r2219_42, ~m? -# 2219| mu2219_46(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r2219_42 -# 2219| r2219_47(glval) = VariableAddress[y] : -# 2219| r2219_48(glval) = FunctionAddress[~ClassWithDestructor] : -# 2219| v2219_49(void) = Call[~ClassWithDestructor] : func:r2219_48, this:r2219_47 -# 2219| mu2219_50(unknown) = ^CallSideEffect : ~m? -# 2219| v2219_51(void) = ^IndirectReadSideEffect[-1] : &:r2219_47, ~m? -# 2219| mu2219_52(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2219_47 -# 2219| r2219_53(glval>) = CopyValue : r2219_44 +# 2221| Block 14 +# 2221| r2221_42(glval>) = VariableAddress[(__begin)] : +# 2221| r2221_43(glval) = FunctionAddress[operator++] : +# 2221| r2221_44(iterator &) = Call[operator++] : func:r2221_43, this:r2221_42 +# 2221| v2221_45(void) = ^IndirectReadSideEffect[-1] : &:r2221_42, ~m? +# 2221| mu2221_46(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r2221_42 +# 2221| r2221_47(glval) = VariableAddress[y] : +# 2221| r2221_48(glval) = FunctionAddress[~ClassWithDestructor] : +# 2221| v2221_49(void) = Call[~ClassWithDestructor] : func:r2221_48, this:r2221_47 +# 2221| mu2221_50(unknown) = ^CallSideEffect : ~m? +# 2221| v2221_51(void) = ^IndirectReadSideEffect[-1] : &:r2221_47, ~m? +# 2221| mu2221_52(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2221_47 +# 2221| r2221_53(glval>) = CopyValue : r2221_44 #-----| Goto (back edge) -> Block 13 -# 2219| Block 15 -# 2219| r2219_54(glval) = VariableAddress[y] : -# 2219| r2219_55(glval>) = VariableAddress[(__begin)] : -#-----| r0_31(glval>) = Convert : r2219_55 -# 2219| r2219_56(glval) = FunctionAddress[operator*] : -# 2219| r2219_57(ClassWithDestructor &) = Call[operator*] : func:r2219_56, this:r0_31 +# 2221| Block 15 +# 2221| r2221_54(glval) = VariableAddress[y] : +# 2221| r2221_55(glval>) = VariableAddress[(__begin)] : +#-----| r0_31(glval>) = Convert : r2221_55 +# 2221| r2221_56(glval) = FunctionAddress[operator*] : +# 2221| r2221_57(ClassWithDestructor &) = Call[operator*] : func:r2221_56, this:r0_31 #-----| v0_32(void) = ^IndirectReadSideEffect[-1] : &:r0_31, ~m? -# 2219| r2219_58(ClassWithDestructor) = Load[?] : &:r2219_57, ~m? -# 2219| mu2219_59(ClassWithDestructor) = Store[y] : &:r2219_54, r2219_58 -# 2220| r2220_1(glval) = VariableAddress[y] : -# 2220| r2220_2(glval) = FunctionAddress[set_x] : -# 2220| r2220_3(char) = Constant[97] : -# 2220| v2220_4(void) = Call[set_x] : func:r2220_2, this:r2220_1, 0:r2220_3 -# 2220| mu2220_5(unknown) = ^CallSideEffect : ~m? -# 2220| v2220_6(void) = ^IndirectReadSideEffect[-1] : &:r2220_1, ~m? -# 2220| mu2220_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2220_1 -# 2221| r2221_1(glval) = VariableAddress[y] : -# 2221| r2221_2(glval) = FunctionAddress[get_x] : -# 2221| r2221_3(char) = Call[get_x] : func:r2221_2, this:r2221_1 -# 2221| mu2221_4(unknown) = ^CallSideEffect : ~m? -# 2221| v2221_5(void) = ^IndirectReadSideEffect[-1] : &:r2221_1, ~m? -# 2221| mu2221_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2221_1 -# 2221| r2221_7(int) = Convert : r2221_3 -# 2221| r2221_8(int) = Constant[98] : -# 2221| r2221_9(bool) = CompareEQ : r2221_7, r2221_8 -# 2221| v2221_10(void) = ConditionalBranch : r2221_9 +# 2221| r2221_58(ClassWithDestructor) = Load[?] : &:r2221_57, ~m? +# 2221| mu2221_59(ClassWithDestructor) = Store[y] : &:r2221_54, r2221_58 +# 2222| r2222_1(glval) = VariableAddress[y] : +# 2222| r2222_2(glval) = FunctionAddress[set_x] : +# 2222| r2222_3(char) = Constant[97] : +# 2222| v2222_4(void) = Call[set_x] : func:r2222_2, this:r2222_1, 0:r2222_3 +# 2222| mu2222_5(unknown) = ^CallSideEffect : ~m? +# 2222| v2222_6(void) = ^IndirectReadSideEffect[-1] : &:r2222_1, ~m? +# 2222| mu2222_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2222_1 +# 2223| r2223_1(glval) = VariableAddress[y] : +# 2223| r2223_2(glval) = FunctionAddress[get_x] : +# 2223| r2223_3(char) = Call[get_x] : func:r2223_2, this:r2223_1 +# 2223| mu2223_4(unknown) = ^CallSideEffect : ~m? +# 2223| v2223_5(void) = ^IndirectReadSideEffect[-1] : &:r2223_1, ~m? +# 2223| mu2223_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2223_1 +# 2223| r2223_7(int) = Convert : r2223_3 +# 2223| r2223_8(int) = Constant[98] : +# 2223| r2223_9(bool) = CompareEQ : r2223_7, r2223_8 +# 2223| v2223_10(void) = ConditionalBranch : r2223_9 #-----| False -> Block 14 #-----| True -> Block 16 -# 2222| Block 16 -# 2222| v2222_1(void) = NoOp : -# 2219| r2219_60(glval) = VariableAddress[y] : -# 2219| r2219_61(glval) = FunctionAddress[~ClassWithDestructor] : -# 2219| v2219_62(void) = Call[~ClassWithDestructor] : func:r2219_61, this:r2219_60 -# 2219| mu2219_63(unknown) = ^CallSideEffect : ~m? -# 2219| v2219_64(void) = ^IndirectReadSideEffect[-1] : &:r2219_60, ~m? -# 2219| mu2219_65(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2219_60 -# 2219| r2219_66(glval>) = VariableAddress[ys] : -# 2219| r2219_67(glval) = FunctionAddress[~vector] : -# 2219| v2219_68(void) = Call[~vector] : func:r2219_67, this:r2219_66 -# 2219| v2219_69(void) = ^IndirectReadSideEffect[-1] : &:r2219_66, ~m? -# 2219| mu2219_70(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2219_66 -# 2234| r2234_1(glval) = VariableAddress[x] : -# 2234| r2234_2(glval) = FunctionAddress[~ClassWithDestructor] : -# 2234| v2234_3(void) = Call[~ClassWithDestructor] : func:r2234_2, this:r2234_1 -# 2234| mu2234_4(unknown) = ^CallSideEffect : ~m? -# 2234| v2234_5(void) = ^IndirectReadSideEffect[-1] : &:r2234_1, ~m? -# 2234| mu2234_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2234_1 +# 2224| Block 16 +# 2224| v2224_1(void) = NoOp : +# 2221| r2221_60(glval) = VariableAddress[y] : +# 2221| r2221_61(glval) = FunctionAddress[~ClassWithDestructor] : +# 2221| v2221_62(void) = Call[~ClassWithDestructor] : func:r2221_61, this:r2221_60 +# 2221| mu2221_63(unknown) = ^CallSideEffect : ~m? +# 2221| v2221_64(void) = ^IndirectReadSideEffect[-1] : &:r2221_60, ~m? +# 2221| mu2221_65(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2221_60 +# 2221| r2221_66(glval>) = VariableAddress[ys] : +# 2221| r2221_67(glval) = FunctionAddress[~vector] : +# 2221| v2221_68(void) = Call[~vector] : func:r2221_67, this:r2221_66 +# 2221| v2221_69(void) = ^IndirectReadSideEffect[-1] : &:r2221_66, ~m? +# 2221| mu2221_70(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2221_66 +# 2236| r2236_1(glval) = VariableAddress[x] : +# 2236| r2236_2(glval) = FunctionAddress[~ClassWithDestructor] : +# 2236| v2236_3(void) = Call[~ClassWithDestructor] : func:r2236_2, this:r2236_1 +# 2236| mu2236_4(unknown) = ^CallSideEffect : ~m? +# 2236| v2236_5(void) = ^IndirectReadSideEffect[-1] : &:r2236_1, ~m? +# 2236| mu2236_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2236_1 #-----| Goto -> Block 1 -# 2219| Block 17 -# 2219| r2219_71(glval>) = VariableAddress[ys] : -# 2219| r2219_72(glval) = FunctionAddress[~vector] : -# 2219| v2219_73(void) = Call[~vector] : func:r2219_72, this:r2219_71 -# 2219| v2219_74(void) = ^IndirectReadSideEffect[-1] : &:r2219_71, ~m? -# 2219| mu2219_75(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2219_71 -# 2225| r2225_1(glval>) = VariableAddress[ys] : -# 2225| mu2225_2(vector) = Uninitialized[ys] : &:r2225_1 -# 2225| r2225_3(glval) = FunctionAddress[vector] : -# 2225| r2225_4(int) = Constant[1] : -# 2225| v2225_5(void) = Call[vector] : func:r2225_3, this:r2225_1, 0:r2225_4 -# 2225| mu2225_6(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2225_1 -# 2225| r2225_7(glval &>) = VariableAddress[(__range)] : -# 2225| r2225_8(glval>) = VariableAddress[ys] : -# 2225| r2225_9(vector &) = CopyValue : r2225_8 -# 2225| mu2225_10(vector &) = Store[(__range)] : &:r2225_7, r2225_9 -# 2225| r2225_11(glval>) = VariableAddress[(__begin)] : -# 2225| r2225_12(glval &>) = VariableAddress[(__range)] : -# 2225| r2225_13(vector &) = Load[(__range)] : &:r2225_12, ~m? -#-----| r0_33(glval>) = CopyValue : r2225_13 +# 2221| Block 17 +# 2221| r2221_71(glval>) = VariableAddress[ys] : +# 2221| r2221_72(glval) = FunctionAddress[~vector] : +# 2221| v2221_73(void) = Call[~vector] : func:r2221_72, this:r2221_71 +# 2221| v2221_74(void) = ^IndirectReadSideEffect[-1] : &:r2221_71, ~m? +# 2221| mu2221_75(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2221_71 +# 2227| r2227_1(glval>) = VariableAddress[ys] : +# 2227| mu2227_2(vector) = Uninitialized[ys] : &:r2227_1 +# 2227| r2227_3(glval) = FunctionAddress[vector] : +# 2227| r2227_4(int) = Constant[1] : +# 2227| v2227_5(void) = Call[vector] : func:r2227_3, this:r2227_1, 0:r2227_4 +# 2227| mu2227_6(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2227_1 +# 2227| r2227_7(glval &>) = VariableAddress[(__range)] : +# 2227| r2227_8(glval>) = VariableAddress[ys] : +# 2227| r2227_9(vector &) = CopyValue : r2227_8 +# 2227| mu2227_10(vector &) = Store[(__range)] : &:r2227_7, r2227_9 +# 2227| r2227_11(glval>) = VariableAddress[(__begin)] : +# 2227| r2227_12(glval &>) = VariableAddress[(__range)] : +# 2227| r2227_13(vector &) = Load[(__range)] : &:r2227_12, ~m? +#-----| r0_33(glval>) = CopyValue : r2227_13 #-----| r0_34(glval>) = Convert : r0_33 -# 2225| r2225_14(glval) = FunctionAddress[begin] : -# 2225| r2225_15(iterator) = Call[begin] : func:r2225_14, this:r0_34 +# 2227| r2227_14(glval) = FunctionAddress[begin] : +# 2227| r2227_15(iterator) = Call[begin] : func:r2227_14, this:r0_34 #-----| v0_35(void) = ^IndirectReadSideEffect[-1] : &:r0_34, ~m? -# 2225| mu2225_16(iterator) = Store[(__begin)] : &:r2225_11, r2225_15 -# 2225| r2225_17(glval>) = VariableAddress[(__end)] : -# 2225| r2225_18(glval &>) = VariableAddress[(__range)] : -# 2225| r2225_19(vector &) = Load[(__range)] : &:r2225_18, ~m? -#-----| r0_36(glval>) = CopyValue : r2225_19 +# 2227| mu2227_16(iterator) = Store[(__begin)] : &:r2227_11, r2227_15 +# 2227| r2227_17(glval>) = VariableAddress[(__end)] : +# 2227| r2227_18(glval &>) = VariableAddress[(__range)] : +# 2227| r2227_19(vector &) = Load[(__range)] : &:r2227_18, ~m? +#-----| r0_36(glval>) = CopyValue : r2227_19 #-----| r0_37(glval>) = Convert : r0_36 -# 2225| r2225_20(glval) = FunctionAddress[end] : -# 2225| r2225_21(iterator) = Call[end] : func:r2225_20, this:r0_37 +# 2227| r2227_20(glval) = FunctionAddress[end] : +# 2227| r2227_21(iterator) = Call[end] : func:r2227_20, this:r0_37 #-----| v0_38(void) = ^IndirectReadSideEffect[-1] : &:r0_37, ~m? -# 2225| mu2225_22(iterator) = Store[(__end)] : &:r2225_17, r2225_21 +# 2227| mu2227_22(iterator) = Store[(__end)] : &:r2227_17, r2227_21 #-----| Goto -> Block 18 -# 2225| Block 18 -# 2225| r2225_23(glval>) = VariableAddress[(__begin)] : -#-----| r0_39(glval>) = Convert : r2225_23 -# 2225| r2225_24(glval) = FunctionAddress[operator!=] : +# 2227| Block 18 +# 2227| r2227_23(glval>) = VariableAddress[(__begin)] : +#-----| r0_39(glval>) = Convert : r2227_23 +# 2227| r2227_24(glval) = FunctionAddress[operator!=] : #-----| r0_40(glval>) = VariableAddress[#temp0:0] : #-----| mu0_41(iterator) = Uninitialized[#temp0:0] : &:r0_40 -# 2225| r2225_25(glval) = FunctionAddress[iterator] : -# 2225| r2225_26(glval>) = VariableAddress[(__end)] : -#-----| r0_42(glval>) = Convert : r2225_26 +# 2227| r2227_25(glval) = FunctionAddress[iterator] : +# 2227| r2227_26(glval>) = VariableAddress[(__end)] : +#-----| r0_42(glval>) = Convert : r2227_26 #-----| r0_43(iterator &) = CopyValue : r0_42 -# 2225| v2225_27(void) = Call[iterator] : func:r2225_25, this:r0_40, 0:r0_43 -# 2225| mu2225_28(unknown) = ^CallSideEffect : ~m? +# 2227| v2227_27(void) = Call[iterator] : func:r2227_25, this:r0_40, 0:r0_43 +# 2227| mu2227_28(unknown) = ^CallSideEffect : ~m? #-----| v0_44(void) = ^BufferReadSideEffect[0] : &:r0_43, ~m? -# 2225| mu2225_29(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r0_40 +# 2227| mu2227_29(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r0_40 #-----| r0_45(iterator) = Load[#temp0:0] : &:r0_40, ~m? -# 2225| r2225_30(bool) = Call[operator!=] : func:r2225_24, this:r0_39, 0:r0_45 +# 2227| r2227_30(bool) = Call[operator!=] : func:r2227_24, this:r0_39, 0:r0_45 #-----| v0_46(void) = ^IndirectReadSideEffect[-1] : &:r0_39, ~m? -# 2225| v2225_31(void) = ConditionalBranch : r2225_30 +# 2227| v2227_31(void) = ConditionalBranch : r2227_30 #-----| False -> Block 22 #-----| True -> Block 20 -# 2225| Block 19 -# 2225| r2225_32(glval>) = VariableAddress[(__begin)] : -# 2225| r2225_33(glval) = FunctionAddress[operator++] : -# 2225| r2225_34(iterator &) = Call[operator++] : func:r2225_33, this:r2225_32 -# 2225| v2225_35(void) = ^IndirectReadSideEffect[-1] : &:r2225_32, ~m? -# 2225| mu2225_36(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r2225_32 -# 2225| r2225_37(glval>) = CopyValue : r2225_34 +# 2227| Block 19 +# 2227| r2227_32(glval>) = VariableAddress[(__begin)] : +# 2227| r2227_33(glval) = FunctionAddress[operator++] : +# 2227| r2227_34(iterator &) = Call[operator++] : func:r2227_33, this:r2227_32 +# 2227| v2227_35(void) = ^IndirectReadSideEffect[-1] : &:r2227_32, ~m? +# 2227| mu2227_36(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r2227_32 +# 2227| r2227_37(glval>) = CopyValue : r2227_34 #-----| Goto (back edge) -> Block 18 -# 2225| Block 20 -# 2225| r2225_38(glval) = VariableAddress[y] : -# 2225| r2225_39(glval>) = VariableAddress[(__begin)] : -#-----| r0_47(glval>) = Convert : r2225_39 -# 2225| r2225_40(glval) = FunctionAddress[operator*] : -# 2225| r2225_41(int &) = Call[operator*] : func:r2225_40, this:r0_47 +# 2227| Block 20 +# 2227| r2227_38(glval) = VariableAddress[y] : +# 2227| r2227_39(glval>) = VariableAddress[(__begin)] : +#-----| r0_47(glval>) = Convert : r2227_39 +# 2227| r2227_40(glval) = FunctionAddress[operator*] : +# 2227| r2227_41(int &) = Call[operator*] : func:r2227_40, this:r0_47 #-----| v0_48(void) = ^IndirectReadSideEffect[-1] : &:r0_47, ~m? -# 2225| r2225_42(int) = Load[?] : &:r2225_41, ~m? -# 2225| mu2225_43(int) = Store[y] : &:r2225_38, r2225_42 -# 2226| r2226_1(glval) = VariableAddress[y] : -# 2226| r2226_2(int) = Load[y] : &:r2226_1, ~m? -# 2226| r2226_3(int) = Constant[1] : -# 2226| r2226_4(bool) = CompareEQ : r2226_2, r2226_3 -# 2226| v2226_5(void) = ConditionalBranch : r2226_4 +# 2227| r2227_42(int) = Load[?] : &:r2227_41, ~m? +# 2227| mu2227_43(int) = Store[y] : &:r2227_38, r2227_42 +# 2228| r2228_1(glval) = VariableAddress[y] : +# 2228| r2228_2(int) = Load[y] : &:r2228_1, ~m? +# 2228| r2228_3(int) = Constant[1] : +# 2228| r2228_4(bool) = CompareEQ : r2228_2, r2228_3 +# 2228| v2228_5(void) = ConditionalBranch : r2228_4 #-----| False -> Block 19 #-----| True -> Block 21 -# 2227| Block 21 -# 2227| v2227_1(void) = NoOp : -# 2225| r2225_44(glval>) = VariableAddress[ys] : -# 2225| r2225_45(glval) = FunctionAddress[~vector] : -# 2225| v2225_46(void) = Call[~vector] : func:r2225_45, this:r2225_44 -# 2225| v2225_47(void) = ^IndirectReadSideEffect[-1] : &:r2225_44, ~m? -# 2225| mu2225_48(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2225_44 -# 2234| r2234_7(glval) = VariableAddress[x] : -# 2234| r2234_8(glval) = FunctionAddress[~ClassWithDestructor] : -# 2234| v2234_9(void) = Call[~ClassWithDestructor] : func:r2234_8, this:r2234_7 -# 2234| mu2234_10(unknown) = ^CallSideEffect : ~m? -# 2234| v2234_11(void) = ^IndirectReadSideEffect[-1] : &:r2234_7, ~m? -# 2234| mu2234_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2234_7 +# 2229| Block 21 +# 2229| v2229_1(void) = NoOp : +# 2227| r2227_44(glval>) = VariableAddress[ys] : +# 2227| r2227_45(glval) = FunctionAddress[~vector] : +# 2227| v2227_46(void) = Call[~vector] : func:r2227_45, this:r2227_44 +# 2227| v2227_47(void) = ^IndirectReadSideEffect[-1] : &:r2227_44, ~m? +# 2227| mu2227_48(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2227_44 +# 2236| r2236_7(glval) = VariableAddress[x] : +# 2236| r2236_8(glval) = FunctionAddress[~ClassWithDestructor] : +# 2236| v2236_9(void) = Call[~ClassWithDestructor] : func:r2236_8, this:r2236_7 +# 2236| mu2236_10(unknown) = ^CallSideEffect : ~m? +# 2236| v2236_11(void) = ^IndirectReadSideEffect[-1] : &:r2236_7, ~m? +# 2236| mu2236_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2236_7 #-----| Goto -> Block 1 -# 2225| Block 22 -# 2225| r2225_49(glval>) = VariableAddress[ys] : -# 2225| r2225_50(glval) = FunctionAddress[~vector] : -# 2225| v2225_51(void) = Call[~vector] : func:r2225_50, this:r2225_49 -# 2225| v2225_52(void) = ^IndirectReadSideEffect[-1] : &:r2225_49, ~m? -# 2225| mu2225_53(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2225_49 -# 2230| r2230_1(glval>) = VariableAddress[ys] : -# 2230| mu2230_2(vector) = Uninitialized[ys] : &:r2230_1 -# 2230| r2230_3(glval) = FunctionAddress[vector] : -# 2230| r2230_4(glval) = VariableAddress[#temp2230:45] : -# 2230| r2230_5(glval) = VariableAddress[x] : -# 2230| r2230_6(ClassWithDestructor) = Load[x] : &:r2230_5, ~m? -# 2230| mu2230_7(ClassWithDestructor) = Store[#temp2230:45] : &:r2230_4, r2230_6 -# 2230| r2230_8(ClassWithDestructor) = Load[#temp2230:45] : &:r2230_4, ~m? -# 2230| v2230_9(void) = Call[vector] : func:r2230_3, this:r2230_1, 0:r2230_8 -# 2230| mu2230_10(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2230_1 -# 2230| r2230_11(glval) = CopyValue : r2230_4 -# 2230| r2230_12(glval) = FunctionAddress[~ClassWithDestructor] : -# 2230| v2230_13(void) = Call[~ClassWithDestructor] : func:r2230_12, this:r2230_11 -# 2230| mu2230_14(unknown) = ^CallSideEffect : ~m? -# 2230| v2230_15(void) = ^IndirectReadSideEffect[-1] : &:r2230_11, ~m? -# 2230| mu2230_16(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2230_11 -# 2230| r2230_17(glval &>) = VariableAddress[(__range)] : -# 2230| r2230_18(glval>) = VariableAddress[ys] : -# 2230| r2230_19(vector &) = CopyValue : r2230_18 -# 2230| mu2230_20(vector &) = Store[(__range)] : &:r2230_17, r2230_19 -# 2230| r2230_21(glval>) = VariableAddress[(__begin)] : -# 2230| r2230_22(glval &>) = VariableAddress[(__range)] : -# 2230| r2230_23(vector &) = Load[(__range)] : &:r2230_22, ~m? -#-----| r0_49(glval>) = CopyValue : r2230_23 +# 2227| Block 22 +# 2227| r2227_49(glval>) = VariableAddress[ys] : +# 2227| r2227_50(glval) = FunctionAddress[~vector] : +# 2227| v2227_51(void) = Call[~vector] : func:r2227_50, this:r2227_49 +# 2227| v2227_52(void) = ^IndirectReadSideEffect[-1] : &:r2227_49, ~m? +# 2227| mu2227_53(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2227_49 +# 2232| r2232_1(glval>) = VariableAddress[ys] : +# 2232| mu2232_2(vector) = Uninitialized[ys] : &:r2232_1 +# 2232| r2232_3(glval) = FunctionAddress[vector] : +# 2232| r2232_4(glval) = VariableAddress[#temp2232:45] : +# 2232| r2232_5(glval) = VariableAddress[x] : +# 2232| r2232_6(ClassWithDestructor) = Load[x] : &:r2232_5, ~m? +# 2232| mu2232_7(ClassWithDestructor) = Store[#temp2232:45] : &:r2232_4, r2232_6 +# 2232| r2232_8(ClassWithDestructor) = Load[#temp2232:45] : &:r2232_4, ~m? +# 2232| v2232_9(void) = Call[vector] : func:r2232_3, this:r2232_1, 0:r2232_8 +# 2232| mu2232_10(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2232_1 +# 2232| r2232_11(glval) = CopyValue : r2232_4 +# 2232| r2232_12(glval) = FunctionAddress[~ClassWithDestructor] : +# 2232| v2232_13(void) = Call[~ClassWithDestructor] : func:r2232_12, this:r2232_11 +# 2232| mu2232_14(unknown) = ^CallSideEffect : ~m? +# 2232| v2232_15(void) = ^IndirectReadSideEffect[-1] : &:r2232_11, ~m? +# 2232| mu2232_16(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2232_11 +# 2232| r2232_17(glval &>) = VariableAddress[(__range)] : +# 2232| r2232_18(glval>) = VariableAddress[ys] : +# 2232| r2232_19(vector &) = CopyValue : r2232_18 +# 2232| mu2232_20(vector &) = Store[(__range)] : &:r2232_17, r2232_19 +# 2232| r2232_21(glval>) = VariableAddress[(__begin)] : +# 2232| r2232_22(glval &>) = VariableAddress[(__range)] : +# 2232| r2232_23(vector &) = Load[(__range)] : &:r2232_22, ~m? +#-----| r0_49(glval>) = CopyValue : r2232_23 #-----| r0_50(glval>) = Convert : r0_49 -# 2230| r2230_24(glval) = FunctionAddress[begin] : -# 2230| r2230_25(iterator) = Call[begin] : func:r2230_24, this:r0_50 +# 2232| r2232_24(glval) = FunctionAddress[begin] : +# 2232| r2232_25(iterator) = Call[begin] : func:r2232_24, this:r0_50 #-----| v0_51(void) = ^IndirectReadSideEffect[-1] : &:r0_50, ~m? -# 2230| mu2230_26(iterator) = Store[(__begin)] : &:r2230_21, r2230_25 -# 2230| r2230_27(glval>) = VariableAddress[(__end)] : -# 2230| r2230_28(glval &>) = VariableAddress[(__range)] : -# 2230| r2230_29(vector &) = Load[(__range)] : &:r2230_28, ~m? -#-----| r0_52(glval>) = CopyValue : r2230_29 +# 2232| mu2232_26(iterator) = Store[(__begin)] : &:r2232_21, r2232_25 +# 2232| r2232_27(glval>) = VariableAddress[(__end)] : +# 2232| r2232_28(glval &>) = VariableAddress[(__range)] : +# 2232| r2232_29(vector &) = Load[(__range)] : &:r2232_28, ~m? +#-----| r0_52(glval>) = CopyValue : r2232_29 #-----| r0_53(glval>) = Convert : r0_52 -# 2230| r2230_30(glval) = FunctionAddress[end] : -# 2230| r2230_31(iterator) = Call[end] : func:r2230_30, this:r0_53 +# 2232| r2232_30(glval) = FunctionAddress[end] : +# 2232| r2232_31(iterator) = Call[end] : func:r2232_30, this:r0_53 #-----| v0_54(void) = ^IndirectReadSideEffect[-1] : &:r0_53, ~m? -# 2230| mu2230_32(iterator) = Store[(__end)] : &:r2230_27, r2230_31 +# 2232| mu2232_32(iterator) = Store[(__end)] : &:r2232_27, r2232_31 #-----| Goto -> Block 23 -# 2230| Block 23 -# 2230| r2230_33(glval>) = VariableAddress[(__begin)] : -#-----| r0_55(glval>) = Convert : r2230_33 -# 2230| r2230_34(glval) = FunctionAddress[operator!=] : +# 2232| Block 23 +# 2232| r2232_33(glval>) = VariableAddress[(__begin)] : +#-----| r0_55(glval>) = Convert : r2232_33 +# 2232| r2232_34(glval) = FunctionAddress[operator!=] : #-----| r0_56(glval>) = VariableAddress[#temp0:0] : #-----| mu0_57(iterator) = Uninitialized[#temp0:0] : &:r0_56 -# 2230| r2230_35(glval) = FunctionAddress[iterator] : -# 2230| r2230_36(glval>) = VariableAddress[(__end)] : -#-----| r0_58(glval>) = Convert : r2230_36 +# 2232| r2232_35(glval) = FunctionAddress[iterator] : +# 2232| r2232_36(glval>) = VariableAddress[(__end)] : +#-----| r0_58(glval>) = Convert : r2232_36 #-----| r0_59(iterator &) = CopyValue : r0_58 -# 2230| v2230_37(void) = Call[iterator] : func:r2230_35, this:r0_56, 0:r0_59 -# 2230| mu2230_38(unknown) = ^CallSideEffect : ~m? +# 2232| v2232_37(void) = Call[iterator] : func:r2232_35, this:r0_56, 0:r0_59 +# 2232| mu2232_38(unknown) = ^CallSideEffect : ~m? #-----| v0_60(void) = ^BufferReadSideEffect[0] : &:r0_59, ~m? -# 2230| mu2230_39(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r0_56 +# 2232| mu2232_39(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r0_56 #-----| r0_61(iterator) = Load[#temp0:0] : &:r0_56, ~m? -# 2230| r2230_40(bool) = Call[operator!=] : func:r2230_34, this:r0_55, 0:r0_61 +# 2232| r2232_40(bool) = Call[operator!=] : func:r2232_34, this:r0_55, 0:r0_61 #-----| v0_62(void) = ^IndirectReadSideEffect[-1] : &:r0_55, ~m? -# 2230| v2230_41(void) = ConditionalBranch : r2230_40 +# 2232| v2232_41(void) = ConditionalBranch : r2232_40 #-----| False -> Block 25 #-----| True -> Block 24 -# 2230| Block 24 -# 2230| r2230_42(glval) = VariableAddress[y] : -# 2230| r2230_43(glval>) = VariableAddress[(__begin)] : -#-----| r0_63(glval>) = Convert : r2230_43 -# 2230| r2230_44(glval) = FunctionAddress[operator*] : -# 2230| r2230_45(ClassWithDestructor &) = Call[operator*] : func:r2230_44, this:r0_63 +# 2232| Block 24 +# 2232| r2232_42(glval) = VariableAddress[y] : +# 2232| r2232_43(glval>) = VariableAddress[(__begin)] : +#-----| r0_63(glval>) = Convert : r2232_43 +# 2232| r2232_44(glval) = FunctionAddress[operator*] : +# 2232| r2232_45(ClassWithDestructor &) = Call[operator*] : func:r2232_44, this:r0_63 #-----| v0_64(void) = ^IndirectReadSideEffect[-1] : &:r0_63, ~m? -# 2230| r2230_46(ClassWithDestructor) = Load[?] : &:r2230_45, ~m? -# 2230| mu2230_47(ClassWithDestructor) = Store[y] : &:r2230_42, r2230_46 -# 2231| r2231_1(glval) = VariableAddress[z1] : -# 2231| mu2231_2(ClassWithDestructor) = Uninitialized[z1] : &:r2231_1 -# 2231| r2231_3(glval) = FunctionAddress[ClassWithDestructor] : -# 2231| v2231_4(void) = Call[ClassWithDestructor] : func:r2231_3, this:r2231_1 -# 2231| mu2231_5(unknown) = ^CallSideEffect : ~m? -# 2231| mu2231_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2231_1 -# 2232| r2232_1(glval) = VariableAddress[z2] : -# 2232| mu2232_2(ClassWithDestructor) = Uninitialized[z2] : &:r2232_1 -# 2232| r2232_3(glval) = FunctionAddress[ClassWithDestructor] : -# 2232| v2232_4(void) = Call[ClassWithDestructor] : func:r2232_3, this:r2232_1 -# 2232| mu2232_5(unknown) = ^CallSideEffect : ~m? -# 2232| mu2232_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2232_1 -# 2233| r2233_1(glval) = VariableAddress[z2] : -# 2233| r2233_2(glval) = FunctionAddress[~ClassWithDestructor] : -# 2233| v2233_3(void) = Call[~ClassWithDestructor] : func:r2233_2, this:r2233_1 -# 2233| mu2233_4(unknown) = ^CallSideEffect : ~m? -# 2233| v2233_5(void) = ^IndirectReadSideEffect[-1] : &:r2233_1, ~m? +# 2232| r2232_46(ClassWithDestructor) = Load[?] : &:r2232_45, ~m? +# 2232| mu2232_47(ClassWithDestructor) = Store[y] : &:r2232_42, r2232_46 +# 2233| r2233_1(glval) = VariableAddress[z1] : +# 2233| mu2233_2(ClassWithDestructor) = Uninitialized[z1] : &:r2233_1 +# 2233| r2233_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2233| v2233_4(void) = Call[ClassWithDestructor] : func:r2233_3, this:r2233_1 +# 2233| mu2233_5(unknown) = ^CallSideEffect : ~m? # 2233| mu2233_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2233_1 -# 2233| r2233_7(glval) = VariableAddress[z1] : -# 2233| r2233_8(glval) = FunctionAddress[~ClassWithDestructor] : -# 2233| v2233_9(void) = Call[~ClassWithDestructor] : func:r2233_8, this:r2233_7 -# 2233| mu2233_10(unknown) = ^CallSideEffect : ~m? -# 2233| v2233_11(void) = ^IndirectReadSideEffect[-1] : &:r2233_7, ~m? -# 2233| mu2233_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2233_7 -# 2230| r2230_48(glval>) = VariableAddress[(__begin)] : -# 2230| r2230_49(glval) = FunctionAddress[operator++] : -# 2230| r2230_50(iterator &) = Call[operator++] : func:r2230_49, this:r2230_48 -# 2230| v2230_51(void) = ^IndirectReadSideEffect[-1] : &:r2230_48, ~m? -# 2230| mu2230_52(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r2230_48 -# 2230| r2230_53(glval) = VariableAddress[y] : -# 2230| r2230_54(glval) = FunctionAddress[~ClassWithDestructor] : -# 2230| v2230_55(void) = Call[~ClassWithDestructor] : func:r2230_54, this:r2230_53 -# 2230| mu2230_56(unknown) = ^CallSideEffect : ~m? -# 2230| v2230_57(void) = ^IndirectReadSideEffect[-1] : &:r2230_53, ~m? -# 2230| mu2230_58(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2230_53 -# 2230| r2230_59(glval>) = CopyValue : r2230_50 +# 2234| r2234_1(glval) = VariableAddress[z2] : +# 2234| mu2234_2(ClassWithDestructor) = Uninitialized[z2] : &:r2234_1 +# 2234| r2234_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2234| v2234_4(void) = Call[ClassWithDestructor] : func:r2234_3, this:r2234_1 +# 2234| mu2234_5(unknown) = ^CallSideEffect : ~m? +# 2234| mu2234_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2234_1 +# 2235| r2235_1(glval) = VariableAddress[z2] : +# 2235| r2235_2(glval) = FunctionAddress[~ClassWithDestructor] : +# 2235| v2235_3(void) = Call[~ClassWithDestructor] : func:r2235_2, this:r2235_1 +# 2235| mu2235_4(unknown) = ^CallSideEffect : ~m? +# 2235| v2235_5(void) = ^IndirectReadSideEffect[-1] : &:r2235_1, ~m? +# 2235| mu2235_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2235_1 +# 2235| r2235_7(glval) = VariableAddress[z1] : +# 2235| r2235_8(glval) = FunctionAddress[~ClassWithDestructor] : +# 2235| v2235_9(void) = Call[~ClassWithDestructor] : func:r2235_8, this:r2235_7 +# 2235| mu2235_10(unknown) = ^CallSideEffect : ~m? +# 2235| v2235_11(void) = ^IndirectReadSideEffect[-1] : &:r2235_7, ~m? +# 2235| mu2235_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2235_7 +# 2232| r2232_48(glval>) = VariableAddress[(__begin)] : +# 2232| r2232_49(glval) = FunctionAddress[operator++] : +# 2232| r2232_50(iterator &) = Call[operator++] : func:r2232_49, this:r2232_48 +# 2232| v2232_51(void) = ^IndirectReadSideEffect[-1] : &:r2232_48, ~m? +# 2232| mu2232_52(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r2232_48 +# 2232| r2232_53(glval) = VariableAddress[y] : +# 2232| r2232_54(glval) = FunctionAddress[~ClassWithDestructor] : +# 2232| v2232_55(void) = Call[~ClassWithDestructor] : func:r2232_54, this:r2232_53 +# 2232| mu2232_56(unknown) = ^CallSideEffect : ~m? +# 2232| v2232_57(void) = ^IndirectReadSideEffect[-1] : &:r2232_53, ~m? +# 2232| mu2232_58(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2232_53 +# 2232| r2232_59(glval>) = CopyValue : r2232_50 #-----| Goto (back edge) -> Block 23 -# 2230| Block 25 -# 2230| r2230_60(glval>) = VariableAddress[ys] : -# 2230| r2230_61(glval) = FunctionAddress[~vector] : -# 2230| v2230_62(void) = Call[~vector] : func:r2230_61, this:r2230_60 -# 2230| v2230_63(void) = ^IndirectReadSideEffect[-1] : &:r2230_60, ~m? -# 2230| mu2230_64(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2230_60 -# 2234| v2234_13(void) = NoOp : -# 2234| r2234_14(glval) = VariableAddress[x] : -# 2234| r2234_15(glval) = FunctionAddress[~ClassWithDestructor] : -# 2234| v2234_16(void) = Call[~ClassWithDestructor] : func:r2234_15, this:r2234_14 -# 2234| mu2234_17(unknown) = ^CallSideEffect : ~m? -# 2234| v2234_18(void) = ^IndirectReadSideEffect[-1] : &:r2234_14, ~m? -# 2234| mu2234_19(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2234_14 +# 2232| Block 25 +# 2232| r2232_60(glval>) = VariableAddress[ys] : +# 2232| r2232_61(glval) = FunctionAddress[~vector] : +# 2232| v2232_62(void) = Call[~vector] : func:r2232_61, this:r2232_60 +# 2232| v2232_63(void) = ^IndirectReadSideEffect[-1] : &:r2232_60, ~m? +# 2232| mu2232_64(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2232_60 +# 2236| v2236_13(void) = NoOp : +# 2236| r2236_14(glval) = VariableAddress[x] : +# 2236| r2236_15(glval) = FunctionAddress[~ClassWithDestructor] : +# 2236| v2236_16(void) = Call[~ClassWithDestructor] : func:r2236_15, this:r2236_14 +# 2236| mu2236_17(unknown) = ^CallSideEffect : ~m? +# 2236| v2236_18(void) = ^IndirectReadSideEffect[-1] : &:r2236_14, ~m? +# 2236| mu2236_19(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2236_14 #-----| Goto -> Block 1 -# 2236| void static_variable_with_destructor_1() -# 2236| Block 0 -# 2236| v2236_1(void) = EnterFunction : -# 2236| mu2236_2(unknown) = AliasedDefinition : -# 2236| mu2236_3(unknown) = InitializeNonLocal : -# 2237| r2237_1(glval) = VariableAddress[a] : -# 2237| mu2237_2(ClassWithDestructor) = Uninitialized[a] : &:r2237_1 -# 2237| r2237_3(glval) = FunctionAddress[ClassWithDestructor] : -# 2237| v2237_4(void) = Call[ClassWithDestructor] : func:r2237_3, this:r2237_1 -# 2237| mu2237_5(unknown) = ^CallSideEffect : ~m? -# 2237| mu2237_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2237_1 -# 2238| r2238_1(glval) = VariableAddress[b#init] : -# 2238| r2238_2(bool) = Load[b#init] : &:r2238_1, ~m? -# 2238| v2238_3(void) = ConditionalBranch : r2238_2 +# 2238| void static_variable_with_destructor_1() +# 2238| Block 0 +# 2238| v2238_1(void) = EnterFunction : +# 2238| mu2238_2(unknown) = AliasedDefinition : +# 2238| mu2238_3(unknown) = InitializeNonLocal : +# 2239| r2239_1(glval) = VariableAddress[a] : +# 2239| mu2239_2(ClassWithDestructor) = Uninitialized[a] : &:r2239_1 +# 2239| r2239_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2239| v2239_4(void) = Call[ClassWithDestructor] : func:r2239_3, this:r2239_1 +# 2239| mu2239_5(unknown) = ^CallSideEffect : ~m? +# 2239| mu2239_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2239_1 +# 2240| r2240_1(glval) = VariableAddress[b#init] : +# 2240| r2240_2(bool) = Load[b#init] : &:r2240_1, ~m? +# 2240| v2240_3(void) = ConditionalBranch : r2240_2 #-----| False -> Block 1 #-----| True -> Block 2 -# 2238| Block 1 -# 2238| r2238_4(glval) = VariableAddress[b] : +# 2240| Block 1 +# 2240| r2240_4(glval) = VariableAddress[b] : #-----| r0_1(glval) = FunctionAddress[ClassWithDestructor] : -#-----| v0_2(void) = Call[ClassWithDestructor] : func:r0_1, this:r2238_4 +#-----| v0_2(void) = Call[ClassWithDestructor] : func:r0_1, this:r2240_4 #-----| mu0_3(unknown) = ^CallSideEffect : ~m? -#-----| mu0_4(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2238_4 -# 2238| r2238_5(bool) = Constant[1] : -# 2238| mu2238_6(bool) = Store[b#init] : &:r2238_1, r2238_5 +#-----| mu0_4(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2240_4 +# 2240| r2240_5(bool) = Constant[1] : +# 2240| mu2240_6(bool) = Store[b#init] : &:r2240_1, r2240_5 #-----| Goto -> Block 2 -# 2239| Block 2 -# 2239| v2239_1(void) = NoOp : -# 2239| r2239_2(glval) = VariableAddress[a] : -# 2239| r2239_3(glval) = FunctionAddress[~ClassWithDestructor] : -# 2239| v2239_4(void) = Call[~ClassWithDestructor] : func:r2239_3, this:r2239_2 -# 2239| mu2239_5(unknown) = ^CallSideEffect : ~m? -# 2239| v2239_6(void) = ^IndirectReadSideEffect[-1] : &:r2239_2, ~m? -# 2239| mu2239_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2239_2 -# 2236| v2236_4(void) = ReturnVoid : -# 2236| v2236_5(void) = AliasedUse : ~m? -# 2236| v2236_6(void) = ExitFunction : +# 2241| Block 2 +# 2241| v2241_1(void) = NoOp : +# 2241| r2241_2(glval) = VariableAddress[a] : +# 2241| r2241_3(glval) = FunctionAddress[~ClassWithDestructor] : +# 2241| v2241_4(void) = Call[~ClassWithDestructor] : func:r2241_3, this:r2241_2 +# 2241| mu2241_5(unknown) = ^CallSideEffect : ~m? +# 2241| v2241_6(void) = ^IndirectReadSideEffect[-1] : &:r2241_2, ~m? +# 2241| mu2241_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2241_2 +# 2238| v2238_4(void) = ReturnVoid : +# 2238| v2238_5(void) = AliasedUse : ~m? +# 2238| v2238_6(void) = ExitFunction : -# 2241| void static_variable_with_destructor_2() -# 2241| Block 0 -# 2241| v2241_1(void) = EnterFunction : -# 2241| mu2241_2(unknown) = AliasedDefinition : -# 2241| mu2241_3(unknown) = InitializeNonLocal : -# 2242| r2242_1(glval) = VariableAddress[a#init] : -# 2242| r2242_2(bool) = Load[a#init] : &:r2242_1, ~m? -# 2242| v2242_3(void) = ConditionalBranch : r2242_2 +# 2243| void static_variable_with_destructor_2() +# 2243| Block 0 +# 2243| v2243_1(void) = EnterFunction : +# 2243| mu2243_2(unknown) = AliasedDefinition : +# 2243| mu2243_3(unknown) = InitializeNonLocal : +# 2244| r2244_1(glval) = VariableAddress[a#init] : +# 2244| r2244_2(bool) = Load[a#init] : &:r2244_1, ~m? +# 2244| v2244_3(void) = ConditionalBranch : r2244_2 #-----| False -> Block 1 #-----| True -> Block 2 -# 2242| Block 1 -# 2242| r2242_4(glval) = VariableAddress[a] : +# 2244| Block 1 +# 2244| r2244_4(glval) = VariableAddress[a] : #-----| r0_1(glval) = FunctionAddress[ClassWithDestructor] : -#-----| v0_2(void) = Call[ClassWithDestructor] : func:r0_1, this:r2242_4 +#-----| v0_2(void) = Call[ClassWithDestructor] : func:r0_1, this:r2244_4 #-----| mu0_3(unknown) = ^CallSideEffect : ~m? -#-----| mu0_4(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2242_4 -# 2242| r2242_5(bool) = Constant[1] : -# 2242| mu2242_6(bool) = Store[a#init] : &:r2242_1, r2242_5 +#-----| mu0_4(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2244_4 +# 2244| r2244_5(bool) = Constant[1] : +# 2244| mu2244_6(bool) = Store[a#init] : &:r2244_1, r2244_5 #-----| Goto -> Block 2 -# 2243| Block 2 -# 2243| r2243_1(glval) = VariableAddress[b] : -# 2243| mu2243_2(ClassWithDestructor) = Uninitialized[b] : &:r2243_1 -# 2243| r2243_3(glval) = FunctionAddress[ClassWithDestructor] : -# 2243| v2243_4(void) = Call[ClassWithDestructor] : func:r2243_3, this:r2243_1 -# 2243| mu2243_5(unknown) = ^CallSideEffect : ~m? -# 2243| mu2243_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2243_1 -# 2244| v2244_1(void) = NoOp : -# 2244| r2244_2(glval) = VariableAddress[b] : -# 2244| r2244_3(glval) = FunctionAddress[~ClassWithDestructor] : -# 2244| v2244_4(void) = Call[~ClassWithDestructor] : func:r2244_3, this:r2244_2 -# 2244| mu2244_5(unknown) = ^CallSideEffect : ~m? -# 2244| v2244_6(void) = ^IndirectReadSideEffect[-1] : &:r2244_2, ~m? -# 2244| mu2244_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2244_2 -# 2241| v2241_4(void) = ReturnVoid : -# 2241| v2241_5(void) = AliasedUse : ~m? -# 2241| v2241_6(void) = ExitFunction : +# 2245| Block 2 +# 2245| r2245_1(glval) = VariableAddress[b] : +# 2245| mu2245_2(ClassWithDestructor) = Uninitialized[b] : &:r2245_1 +# 2245| r2245_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2245| v2245_4(void) = Call[ClassWithDestructor] : func:r2245_3, this:r2245_1 +# 2245| mu2245_5(unknown) = ^CallSideEffect : ~m? +# 2245| mu2245_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2245_1 +# 2246| v2246_1(void) = NoOp : +# 2246| r2246_2(glval) = VariableAddress[b] : +# 2246| r2246_3(glval) = FunctionAddress[~ClassWithDestructor] : +# 2246| v2246_4(void) = Call[~ClassWithDestructor] : func:r2246_3, this:r2246_2 +# 2246| mu2246_5(unknown) = ^CallSideEffect : ~m? +# 2246| v2246_6(void) = ^IndirectReadSideEffect[-1] : &:r2246_2, ~m? +# 2246| mu2246_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2246_2 +# 2243| v2243_4(void) = ReturnVoid : +# 2243| v2243_5(void) = AliasedUse : ~m? +# 2243| v2243_6(void) = ExitFunction : -# 2246| void static_variable_with_destructor_3() -# 2246| Block 0 -# 2246| v2246_1(void) = EnterFunction : -# 2246| mu2246_2(unknown) = AliasedDefinition : -# 2246| mu2246_3(unknown) = InitializeNonLocal : -# 2247| r2247_1(glval) = VariableAddress[a] : -# 2247| mu2247_2(ClassWithDestructor) = Uninitialized[a] : &:r2247_1 -# 2247| r2247_3(glval) = FunctionAddress[ClassWithDestructor] : -# 2247| v2247_4(void) = Call[ClassWithDestructor] : func:r2247_3, this:r2247_1 -# 2247| mu2247_5(unknown) = ^CallSideEffect : ~m? -# 2247| mu2247_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2247_1 -# 2248| r2248_1(glval) = VariableAddress[b] : -# 2248| mu2248_2(ClassWithDestructor) = Uninitialized[b] : &:r2248_1 -# 2248| r2248_3(glval) = FunctionAddress[ClassWithDestructor] : -# 2248| v2248_4(void) = Call[ClassWithDestructor] : func:r2248_3, this:r2248_1 -# 2248| mu2248_5(unknown) = ^CallSideEffect : ~m? -# 2248| mu2248_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2248_1 -# 2249| r2249_1(glval) = VariableAddress[c#init] : -# 2249| r2249_2(bool) = Load[c#init] : &:r2249_1, ~m? -# 2249| v2249_3(void) = ConditionalBranch : r2249_2 +# 2248| void static_variable_with_destructor_3() +# 2248| Block 0 +# 2248| v2248_1(void) = EnterFunction : +# 2248| mu2248_2(unknown) = AliasedDefinition : +# 2248| mu2248_3(unknown) = InitializeNonLocal : +# 2249| r2249_1(glval) = VariableAddress[a] : +# 2249| mu2249_2(ClassWithDestructor) = Uninitialized[a] : &:r2249_1 +# 2249| r2249_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2249| v2249_4(void) = Call[ClassWithDestructor] : func:r2249_3, this:r2249_1 +# 2249| mu2249_5(unknown) = ^CallSideEffect : ~m? +# 2249| mu2249_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2249_1 +# 2250| r2250_1(glval) = VariableAddress[b] : +# 2250| mu2250_2(ClassWithDestructor) = Uninitialized[b] : &:r2250_1 +# 2250| r2250_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2250| v2250_4(void) = Call[ClassWithDestructor] : func:r2250_3, this:r2250_1 +# 2250| mu2250_5(unknown) = ^CallSideEffect : ~m? +# 2250| mu2250_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2250_1 +# 2251| r2251_1(glval) = VariableAddress[c#init] : +# 2251| r2251_2(bool) = Load[c#init] : &:r2251_1, ~m? +# 2251| v2251_3(void) = ConditionalBranch : r2251_2 #-----| False -> Block 1 #-----| True -> Block 2 -# 2249| Block 1 -# 2249| r2249_4(glval) = VariableAddress[c] : +# 2251| Block 1 +# 2251| r2251_4(glval) = VariableAddress[c] : #-----| r0_1(glval) = FunctionAddress[ClassWithDestructor] : -#-----| v0_2(void) = Call[ClassWithDestructor] : func:r0_1, this:r2249_4 +#-----| v0_2(void) = Call[ClassWithDestructor] : func:r0_1, this:r2251_4 #-----| mu0_3(unknown) = ^CallSideEffect : ~m? -#-----| mu0_4(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2249_4 -# 2249| r2249_5(bool) = Constant[1] : -# 2249| mu2249_6(bool) = Store[c#init] : &:r2249_1, r2249_5 +#-----| mu0_4(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2251_4 +# 2251| r2251_5(bool) = Constant[1] : +# 2251| mu2251_6(bool) = Store[c#init] : &:r2251_1, r2251_5 #-----| Goto -> Block 2 -# 2250| Block 2 -# 2250| v2250_1(void) = NoOp : -# 2250| r2250_2(glval) = VariableAddress[b] : -# 2250| r2250_3(glval) = FunctionAddress[~ClassWithDestructor] : -# 2250| v2250_4(void) = Call[~ClassWithDestructor] : func:r2250_3, this:r2250_2 -# 2250| mu2250_5(unknown) = ^CallSideEffect : ~m? -# 2250| v2250_6(void) = ^IndirectReadSideEffect[-1] : &:r2250_2, ~m? -# 2250| mu2250_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2250_2 -# 2250| r2250_8(glval) = VariableAddress[a] : -# 2250| r2250_9(glval) = FunctionAddress[~ClassWithDestructor] : -# 2250| v2250_10(void) = Call[~ClassWithDestructor] : func:r2250_9, this:r2250_8 -# 2250| mu2250_11(unknown) = ^CallSideEffect : ~m? -# 2250| v2250_12(void) = ^IndirectReadSideEffect[-1] : &:r2250_8, ~m? -# 2250| mu2250_13(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2250_8 -# 2246| v2246_4(void) = ReturnVoid : -# 2246| v2246_5(void) = AliasedUse : ~m? -# 2246| v2246_6(void) = ExitFunction : +# 2252| Block 2 +# 2252| v2252_1(void) = NoOp : +# 2252| r2252_2(glval) = VariableAddress[b] : +# 2252| r2252_3(glval) = FunctionAddress[~ClassWithDestructor] : +# 2252| v2252_4(void) = Call[~ClassWithDestructor] : func:r2252_3, this:r2252_2 +# 2252| mu2252_5(unknown) = ^CallSideEffect : ~m? +# 2252| v2252_6(void) = ^IndirectReadSideEffect[-1] : &:r2252_2, ~m? +# 2252| mu2252_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2252_2 +# 2252| r2252_8(glval) = VariableAddress[a] : +# 2252| r2252_9(glval) = FunctionAddress[~ClassWithDestructor] : +# 2252| v2252_10(void) = Call[~ClassWithDestructor] : func:r2252_9, this:r2252_8 +# 2252| mu2252_11(unknown) = ^CallSideEffect : ~m? +# 2252| v2252_12(void) = ^IndirectReadSideEffect[-1] : &:r2252_8, ~m? +# 2252| mu2252_13(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2252_8 +# 2248| v2248_4(void) = ReturnVoid : +# 2248| v2248_5(void) = AliasedUse : ~m? +# 2248| v2248_6(void) = ExitFunction : -# 2252| ClassWithDestructor global_class_with_destructor -# 2252| Block 0 -# 2252| v2252_1(void) = EnterFunction : -# 2252| mu2252_2(unknown) = AliasedDefinition : -# 2252| r2252_3(glval) = VariableAddress[global_class_with_destructor] : -# 2252| r2252_4(glval) = FunctionAddress[ClassWithDestructor] : -# 2252| v2252_5(void) = Call[ClassWithDestructor] : func:r2252_4, this:r2252_3 -# 2252| mu2252_6(unknown) = ^CallSideEffect : ~m? -# 2252| mu2252_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2252_3 -# 2252| v2252_8(void) = ReturnVoid : -# 2252| v2252_9(void) = AliasedUse : ~m? -# 2252| v2252_10(void) = ExitFunction : +# 2254| ClassWithDestructor global_class_with_destructor +# 2254| Block 0 +# 2254| v2254_1(void) = EnterFunction : +# 2254| mu2254_2(unknown) = AliasedDefinition : +# 2254| r2254_3(glval) = VariableAddress[global_class_with_destructor] : +# 2254| r2254_4(glval) = FunctionAddress[ClassWithDestructor] : +# 2254| v2254_5(void) = Call[ClassWithDestructor] : func:r2254_4, this:r2254_3 +# 2254| mu2254_6(unknown) = ^CallSideEffect : ~m? +# 2254| mu2254_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2254_3 +# 2254| v2254_8(void) = ReturnVoid : +# 2254| v2254_9(void) = AliasedUse : ~m? +# 2254| v2254_10(void) = ExitFunction : -# 2256| ClassWithDestructor& vacuous_destructor_call::get(ClassWithDestructor&) -# 2256| Block 0 -# 2256| v2256_1(void) = EnterFunction : -# 2256| mu2256_2(unknown) = AliasedDefinition : -# 2256| mu2256_3(unknown) = InitializeNonLocal : -# 2256| r2256_4(glval) = VariableAddress[t] : -# 2256| mu2256_5(ClassWithDestructor &) = InitializeParameter[t] : &:r2256_4 -# 2256| r2256_6(ClassWithDestructor &) = Load[t] : &:r2256_4, ~m? -# 2256| mu2256_7(unknown) = InitializeIndirection[t] : &:r2256_6 -# 2256| r2256_8(glval) = VariableAddress[#return] : -# 2256| r2256_9(glval) = VariableAddress[t] : -# 2256| r2256_10(ClassWithDestructor &) = Load[t] : &:r2256_9, ~m? -# 2256| r2256_11(glval) = CopyValue : r2256_10 -# 2256| r2256_12(ClassWithDestructor &) = CopyValue : r2256_11 -# 2256| mu2256_13(ClassWithDestructor &) = Store[#return] : &:r2256_8, r2256_12 -# 2256| v2256_14(void) = ReturnIndirection[t] : &:r2256_6, ~m? -# 2256| r2256_15(glval) = VariableAddress[#return] : -# 2256| v2256_16(void) = ReturnValue : &:r2256_15, ~m? -# 2256| v2256_17(void) = AliasedUse : ~m? -# 2256| v2256_18(void) = ExitFunction : +# 2258| ClassWithDestructor& vacuous_destructor_call::get(ClassWithDestructor&) +# 2258| Block 0 +# 2258| v2258_1(void) = EnterFunction : +# 2258| mu2258_2(unknown) = AliasedDefinition : +# 2258| mu2258_3(unknown) = InitializeNonLocal : +# 2258| r2258_4(glval) = VariableAddress[t] : +# 2258| mu2258_5(ClassWithDestructor &) = InitializeParameter[t] : &:r2258_4 +# 2258| r2258_6(ClassWithDestructor &) = Load[t] : &:r2258_4, ~m? +# 2258| mu2258_7(unknown) = InitializeIndirection[t] : &:r2258_6 +# 2258| r2258_8(glval) = VariableAddress[#return] : +# 2258| r2258_9(glval) = VariableAddress[t] : +# 2258| r2258_10(ClassWithDestructor &) = Load[t] : &:r2258_9, ~m? +# 2258| r2258_11(glval) = CopyValue : r2258_10 +# 2258| r2258_12(ClassWithDestructor &) = CopyValue : r2258_11 +# 2258| mu2258_13(ClassWithDestructor &) = Store[#return] : &:r2258_8, r2258_12 +# 2258| v2258_14(void) = ReturnIndirection[t] : &:r2258_6, ~m? +# 2258| r2258_15(glval) = VariableAddress[#return] : +# 2258| v2258_16(void) = ReturnValue : &:r2258_15, ~m? +# 2258| v2258_17(void) = AliasedUse : ~m? +# 2258| v2258_18(void) = ExitFunction : -# 2256| int& vacuous_destructor_call::get(int&) -# 2256| Block 0 -# 2256| v2256_1(void) = EnterFunction : -# 2256| mu2256_2(unknown) = AliasedDefinition : -# 2256| mu2256_3(unknown) = InitializeNonLocal : -# 2256| r2256_4(glval) = VariableAddress[t] : -# 2256| mu2256_5(int &) = InitializeParameter[t] : &:r2256_4 -# 2256| r2256_6(int &) = Load[t] : &:r2256_4, ~m? -# 2256| mu2256_7(unknown) = InitializeIndirection[t] : &:r2256_6 -# 2256| r2256_8(glval) = VariableAddress[#return] : -# 2256| r2256_9(glval) = VariableAddress[t] : -# 2256| r2256_10(int &) = Load[t] : &:r2256_9, ~m? -# 2256| r2256_11(glval) = CopyValue : r2256_10 -# 2256| r2256_12(int &) = CopyValue : r2256_11 -# 2256| mu2256_13(int &) = Store[#return] : &:r2256_8, r2256_12 -# 2256| v2256_14(void) = ReturnIndirection[t] : &:r2256_6, ~m? -# 2256| r2256_15(glval) = VariableAddress[#return] : -# 2256| v2256_16(void) = ReturnValue : &:r2256_15, ~m? -# 2256| v2256_17(void) = AliasedUse : ~m? -# 2256| v2256_18(void) = ExitFunction : +# 2258| int& vacuous_destructor_call::get(int&) +# 2258| Block 0 +# 2258| v2258_1(void) = EnterFunction : +# 2258| mu2258_2(unknown) = AliasedDefinition : +# 2258| mu2258_3(unknown) = InitializeNonLocal : +# 2258| r2258_4(glval) = VariableAddress[t] : +# 2258| mu2258_5(int &) = InitializeParameter[t] : &:r2258_4 +# 2258| r2258_6(int &) = Load[t] : &:r2258_4, ~m? +# 2258| mu2258_7(unknown) = InitializeIndirection[t] : &:r2258_6 +# 2258| r2258_8(glval) = VariableAddress[#return] : +# 2258| r2258_9(glval) = VariableAddress[t] : +# 2258| r2258_10(int &) = Load[t] : &:r2258_9, ~m? +# 2258| r2258_11(glval) = CopyValue : r2258_10 +# 2258| r2258_12(int &) = CopyValue : r2258_11 +# 2258| mu2258_13(int &) = Store[#return] : &:r2258_8, r2258_12 +# 2258| v2258_14(void) = ReturnIndirection[t] : &:r2258_6, ~m? +# 2258| r2258_15(glval) = VariableAddress[#return] : +# 2258| v2258_16(void) = ReturnValue : &:r2258_15, ~m? +# 2258| v2258_17(void) = AliasedUse : ~m? +# 2258| v2258_18(void) = ExitFunction : -# 2259| void vacuous_destructor_call::call_destructor(ClassWithDestructor&) -# 2259| Block 0 -# 2259| v2259_1(void) = EnterFunction : -# 2259| mu2259_2(unknown) = AliasedDefinition : -# 2259| mu2259_3(unknown) = InitializeNonLocal : -# 2259| r2259_4(glval) = VariableAddress[t] : -# 2259| mu2259_5(ClassWithDestructor &) = InitializeParameter[t] : &:r2259_4 -# 2259| r2259_6(ClassWithDestructor &) = Load[t] : &:r2259_4, ~m? -# 2259| mu2259_7(unknown) = InitializeIndirection[t] : &:r2259_6 -# 2260| r2260_1(glval) = FunctionAddress[get] : -# 2260| r2260_2(glval) = VariableAddress[t] : -# 2260| r2260_3(ClassWithDestructor &) = Load[t] : &:r2260_2, ~m? -# 2260| r2260_4(glval) = CopyValue : r2260_3 -# 2260| r2260_5(ClassWithDestructor &) = CopyValue : r2260_4 -# 2260| r2260_6(ClassWithDestructor &) = Call[get] : func:r2260_1, 0:r2260_5 -# 2260| mu2260_7(unknown) = ^CallSideEffect : ~m? -# 2260| v2260_8(void) = ^BufferReadSideEffect[0] : &:r2260_5, ~m? -# 2260| mu2260_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r2260_5 -# 2260| r2260_10(glval) = CopyValue : r2260_6 -# 2260| r2260_11(glval) = FunctionAddress[~ClassWithDestructor] : -# 2260| v2260_12(void) = Call[~ClassWithDestructor] : func:r2260_11 -# 2260| mu2260_13(unknown) = ^CallSideEffect : ~m? -# 2260| v2260_14(void) = ^IndirectReadSideEffect[-1] : &:r2260_10, ~m? -# 2260| mu2260_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2260_10 -# 2261| v2261_1(void) = NoOp : -# 2259| v2259_8(void) = ReturnIndirection[t] : &:r2259_6, ~m? -# 2259| v2259_9(void) = ReturnVoid : -# 2259| v2259_10(void) = AliasedUse : ~m? -# 2259| v2259_11(void) = ExitFunction : +# 2261| void vacuous_destructor_call::call_destructor(ClassWithDestructor&) +# 2261| Block 0 +# 2261| v2261_1(void) = EnterFunction : +# 2261| mu2261_2(unknown) = AliasedDefinition : +# 2261| mu2261_3(unknown) = InitializeNonLocal : +# 2261| r2261_4(glval) = VariableAddress[t] : +# 2261| mu2261_5(ClassWithDestructor &) = InitializeParameter[t] : &:r2261_4 +# 2261| r2261_6(ClassWithDestructor &) = Load[t] : &:r2261_4, ~m? +# 2261| mu2261_7(unknown) = InitializeIndirection[t] : &:r2261_6 +# 2262| r2262_1(glval) = FunctionAddress[get] : +# 2262| r2262_2(glval) = VariableAddress[t] : +# 2262| r2262_3(ClassWithDestructor &) = Load[t] : &:r2262_2, ~m? +# 2262| r2262_4(glval) = CopyValue : r2262_3 +# 2262| r2262_5(ClassWithDestructor &) = CopyValue : r2262_4 +# 2262| r2262_6(ClassWithDestructor &) = Call[get] : func:r2262_1, 0:r2262_5 +# 2262| mu2262_7(unknown) = ^CallSideEffect : ~m? +# 2262| v2262_8(void) = ^BufferReadSideEffect[0] : &:r2262_5, ~m? +# 2262| mu2262_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r2262_5 +# 2262| r2262_10(glval) = CopyValue : r2262_6 +# 2262| r2262_11(glval) = FunctionAddress[~ClassWithDestructor] : +# 2262| v2262_12(void) = Call[~ClassWithDestructor] : func:r2262_11 +# 2262| mu2262_13(unknown) = ^CallSideEffect : ~m? +# 2262| v2262_14(void) = ^IndirectReadSideEffect[-1] : &:r2262_10, ~m? +# 2262| mu2262_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2262_10 +# 2263| v2263_1(void) = NoOp : +# 2261| v2261_8(void) = ReturnIndirection[t] : &:r2261_6, ~m? +# 2261| v2261_9(void) = ReturnVoid : +# 2261| v2261_10(void) = AliasedUse : ~m? +# 2261| v2261_11(void) = ExitFunction : -# 2259| void vacuous_destructor_call::call_destructor(int&) -# 2259| Block 0 -# 2259| v2259_1(void) = EnterFunction : -# 2259| mu2259_2(unknown) = AliasedDefinition : -# 2259| mu2259_3(unknown) = InitializeNonLocal : -# 2259| r2259_4(glval) = VariableAddress[t] : -# 2259| mu2259_5(int &) = InitializeParameter[t] : &:r2259_4 -# 2259| r2259_6(int &) = Load[t] : &:r2259_4, ~m? -# 2259| mu2259_7(unknown) = InitializeIndirection[t] : &:r2259_6 -# 2260| r2260_1(glval) = FunctionAddress[get] : -# 2260| r2260_2(glval) = VariableAddress[t] : -# 2260| r2260_3(int &) = Load[t] : &:r2260_2, ~m? -# 2260| r2260_4(glval) = CopyValue : r2260_3 -# 2260| r2260_5(int &) = CopyValue : r2260_4 -# 2260| r2260_6(int &) = Call[get] : func:r2260_1, 0:r2260_5 -# 2260| mu2260_7(unknown) = ^CallSideEffect : ~m? -# 2260| v2260_8(void) = ^BufferReadSideEffect[0] : &:r2260_5, ~m? -# 2260| mu2260_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r2260_5 -# 2260| r2260_10(glval) = CopyValue : r2260_6 -# 2261| v2261_1(void) = NoOp : -# 2259| v2259_8(void) = ReturnIndirection[t] : &:r2259_6, ~m? -# 2259| v2259_9(void) = ReturnVoid : -# 2259| v2259_10(void) = AliasedUse : ~m? -# 2259| v2259_11(void) = ExitFunction : +# 2261| void vacuous_destructor_call::call_destructor(int&) +# 2261| Block 0 +# 2261| v2261_1(void) = EnterFunction : +# 2261| mu2261_2(unknown) = AliasedDefinition : +# 2261| mu2261_3(unknown) = InitializeNonLocal : +# 2261| r2261_4(glval) = VariableAddress[t] : +# 2261| mu2261_5(int &) = InitializeParameter[t] : &:r2261_4 +# 2261| r2261_6(int &) = Load[t] : &:r2261_4, ~m? +# 2261| mu2261_7(unknown) = InitializeIndirection[t] : &:r2261_6 +# 2262| r2262_1(glval) = FunctionAddress[get] : +# 2262| r2262_2(glval) = VariableAddress[t] : +# 2262| r2262_3(int &) = Load[t] : &:r2262_2, ~m? +# 2262| r2262_4(glval) = CopyValue : r2262_3 +# 2262| r2262_5(int &) = CopyValue : r2262_4 +# 2262| r2262_6(int &) = Call[get] : func:r2262_1, 0:r2262_5 +# 2262| mu2262_7(unknown) = ^CallSideEffect : ~m? +# 2262| v2262_8(void) = ^BufferReadSideEffect[0] : &:r2262_5, ~m? +# 2262| mu2262_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r2262_5 +# 2262| r2262_10(glval) = CopyValue : r2262_6 +# 2263| v2263_1(void) = NoOp : +# 2261| v2261_8(void) = ReturnIndirection[t] : &:r2261_6, ~m? +# 2261| v2261_9(void) = ReturnVoid : +# 2261| v2261_10(void) = AliasedUse : ~m? +# 2261| v2261_11(void) = ExitFunction : -# 2263| void vacuous_destructor_call::non_vacuous_destructor_call() -# 2263| Block 0 -# 2263| v2263_1(void) = EnterFunction : -# 2263| mu2263_2(unknown) = AliasedDefinition : -# 2263| mu2263_3(unknown) = InitializeNonLocal : -# 2264| r2264_1(glval) = VariableAddress[c] : -# 2264| mu2264_2(ClassWithDestructor) = Uninitialized[c] : &:r2264_1 -# 2264| r2264_3(glval) = FunctionAddress[ClassWithDestructor] : -# 2264| v2264_4(void) = Call[ClassWithDestructor] : func:r2264_3, this:r2264_1 -# 2264| mu2264_5(unknown) = ^CallSideEffect : ~m? -# 2264| mu2264_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2264_1 -# 2265| r2265_1(glval) = FunctionAddress[call_destructor] : -# 2265| r2265_2(glval) = VariableAddress[c] : -# 2265| r2265_3(ClassWithDestructor &) = CopyValue : r2265_2 -# 2265| v2265_4(void) = Call[call_destructor] : func:r2265_1, 0:r2265_3 -# 2265| mu2265_5(unknown) = ^CallSideEffect : ~m? -# 2265| v2265_6(void) = ^BufferReadSideEffect[0] : &:r2265_3, ~m? -# 2265| mu2265_7(unknown) = ^BufferMayWriteSideEffect[0] : &:r2265_3 -# 2266| v2266_1(void) = NoOp : -# 2266| r2266_2(glval) = VariableAddress[c] : -# 2266| r2266_3(glval) = FunctionAddress[~ClassWithDestructor] : -# 2266| v2266_4(void) = Call[~ClassWithDestructor] : func:r2266_3, this:r2266_2 +# 2265| void vacuous_destructor_call::non_vacuous_destructor_call() +# 2265| Block 0 +# 2265| v2265_1(void) = EnterFunction : +# 2265| mu2265_2(unknown) = AliasedDefinition : +# 2265| mu2265_3(unknown) = InitializeNonLocal : +# 2266| r2266_1(glval) = VariableAddress[c] : +# 2266| mu2266_2(ClassWithDestructor) = Uninitialized[c] : &:r2266_1 +# 2266| r2266_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2266| v2266_4(void) = Call[ClassWithDestructor] : func:r2266_3, this:r2266_1 # 2266| mu2266_5(unknown) = ^CallSideEffect : ~m? -# 2266| v2266_6(void) = ^IndirectReadSideEffect[-1] : &:r2266_2, ~m? -# 2266| mu2266_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2266_2 -# 2263| v2263_4(void) = ReturnVoid : -# 2263| v2263_5(void) = AliasedUse : ~m? -# 2263| v2263_6(void) = ExitFunction : +# 2266| mu2266_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2266_1 +# 2267| r2267_1(glval) = FunctionAddress[call_destructor] : +# 2267| r2267_2(glval) = VariableAddress[c] : +# 2267| r2267_3(ClassWithDestructor &) = CopyValue : r2267_2 +# 2267| v2267_4(void) = Call[call_destructor] : func:r2267_1, 0:r2267_3 +# 2267| mu2267_5(unknown) = ^CallSideEffect : ~m? +# 2267| v2267_6(void) = ^BufferReadSideEffect[0] : &:r2267_3, ~m? +# 2267| mu2267_7(unknown) = ^BufferMayWriteSideEffect[0] : &:r2267_3 +# 2268| v2268_1(void) = NoOp : +# 2268| r2268_2(glval) = VariableAddress[c] : +# 2268| r2268_3(glval) = FunctionAddress[~ClassWithDestructor] : +# 2268| v2268_4(void) = Call[~ClassWithDestructor] : func:r2268_3, this:r2268_2 +# 2268| mu2268_5(unknown) = ^CallSideEffect : ~m? +# 2268| v2268_6(void) = ^IndirectReadSideEffect[-1] : &:r2268_2, ~m? +# 2268| mu2268_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2268_2 +# 2265| v2265_4(void) = ReturnVoid : +# 2265| v2265_5(void) = AliasedUse : ~m? +# 2265| v2265_6(void) = ExitFunction : -# 2268| void vacuous_destructor_call::vacuous_destructor_call() -# 2268| Block 0 -# 2268| v2268_1(void) = EnterFunction : -# 2268| mu2268_2(unknown) = AliasedDefinition : -# 2268| mu2268_3(unknown) = InitializeNonLocal : -# 2269| r2269_1(glval) = VariableAddress[i] : -# 2269| mu2269_2(int) = Uninitialized[i] : &:r2269_1 -# 2270| r2270_1(glval) = FunctionAddress[call_destructor] : -# 2270| r2270_2(glval) = VariableAddress[i] : -# 2270| r2270_3(int &) = CopyValue : r2270_2 -# 2270| v2270_4(void) = Call[call_destructor] : func:r2270_1, 0:r2270_3 -# 2270| mu2270_5(unknown) = ^CallSideEffect : ~m? -# 2270| v2270_6(void) = ^BufferReadSideEffect[0] : &:r2270_3, ~m? -# 2270| mu2270_7(unknown) = ^BufferMayWriteSideEffect[0] : &:r2270_3 -# 2271| v2271_1(void) = NoOp : -# 2268| v2268_4(void) = ReturnVoid : -# 2268| v2268_5(void) = AliasedUse : ~m? -# 2268| v2268_6(void) = ExitFunction : +# 2270| void vacuous_destructor_call::vacuous_destructor_call() +# 2270| Block 0 +# 2270| v2270_1(void) = EnterFunction : +# 2270| mu2270_2(unknown) = AliasedDefinition : +# 2270| mu2270_3(unknown) = InitializeNonLocal : +# 2271| r2271_1(glval) = VariableAddress[i] : +# 2271| mu2271_2(int) = Uninitialized[i] : &:r2271_1 +# 2272| r2272_1(glval) = FunctionAddress[call_destructor] : +# 2272| r2272_2(glval) = VariableAddress[i] : +# 2272| r2272_3(int &) = CopyValue : r2272_2 +# 2272| v2272_4(void) = Call[call_destructor] : func:r2272_1, 0:r2272_3 +# 2272| mu2272_5(unknown) = ^CallSideEffect : ~m? +# 2272| v2272_6(void) = ^BufferReadSideEffect[0] : &:r2272_3, ~m? +# 2272| mu2272_7(unknown) = ^BufferMayWriteSideEffect[0] : &:r2272_3 +# 2273| v2273_1(void) = NoOp : +# 2270| v2270_4(void) = ReturnVoid : +# 2270| v2270_5(void) = AliasedUse : ~m? +# 2270| v2270_6(void) = ExitFunction : -# 2274| void TryCatchDestructors(bool) -# 2274| Block 0 -# 2274| v2274_1(void) = EnterFunction : -# 2274| mu2274_2(unknown) = AliasedDefinition : -# 2274| mu2274_3(unknown) = InitializeNonLocal : -# 2274| r2274_4(glval) = VariableAddress[b] : -# 2274| mu2274_5(bool) = InitializeParameter[b] : &:r2274_4 -# 2276| r2276_1(glval) = VariableAddress[s] : -# 2276| mu2276_2(String) = Uninitialized[s] : &:r2276_1 -# 2276| r2276_3(glval) = FunctionAddress[String] : -# 2276| v2276_4(void) = Call[String] : func:r2276_3, this:r2276_1 -# 2276| mu2276_5(unknown) = ^CallSideEffect : ~m? -# 2276| mu2276_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2276_1 +# 2276| void TryCatchDestructors(bool) +# 2276| Block 0 +# 2276| v2276_1(void) = EnterFunction : +# 2276| mu2276_2(unknown) = AliasedDefinition : +# 2276| mu2276_3(unknown) = InitializeNonLocal : +# 2276| r2276_4(glval) = VariableAddress[b] : +# 2276| mu2276_5(bool) = InitializeParameter[b] : &:r2276_4 +# 2278| r2278_1(glval) = VariableAddress[s] : +# 2278| mu2278_2(String) = Uninitialized[s] : &:r2278_1 +# 2278| r2278_3(glval) = FunctionAddress[String] : +# 2278| v2278_4(void) = Call[String] : func:r2278_3, this:r2278_1 +# 2278| mu2278_5(unknown) = ^CallSideEffect : ~m? +# 2278| mu2278_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2278_1 #-----| C++ Exception -> Block 7 #-----| Goto -> Block 3 -# 2274| Block 1 -# 2274| v2274_6(void) = AliasedUse : ~m? -# 2274| v2274_7(void) = ExitFunction : +# 2276| Block 1 +# 2276| v2276_6(void) = AliasedUse : ~m? +# 2276| v2276_7(void) = ExitFunction : -# 2274| Block 2 -# 2274| v2274_8(void) = Unwind : +# 2276| Block 2 +# 2276| v2276_8(void) = Unwind : #-----| Goto -> Block 1 -# 2277| Block 3 -# 2277| r2277_1(glval) = VariableAddress[b] : -# 2277| r2277_2(bool) = Load[b] : &:r2277_1, ~m? -# 2277| v2277_3(void) = ConditionalBranch : r2277_2 +# 2279| Block 3 +# 2279| r2279_1(glval) = VariableAddress[b] : +# 2279| r2279_2(bool) = Load[b] : &:r2279_1, ~m? +# 2279| v2279_3(void) = ConditionalBranch : r2279_2 #-----| False -> Block 5 #-----| True -> Block 4 -# 2278| Block 4 -# 2278| r2278_1(glval) = VariableAddress[#throw2278:7] : -# 2278| r2278_2(glval) = StringConstant["string literal"] : -# 2278| r2278_3(char *) = Convert : r2278_2 -# 2278| mu2278_4(char *) = Store[#throw2278:7] : &:r2278_1, r2278_3 -# 2278| v2278_5(void) = ThrowValue : &:r2278_1, ~m? -# 2281| r2281_1(glval) = VariableAddress[s] : -# 2281| r2281_2(glval) = FunctionAddress[~String] : -# 2281| v2281_3(void) = Call[~String] : func:r2281_2, this:r2281_1 -# 2281| mu2281_4(unknown) = ^CallSideEffect : ~m? -# 2281| v2281_5(void) = ^IndirectReadSideEffect[-1] : &:r2281_1, ~m? -# 2281| mu2281_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2281_1 +# 2280| Block 4 +# 2280| r2280_1(glval) = VariableAddress[#throw2280:7] : +# 2280| r2280_2(glval) = StringConstant["string literal"] : +# 2280| r2280_3(char *) = Convert : r2280_2 +# 2280| mu2280_4(char *) = Store[#throw2280:7] : &:r2280_1, r2280_3 +# 2280| v2280_5(void) = ThrowValue : &:r2280_1, ~m? +# 2283| r2283_1(glval) = VariableAddress[s] : +# 2283| r2283_2(glval) = FunctionAddress[~String] : +# 2283| v2283_3(void) = Call[~String] : func:r2283_2, this:r2283_1 +# 2283| mu2283_4(unknown) = ^CallSideEffect : ~m? +# 2283| v2283_5(void) = ^IndirectReadSideEffect[-1] : &:r2283_1, ~m? +# 2283| mu2283_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2283_1 #-----| C++ Exception -> Block 7 -# 2280| Block 5 -# 2280| r2280_1(glval) = VariableAddress[s2] : -# 2280| mu2280_2(String) = Uninitialized[s2] : &:r2280_1 -# 2280| r2280_3(glval) = FunctionAddress[String] : -# 2280| v2280_4(void) = Call[String] : func:r2280_3, this:r2280_1 -# 2280| mu2280_5(unknown) = ^CallSideEffect : ~m? -# 2280| mu2280_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2280_1 +# 2282| Block 5 +# 2282| r2282_1(glval) = VariableAddress[s2] : +# 2282| mu2282_2(String) = Uninitialized[s2] : &:r2282_1 +# 2282| r2282_3(glval) = FunctionAddress[String] : +# 2282| v2282_4(void) = Call[String] : func:r2282_3, this:r2282_1 +# 2282| mu2282_5(unknown) = ^CallSideEffect : ~m? +# 2282| mu2282_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2282_1 #-----| C++ Exception -> Block 7 #-----| Goto -> Block 6 -# 2281| Block 6 -# 2281| r2281_7(glval) = VariableAddress[s2] : -# 2281| r2281_8(glval) = FunctionAddress[~String] : -# 2281| v2281_9(void) = Call[~String] : func:r2281_8, this:r2281_7 -# 2281| mu2281_10(unknown) = ^CallSideEffect : ~m? -# 2281| v2281_11(void) = ^IndirectReadSideEffect[-1] : &:r2281_7, ~m? -# 2281| mu2281_12(String) = ^IndirectMayWriteSideEffect[-1] : &:r2281_7 -# 2281| r2281_13(glval) = VariableAddress[s] : -# 2281| r2281_14(glval) = FunctionAddress[~String] : -# 2281| v2281_15(void) = Call[~String] : func:r2281_14, this:r2281_13 -# 2281| mu2281_16(unknown) = ^CallSideEffect : ~m? -# 2281| v2281_17(void) = ^IndirectReadSideEffect[-1] : &:r2281_13, ~m? -# 2281| mu2281_18(String) = ^IndirectMayWriteSideEffect[-1] : &:r2281_13 +# 2283| Block 6 +# 2283| r2283_7(glval) = VariableAddress[s2] : +# 2283| r2283_8(glval) = FunctionAddress[~String] : +# 2283| v2283_9(void) = Call[~String] : func:r2283_8, this:r2283_7 +# 2283| mu2283_10(unknown) = ^CallSideEffect : ~m? +# 2283| v2283_11(void) = ^IndirectReadSideEffect[-1] : &:r2283_7, ~m? +# 2283| mu2283_12(String) = ^IndirectMayWriteSideEffect[-1] : &:r2283_7 +# 2283| r2283_13(glval) = VariableAddress[s] : +# 2283| r2283_14(glval) = FunctionAddress[~String] : +# 2283| v2283_15(void) = Call[~String] : func:r2283_14, this:r2283_13 +# 2283| mu2283_16(unknown) = ^CallSideEffect : ~m? +# 2283| v2283_17(void) = ^IndirectReadSideEffect[-1] : &:r2283_13, ~m? +# 2283| mu2283_18(String) = ^IndirectMayWriteSideEffect[-1] : &:r2283_13 #-----| Goto -> Block 12 -# 2282| Block 7 -# 2282| v2282_1(void) = CatchByType[const char *] : +# 2284| Block 7 +# 2284| v2284_1(void) = CatchByType[const char *] : #-----| C++ Exception -> Block 9 #-----| Goto -> Block 8 -# 2282| Block 8 -# 2282| r2282_2(glval) = VariableAddress[s] : -# 2282| mu2282_3(char *) = InitializeParameter[s] : &:r2282_2 -# 2282| r2282_4(char *) = Load[s] : &:r2282_2, ~m? -# 2282| mu2282_5(unknown) = InitializeIndirection[s] : &:r2282_4 -# 2283| r2283_1(glval) = VariableAddress[#throw2283:5] : -# 2283| mu2283_2(String) = Uninitialized[#throw2283:5] : &:r2283_1 -# 2283| r2283_3(glval) = FunctionAddress[String] : -# 2283| r2283_4(glval) = VariableAddress[s] : -# 2283| r2283_5(char *) = Load[s] : &:r2283_4, ~m? -# 2283| v2283_6(void) = Call[String] : func:r2283_3, this:r2283_1, 0:r2283_5 -# 2283| mu2283_7(unknown) = ^CallSideEffect : ~m? -# 2283| v2283_8(void) = ^BufferReadSideEffect[0] : &:r2283_5, ~m? -# 2283| mu2283_9(String) = ^IndirectMayWriteSideEffect[-1] : &:r2283_1 -# 2283| v2283_10(void) = ThrowValue : &:r2283_1, ~m? +# 2284| Block 8 +# 2284| r2284_2(glval) = VariableAddress[s] : +# 2284| mu2284_3(char *) = InitializeParameter[s] : &:r2284_2 +# 2284| r2284_4(char *) = Load[s] : &:r2284_2, ~m? +# 2284| mu2284_5(unknown) = InitializeIndirection[s] : &:r2284_4 +# 2285| r2285_1(glval) = VariableAddress[#throw2285:5] : +# 2285| mu2285_2(String) = Uninitialized[#throw2285:5] : &:r2285_1 +# 2285| r2285_3(glval) = FunctionAddress[String] : +# 2285| r2285_4(glval) = VariableAddress[s] : +# 2285| r2285_5(char *) = Load[s] : &:r2285_4, ~m? +# 2285| v2285_6(void) = Call[String] : func:r2285_3, this:r2285_1, 0:r2285_5 +# 2285| mu2285_7(unknown) = ^CallSideEffect : ~m? +# 2285| v2285_8(void) = ^BufferReadSideEffect[0] : &:r2285_5, ~m? +# 2285| mu2285_9(String) = ^IndirectMayWriteSideEffect[-1] : &:r2285_1 +# 2285| v2285_10(void) = ThrowValue : &:r2285_1, ~m? #-----| C++ Exception -> Block 2 -# 2285| Block 9 -# 2285| v2285_1(void) = CatchByType[const String &] : +# 2287| Block 9 +# 2287| v2287_1(void) = CatchByType[const String &] : #-----| C++ Exception -> Block 11 #-----| Goto -> Block 10 -# 2285| Block 10 -# 2285| r2285_2(glval) = VariableAddress[e] : -# 2285| mu2285_3(String &) = InitializeParameter[e] : &:r2285_2 -# 2285| r2285_4(String &) = Load[e] : &:r2285_2, ~m? -# 2285| mu2285_5(unknown) = InitializeIndirection[e] : &:r2285_4 -# 2285| v2285_6(void) = NoOp : +# 2287| Block 10 +# 2287| r2287_2(glval) = VariableAddress[e] : +# 2287| mu2287_3(String &) = InitializeParameter[e] : &:r2287_2 +# 2287| r2287_4(String &) = Load[e] : &:r2287_2, ~m? +# 2287| mu2287_5(unknown) = InitializeIndirection[e] : &:r2287_4 +# 2287| v2287_6(void) = NoOp : #-----| Goto -> Block 12 -# 2287| Block 11 -# 2287| v2287_1(void) = CatchAny : -# 2288| v2288_1(void) = ReThrow : +# 2289| Block 11 +# 2289| v2289_1(void) = CatchAny : +# 2290| v2290_1(void) = ReThrow : #-----| C++ Exception -> Block 2 -# 2290| Block 12 -# 2290| v2290_1(void) = NoOp : -# 2274| v2274_9(void) = ReturnVoid : +# 2292| Block 12 +# 2292| v2292_1(void) = NoOp : +# 2276| v2276_9(void) = ReturnVoid : #-----| Goto -> Block 1 -# 2292| void IfDestructors(bool) -# 2292| Block 0 -# 2292| v2292_1(void) = EnterFunction : -# 2292| mu2292_2(unknown) = AliasedDefinition : -# 2292| mu2292_3(unknown) = InitializeNonLocal : -# 2292| r2292_4(glval) = VariableAddress[b] : -# 2292| mu2292_5(bool) = InitializeParameter[b] : &:r2292_4 -# 2293| r2293_1(glval) = VariableAddress[s1] : -# 2293| mu2293_2(String) = Uninitialized[s1] : &:r2293_1 -# 2293| r2293_3(glval) = FunctionAddress[String] : -# 2293| v2293_4(void) = Call[String] : func:r2293_3, this:r2293_1 -# 2293| mu2293_5(unknown) = ^CallSideEffect : ~m? -# 2293| mu2293_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2293_1 -# 2294| r2294_1(glval) = VariableAddress[b] : -# 2294| r2294_2(bool) = Load[b] : &:r2294_1, ~m? -# 2294| v2294_3(void) = ConditionalBranch : r2294_2 -#-----| False -> Block 2 -#-----| True -> Block 1 - -# 2295| Block 1 -# 2295| r2295_1(glval) = VariableAddress[s2] : -# 2295| mu2295_2(String) = Uninitialized[s2] : &:r2295_1 +# 2294| void IfDestructors(bool) +# 2294| Block 0 +# 2294| v2294_1(void) = EnterFunction : +# 2294| mu2294_2(unknown) = AliasedDefinition : +# 2294| mu2294_3(unknown) = InitializeNonLocal : +# 2294| r2294_4(glval) = VariableAddress[b] : +# 2294| mu2294_5(bool) = InitializeParameter[b] : &:r2294_4 +# 2295| r2295_1(glval) = VariableAddress[s1] : +# 2295| mu2295_2(String) = Uninitialized[s1] : &:r2295_1 # 2295| r2295_3(glval) = FunctionAddress[String] : # 2295| v2295_4(void) = Call[String] : func:r2295_3, this:r2295_1 # 2295| mu2295_5(unknown) = ^CallSideEffect : ~m? # 2295| mu2295_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2295_1 -# 2296| r2296_1(glval) = VariableAddress[s2] : -# 2296| r2296_2(glval) = FunctionAddress[~String] : -# 2296| v2296_3(void) = Call[~String] : func:r2296_2, this:r2296_1 -# 2296| mu2296_4(unknown) = ^CallSideEffect : ~m? -# 2296| v2296_5(void) = ^IndirectReadSideEffect[-1] : &:r2296_1, ~m? -# 2296| mu2296_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2296_1 -#-----| Goto -> Block 3 +# 2296| r2296_1(glval) = VariableAddress[b] : +# 2296| r2296_2(bool) = Load[b] : &:r2296_1, ~m? +# 2296| v2296_3(void) = ConditionalBranch : r2296_2 +#-----| False -> Block 2 +#-----| True -> Block 1 -# 2297| Block 2 -# 2297| r2297_1(glval) = VariableAddress[s3] : -# 2297| mu2297_2(String) = Uninitialized[s3] : &:r2297_1 +# 2297| Block 1 +# 2297| r2297_1(glval) = VariableAddress[s2] : +# 2297| mu2297_2(String) = Uninitialized[s2] : &:r2297_1 # 2297| r2297_3(glval) = FunctionAddress[String] : # 2297| v2297_4(void) = Call[String] : func:r2297_3, this:r2297_1 # 2297| mu2297_5(unknown) = ^CallSideEffect : ~m? # 2297| mu2297_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2297_1 -# 2298| r2298_1(glval) = VariableAddress[s3] : +# 2298| r2298_1(glval) = VariableAddress[s2] : # 2298| r2298_2(glval) = FunctionAddress[~String] : # 2298| v2298_3(void) = Call[~String] : func:r2298_2, this:r2298_1 # 2298| mu2298_4(unknown) = ^CallSideEffect : ~m? @@ -15959,359 +15944,359 @@ ir.cpp: # 2298| mu2298_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2298_1 #-----| Goto -> Block 3 -# 2299| Block 3 -# 2299| r2299_1(glval) = VariableAddress[s4] : -# 2299| mu2299_2(String) = Uninitialized[s4] : &:r2299_1 +# 2299| Block 2 +# 2299| r2299_1(glval) = VariableAddress[s3] : +# 2299| mu2299_2(String) = Uninitialized[s3] : &:r2299_1 # 2299| r2299_3(glval) = FunctionAddress[String] : # 2299| v2299_4(void) = Call[String] : func:r2299_3, this:r2299_1 # 2299| mu2299_5(unknown) = ^CallSideEffect : ~m? # 2299| mu2299_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2299_1 -# 2300| v2300_1(void) = NoOp : -# 2300| r2300_2(glval) = VariableAddress[s4] : -# 2300| r2300_3(glval) = FunctionAddress[~String] : -# 2300| v2300_4(void) = Call[~String] : func:r2300_3, this:r2300_2 -# 2300| mu2300_5(unknown) = ^CallSideEffect : ~m? -# 2300| v2300_6(void) = ^IndirectReadSideEffect[-1] : &:r2300_2, ~m? -# 2300| mu2300_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2300_2 -# 2300| r2300_8(glval) = VariableAddress[s1] : -# 2300| r2300_9(glval) = FunctionAddress[~String] : -# 2300| v2300_10(void) = Call[~String] : func:r2300_9, this:r2300_8 -# 2300| mu2300_11(unknown) = ^CallSideEffect : ~m? -# 2300| v2300_12(void) = ^IndirectReadSideEffect[-1] : &:r2300_8, ~m? -# 2300| mu2300_13(String) = ^IndirectMayWriteSideEffect[-1] : &:r2300_8 -# 2292| v2292_6(void) = ReturnVoid : -# 2292| v2292_7(void) = AliasedUse : ~m? -# 2292| v2292_8(void) = ExitFunction : +# 2300| r2300_1(glval) = VariableAddress[s3] : +# 2300| r2300_2(glval) = FunctionAddress[~String] : +# 2300| v2300_3(void) = Call[~String] : func:r2300_2, this:r2300_1 +# 2300| mu2300_4(unknown) = ^CallSideEffect : ~m? +# 2300| v2300_5(void) = ^IndirectReadSideEffect[-1] : &:r2300_1, ~m? +# 2300| mu2300_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2300_1 +#-----| Goto -> Block 3 -# 2302| void ForDestructors() -# 2302| Block 0 -# 2302| v2302_1(void) = EnterFunction : -# 2302| mu2302_2(unknown) = AliasedDefinition : -# 2302| mu2302_3(unknown) = InitializeNonLocal : -# 2303| r2303_1(glval) = VariableAddress[c] : -# 2303| r2303_2(char) = Constant[97] : -# 2303| mu2303_3(char) = Store[c] : &:r2303_1, r2303_2 -# 2304| r2304_1(glval) = VariableAddress[s] : -# 2304| mu2304_2(String) = Uninitialized[s] : &:r2304_1 -# 2304| r2304_3(glval) = FunctionAddress[String] : -# 2304| r2304_4(glval) = StringConstant["hello"] : -# 2304| r2304_5(char *) = Convert : r2304_4 -# 2304| v2304_6(void) = Call[String] : func:r2304_3, this:r2304_1, 0:r2304_5 -# 2304| mu2304_7(unknown) = ^CallSideEffect : ~m? -# 2304| v2304_8(void) = ^BufferReadSideEffect[0] : &:r2304_5, ~m? -# 2304| mu2304_9(String) = ^IndirectMayWriteSideEffect[-1] : &:r2304_1 +# 2301| Block 3 +# 2301| r2301_1(glval) = VariableAddress[s4] : +# 2301| mu2301_2(String) = Uninitialized[s4] : &:r2301_1 +# 2301| r2301_3(glval) = FunctionAddress[String] : +# 2301| v2301_4(void) = Call[String] : func:r2301_3, this:r2301_1 +# 2301| mu2301_5(unknown) = ^CallSideEffect : ~m? +# 2301| mu2301_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2301_1 +# 2302| v2302_1(void) = NoOp : +# 2302| r2302_2(glval) = VariableAddress[s4] : +# 2302| r2302_3(glval) = FunctionAddress[~String] : +# 2302| v2302_4(void) = Call[~String] : func:r2302_3, this:r2302_2 +# 2302| mu2302_5(unknown) = ^CallSideEffect : ~m? +# 2302| v2302_6(void) = ^IndirectReadSideEffect[-1] : &:r2302_2, ~m? +# 2302| mu2302_7(String) = ^IndirectMayWriteSideEffect[-1] : &:r2302_2 +# 2302| r2302_8(glval) = VariableAddress[s1] : +# 2302| r2302_9(glval) = FunctionAddress[~String] : +# 2302| v2302_10(void) = Call[~String] : func:r2302_9, this:r2302_8 +# 2302| mu2302_11(unknown) = ^CallSideEffect : ~m? +# 2302| v2302_12(void) = ^IndirectReadSideEffect[-1] : &:r2302_8, ~m? +# 2302| mu2302_13(String) = ^IndirectMayWriteSideEffect[-1] : &:r2302_8 +# 2294| v2294_6(void) = ReturnVoid : +# 2294| v2294_7(void) = AliasedUse : ~m? +# 2294| v2294_8(void) = ExitFunction : + +# 2304| void ForDestructors() +# 2304| Block 0 +# 2304| v2304_1(void) = EnterFunction : +# 2304| mu2304_2(unknown) = AliasedDefinition : +# 2304| mu2304_3(unknown) = InitializeNonLocal : +# 2305| r2305_1(glval) = VariableAddress[c] : +# 2305| r2305_2(char) = Constant[97] : +# 2305| mu2305_3(char) = Store[c] : &:r2305_1, r2305_2 +# 2306| r2306_1(glval) = VariableAddress[s] : +# 2306| mu2306_2(String) = Uninitialized[s] : &:r2306_1 +# 2306| r2306_3(glval) = FunctionAddress[String] : +# 2306| r2306_4(glval) = StringConstant["hello"] : +# 2306| r2306_5(char *) = Convert : r2306_4 +# 2306| v2306_6(void) = Call[String] : func:r2306_3, this:r2306_1, 0:r2306_5 +# 2306| mu2306_7(unknown) = ^CallSideEffect : ~m? +# 2306| v2306_8(void) = ^BufferReadSideEffect[0] : &:r2306_5, ~m? +# 2306| mu2306_9(String) = ^IndirectMayWriteSideEffect[-1] : &:r2306_1 #-----| Goto -> Block 1 -# 2304| Block 1 -# 2304| r2304_10(glval) = VariableAddress[c] : -# 2304| r2304_11(char) = Load[c] : &:r2304_10, ~m? -# 2304| r2304_12(int) = Convert : r2304_11 -# 2304| r2304_13(int) = Constant[0] : -# 2304| r2304_14(bool) = CompareNE : r2304_12, r2304_13 -# 2304| v2304_15(void) = ConditionalBranch : r2304_14 +# 2306| Block 1 +# 2306| r2306_10(glval) = VariableAddress[c] : +# 2306| r2306_11(char) = Load[c] : &:r2306_10, ~m? +# 2306| r2306_12(int) = Convert : r2306_11 +# 2306| r2306_13(int) = Constant[0] : +# 2306| r2306_14(bool) = CompareNE : r2306_12, r2306_13 +# 2306| v2306_15(void) = ConditionalBranch : r2306_14 #-----| False -> Block 3 #-----| True -> Block 2 -# 2305| Block 2 -# 2305| r2305_1(glval) = VariableAddress[s2] : -# 2305| mu2305_2(String) = Uninitialized[s2] : &:r2305_1 -# 2305| r2305_3(glval) = FunctionAddress[String] : -# 2305| v2305_4(void) = Call[String] : func:r2305_3, this:r2305_1 -# 2305| mu2305_5(unknown) = ^CallSideEffect : ~m? -# 2305| mu2305_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2305_1 -# 2306| r2306_1(glval) = VariableAddress[s2] : -# 2306| r2306_2(glval) = FunctionAddress[~String] : -# 2306| v2306_3(void) = Call[~String] : func:r2306_2, this:r2306_1 -# 2306| mu2306_4(unknown) = ^CallSideEffect : ~m? -# 2306| v2306_5(void) = ^IndirectReadSideEffect[-1] : &:r2306_1, ~m? -# 2306| mu2306_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2306_1 -# 2304| r2304_16(glval) = VariableAddress[s] : -# 2304| r2304_17(glval) = FunctionAddress[pop_back] : -# 2304| r2304_18(char) = Call[pop_back] : func:r2304_17, this:r2304_16 -# 2304| mu2304_19(unknown) = ^CallSideEffect : ~m? -# 2304| v2304_20(void) = ^IndirectReadSideEffect[-1] : &:r2304_16, ~m? -# 2304| mu2304_21(String) = ^IndirectMayWriteSideEffect[-1] : &:r2304_16 -# 2304| r2304_22(glval) = VariableAddress[c] : -# 2304| mu2304_23(char) = Store[c] : &:r2304_22, r2304_18 +# 2307| Block 2 +# 2307| r2307_1(glval) = VariableAddress[s2] : +# 2307| mu2307_2(String) = Uninitialized[s2] : &:r2307_1 +# 2307| r2307_3(glval) = FunctionAddress[String] : +# 2307| v2307_4(void) = Call[String] : func:r2307_3, this:r2307_1 +# 2307| mu2307_5(unknown) = ^CallSideEffect : ~m? +# 2307| mu2307_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2307_1 +# 2308| r2308_1(glval) = VariableAddress[s2] : +# 2308| r2308_2(glval) = FunctionAddress[~String] : +# 2308| v2308_3(void) = Call[~String] : func:r2308_2, this:r2308_1 +# 2308| mu2308_4(unknown) = ^CallSideEffect : ~m? +# 2308| v2308_5(void) = ^IndirectReadSideEffect[-1] : &:r2308_1, ~m? +# 2308| mu2308_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2308_1 +# 2306| r2306_16(glval) = VariableAddress[s] : +# 2306| r2306_17(glval) = FunctionAddress[pop_back] : +# 2306| r2306_18(char) = Call[pop_back] : func:r2306_17, this:r2306_16 +# 2306| mu2306_19(unknown) = ^CallSideEffect : ~m? +# 2306| v2306_20(void) = ^IndirectReadSideEffect[-1] : &:r2306_16, ~m? +# 2306| mu2306_21(String) = ^IndirectMayWriteSideEffect[-1] : &:r2306_16 +# 2306| r2306_22(glval) = VariableAddress[c] : +# 2306| mu2306_23(char) = Store[c] : &:r2306_22, r2306_18 #-----| Goto (back edge) -> Block 1 -# 2304| Block 3 -# 2304| r2304_24(glval) = VariableAddress[s] : -# 2304| r2304_25(glval) = FunctionAddress[~String] : -# 2304| v2304_26(void) = Call[~String] : func:r2304_25, this:r2304_24 -# 2304| mu2304_27(unknown) = ^CallSideEffect : ~m? -# 2304| v2304_28(void) = ^IndirectReadSideEffect[-1] : &:r2304_24, ~m? -# 2304| mu2304_29(String) = ^IndirectMayWriteSideEffect[-1] : &:r2304_24 -# 2308| r2308_1(glval &&>) = VariableAddress[(__range)] : -# 2308| r2308_2(glval>) = VariableAddress[#temp2308:20] : -# 2308| mu2308_3(vector) = Uninitialized[#temp2308:20] : &:r2308_2 -# 2308| r2308_4(glval) = FunctionAddress[vector] : -# 2308| r2308_5(glval) = VariableAddress[#temp2308:40] : -# 2308| mu2308_6(String) = Uninitialized[#temp2308:40] : &:r2308_5 -# 2308| r2308_7(glval) = FunctionAddress[String] : -# 2308| r2308_8(glval) = StringConstant["hello"] : -# 2308| r2308_9(char *) = Convert : r2308_8 -# 2308| v2308_10(void) = Call[String] : func:r2308_7, this:r2308_5, 0:r2308_9 -# 2308| mu2308_11(unknown) = ^CallSideEffect : ~m? -# 2308| v2308_12(void) = ^BufferReadSideEffect[0] : &:r2308_9, ~m? -# 2308| mu2308_13(String) = ^IndirectMayWriteSideEffect[-1] : &:r2308_5 -# 2308| r2308_14(String) = Load[#temp2308:40] : &:r2308_5, ~m? -# 2308| v2308_15(void) = Call[vector] : func:r2308_4, this:r2308_2, 0:r2308_14 -# 2308| mu2308_16(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2308_2 -# 2308| r2308_17(glval) = CopyValue : r2308_5 -# 2308| r2308_18(glval) = FunctionAddress[~String] : -# 2308| v2308_19(void) = Call[~String] : func:r2308_18, this:r2308_17 -# 2308| mu2308_20(unknown) = ^CallSideEffect : ~m? -# 2308| v2308_21(void) = ^IndirectReadSideEffect[-1] : &:r2308_17, ~m? -# 2308| mu2308_22(String) = ^IndirectMayWriteSideEffect[-1] : &:r2308_17 -# 2308| r2308_23(vector &) = CopyValue : r2308_2 -# 2308| mu2308_24(vector &&) = Store[(__range)] : &:r2308_1, r2308_23 -# 2308| r2308_25(glval>) = VariableAddress[(__begin)] : -# 2308| r2308_26(glval &&>) = VariableAddress[(__range)] : -# 2308| r2308_27(vector &&) = Load[(__range)] : &:r2308_26, ~m? -#-----| r0_1(glval>) = CopyValue : r2308_27 +# 2306| Block 3 +# 2306| r2306_24(glval) = VariableAddress[s] : +# 2306| r2306_25(glval) = FunctionAddress[~String] : +# 2306| v2306_26(void) = Call[~String] : func:r2306_25, this:r2306_24 +# 2306| mu2306_27(unknown) = ^CallSideEffect : ~m? +# 2306| v2306_28(void) = ^IndirectReadSideEffect[-1] : &:r2306_24, ~m? +# 2306| mu2306_29(String) = ^IndirectMayWriteSideEffect[-1] : &:r2306_24 +# 2310| r2310_1(glval &&>) = VariableAddress[(__range)] : +# 2310| r2310_2(glval>) = VariableAddress[#temp2310:20] : +# 2310| mu2310_3(vector) = Uninitialized[#temp2310:20] : &:r2310_2 +# 2310| r2310_4(glval) = FunctionAddress[vector] : +# 2310| r2310_5(glval) = VariableAddress[#temp2310:40] : +# 2310| mu2310_6(String) = Uninitialized[#temp2310:40] : &:r2310_5 +# 2310| r2310_7(glval) = FunctionAddress[String] : +# 2310| r2310_8(glval) = StringConstant["hello"] : +# 2310| r2310_9(char *) = Convert : r2310_8 +# 2310| v2310_10(void) = Call[String] : func:r2310_7, this:r2310_5, 0:r2310_9 +# 2310| mu2310_11(unknown) = ^CallSideEffect : ~m? +# 2310| v2310_12(void) = ^BufferReadSideEffect[0] : &:r2310_9, ~m? +# 2310| mu2310_13(String) = ^IndirectMayWriteSideEffect[-1] : &:r2310_5 +# 2310| r2310_14(String) = Load[#temp2310:40] : &:r2310_5, ~m? +# 2310| v2310_15(void) = Call[vector] : func:r2310_4, this:r2310_2, 0:r2310_14 +# 2310| mu2310_16(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2310_2 +# 2310| r2310_17(glval) = CopyValue : r2310_5 +# 2310| r2310_18(glval) = FunctionAddress[~String] : +# 2310| v2310_19(void) = Call[~String] : func:r2310_18, this:r2310_17 +# 2310| mu2310_20(unknown) = ^CallSideEffect : ~m? +# 2310| v2310_21(void) = ^IndirectReadSideEffect[-1] : &:r2310_17, ~m? +# 2310| mu2310_22(String) = ^IndirectMayWriteSideEffect[-1] : &:r2310_17 +# 2310| r2310_23(vector &) = CopyValue : r2310_2 +# 2310| mu2310_24(vector &&) = Store[(__range)] : &:r2310_1, r2310_23 +# 2310| r2310_25(glval>) = VariableAddress[(__begin)] : +# 2310| r2310_26(glval &&>) = VariableAddress[(__range)] : +# 2310| r2310_27(vector &&) = Load[(__range)] : &:r2310_26, ~m? +#-----| r0_1(glval>) = CopyValue : r2310_27 #-----| r0_2(glval>) = Convert : r0_1 -# 2308| r2308_28(glval) = FunctionAddress[begin] : -# 2308| r2308_29(iterator) = Call[begin] : func:r2308_28, this:r0_2 +# 2310| r2310_28(glval) = FunctionAddress[begin] : +# 2310| r2310_29(iterator) = Call[begin] : func:r2310_28, this:r0_2 #-----| v0_3(void) = ^IndirectReadSideEffect[-1] : &:r0_2, ~m? -# 2308| mu2308_30(iterator) = Store[(__begin)] : &:r2308_25, r2308_29 -# 2308| r2308_31(glval>) = VariableAddress[(__end)] : -# 2308| r2308_32(glval &&>) = VariableAddress[(__range)] : -# 2308| r2308_33(vector &&) = Load[(__range)] : &:r2308_32, ~m? -#-----| r0_4(glval>) = CopyValue : r2308_33 +# 2310| mu2310_30(iterator) = Store[(__begin)] : &:r2310_25, r2310_29 +# 2310| r2310_31(glval>) = VariableAddress[(__end)] : +# 2310| r2310_32(glval &&>) = VariableAddress[(__range)] : +# 2310| r2310_33(vector &&) = Load[(__range)] : &:r2310_32, ~m? +#-----| r0_4(glval>) = CopyValue : r2310_33 #-----| r0_5(glval>) = Convert : r0_4 -# 2308| r2308_34(glval) = FunctionAddress[end] : -# 2308| r2308_35(iterator) = Call[end] : func:r2308_34, this:r0_5 +# 2310| r2310_34(glval) = FunctionAddress[end] : +# 2310| r2310_35(iterator) = Call[end] : func:r2310_34, this:r0_5 #-----| v0_6(void) = ^IndirectReadSideEffect[-1] : &:r0_5, ~m? -# 2308| mu2308_36(iterator) = Store[(__end)] : &:r2308_31, r2308_35 +# 2310| mu2310_36(iterator) = Store[(__end)] : &:r2310_31, r2310_35 #-----| Goto -> Block 4 -# 2308| Block 4 -# 2308| r2308_37(glval>) = VariableAddress[(__begin)] : -#-----| r0_7(glval>) = Convert : r2308_37 -# 2308| r2308_38(glval) = FunctionAddress[operator!=] : +# 2310| Block 4 +# 2310| r2310_37(glval>) = VariableAddress[(__begin)] : +#-----| r0_7(glval>) = Convert : r2310_37 +# 2310| r2310_38(glval) = FunctionAddress[operator!=] : #-----| r0_8(glval>) = VariableAddress[#temp0:0] : #-----| mu0_9(iterator) = Uninitialized[#temp0:0] : &:r0_8 -# 2308| r2308_39(glval) = FunctionAddress[iterator] : -# 2308| r2308_40(glval>) = VariableAddress[(__end)] : -#-----| r0_10(glval>) = Convert : r2308_40 +# 2310| r2310_39(glval) = FunctionAddress[iterator] : +# 2310| r2310_40(glval>) = VariableAddress[(__end)] : +#-----| r0_10(glval>) = Convert : r2310_40 #-----| r0_11(iterator &) = CopyValue : r0_10 -# 2308| v2308_41(void) = Call[iterator] : func:r2308_39, this:r0_8, 0:r0_11 -# 2308| mu2308_42(unknown) = ^CallSideEffect : ~m? +# 2310| v2310_41(void) = Call[iterator] : func:r2310_39, this:r0_8, 0:r0_11 +# 2310| mu2310_42(unknown) = ^CallSideEffect : ~m? #-----| v0_12(void) = ^BufferReadSideEffect[0] : &:r0_11, ~m? -# 2308| mu2308_43(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r0_8 +# 2310| mu2310_43(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r0_8 #-----| r0_13(iterator) = Load[#temp0:0] : &:r0_8, ~m? -# 2308| r2308_44(bool) = Call[operator!=] : func:r2308_38, this:r0_7, 0:r0_13 +# 2310| r2310_44(bool) = Call[operator!=] : func:r2310_38, this:r0_7, 0:r0_13 #-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_7, ~m? -# 2308| v2308_45(void) = ConditionalBranch : r2308_44 +# 2310| v2310_45(void) = ConditionalBranch : r2310_44 #-----| False -> Block 6 #-----| True -> Block 5 -# 2308| Block 5 -# 2308| r2308_46(glval) = VariableAddress[s] : -# 2308| mu2308_47(String) = Uninitialized[s] : &:r2308_46 -# 2308| r2308_48(glval) = FunctionAddress[String] : -# 2308| r2308_49(glval>) = VariableAddress[(__begin)] : -#-----| r0_15(glval>) = Convert : r2308_49 -# 2308| r2308_50(glval) = FunctionAddress[operator*] : -# 2308| r2308_51(String &) = Call[operator*] : func:r2308_50, this:r0_15 +# 2310| Block 5 +# 2310| r2310_46(glval) = VariableAddress[s] : +# 2310| mu2310_47(String) = Uninitialized[s] : &:r2310_46 +# 2310| r2310_48(glval) = FunctionAddress[String] : +# 2310| r2310_49(glval>) = VariableAddress[(__begin)] : +#-----| r0_15(glval>) = Convert : r2310_49 +# 2310| r2310_50(glval) = FunctionAddress[operator*] : +# 2310| r2310_51(String &) = Call[operator*] : func:r2310_50, this:r0_15 #-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, ~m? -# 2308| r2308_52(glval) = CopyValue : r2308_51 -# 2308| r2308_53(glval) = Convert : r2308_52 -# 2308| r2308_54(String &) = CopyValue : r2308_53 -# 2308| v2308_55(void) = Call[String] : func:r2308_48, this:r2308_46, 0:r2308_54 -# 2308| mu2308_56(unknown) = ^CallSideEffect : ~m? -# 2308| v2308_57(void) = ^BufferReadSideEffect[0] : &:r2308_54, ~m? -# 2308| mu2308_58(String) = ^IndirectMayWriteSideEffect[-1] : &:r2308_46 -# 2309| r2309_1(glval) = VariableAddress[s2] : -# 2309| mu2309_2(String) = Uninitialized[s2] : &:r2309_1 -# 2309| r2309_3(glval) = FunctionAddress[String] : -# 2309| v2309_4(void) = Call[String] : func:r2309_3, this:r2309_1 -# 2309| mu2309_5(unknown) = ^CallSideEffect : ~m? -# 2309| mu2309_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2309_1 -# 2310| r2310_1(glval) = VariableAddress[s2] : -# 2310| r2310_2(glval) = FunctionAddress[~String] : -# 2310| v2310_3(void) = Call[~String] : func:r2310_2, this:r2310_1 -# 2310| mu2310_4(unknown) = ^CallSideEffect : ~m? -# 2310| v2310_5(void) = ^IndirectReadSideEffect[-1] : &:r2310_1, ~m? -# 2310| mu2310_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2310_1 -# 2308| r2308_59(glval>) = VariableAddress[(__begin)] : -# 2308| r2308_60(glval) = FunctionAddress[operator++] : -# 2308| r2308_61(iterator &) = Call[operator++] : func:r2308_60, this:r2308_59 -# 2308| v2308_62(void) = ^IndirectReadSideEffect[-1] : &:r2308_59, ~m? -# 2308| mu2308_63(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r2308_59 -# 2308| r2308_64(glval) = VariableAddress[s] : -# 2308| r2308_65(glval) = FunctionAddress[~String] : -# 2308| v2308_66(void) = Call[~String] : func:r2308_65, this:r2308_64 -# 2308| mu2308_67(unknown) = ^CallSideEffect : ~m? -# 2308| v2308_68(void) = ^IndirectReadSideEffect[-1] : &:r2308_64, ~m? -# 2308| mu2308_69(String) = ^IndirectMayWriteSideEffect[-1] : &:r2308_64 -# 2308| r2308_70(glval>) = CopyValue : r2308_61 +# 2310| r2310_52(glval) = CopyValue : r2310_51 +# 2310| r2310_53(glval) = Convert : r2310_52 +# 2310| r2310_54(String &) = CopyValue : r2310_53 +# 2310| v2310_55(void) = Call[String] : func:r2310_48, this:r2310_46, 0:r2310_54 +# 2310| mu2310_56(unknown) = ^CallSideEffect : ~m? +# 2310| v2310_57(void) = ^BufferReadSideEffect[0] : &:r2310_54, ~m? +# 2310| mu2310_58(String) = ^IndirectMayWriteSideEffect[-1] : &:r2310_46 +# 2311| r2311_1(glval) = VariableAddress[s2] : +# 2311| mu2311_2(String) = Uninitialized[s2] : &:r2311_1 +# 2311| r2311_3(glval) = FunctionAddress[String] : +# 2311| v2311_4(void) = Call[String] : func:r2311_3, this:r2311_1 +# 2311| mu2311_5(unknown) = ^CallSideEffect : ~m? +# 2311| mu2311_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2311_1 +# 2312| r2312_1(glval) = VariableAddress[s2] : +# 2312| r2312_2(glval) = FunctionAddress[~String] : +# 2312| v2312_3(void) = Call[~String] : func:r2312_2, this:r2312_1 +# 2312| mu2312_4(unknown) = ^CallSideEffect : ~m? +# 2312| v2312_5(void) = ^IndirectReadSideEffect[-1] : &:r2312_1, ~m? +# 2312| mu2312_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2312_1 +# 2310| r2310_59(glval>) = VariableAddress[(__begin)] : +# 2310| r2310_60(glval) = FunctionAddress[operator++] : +# 2310| r2310_61(iterator &) = Call[operator++] : func:r2310_60, this:r2310_59 +# 2310| v2310_62(void) = ^IndirectReadSideEffect[-1] : &:r2310_59, ~m? +# 2310| mu2310_63(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r2310_59 +# 2310| r2310_64(glval) = VariableAddress[s] : +# 2310| r2310_65(glval) = FunctionAddress[~String] : +# 2310| v2310_66(void) = Call[~String] : func:r2310_65, this:r2310_64 +# 2310| mu2310_67(unknown) = ^CallSideEffect : ~m? +# 2310| v2310_68(void) = ^IndirectReadSideEffect[-1] : &:r2310_64, ~m? +# 2310| mu2310_69(String) = ^IndirectMayWriteSideEffect[-1] : &:r2310_64 +# 2310| r2310_70(glval>) = CopyValue : r2310_61 #-----| Goto (back edge) -> Block 4 -# 2308| Block 6 -# 2308| r2308_71(glval>) = CopyValue : r2308_2 -# 2308| r2308_72(glval) = FunctionAddress[~vector] : -# 2308| v2308_73(void) = Call[~vector] : func:r2308_72, this:r2308_71 -# 2308| v2308_74(void) = ^IndirectReadSideEffect[-1] : &:r2308_71, ~m? -# 2308| mu2308_75(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2308_71 -# 2312| r2312_1(glval) = VariableAddress[s] : -# 2312| mu2312_2(String) = Uninitialized[s] : &:r2312_1 -# 2312| r2312_3(glval) = FunctionAddress[String] : -# 2312| r2312_4(glval) = StringConstant["hello"] : -# 2312| r2312_5(char *) = Convert : r2312_4 -# 2312| v2312_6(void) = Call[String] : func:r2312_3, this:r2312_1, 0:r2312_5 -# 2312| mu2312_7(unknown) = ^CallSideEffect : ~m? -# 2312| v2312_8(void) = ^BufferReadSideEffect[0] : &:r2312_5, ~m? -# 2312| mu2312_9(String) = ^IndirectMayWriteSideEffect[-1] : &:r2312_1 -# 2312| r2312_10(glval) = VariableAddress[s2] : -# 2312| mu2312_11(String) = Uninitialized[s2] : &:r2312_10 -# 2312| r2312_12(glval) = FunctionAddress[String] : -# 2312| r2312_13(glval) = StringConstant["world"] : -# 2312| r2312_14(char *) = Convert : r2312_13 -# 2312| v2312_15(void) = Call[String] : func:r2312_12, this:r2312_10, 0:r2312_14 -# 2312| mu2312_16(unknown) = ^CallSideEffect : ~m? -# 2312| v2312_17(void) = ^BufferReadSideEffect[0] : &:r2312_14, ~m? -# 2312| mu2312_18(String) = ^IndirectMayWriteSideEffect[-1] : &:r2312_10 +# 2310| Block 6 +# 2310| r2310_71(glval>) = CopyValue : r2310_2 +# 2310| r2310_72(glval) = FunctionAddress[~vector] : +# 2310| v2310_73(void) = Call[~vector] : func:r2310_72, this:r2310_71 +# 2310| v2310_74(void) = ^IndirectReadSideEffect[-1] : &:r2310_71, ~m? +# 2310| mu2310_75(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2310_71 +# 2314| r2314_1(glval) = VariableAddress[s] : +# 2314| mu2314_2(String) = Uninitialized[s] : &:r2314_1 +# 2314| r2314_3(glval) = FunctionAddress[String] : +# 2314| r2314_4(glval) = StringConstant["hello"] : +# 2314| r2314_5(char *) = Convert : r2314_4 +# 2314| v2314_6(void) = Call[String] : func:r2314_3, this:r2314_1, 0:r2314_5 +# 2314| mu2314_7(unknown) = ^CallSideEffect : ~m? +# 2314| v2314_8(void) = ^BufferReadSideEffect[0] : &:r2314_5, ~m? +# 2314| mu2314_9(String) = ^IndirectMayWriteSideEffect[-1] : &:r2314_1 +# 2314| r2314_10(glval) = VariableAddress[s2] : +# 2314| mu2314_11(String) = Uninitialized[s2] : &:r2314_10 +# 2314| r2314_12(glval) = FunctionAddress[String] : +# 2314| r2314_13(glval) = StringConstant["world"] : +# 2314| r2314_14(char *) = Convert : r2314_13 +# 2314| v2314_15(void) = Call[String] : func:r2314_12, this:r2314_10, 0:r2314_14 +# 2314| mu2314_16(unknown) = ^CallSideEffect : ~m? +# 2314| v2314_17(void) = ^BufferReadSideEffect[0] : &:r2314_14, ~m? +# 2314| mu2314_18(String) = ^IndirectMayWriteSideEffect[-1] : &:r2314_10 #-----| Goto -> Block 7 -# 2312| Block 7 -# 2312| r2312_19(glval) = VariableAddress[c] : -# 2312| r2312_20(char) = Load[c] : &:r2312_19, ~m? -# 2312| r2312_21(int) = Convert : r2312_20 -# 2312| r2312_22(int) = Constant[0] : -# 2312| r2312_23(bool) = CompareNE : r2312_21, r2312_22 -# 2312| v2312_24(void) = ConditionalBranch : r2312_23 +# 2314| Block 7 +# 2314| r2314_19(glval) = VariableAddress[c] : +# 2314| r2314_20(char) = Load[c] : &:r2314_19, ~m? +# 2314| r2314_21(int) = Convert : r2314_20 +# 2314| r2314_22(int) = Constant[0] : +# 2314| r2314_23(bool) = CompareNE : r2314_21, r2314_22 +# 2314| v2314_24(void) = ConditionalBranch : r2314_23 #-----| False -> Block 9 #-----| True -> Block 8 -# 2313| Block 8 -# 2313| r2313_1(char) = Constant[0] : -# 2313| r2313_2(glval) = VariableAddress[c] : -# 2313| mu2313_3(char) = Store[c] : &:r2313_2, r2313_1 -# 2312| r2312_25(glval) = VariableAddress[s] : -# 2312| r2312_26(glval) = FunctionAddress[pop_back] : -# 2312| r2312_27(char) = Call[pop_back] : func:r2312_26, this:r2312_25 -# 2312| mu2312_28(unknown) = ^CallSideEffect : ~m? -# 2312| v2312_29(void) = ^IndirectReadSideEffect[-1] : &:r2312_25, ~m? -# 2312| mu2312_30(String) = ^IndirectMayWriteSideEffect[-1] : &:r2312_25 -# 2312| r2312_31(glval) = VariableAddress[c] : -# 2312| mu2312_32(char) = Store[c] : &:r2312_31, r2312_27 +# 2315| Block 8 +# 2315| r2315_1(char) = Constant[0] : +# 2315| r2315_2(glval) = VariableAddress[c] : +# 2315| mu2315_3(char) = Store[c] : &:r2315_2, r2315_1 +# 2314| r2314_25(glval) = VariableAddress[s] : +# 2314| r2314_26(glval) = FunctionAddress[pop_back] : +# 2314| r2314_27(char) = Call[pop_back] : func:r2314_26, this:r2314_25 +# 2314| mu2314_28(unknown) = ^CallSideEffect : ~m? +# 2314| v2314_29(void) = ^IndirectReadSideEffect[-1] : &:r2314_25, ~m? +# 2314| mu2314_30(String) = ^IndirectMayWriteSideEffect[-1] : &:r2314_25 +# 2314| r2314_31(glval) = VariableAddress[c] : +# 2314| mu2314_32(char) = Store[c] : &:r2314_31, r2314_27 #-----| Goto (back edge) -> Block 7 -# 2312| Block 9 -# 2312| r2312_33(glval) = VariableAddress[s2] : -# 2312| r2312_34(glval) = FunctionAddress[~String] : -# 2312| v2312_35(void) = Call[~String] : func:r2312_34, this:r2312_33 -# 2312| mu2312_36(unknown) = ^CallSideEffect : ~m? -# 2312| v2312_37(void) = ^IndirectReadSideEffect[-1] : &:r2312_33, ~m? -# 2312| mu2312_38(String) = ^IndirectMayWriteSideEffect[-1] : &:r2312_33 -# 2312| r2312_39(glval) = VariableAddress[s] : -# 2312| r2312_40(glval) = FunctionAddress[~String] : -# 2312| v2312_41(void) = Call[~String] : func:r2312_40, this:r2312_39 -# 2312| mu2312_42(unknown) = ^CallSideEffect : ~m? -# 2312| v2312_43(void) = ^IndirectReadSideEffect[-1] : &:r2312_39, ~m? -# 2312| mu2312_44(String) = ^IndirectMayWriteSideEffect[-1] : &:r2312_39 -# 2315| v2315_1(void) = NoOp : -# 2302| v2302_4(void) = ReturnVoid : -# 2302| v2302_5(void) = AliasedUse : ~m? -# 2302| v2302_6(void) = ExitFunction : +# 2314| Block 9 +# 2314| r2314_33(glval) = VariableAddress[s2] : +# 2314| r2314_34(glval) = FunctionAddress[~String] : +# 2314| v2314_35(void) = Call[~String] : func:r2314_34, this:r2314_33 +# 2314| mu2314_36(unknown) = ^CallSideEffect : ~m? +# 2314| v2314_37(void) = ^IndirectReadSideEffect[-1] : &:r2314_33, ~m? +# 2314| mu2314_38(String) = ^IndirectMayWriteSideEffect[-1] : &:r2314_33 +# 2314| r2314_39(glval) = VariableAddress[s] : +# 2314| r2314_40(glval) = FunctionAddress[~String] : +# 2314| v2314_41(void) = Call[~String] : func:r2314_40, this:r2314_39 +# 2314| mu2314_42(unknown) = ^CallSideEffect : ~m? +# 2314| v2314_43(void) = ^IndirectReadSideEffect[-1] : &:r2314_39, ~m? +# 2314| mu2314_44(String) = ^IndirectMayWriteSideEffect[-1] : &:r2314_39 +# 2317| v2317_1(void) = NoOp : +# 2304| v2304_4(void) = ReturnVoid : +# 2304| v2304_5(void) = AliasedUse : ~m? +# 2304| v2304_6(void) = ExitFunction : -# 2317| void IfDestructors2(bool) -# 2317| Block 0 -# 2317| v2317_1(void) = EnterFunction : -# 2317| mu2317_2(unknown) = AliasedDefinition : -# 2317| mu2317_3(unknown) = InitializeNonLocal : -# 2317| r2317_4(glval) = VariableAddress[b] : -# 2317| mu2317_5(bool) = InitializeParameter[b] : &:r2317_4 -# 2318| r2318_1(glval) = VariableAddress[s] : -# 2318| mu2318_2(String) = Uninitialized[s] : &:r2318_1 -# 2318| r2318_3(glval) = FunctionAddress[String] : -# 2318| r2318_4(glval) = StringConstant["hello"] : -# 2318| r2318_5(char *) = Convert : r2318_4 -# 2318| v2318_6(void) = Call[String] : func:r2318_3, this:r2318_1, 0:r2318_5 -# 2318| mu2318_7(unknown) = ^CallSideEffect : ~m? -# 2318| v2318_8(void) = ^BufferReadSideEffect[0] : &:r2318_5, ~m? -# 2318| mu2318_9(String) = ^IndirectMayWriteSideEffect[-1] : &:r2318_1 -# 2318| r2318_10(glval) = VariableAddress[b] : -# 2318| r2318_11(bool) = Load[b] : &:r2318_10, ~m? -# 2318| v2318_12(void) = ConditionalBranch : r2318_11 +# 2319| void IfDestructors2(bool) +# 2319| Block 0 +# 2319| v2319_1(void) = EnterFunction : +# 2319| mu2319_2(unknown) = AliasedDefinition : +# 2319| mu2319_3(unknown) = InitializeNonLocal : +# 2319| r2319_4(glval) = VariableAddress[b] : +# 2319| mu2319_5(bool) = InitializeParameter[b] : &:r2319_4 +# 2320| r2320_1(glval) = VariableAddress[s] : +# 2320| mu2320_2(String) = Uninitialized[s] : &:r2320_1 +# 2320| r2320_3(glval) = FunctionAddress[String] : +# 2320| r2320_4(glval) = StringConstant["hello"] : +# 2320| r2320_5(char *) = Convert : r2320_4 +# 2320| v2320_6(void) = Call[String] : func:r2320_3, this:r2320_1, 0:r2320_5 +# 2320| mu2320_7(unknown) = ^CallSideEffect : ~m? +# 2320| v2320_8(void) = ^BufferReadSideEffect[0] : &:r2320_5, ~m? +# 2320| mu2320_9(String) = ^IndirectMayWriteSideEffect[-1] : &:r2320_1 +# 2320| r2320_10(glval) = VariableAddress[b] : +# 2320| r2320_11(bool) = Load[b] : &:r2320_10, ~m? +# 2320| v2320_12(void) = ConditionalBranch : r2320_11 #-----| False -> Block 2 #-----| True -> Block 1 -# 2319| Block 1 -# 2319| r2319_1(glval) = VariableAddress[x] : -# 2319| r2319_2(int) = Constant[0] : -# 2319| mu2319_3(int) = Store[x] : &:r2319_1, r2319_2 -#-----| Goto -> Block 3 - -# 2321| Block 2 -# 2321| r2321_1(glval) = VariableAddress[y] : +# 2321| Block 1 +# 2321| r2321_1(glval) = VariableAddress[x] : # 2321| r2321_2(int) = Constant[0] : -# 2321| mu2321_3(int) = Store[y] : &:r2321_1, r2321_2 +# 2321| mu2321_3(int) = Store[x] : &:r2321_1, r2321_2 #-----| Goto -> Block 3 -# 2322| Block 3 -# 2322| r2322_1(glval) = VariableAddress[s] : -# 2322| r2322_2(glval) = FunctionAddress[~String] : -# 2322| v2322_3(void) = Call[~String] : func:r2322_2, this:r2322_1 -# 2322| mu2322_4(unknown) = ^CallSideEffect : ~m? -# 2322| v2322_5(void) = ^IndirectReadSideEffect[-1] : &:r2322_1, ~m? -# 2322| mu2322_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2322_1 -# 2323| v2323_1(void) = NoOp : -# 2317| v2317_6(void) = ReturnVoid : -# 2317| v2317_7(void) = AliasedUse : ~m? -# 2317| v2317_8(void) = ExitFunction : +# 2323| Block 2 +# 2323| r2323_1(glval) = VariableAddress[y] : +# 2323| r2323_2(int) = Constant[0] : +# 2323| mu2323_3(int) = Store[y] : &:r2323_1, r2323_2 +#-----| Goto -> Block 3 -# 2332| void IfDestructors3(bool) -# 2332| Block 0 -# 2332| v2332_1(void) = EnterFunction : -# 2332| mu2332_2(unknown) = AliasedDefinition : -# 2332| mu2332_3(unknown) = InitializeNonLocal : -# 2332| r2332_4(glval) = VariableAddress[b] : -# 2332| mu2332_5(bool) = InitializeParameter[b] : &:r2332_4 -# 2333| r2333_1(glval) = VariableAddress[B] : -# 2333| mu2333_2(Bool) = Uninitialized[B] : &:r2333_1 -# 2333| r2333_3(glval) = FunctionAddress[Bool] : -# 2333| r2333_4(glval) = VariableAddress[b] : -# 2333| r2333_5(bool) = Load[b] : &:r2333_4, ~m? -# 2333| v2333_6(void) = Call[Bool] : func:r2333_3, this:r2333_1, 0:r2333_5 -# 2333| mu2333_7(unknown) = ^CallSideEffect : ~m? -# 2333| mu2333_8(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2333_1 -# 2333| r2333_9(glval) = VariableAddress[B] : -# 2333| r2333_10(glval) = FunctionAddress[operator bool] : -# 2333| r2333_11(bool) = Call[operator bool] : func:r2333_10, this:r2333_9 -# 2333| mu2333_12(unknown) = ^CallSideEffect : ~m? -# 2333| v2333_13(void) = ^IndirectReadSideEffect[-1] : &:r2333_9, ~m? -# 2333| mu2333_14(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2333_9 -# 2333| r2333_15(bool) = CopyValue : r2333_11 -# 2333| v2333_16(void) = ConditionalBranch : r2333_15 +# 2324| Block 3 +# 2324| r2324_1(glval) = VariableAddress[s] : +# 2324| r2324_2(glval) = FunctionAddress[~String] : +# 2324| v2324_3(void) = Call[~String] : func:r2324_2, this:r2324_1 +# 2324| mu2324_4(unknown) = ^CallSideEffect : ~m? +# 2324| v2324_5(void) = ^IndirectReadSideEffect[-1] : &:r2324_1, ~m? +# 2324| mu2324_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2324_1 +# 2325| v2325_1(void) = NoOp : +# 2319| v2319_6(void) = ReturnVoid : +# 2319| v2319_7(void) = AliasedUse : ~m? +# 2319| v2319_8(void) = ExitFunction : + +# 2334| void IfDestructors3(bool) +# 2334| Block 0 +# 2334| v2334_1(void) = EnterFunction : +# 2334| mu2334_2(unknown) = AliasedDefinition : +# 2334| mu2334_3(unknown) = InitializeNonLocal : +# 2334| r2334_4(glval) = VariableAddress[b] : +# 2334| mu2334_5(bool) = InitializeParameter[b] : &:r2334_4 +# 2335| r2335_1(glval) = VariableAddress[B] : +# 2335| mu2335_2(Bool) = Uninitialized[B] : &:r2335_1 +# 2335| r2335_3(glval) = FunctionAddress[Bool] : +# 2335| r2335_4(glval) = VariableAddress[b] : +# 2335| r2335_5(bool) = Load[b] : &:r2335_4, ~m? +# 2335| v2335_6(void) = Call[Bool] : func:r2335_3, this:r2335_1, 0:r2335_5 +# 2335| mu2335_7(unknown) = ^CallSideEffect : ~m? +# 2335| mu2335_8(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2335_1 +# 2335| r2335_9(glval) = VariableAddress[B] : +# 2335| r2335_10(glval) = FunctionAddress[operator bool] : +# 2335| r2335_11(bool) = Call[operator bool] : func:r2335_10, this:r2335_9 +# 2335| mu2335_12(unknown) = ^CallSideEffect : ~m? +# 2335| v2335_13(void) = ^IndirectReadSideEffect[-1] : &:r2335_9, ~m? +# 2335| mu2335_14(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2335_9 +# 2335| r2335_15(bool) = CopyValue : r2335_11 +# 2335| v2335_16(void) = ConditionalBranch : r2335_15 #-----| False -> Block 2 #-----| True -> Block 1 -# 2334| Block 1 -# 2334| r2334_1(glval) = VariableAddress[s1] : -# 2334| mu2334_2(String) = Uninitialized[s1] : &:r2334_1 -# 2334| r2334_3(glval) = FunctionAddress[String] : -# 2334| v2334_4(void) = Call[String] : func:r2334_3, this:r2334_1 -# 2334| mu2334_5(unknown) = ^CallSideEffect : ~m? -# 2334| mu2334_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2334_1 -# 2335| r2335_1(glval) = VariableAddress[s1] : -# 2335| r2335_2(glval) = FunctionAddress[~String] : -# 2335| v2335_3(void) = Call[~String] : func:r2335_2, this:r2335_1 -# 2335| mu2335_4(unknown) = ^CallSideEffect : ~m? -# 2335| v2335_5(void) = ^IndirectReadSideEffect[-1] : &:r2335_1, ~m? -# 2335| mu2335_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2335_1 -#-----| Goto -> Block 3 - -# 2336| Block 2 -# 2336| r2336_1(glval) = VariableAddress[s2] : -# 2336| mu2336_2(String) = Uninitialized[s2] : &:r2336_1 +# 2336| Block 1 +# 2336| r2336_1(glval) = VariableAddress[s1] : +# 2336| mu2336_2(String) = Uninitialized[s1] : &:r2336_1 # 2336| r2336_3(glval) = FunctionAddress[String] : # 2336| v2336_4(void) = Call[String] : func:r2336_3, this:r2336_1 # 2336| mu2336_5(unknown) = ^CallSideEffect : ~m? # 2336| mu2336_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2336_1 -# 2337| r2337_1(glval) = VariableAddress[s2] : +# 2337| r2337_1(glval) = VariableAddress[s1] : # 2337| r2337_2(glval) = FunctionAddress[~String] : # 2337| v2337_3(void) = Call[~String] : func:r2337_2, this:r2337_1 # 2337| mu2337_4(unknown) = ^CallSideEffect : ~m? @@ -16319,756 +16304,771 @@ ir.cpp: # 2337| mu2337_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2337_1 #-----| Goto -> Block 3 -# 2337| Block 3 -# 2337| r2337_7(glval) = VariableAddress[B] : -# 2337| r2337_8(glval) = FunctionAddress[~Bool] : -# 2337| v2337_9(void) = Call[~Bool] : func:r2337_8, this:r2337_7 -# 2337| mu2337_10(unknown) = ^CallSideEffect : ~m? -# 2337| v2337_11(void) = ^IndirectReadSideEffect[-1] : &:r2337_7, ~m? -# 2337| mu2337_12(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2337_7 -# 2338| v2338_1(void) = NoOp : -# 2332| v2332_6(void) = ReturnVoid : -# 2332| v2332_7(void) = AliasedUse : ~m? -# 2332| v2332_8(void) = ExitFunction : +# 2338| Block 2 +# 2338| r2338_1(glval) = VariableAddress[s2] : +# 2338| mu2338_2(String) = Uninitialized[s2] : &:r2338_1 +# 2338| r2338_3(glval) = FunctionAddress[String] : +# 2338| v2338_4(void) = Call[String] : func:r2338_3, this:r2338_1 +# 2338| mu2338_5(unknown) = ^CallSideEffect : ~m? +# 2338| mu2338_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2338_1 +# 2339| r2339_1(glval) = VariableAddress[s2] : +# 2339| r2339_2(glval) = FunctionAddress[~String] : +# 2339| v2339_3(void) = Call[~String] : func:r2339_2, this:r2339_1 +# 2339| mu2339_4(unknown) = ^CallSideEffect : ~m? +# 2339| v2339_5(void) = ^IndirectReadSideEffect[-1] : &:r2339_1, ~m? +# 2339| mu2339_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2339_1 +#-----| Goto -> Block 3 -# 2340| void WhileLoopDestructors(bool) -# 2340| Block 0 -# 2340| v2340_1(void) = EnterFunction : -# 2340| mu2340_2(unknown) = AliasedDefinition : -# 2340| mu2340_3(unknown) = InitializeNonLocal : -# 2340| r2340_4(glval) = VariableAddress[b] : -# 2340| mu2340_5(bool) = InitializeParameter[b] : &:r2340_4 -# 2342| r2342_1(glval) = VariableAddress[s] : -# 2342| mu2342_2(String) = Uninitialized[s] : &:r2342_1 -# 2342| r2342_3(glval) = FunctionAddress[String] : -# 2342| v2342_4(void) = Call[String] : func:r2342_3, this:r2342_1 -# 2342| mu2342_5(unknown) = ^CallSideEffect : ~m? -# 2342| mu2342_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2342_1 +# 2339| Block 3 +# 2339| r2339_7(glval) = VariableAddress[B] : +# 2339| r2339_8(glval) = FunctionAddress[~Bool] : +# 2339| v2339_9(void) = Call[~Bool] : func:r2339_8, this:r2339_7 +# 2339| mu2339_10(unknown) = ^CallSideEffect : ~m? +# 2339| v2339_11(void) = ^IndirectReadSideEffect[-1] : &:r2339_7, ~m? +# 2339| mu2339_12(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2339_7 +# 2340| v2340_1(void) = NoOp : +# 2334| v2334_6(void) = ReturnVoid : +# 2334| v2334_7(void) = AliasedUse : ~m? +# 2334| v2334_8(void) = ExitFunction : + +# 2342| void WhileLoopDestructors(bool) +# 2342| Block 0 +# 2342| v2342_1(void) = EnterFunction : +# 2342| mu2342_2(unknown) = AliasedDefinition : +# 2342| mu2342_3(unknown) = InitializeNonLocal : +# 2342| r2342_4(glval) = VariableAddress[b] : +# 2342| mu2342_5(bool) = InitializeParameter[b] : &:r2342_4 +# 2344| r2344_1(glval) = VariableAddress[s] : +# 2344| mu2344_2(String) = Uninitialized[s] : &:r2344_1 +# 2344| r2344_3(glval) = FunctionAddress[String] : +# 2344| v2344_4(void) = Call[String] : func:r2344_3, this:r2344_1 +# 2344| mu2344_5(unknown) = ^CallSideEffect : ~m? +# 2344| mu2344_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2344_1 #-----| Goto -> Block 1 -# 2343| Block 1 -# 2343| r2343_1(glval) = VariableAddress[b] : -# 2343| r2343_2(bool) = Load[b] : &:r2343_1, ~m? -# 2343| v2343_3(void) = ConditionalBranch : r2343_2 +# 2345| Block 1 +# 2345| r2345_1(glval) = VariableAddress[b] : +# 2345| r2345_2(bool) = Load[b] : &:r2345_1, ~m? +# 2345| v2345_3(void) = ConditionalBranch : r2345_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 2344| Block 2 -# 2344| r2344_1(bool) = Constant[0] : -# 2344| r2344_2(glval) = VariableAddress[b] : -# 2344| mu2344_3(bool) = Store[b] : &:r2344_2, r2344_1 +# 2346| Block 2 +# 2346| r2346_1(bool) = Constant[0] : +# 2346| r2346_2(glval) = VariableAddress[b] : +# 2346| mu2346_3(bool) = Store[b] : &:r2346_2, r2346_1 #-----| Goto (back edge) -> Block 1 -# 2346| Block 3 -# 2346| r2346_1(glval) = VariableAddress[s] : -# 2346| r2346_2(glval) = FunctionAddress[~String] : -# 2346| v2346_3(void) = Call[~String] : func:r2346_2, this:r2346_1 -# 2346| mu2346_4(unknown) = ^CallSideEffect : ~m? -# 2346| v2346_5(void) = ^IndirectReadSideEffect[-1] : &:r2346_1, ~m? -# 2346| mu2346_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2346_1 +# 2348| Block 3 +# 2348| r2348_1(glval) = VariableAddress[s] : +# 2348| r2348_2(glval) = FunctionAddress[~String] : +# 2348| v2348_3(void) = Call[~String] : func:r2348_2, this:r2348_1 +# 2348| mu2348_4(unknown) = ^CallSideEffect : ~m? +# 2348| v2348_5(void) = ^IndirectReadSideEffect[-1] : &:r2348_1, ~m? +# 2348| mu2348_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2348_1 #-----| Goto -> Block 4 -# 2349| Block 4 -# 2349| r2349_1(glval) = VariableAddress[B] : -# 2349| mu2349_2(Bool) = Uninitialized[B] : &:r2349_1 -# 2349| r2349_3(glval) = FunctionAddress[Bool] : -# 2349| r2349_4(glval) = VariableAddress[b] : -# 2349| r2349_5(bool) = Load[b] : &:r2349_4, ~m? -# 2349| v2349_6(void) = Call[Bool] : func:r2349_3, this:r2349_1, 0:r2349_5 -# 2349| mu2349_7(unknown) = ^CallSideEffect : ~m? -# 2349| mu2349_8(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2349_1 -# 2349| r2349_9(glval) = VariableAddress[B] : -# 2349| r2349_10(glval) = FunctionAddress[operator bool] : -# 2349| r2349_11(bool) = Call[operator bool] : func:r2349_10, this:r2349_9 -# 2349| mu2349_12(unknown) = ^CallSideEffect : ~m? -# 2349| v2349_13(void) = ^IndirectReadSideEffect[-1] : &:r2349_9, ~m? -# 2349| mu2349_14(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2349_9 -# 2349| r2349_15(bool) = CopyValue : r2349_11 -# 2349| v2349_16(void) = ConditionalBranch : r2349_15 +# 2351| Block 4 +# 2351| r2351_1(glval) = VariableAddress[B] : +# 2351| mu2351_2(Bool) = Uninitialized[B] : &:r2351_1 +# 2351| r2351_3(glval) = FunctionAddress[Bool] : +# 2351| r2351_4(glval) = VariableAddress[b] : +# 2351| r2351_5(bool) = Load[b] : &:r2351_4, ~m? +# 2351| v2351_6(void) = Call[Bool] : func:r2351_3, this:r2351_1, 0:r2351_5 +# 2351| mu2351_7(unknown) = ^CallSideEffect : ~m? +# 2351| mu2351_8(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2351_1 +# 2351| r2351_9(glval) = VariableAddress[B] : +# 2351| r2351_10(glval) = FunctionAddress[operator bool] : +# 2351| r2351_11(bool) = Call[operator bool] : func:r2351_10, this:r2351_9 +# 2351| mu2351_12(unknown) = ^CallSideEffect : ~m? +# 2351| v2351_13(void) = ^IndirectReadSideEffect[-1] : &:r2351_9, ~m? +# 2351| mu2351_14(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2351_9 +# 2351| r2351_15(bool) = CopyValue : r2351_11 +# 2351| v2351_16(void) = ConditionalBranch : r2351_15 #-----| False -> Block 6 #-----| True -> Block 5 -# 2350| Block 5 -# 2350| r2350_1(bool) = Constant[0] : -# 2350| r2350_2(glval) = VariableAddress[b] : -# 2350| mu2350_3(bool) = Store[b] : &:r2350_2, r2350_1 -# 2351| r2351_1(glval) = VariableAddress[B] : -# 2351| r2351_2(glval) = FunctionAddress[~Bool] : -# 2351| v2351_3(void) = Call[~Bool] : func:r2351_2, this:r2351_1 -# 2351| mu2351_4(unknown) = ^CallSideEffect : ~m? -# 2351| v2351_5(void) = ^IndirectReadSideEffect[-1] : &:r2351_1, ~m? -# 2351| mu2351_6(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2351_1 +# 2352| Block 5 +# 2352| r2352_1(bool) = Constant[0] : +# 2352| r2352_2(glval) = VariableAddress[b] : +# 2352| mu2352_3(bool) = Store[b] : &:r2352_2, r2352_1 +# 2353| r2353_1(glval) = VariableAddress[B] : +# 2353| r2353_2(glval) = FunctionAddress[~Bool] : +# 2353| v2353_3(void) = Call[~Bool] : func:r2353_2, this:r2353_1 +# 2353| mu2353_4(unknown) = ^CallSideEffect : ~m? +# 2353| v2353_5(void) = ^IndirectReadSideEffect[-1] : &:r2353_1, ~m? +# 2353| mu2353_6(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2353_1 #-----| Goto (back edge) -> Block 4 -# 2351| Block 6 -# 2351| r2351_7(glval) = VariableAddress[B] : -# 2351| r2351_8(glval) = FunctionAddress[~Bool] : -# 2351| v2351_9(void) = Call[~Bool] : func:r2351_8, this:r2351_7 -# 2351| mu2351_10(unknown) = ^CallSideEffect : ~m? -# 2351| v2351_11(void) = ^IndirectReadSideEffect[-1] : &:r2351_7, ~m? -# 2351| mu2351_12(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2351_7 -# 2353| v2353_1(void) = NoOp : -# 2340| v2340_6(void) = ReturnVoid : -# 2340| v2340_7(void) = AliasedUse : ~m? -# 2340| v2340_8(void) = ExitFunction : +# 2353| Block 6 +# 2353| r2353_7(glval) = VariableAddress[B] : +# 2353| r2353_8(glval) = FunctionAddress[~Bool] : +# 2353| v2353_9(void) = Call[~Bool] : func:r2353_8, this:r2353_7 +# 2353| mu2353_10(unknown) = ^CallSideEffect : ~m? +# 2353| v2353_11(void) = ^IndirectReadSideEffect[-1] : &:r2353_7, ~m? +# 2353| mu2353_12(Bool) = ^IndirectMayWriteSideEffect[-1] : &:r2353_7 +# 2355| v2355_1(void) = NoOp : +# 2342| v2342_6(void) = ReturnVoid : +# 2342| v2342_7(void) = AliasedUse : ~m? +# 2342| v2342_8(void) = ExitFunction : -# 2355| void VoidFunc() -# 2355| Block 0 -# 2355| v2355_1(void) = EnterFunction : -# 2355| mu2355_2(unknown) = AliasedDefinition : -# 2355| mu2355_3(unknown) = InitializeNonLocal : -# 2355| v2355_4(void) = NoOp : -# 2355| v2355_5(void) = ReturnVoid : -# 2355| v2355_6(void) = AliasedUse : ~m? -# 2355| v2355_7(void) = ExitFunction : - -# 2357| void IfReturnDestructors(bool) +# 2357| void VoidFunc() # 2357| Block 0 -# 2357| v2357_1(void) = EnterFunction : -# 2357| mu2357_2(unknown) = AliasedDefinition : -# 2357| mu2357_3(unknown) = InitializeNonLocal : -# 2357| r2357_4(glval) = VariableAddress[b] : -# 2357| mu2357_5(bool) = InitializeParameter[b] : &:r2357_4 -# 2358| r2358_1(glval) = VariableAddress[s] : -# 2358| mu2358_2(String) = Uninitialized[s] : &:r2358_1 -# 2358| r2358_3(glval) = FunctionAddress[String] : -# 2358| v2358_4(void) = Call[String] : func:r2358_3, this:r2358_1 -# 2358| mu2358_5(unknown) = ^CallSideEffect : ~m? -# 2358| mu2358_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2358_1 -# 2359| r2359_1(glval) = VariableAddress[b] : -# 2359| r2359_2(bool) = Load[b] : &:r2359_1, ~m? -# 2359| v2359_3(void) = ConditionalBranch : r2359_2 +# 2357| v2357_1(void) = EnterFunction : +# 2357| mu2357_2(unknown) = AliasedDefinition : +# 2357| mu2357_3(unknown) = InitializeNonLocal : +# 2357| v2357_4(void) = NoOp : +# 2357| v2357_5(void) = ReturnVoid : +# 2357| v2357_6(void) = AliasedUse : ~m? +# 2357| v2357_7(void) = ExitFunction : + +# 2359| void IfReturnDestructors(bool) +# 2359| Block 0 +# 2359| v2359_1(void) = EnterFunction : +# 2359| mu2359_2(unknown) = AliasedDefinition : +# 2359| mu2359_3(unknown) = InitializeNonLocal : +# 2359| r2359_4(glval) = VariableAddress[b] : +# 2359| mu2359_5(bool) = InitializeParameter[b] : &:r2359_4 +# 2360| r2360_1(glval) = VariableAddress[s] : +# 2360| mu2360_2(String) = Uninitialized[s] : &:r2360_1 +# 2360| r2360_3(glval) = FunctionAddress[String] : +# 2360| v2360_4(void) = Call[String] : func:r2360_3, this:r2360_1 +# 2360| mu2360_5(unknown) = ^CallSideEffect : ~m? +# 2360| mu2360_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2360_1 +# 2361| r2361_1(glval) = VariableAddress[b] : +# 2361| r2361_2(bool) = Load[b] : &:r2361_1, ~m? +# 2361| v2361_3(void) = ConditionalBranch : r2361_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 2357| Block 1 -# 2357| v2357_6(void) = ReturnVoid : -# 2357| v2357_7(void) = AliasedUse : ~m? -# 2357| v2357_8(void) = ExitFunction : +# 2359| Block 1 +# 2359| v2359_6(void) = ReturnVoid : +# 2359| v2359_7(void) = AliasedUse : ~m? +# 2359| v2359_8(void) = ExitFunction : -# 2360| Block 2 -# 2360| v2360_1(void) = NoOp : -# 2366| r2366_1(glval) = VariableAddress[s] : -# 2366| r2366_2(glval) = FunctionAddress[~String] : -# 2366| v2366_3(void) = Call[~String] : func:r2366_2, this:r2366_1 -# 2366| mu2366_4(unknown) = ^CallSideEffect : ~m? -# 2366| v2366_5(void) = ^IndirectReadSideEffect[-1] : &:r2366_1, ~m? -# 2366| mu2366_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2366_1 +# 2362| Block 2 +# 2362| v2362_1(void) = NoOp : +# 2368| r2368_1(glval) = VariableAddress[s] : +# 2368| r2368_2(glval) = FunctionAddress[~String] : +# 2368| v2368_3(void) = Call[~String] : func:r2368_2, this:r2368_1 +# 2368| mu2368_4(unknown) = ^CallSideEffect : ~m? +# 2368| v2368_5(void) = ^IndirectReadSideEffect[-1] : &:r2368_1, ~m? +# 2368| mu2368_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2368_1 #-----| Goto -> Block 1 -# 2362| Block 3 -# 2362| r2362_1(glval) = VariableAddress[b] : -# 2362| r2362_2(bool) = Load[b] : &:r2362_1, ~m? -# 2362| v2362_3(void) = ConditionalBranch : r2362_2 +# 2364| Block 3 +# 2364| r2364_1(glval) = VariableAddress[b] : +# 2364| r2364_2(bool) = Load[b] : &:r2364_1, ~m? +# 2364| v2364_3(void) = ConditionalBranch : r2364_2 #-----| False -> Block 5 #-----| True -> Block 4 -# 2363| Block 4 -# 2363| r2363_1(glval) = FunctionAddress[VoidFunc] : -# 2363| v2363_2(void) = Call[VoidFunc] : func:r2363_1 -# 2363| mu2363_3(unknown) = ^CallSideEffect : ~m? -# 2363| v2363_4(void) = NoOp : -# 2366| r2366_7(glval) = VariableAddress[s] : -# 2366| r2366_8(glval) = FunctionAddress[~String] : -# 2366| v2366_9(void) = Call[~String] : func:r2366_8, this:r2366_7 -# 2366| mu2366_10(unknown) = ^CallSideEffect : ~m? -# 2366| v2366_11(void) = ^IndirectReadSideEffect[-1] : &:r2366_7, ~m? -# 2366| mu2366_12(String) = ^IndirectMayWriteSideEffect[-1] : &:r2366_7 +# 2365| Block 4 +# 2365| r2365_1(glval) = FunctionAddress[VoidFunc] : +# 2365| v2365_2(void) = Call[VoidFunc] : func:r2365_1 +# 2365| mu2365_3(unknown) = ^CallSideEffect : ~m? +# 2365| v2365_4(void) = NoOp : +# 2368| r2368_7(glval) = VariableAddress[s] : +# 2368| r2368_8(glval) = FunctionAddress[~String] : +# 2368| v2368_9(void) = Call[~String] : func:r2368_8, this:r2368_7 +# 2368| mu2368_10(unknown) = ^CallSideEffect : ~m? +# 2368| v2368_11(void) = ^IndirectReadSideEffect[-1] : &:r2368_7, ~m? +# 2368| mu2368_12(String) = ^IndirectMayWriteSideEffect[-1] : &:r2368_7 #-----| Goto -> Block 1 -# 2365| Block 5 -# 2365| r2365_1(glval) = VariableAddress[s] : -# 2366| v2366_13(void) = NoOp : -# 2366| r2366_14(glval) = VariableAddress[s] : -# 2366| r2366_15(glval) = FunctionAddress[~String] : -# 2366| v2366_16(void) = Call[~String] : func:r2366_15, this:r2366_14 -# 2366| mu2366_17(unknown) = ^CallSideEffect : ~m? -# 2366| v2366_18(void) = ^IndirectReadSideEffect[-1] : &:r2366_14, ~m? -# 2366| mu2366_19(String) = ^IndirectMayWriteSideEffect[-1] : &:r2366_14 +# 2367| Block 5 +# 2367| r2367_1(glval) = VariableAddress[s] : +# 2368| v2368_13(void) = NoOp : +# 2368| r2368_14(glval) = VariableAddress[s] : +# 2368| r2368_15(glval) = FunctionAddress[~String] : +# 2368| v2368_16(void) = Call[~String] : func:r2368_15, this:r2368_14 +# 2368| mu2368_17(unknown) = ^CallSideEffect : ~m? +# 2368| v2368_18(void) = ^IndirectReadSideEffect[-1] : &:r2368_14, ~m? +# 2368| mu2368_19(String) = ^IndirectMayWriteSideEffect[-1] : &:r2368_14 #-----| Goto -> Block 1 -# 2368| int IfReturnDestructors3(bool) -# 2368| Block 0 -# 2368| v2368_1(void) = EnterFunction : -# 2368| mu2368_2(unknown) = AliasedDefinition : -# 2368| mu2368_3(unknown) = InitializeNonLocal : -# 2368| r2368_4(glval) = VariableAddress[b] : -# 2368| mu2368_5(bool) = InitializeParameter[b] : &:r2368_4 -# 2369| r2369_1(glval) = VariableAddress[s] : -# 2369| mu2369_2(String) = Uninitialized[s] : &:r2369_1 -# 2369| r2369_3(glval) = FunctionAddress[String] : -# 2369| v2369_4(void) = Call[String] : func:r2369_3, this:r2369_1 -# 2369| mu2369_5(unknown) = ^CallSideEffect : ~m? -# 2369| mu2369_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2369_1 -# 2370| r2370_1(glval) = VariableAddress[b] : -# 2370| r2370_2(bool) = Load[b] : &:r2370_1, ~m? -# 2370| v2370_3(void) = ConditionalBranch : r2370_2 +# 2370| int IfReturnDestructors3(bool) +# 2370| Block 0 +# 2370| v2370_1(void) = EnterFunction : +# 2370| mu2370_2(unknown) = AliasedDefinition : +# 2370| mu2370_3(unknown) = InitializeNonLocal : +# 2370| r2370_4(glval) = VariableAddress[b] : +# 2370| mu2370_5(bool) = InitializeParameter[b] : &:r2370_4 +# 2371| r2371_1(glval) = VariableAddress[s] : +# 2371| mu2371_2(String) = Uninitialized[s] : &:r2371_1 +# 2371| r2371_3(glval) = FunctionAddress[String] : +# 2371| v2371_4(void) = Call[String] : func:r2371_3, this:r2371_1 +# 2371| mu2371_5(unknown) = ^CallSideEffect : ~m? +# 2371| mu2371_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2371_1 +# 2372| r2372_1(glval) = VariableAddress[b] : +# 2372| r2372_2(bool) = Load[b] : &:r2372_1, ~m? +# 2372| v2372_3(void) = ConditionalBranch : r2372_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 2368| Block 1 -# 2368| r2368_6(glval) = VariableAddress[#return] : -# 2368| v2368_7(void) = ReturnValue : &:r2368_6, ~m? -# 2368| v2368_8(void) = AliasedUse : ~m? -# 2368| v2368_9(void) = ExitFunction : +# 2370| Block 1 +# 2370| r2370_6(glval) = VariableAddress[#return] : +# 2370| v2370_7(void) = ReturnValue : &:r2370_6, ~m? +# 2370| v2370_8(void) = AliasedUse : ~m? +# 2370| v2370_9(void) = ExitFunction : -# 2371| Block 2 -# 2371| r2371_1(glval) = VariableAddress[#return] : -# 2371| r2371_2(int) = Constant[1] : -# 2371| mu2371_3(int) = Store[#return] : &:r2371_1, r2371_2 -# 2374| r2374_1(glval) = VariableAddress[s] : -# 2374| r2374_2(glval) = FunctionAddress[~String] : -# 2374| v2374_3(void) = Call[~String] : func:r2374_2, this:r2374_1 -# 2374| mu2374_4(unknown) = ^CallSideEffect : ~m? -# 2374| v2374_5(void) = ^IndirectReadSideEffect[-1] : &:r2374_1, ~m? -# 2374| mu2374_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2374_1 -#-----| Goto -> Block 1 - -# 2373| Block 3 +# 2373| Block 2 # 2373| r2373_1(glval) = VariableAddress[#return] : -# 2373| r2373_2(int) = Constant[0] : +# 2373| r2373_2(int) = Constant[1] : # 2373| mu2373_3(int) = Store[#return] : &:r2373_1, r2373_2 -# 2374| r2374_7(glval) = VariableAddress[s] : -# 2374| r2374_8(glval) = FunctionAddress[~String] : -# 2374| v2374_9(void) = Call[~String] : func:r2374_8, this:r2374_7 -# 2374| mu2374_10(unknown) = ^CallSideEffect : ~m? -# 2374| v2374_11(void) = ^IndirectReadSideEffect[-1] : &:r2374_7, ~m? -# 2374| mu2374_12(String) = ^IndirectMayWriteSideEffect[-1] : &:r2374_7 +# 2376| r2376_1(glval) = VariableAddress[s] : +# 2376| r2376_2(glval) = FunctionAddress[~String] : +# 2376| v2376_3(void) = Call[~String] : func:r2376_2, this:r2376_1 +# 2376| mu2376_4(unknown) = ^CallSideEffect : ~m? +# 2376| v2376_5(void) = ^IndirectReadSideEffect[-1] : &:r2376_1, ~m? +# 2376| mu2376_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2376_1 #-----| Goto -> Block 1 -# 2376| void VoidReturnDestructors() -# 2376| Block 0 -# 2376| v2376_1(void) = EnterFunction : -# 2376| mu2376_2(unknown) = AliasedDefinition : -# 2376| mu2376_3(unknown) = InitializeNonLocal : -# 2377| r2377_1(glval) = VariableAddress[s] : -# 2377| mu2377_2(String) = Uninitialized[s] : &:r2377_1 -# 2377| r2377_3(glval) = FunctionAddress[String] : -# 2377| v2377_4(void) = Call[String] : func:r2377_3, this:r2377_1 -# 2377| mu2377_5(unknown) = ^CallSideEffect : ~m? -# 2377| mu2377_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2377_1 -# 2378| r2378_1(glval) = FunctionAddress[VoidFunc] : -# 2378| v2378_2(void) = Call[VoidFunc] : func:r2378_1 -# 2378| mu2378_3(unknown) = ^CallSideEffect : ~m? -# 2378| v2378_4(void) = NoOp : +# 2375| Block 3 +# 2375| r2375_1(glval) = VariableAddress[#return] : +# 2375| r2375_2(int) = Constant[0] : +# 2375| mu2375_3(int) = Store[#return] : &:r2375_1, r2375_2 +# 2376| r2376_7(glval) = VariableAddress[s] : +# 2376| r2376_8(glval) = FunctionAddress[~String] : +# 2376| v2376_9(void) = Call[~String] : func:r2376_8, this:r2376_7 +# 2376| mu2376_10(unknown) = ^CallSideEffect : ~m? +# 2376| v2376_11(void) = ^IndirectReadSideEffect[-1] : &:r2376_7, ~m? +# 2376| mu2376_12(String) = ^IndirectMayWriteSideEffect[-1] : &:r2376_7 +#-----| Goto -> Block 1 + +# 2378| void VoidReturnDestructors() +# 2378| Block 0 +# 2378| v2378_1(void) = EnterFunction : +# 2378| mu2378_2(unknown) = AliasedDefinition : +# 2378| mu2378_3(unknown) = InitializeNonLocal : # 2379| r2379_1(glval) = VariableAddress[s] : -# 2379| r2379_2(glval) = FunctionAddress[~String] : -# 2379| v2379_3(void) = Call[~String] : func:r2379_2, this:r2379_1 -# 2379| mu2379_4(unknown) = ^CallSideEffect : ~m? -# 2379| v2379_5(void) = ^IndirectReadSideEffect[-1] : &:r2379_1, ~m? +# 2379| mu2379_2(String) = Uninitialized[s] : &:r2379_1 +# 2379| r2379_3(glval) = FunctionAddress[String] : +# 2379| v2379_4(void) = Call[String] : func:r2379_3, this:r2379_1 +# 2379| mu2379_5(unknown) = ^CallSideEffect : ~m? # 2379| mu2379_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2379_1 -# 2376| v2376_4(void) = ReturnVoid : -# 2376| v2376_5(void) = AliasedUse : ~m? -# 2376| v2376_6(void) = ExitFunction : +# 2380| r2380_1(glval) = FunctionAddress[VoidFunc] : +# 2380| v2380_2(void) = Call[VoidFunc] : func:r2380_1 +# 2380| mu2380_3(unknown) = ^CallSideEffect : ~m? +# 2380| v2380_4(void) = NoOp : +# 2381| r2381_1(glval) = VariableAddress[s] : +# 2381| r2381_2(glval) = FunctionAddress[~String] : +# 2381| v2381_3(void) = Call[~String] : func:r2381_2, this:r2381_1 +# 2381| mu2381_4(unknown) = ^CallSideEffect : ~m? +# 2381| v2381_5(void) = ^IndirectReadSideEffect[-1] : &:r2381_1, ~m? +# 2381| mu2381_6(String) = ^IndirectMayWriteSideEffect[-1] : &:r2381_1 +# 2378| v2378_4(void) = ReturnVoid : +# 2378| v2378_5(void) = AliasedUse : ~m? +# 2378| v2378_6(void) = ExitFunction : -# 2389| return_routine_type::VoidToIntMemberFunc return_routine_type::GetVoidToIntFunc() -# 2389| Block 0 -# 2389| v2389_1(void) = EnterFunction : -# 2389| mu2389_2(unknown) = AliasedDefinition : -# 2389| mu2389_3(unknown) = InitializeNonLocal : -# 2391| r2391_1(glval<..:: *>) = VariableAddress[#return] : -# 2391| r2391_2(..()(..)) = FunctionAddress[VoidToInt] : -# 2391| mu2391_3(..:: *) = Store[#return] : &:r2391_1, r2391_2 -# 2389| r2389_4(glval<..:: *>) = VariableAddress[#return] : -# 2389| v2389_5(void) = ReturnValue : &:r2389_4, ~m? -# 2389| v2389_6(void) = AliasedUse : ~m? -# 2389| v2389_7(void) = ExitFunction : +# 2391| return_routine_type::VoidToIntMemberFunc return_routine_type::GetVoidToIntFunc() +# 2391| Block 0 +# 2391| v2391_1(void) = EnterFunction : +# 2391| mu2391_2(unknown) = AliasedDefinition : +# 2391| mu2391_3(unknown) = InitializeNonLocal : +# 2393| r2393_1(glval<..:: *>) = VariableAddress[#return] : +# 2393| r2393_2(..()(..)) = FunctionAddress[VoidToInt] : +# 2393| mu2393_3(..:: *) = Store[#return] : &:r2393_1, r2393_2 +# 2391| r2391_4(glval<..:: *>) = VariableAddress[#return] : +# 2391| v2391_5(void) = ReturnValue : &:r2391_4, ~m? +# 2391| v2391_6(void) = AliasedUse : ~m? +# 2391| v2391_7(void) = ExitFunction : -# 2396| int small_operation_should_not_be_constant_folded() -# 2396| Block 0 -# 2396| v2396_1(void) = EnterFunction : -# 2396| mu2396_2(unknown) = AliasedDefinition : -# 2396| mu2396_3(unknown) = InitializeNonLocal : -# 2397| r2397_1(glval) = VariableAddress[#return] : -# 2397| r2397_2(int) = Constant[1] : -# 2397| r2397_3(int) = Constant[2] : -# 2397| r2397_4(int) = BitXor : r2397_2, r2397_3 -# 2397| mu2397_5(int) = Store[#return] : &:r2397_1, r2397_4 -# 2396| r2396_4(glval) = VariableAddress[#return] : -# 2396| v2396_5(void) = ReturnValue : &:r2396_4, ~m? -# 2396| v2396_6(void) = AliasedUse : ~m? -# 2396| v2396_7(void) = ExitFunction : +# 2398| int small_operation_should_not_be_constant_folded() +# 2398| Block 0 +# 2398| v2398_1(void) = EnterFunction : +# 2398| mu2398_2(unknown) = AliasedDefinition : +# 2398| mu2398_3(unknown) = InitializeNonLocal : +# 2399| r2399_1(glval) = VariableAddress[#return] : +# 2399| r2399_2(int) = Constant[1] : +# 2399| r2399_3(int) = Constant[2] : +# 2399| r2399_4(int) = BitXor : r2399_2, r2399_3 +# 2399| mu2399_5(int) = Store[#return] : &:r2399_1, r2399_4 +# 2398| r2398_4(glval) = VariableAddress[#return] : +# 2398| v2398_5(void) = ReturnValue : &:r2398_4, ~m? +# 2398| v2398_6(void) = AliasedUse : ~m? +# 2398| v2398_7(void) = ExitFunction : -# 2407| int large_operation_should_be_constant_folded() -# 2407| Block 0 -# 2407| v2407_1(void) = EnterFunction : -# 2407| mu2407_2(unknown) = AliasedDefinition : -# 2407| mu2407_3(unknown) = InitializeNonLocal : -# 2408| r2408_1(glval) = VariableAddress[#return] : -# 2408| r2408_2(int) = Constant[0] : -# 2408| mu2408_3(int) = Store[#return] : &:r2408_1, r2408_2 -# 2407| r2407_4(glval) = VariableAddress[#return] : -# 2407| v2407_5(void) = ReturnValue : &:r2407_4, ~m? -# 2407| v2407_6(void) = AliasedUse : ~m? -# 2407| v2407_7(void) = ExitFunction : +# 2409| int large_operation_should_be_constant_folded() +# 2409| Block 0 +# 2409| v2409_1(void) = EnterFunction : +# 2409| mu2409_2(unknown) = AliasedDefinition : +# 2409| mu2409_3(unknown) = InitializeNonLocal : +# 2410| r2410_1(glval) = VariableAddress[#return] : +# 2410| r2410_2(int) = Constant[0] : +# 2410| mu2410_3(int) = Store[#return] : &:r2410_1, r2410_2 +# 2409| r2409_4(glval) = VariableAddress[#return] : +# 2409| v2409_5(void) = ReturnValue : &:r2409_4, ~m? +# 2409| v2409_6(void) = AliasedUse : ~m? +# 2409| v2409_7(void) = ExitFunction : -# 2411| void initialization_with_temp_destructor() -# 2411| Block 0 -# 2411| v2411_1(void) = EnterFunction : -# 2411| mu2411_2(unknown) = AliasedDefinition : -# 2411| mu2411_3(unknown) = InitializeNonLocal : -# 2412| r2412_1(glval) = VariableAddress[x] : -# 2412| r2412_2(glval) = VariableAddress[#temp2412:18] : -# 2412| mu2412_3(ClassWithDestructor) = Uninitialized[#temp2412:18] : &:r2412_2 -# 2412| r2412_4(glval) = FunctionAddress[ClassWithDestructor] : -# 2412| v2412_5(void) = Call[ClassWithDestructor] : func:r2412_4, this:r2412_2 -# 2412| mu2412_6(unknown) = ^CallSideEffect : ~m? -# 2412| mu2412_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2412_2 -# 2412| r2412_8(glval) = FunctionAddress[get_x] : -# 2412| r2412_9(char) = Call[get_x] : func:r2412_8, this:r2412_2 -# 2412| mu2412_10(unknown) = ^CallSideEffect : ~m? -# 2412| v2412_11(void) = ^IndirectReadSideEffect[-1] : &:r2412_2, ~m? -# 2412| mu2412_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2412_2 -# 2412| r2412_13(glval) = CopyValue : r2412_2 -# 2412| r2412_14(glval) = FunctionAddress[~ClassWithDestructor] : -# 2412| v2412_15(void) = Call[~ClassWithDestructor] : func:r2412_14, this:r2412_13 -# 2412| mu2412_16(unknown) = ^CallSideEffect : ~m? -# 2412| v2412_17(void) = ^IndirectReadSideEffect[-1] : &:r2412_13, ~m? -# 2412| mu2412_18(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2412_13 -# 2412| mu2412_19(char) = Store[x] : &:r2412_1, r2412_9 -# 2412| r2412_20(glval) = VariableAddress[x] : -# 2412| r2412_21(char) = Load[x] : &:r2412_20, ~m? -# 2412| r2412_22(char) = Constant[0] : -# 2412| r2412_23(bool) = CompareNE : r2412_21, r2412_22 -# 2412| r2412_24(bool) = CopyValue : r2412_23 -# 2412| v2412_25(void) = ConditionalBranch : r2412_24 +# 2413| void initialization_with_temp_destructor() +# 2413| Block 0 +# 2413| v2413_1(void) = EnterFunction : +# 2413| mu2413_2(unknown) = AliasedDefinition : +# 2413| mu2413_3(unknown) = InitializeNonLocal : +# 2414| r2414_1(glval) = VariableAddress[x] : +# 2414| r2414_2(glval) = VariableAddress[#temp2414:18] : +# 2414| mu2414_3(ClassWithDestructor) = Uninitialized[#temp2414:18] : &:r2414_2 +# 2414| r2414_4(glval) = FunctionAddress[ClassWithDestructor] : +# 2414| v2414_5(void) = Call[ClassWithDestructor] : func:r2414_4, this:r2414_2 +# 2414| mu2414_6(unknown) = ^CallSideEffect : ~m? +# 2414| mu2414_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2414_2 +# 2414| r2414_8(glval) = FunctionAddress[get_x] : +# 2414| r2414_9(char) = Call[get_x] : func:r2414_8, this:r2414_2 +# 2414| mu2414_10(unknown) = ^CallSideEffect : ~m? +# 2414| v2414_11(void) = ^IndirectReadSideEffect[-1] : &:r2414_2, ~m? +# 2414| mu2414_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2414_2 +# 2414| r2414_13(glval) = CopyValue : r2414_2 +# 2414| r2414_14(glval) = FunctionAddress[~ClassWithDestructor] : +# 2414| v2414_15(void) = Call[~ClassWithDestructor] : func:r2414_14, this:r2414_13 +# 2414| mu2414_16(unknown) = ^CallSideEffect : ~m? +# 2414| v2414_17(void) = ^IndirectReadSideEffect[-1] : &:r2414_13, ~m? +# 2414| mu2414_18(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2414_13 +# 2414| mu2414_19(char) = Store[x] : &:r2414_1, r2414_9 +# 2414| r2414_20(glval) = VariableAddress[x] : +# 2414| r2414_21(char) = Load[x] : &:r2414_20, ~m? +# 2414| r2414_22(char) = Constant[0] : +# 2414| r2414_23(bool) = CompareNE : r2414_21, r2414_22 +# 2414| r2414_24(bool) = CopyValue : r2414_23 +# 2414| v2414_25(void) = ConditionalBranch : r2414_24 #-----| False -> Block 2 #-----| True -> Block 1 -# 2413| Block 1 -# 2413| r2413_1(glval) = VariableAddress[x] : -# 2413| r2413_2(char) = Load[x] : &:r2413_1, ~m? -# 2413| r2413_3(char) = Constant[1] : -# 2413| r2413_4(char) = Add : r2413_2, r2413_3 -# 2413| mu2413_5(char) = Store[x] : &:r2413_1, r2413_4 +# 2415| Block 1 +# 2415| r2415_1(glval) = VariableAddress[x] : +# 2415| r2415_2(char) = Load[x] : &:r2415_1, ~m? +# 2415| r2415_3(char) = Constant[1] : +# 2415| r2415_4(char) = Add : r2415_2, r2415_3 +# 2415| mu2415_5(char) = Store[x] : &:r2415_1, r2415_4 #-----| Goto -> Block 2 -# 2415| Block 2 -# 2415| r2415_1(glval) = VariableAddress[x] : -# 2415| r2415_2(glval) = VariableAddress[#temp2415:18] : -# 2415| mu2415_3(ClassWithDestructor) = Uninitialized[#temp2415:18] : &:r2415_2 -# 2415| r2415_4(glval) = FunctionAddress[ClassWithDestructor] : -# 2415| v2415_5(void) = Call[ClassWithDestructor] : func:r2415_4, this:r2415_2 -# 2415| mu2415_6(unknown) = ^CallSideEffect : ~m? -# 2415| mu2415_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2415_2 -# 2415| r2415_8(glval) = FunctionAddress[get_x] : -# 2415| r2415_9(char) = Call[get_x] : func:r2415_8, this:r2415_2 -# 2415| mu2415_10(unknown) = ^CallSideEffect : ~m? -# 2415| v2415_11(void) = ^IndirectReadSideEffect[-1] : &:r2415_2, ~m? -# 2415| mu2415_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2415_2 -# 2415| r2415_13(glval) = CopyValue : r2415_2 -# 2415| r2415_14(glval) = FunctionAddress[~ClassWithDestructor] : -# 2415| v2415_15(void) = Call[~ClassWithDestructor] : func:r2415_14, this:r2415_13 -# 2415| mu2415_16(unknown) = ^CallSideEffect : ~m? -# 2415| v2415_17(void) = ^IndirectReadSideEffect[-1] : &:r2415_13, ~m? -# 2415| mu2415_18(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2415_13 -# 2415| mu2415_19(char) = Store[x] : &:r2415_1, r2415_9 -# 2415| r2415_20(glval) = VariableAddress[x] : -# 2415| r2415_21(char) = Load[x] : &:r2415_20, ~m? -# 2415| r2415_22(char) = Constant[0] : -# 2415| r2415_23(bool) = CompareNE : r2415_21, r2415_22 -# 2415| v2415_24(void) = ConditionalBranch : r2415_23 +# 2417| Block 2 +# 2417| r2417_1(glval) = VariableAddress[x] : +# 2417| r2417_2(glval) = VariableAddress[#temp2417:18] : +# 2417| mu2417_3(ClassWithDestructor) = Uninitialized[#temp2417:18] : &:r2417_2 +# 2417| r2417_4(glval) = FunctionAddress[ClassWithDestructor] : +# 2417| v2417_5(void) = Call[ClassWithDestructor] : func:r2417_4, this:r2417_2 +# 2417| mu2417_6(unknown) = ^CallSideEffect : ~m? +# 2417| mu2417_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2417_2 +# 2417| r2417_8(glval) = FunctionAddress[get_x] : +# 2417| r2417_9(char) = Call[get_x] : func:r2417_8, this:r2417_2 +# 2417| mu2417_10(unknown) = ^CallSideEffect : ~m? +# 2417| v2417_11(void) = ^IndirectReadSideEffect[-1] : &:r2417_2, ~m? +# 2417| mu2417_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2417_2 +# 2417| r2417_13(glval) = CopyValue : r2417_2 +# 2417| r2417_14(glval) = FunctionAddress[~ClassWithDestructor] : +# 2417| v2417_15(void) = Call[~ClassWithDestructor] : func:r2417_14, this:r2417_13 +# 2417| mu2417_16(unknown) = ^CallSideEffect : ~m? +# 2417| v2417_17(void) = ^IndirectReadSideEffect[-1] : &:r2417_13, ~m? +# 2417| mu2417_18(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2417_13 +# 2417| mu2417_19(char) = Store[x] : &:r2417_1, r2417_9 +# 2417| r2417_20(glval) = VariableAddress[x] : +# 2417| r2417_21(char) = Load[x] : &:r2417_20, ~m? +# 2417| r2417_22(char) = Constant[0] : +# 2417| r2417_23(bool) = CompareNE : r2417_21, r2417_22 +# 2417| v2417_24(void) = ConditionalBranch : r2417_23 #-----| False -> Block 4 #-----| True -> Block 3 -# 2416| Block 3 -# 2416| r2416_1(glval) = VariableAddress[x] : -# 2416| r2416_2(char) = Load[x] : &:r2416_1, ~m? -# 2416| r2416_3(char) = Constant[1] : -# 2416| r2416_4(char) = Add : r2416_2, r2416_3 -# 2416| mu2416_5(char) = Store[x] : &:r2416_1, r2416_4 +# 2418| Block 3 +# 2418| r2418_1(glval) = VariableAddress[x] : +# 2418| r2418_2(char) = Load[x] : &:r2418_1, ~m? +# 2418| r2418_3(char) = Constant[1] : +# 2418| r2418_4(char) = Add : r2418_2, r2418_3 +# 2418| mu2418_5(char) = Store[x] : &:r2418_1, r2418_4 #-----| Goto -> Block 4 -# 2418| Block 4 -# 2418| r2418_1(glval) = VariableAddress[x] : -# 2418| r2418_2(glval) = VariableAddress[#temp2418:28] : -# 2418| mu2418_3(ClassWithDestructor) = Uninitialized[#temp2418:28] : &:r2418_2 -# 2418| r2418_4(glval) = FunctionAddress[ClassWithDestructor] : -# 2418| v2418_5(void) = Call[ClassWithDestructor] : func:r2418_4, this:r2418_2 -# 2418| mu2418_6(unknown) = ^CallSideEffect : ~m? -# 2418| mu2418_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2418_2 -# 2418| r2418_8(glval) = FunctionAddress[get_x] : -# 2418| r2418_9(char) = Call[get_x] : func:r2418_8, this:r2418_2 -# 2418| mu2418_10(unknown) = ^CallSideEffect : ~m? -# 2418| v2418_11(void) = ^IndirectReadSideEffect[-1] : &:r2418_2, ~m? -# 2418| mu2418_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2418_2 -# 2418| r2418_13(glval) = CopyValue : r2418_2 -# 2418| r2418_14(glval) = FunctionAddress[~ClassWithDestructor] : -# 2418| v2418_15(void) = Call[~ClassWithDestructor] : func:r2418_14, this:r2418_13 -# 2418| mu2418_16(unknown) = ^CallSideEffect : ~m? -# 2418| v2418_17(void) = ^IndirectReadSideEffect[-1] : &:r2418_13, ~m? -# 2418| mu2418_18(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2418_13 -# 2418| mu2418_19(char) = Store[x] : &:r2418_1, r2418_9 -# 2418| r2418_20(bool) = Constant[1] : -# 2418| v2418_21(void) = ConditionalBranch : r2418_20 +# 2420| Block 4 +# 2420| r2420_1(glval) = VariableAddress[x] : +# 2420| r2420_2(glval) = VariableAddress[#temp2420:28] : +# 2420| mu2420_3(ClassWithDestructor) = Uninitialized[#temp2420:28] : &:r2420_2 +# 2420| r2420_4(glval) = FunctionAddress[ClassWithDestructor] : +# 2420| v2420_5(void) = Call[ClassWithDestructor] : func:r2420_4, this:r2420_2 +# 2420| mu2420_6(unknown) = ^CallSideEffect : ~m? +# 2420| mu2420_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2420_2 +# 2420| r2420_8(glval) = FunctionAddress[get_x] : +# 2420| r2420_9(char) = Call[get_x] : func:r2420_8, this:r2420_2 +# 2420| mu2420_10(unknown) = ^CallSideEffect : ~m? +# 2420| v2420_11(void) = ^IndirectReadSideEffect[-1] : &:r2420_2, ~m? +# 2420| mu2420_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2420_2 +# 2420| r2420_13(glval) = CopyValue : r2420_2 +# 2420| r2420_14(glval) = FunctionAddress[~ClassWithDestructor] : +# 2420| v2420_15(void) = Call[~ClassWithDestructor] : func:r2420_14, this:r2420_13 +# 2420| mu2420_16(unknown) = ^CallSideEffect : ~m? +# 2420| v2420_17(void) = ^IndirectReadSideEffect[-1] : &:r2420_13, ~m? +# 2420| mu2420_18(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2420_13 +# 2420| mu2420_19(char) = Store[x] : &:r2420_1, r2420_9 +# 2420| r2420_20(bool) = Constant[1] : +# 2420| v2420_21(void) = ConditionalBranch : r2420_20 #-----| False -> Block 6 #-----| True -> Block 5 -# 2419| Block 5 -# 2419| r2419_1(glval) = VariableAddress[x] : -# 2419| r2419_2(char) = Load[x] : &:r2419_1, ~m? -# 2419| r2419_3(char) = Constant[1] : -# 2419| r2419_4(char) = Add : r2419_2, r2419_3 -# 2419| mu2419_5(char) = Store[x] : &:r2419_1, r2419_4 +# 2421| Block 5 +# 2421| r2421_1(glval) = VariableAddress[x] : +# 2421| r2421_2(char) = Load[x] : &:r2421_1, ~m? +# 2421| r2421_3(char) = Constant[1] : +# 2421| r2421_4(char) = Add : r2421_2, r2421_3 +# 2421| mu2421_5(char) = Store[x] : &:r2421_1, r2421_4 #-----| Goto -> Block 6 -# 2421| Block 6 -# 2421| r2421_1(glval) = VariableAddress[x] : -# 2421| r2421_2(glval) = VariableAddress[#temp2421:21] : -# 2421| mu2421_3(ClassWithDestructor) = Uninitialized[#temp2421:21] : &:r2421_2 -# 2421| r2421_4(glval) = FunctionAddress[ClassWithDestructor] : -# 2421| v2421_5(void) = Call[ClassWithDestructor] : func:r2421_4, this:r2421_2 -# 2421| mu2421_6(unknown) = ^CallSideEffect : ~m? -# 2421| mu2421_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2421_2 -# 2421| r2421_8(glval) = FunctionAddress[get_x] : -# 2421| r2421_9(char) = Call[get_x] : func:r2421_8, this:r2421_2 -# 2421| mu2421_10(unknown) = ^CallSideEffect : ~m? -# 2421| v2421_11(void) = ^IndirectReadSideEffect[-1] : &:r2421_2, ~m? -# 2421| mu2421_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2421_2 -# 2421| r2421_13(glval) = CopyValue : r2421_2 -# 2421| r2421_14(glval) = FunctionAddress[~ClassWithDestructor] : -# 2421| v2421_15(void) = Call[~ClassWithDestructor] : func:r2421_14, this:r2421_13 -# 2421| mu2421_16(unknown) = ^CallSideEffect : ~m? -# 2421| v2421_17(void) = ^IndirectReadSideEffect[-1] : &:r2421_13, ~m? -# 2421| mu2421_18(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2421_13 -# 2421| mu2421_19(char) = Store[x] : &:r2421_1, r2421_9 -# 2421| r2421_20(glval) = VariableAddress[x] : -# 2421| r2421_21(char) = Load[x] : &:r2421_20, ~m? -# 2421| r2421_22(int) = Convert : r2421_21 -# 2421| r2421_23(int) = CopyValue : r2421_22 -# 2421| v2421_24(void) = Switch : r2421_23 +# 2423| Block 6 +# 2423| r2423_1(glval) = VariableAddress[x] : +# 2423| r2423_2(glval) = VariableAddress[#temp2423:21] : +# 2423| mu2423_3(ClassWithDestructor) = Uninitialized[#temp2423:21] : &:r2423_2 +# 2423| r2423_4(glval) = FunctionAddress[ClassWithDestructor] : +# 2423| v2423_5(void) = Call[ClassWithDestructor] : func:r2423_4, this:r2423_2 +# 2423| mu2423_6(unknown) = ^CallSideEffect : ~m? +# 2423| mu2423_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2423_2 +# 2423| r2423_8(glval) = FunctionAddress[get_x] : +# 2423| r2423_9(char) = Call[get_x] : func:r2423_8, this:r2423_2 +# 2423| mu2423_10(unknown) = ^CallSideEffect : ~m? +# 2423| v2423_11(void) = ^IndirectReadSideEffect[-1] : &:r2423_2, ~m? +# 2423| mu2423_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2423_2 +# 2423| r2423_13(glval) = CopyValue : r2423_2 +# 2423| r2423_14(glval) = FunctionAddress[~ClassWithDestructor] : +# 2423| v2423_15(void) = Call[~ClassWithDestructor] : func:r2423_14, this:r2423_13 +# 2423| mu2423_16(unknown) = ^CallSideEffect : ~m? +# 2423| v2423_17(void) = ^IndirectReadSideEffect[-1] : &:r2423_13, ~m? +# 2423| mu2423_18(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2423_13 +# 2423| mu2423_19(char) = Store[x] : &:r2423_1, r2423_9 +# 2423| r2423_20(glval) = VariableAddress[x] : +# 2423| r2423_21(char) = Load[x] : &:r2423_20, ~m? +# 2423| r2423_22(int) = Convert : r2423_21 +# 2423| r2423_23(int) = CopyValue : r2423_22 +# 2423| v2423_24(void) = Switch : r2423_23 #-----| Case[97] -> Block 7 #-----| Default -> Block 8 -# 2422| Block 7 -# 2422| v2422_1(void) = NoOp : -# 2423| r2423_1(glval) = VariableAddress[x] : -# 2423| r2423_2(char) = Load[x] : &:r2423_1, ~m? -# 2423| r2423_3(char) = Constant[1] : -# 2423| r2423_4(char) = Add : r2423_2, r2423_3 -# 2423| mu2423_5(char) = Store[x] : &:r2423_1, r2423_4 +# 2424| Block 7 +# 2424| v2424_1(void) = NoOp : +# 2425| r2425_1(glval) = VariableAddress[x] : +# 2425| r2425_2(char) = Load[x] : &:r2425_1, ~m? +# 2425| r2425_3(char) = Constant[1] : +# 2425| r2425_4(char) = Add : r2425_2, r2425_3 +# 2425| mu2425_5(char) = Store[x] : &:r2425_1, r2425_4 #-----| Goto -> Block 8 -# 2426| Block 8 -# 2426| r2426_1(glval) = VariableAddress[x] : -# 2426| r2426_2(glval) = VariableAddress[#temp2426:21] : -# 2426| mu2426_3(ClassWithDestructor) = Uninitialized[#temp2426:21] : &:r2426_2 -# 2426| r2426_4(glval) = FunctionAddress[ClassWithDestructor] : -# 2426| v2426_5(void) = Call[ClassWithDestructor] : func:r2426_4, this:r2426_2 -# 2426| mu2426_6(unknown) = ^CallSideEffect : ~m? -# 2426| mu2426_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2426_2 -# 2426| r2426_8(glval) = FunctionAddress[get_x] : -# 2426| r2426_9(char) = Call[get_x] : func:r2426_8, this:r2426_2 -# 2426| mu2426_10(unknown) = ^CallSideEffect : ~m? -# 2426| v2426_11(void) = ^IndirectReadSideEffect[-1] : &:r2426_2, ~m? -# 2426| mu2426_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2426_2 -# 2426| r2426_13(glval) = CopyValue : r2426_2 -# 2426| r2426_14(glval) = FunctionAddress[~ClassWithDestructor] : -# 2426| v2426_15(void) = Call[~ClassWithDestructor] : func:r2426_14, this:r2426_13 -# 2426| mu2426_16(unknown) = ^CallSideEffect : ~m? -# 2426| v2426_17(void) = ^IndirectReadSideEffect[-1] : &:r2426_13, ~m? -# 2426| mu2426_18(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2426_13 -# 2426| mu2426_19(char) = Store[x] : &:r2426_1, r2426_9 -# 2426| r2426_20(glval) = VariableAddress[x] : -# 2426| r2426_21(char) = Load[x] : &:r2426_20, ~m? -# 2426| r2426_22(int) = Convert : r2426_21 -# 2426| v2426_23(void) = Switch : r2426_22 +# 2428| Block 8 +# 2428| r2428_1(glval) = VariableAddress[x] : +# 2428| r2428_2(glval) = VariableAddress[#temp2428:21] : +# 2428| mu2428_3(ClassWithDestructor) = Uninitialized[#temp2428:21] : &:r2428_2 +# 2428| r2428_4(glval) = FunctionAddress[ClassWithDestructor] : +# 2428| v2428_5(void) = Call[ClassWithDestructor] : func:r2428_4, this:r2428_2 +# 2428| mu2428_6(unknown) = ^CallSideEffect : ~m? +# 2428| mu2428_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2428_2 +# 2428| r2428_8(glval) = FunctionAddress[get_x] : +# 2428| r2428_9(char) = Call[get_x] : func:r2428_8, this:r2428_2 +# 2428| mu2428_10(unknown) = ^CallSideEffect : ~m? +# 2428| v2428_11(void) = ^IndirectReadSideEffect[-1] : &:r2428_2, ~m? +# 2428| mu2428_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2428_2 +# 2428| r2428_13(glval) = CopyValue : r2428_2 +# 2428| r2428_14(glval) = FunctionAddress[~ClassWithDestructor] : +# 2428| v2428_15(void) = Call[~ClassWithDestructor] : func:r2428_14, this:r2428_13 +# 2428| mu2428_16(unknown) = ^CallSideEffect : ~m? +# 2428| v2428_17(void) = ^IndirectReadSideEffect[-1] : &:r2428_13, ~m? +# 2428| mu2428_18(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2428_13 +# 2428| mu2428_19(char) = Store[x] : &:r2428_1, r2428_9 +# 2428| r2428_20(glval) = VariableAddress[x] : +# 2428| r2428_21(char) = Load[x] : &:r2428_20, ~m? +# 2428| r2428_22(int) = Convert : r2428_21 +# 2428| v2428_23(void) = Switch : r2428_22 #-----| Case[97] -> Block 9 #-----| Default -> Block 10 -# 2427| Block 9 -# 2427| v2427_1(void) = NoOp : -# 2428| r2428_1(glval) = VariableAddress[x] : -# 2428| r2428_2(char) = Load[x] : &:r2428_1, ~m? -# 2428| r2428_3(char) = Constant[1] : -# 2428| r2428_4(char) = Add : r2428_2, r2428_3 -# 2428| mu2428_5(char) = Store[x] : &:r2428_1, r2428_4 +# 2429| Block 9 +# 2429| v2429_1(void) = NoOp : +# 2430| r2430_1(glval) = VariableAddress[x] : +# 2430| r2430_2(char) = Load[x] : &:r2430_1, ~m? +# 2430| r2430_3(char) = Constant[1] : +# 2430| r2430_4(char) = Add : r2430_2, r2430_3 +# 2430| mu2430_5(char) = Store[x] : &:r2430_1, r2430_4 #-----| Goto -> Block 10 -# 2431| Block 10 -# 2431| r2431_1(glval) = VariableAddress[x] : -# 2431| r2431_2(glval) = VariableAddress[#temp2431:18] : -# 2431| mu2431_3(ClassWithDestructor) = Uninitialized[#temp2431:18] : &:r2431_2 -# 2431| r2431_4(glval) = FunctionAddress[ClassWithDestructor] : -# 2431| v2431_5(void) = Call[ClassWithDestructor] : func:r2431_4, this:r2431_2 -# 2431| mu2431_6(unknown) = ^CallSideEffect : ~m? -# 2431| mu2431_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2431_2 -# 2431| r2431_8(glval) = FunctionAddress[get_x] : -# 2431| r2431_9(char) = Call[get_x] : func:r2431_8, this:r2431_2 -# 2431| mu2431_10(unknown) = ^CallSideEffect : ~m? -# 2431| v2431_11(void) = ^IndirectReadSideEffect[-1] : &:r2431_2, ~m? -# 2431| mu2431_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2431_2 -# 2431| r2431_13(glval) = CopyValue : r2431_2 -# 2431| r2431_14(glval) = FunctionAddress[~ClassWithDestructor] : -# 2431| v2431_15(void) = Call[~ClassWithDestructor] : func:r2431_14, this:r2431_13 -# 2431| mu2431_16(unknown) = ^CallSideEffect : ~m? -# 2431| v2431_17(void) = ^IndirectReadSideEffect[-1] : &:r2431_13, ~m? -# 2431| mu2431_18(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2431_13 -# 2431| mu2431_19(char) = Store[x] : &:r2431_1, r2431_9 -# 2431| r2431_20(glval &&>) = VariableAddress[(__range)] : -# 2431| r2431_21(glval>) = VariableAddress[#temp2431:58] : -# 2431| mu2431_22(vector) = Uninitialized[#temp2431:58] : &:r2431_21 -# 2431| r2431_23(glval) = FunctionAddress[vector] : -# 2431| r2431_24(glval) = VariableAddress[x] : -# 2431| r2431_25(char) = Load[x] : &:r2431_24, ~m? -# 2431| v2431_26(void) = Call[vector] : func:r2431_23, this:r2431_21, 0:r2431_25 -# 2431| mu2431_27(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2431_21 -# 2431| r2431_28(vector &) = CopyValue : r2431_21 -# 2431| mu2431_29(vector &&) = Store[(__range)] : &:r2431_20, r2431_28 -# 2431| r2431_30(glval>) = VariableAddress[(__begin)] : -# 2431| r2431_31(glval &&>) = VariableAddress[(__range)] : -# 2431| r2431_32(vector &&) = Load[(__range)] : &:r2431_31, ~m? -#-----| r0_1(glval>) = CopyValue : r2431_32 +# 2433| Block 10 +# 2433| r2433_1(glval) = VariableAddress[x] : +# 2433| r2433_2(glval) = VariableAddress[#temp2433:18] : +# 2433| mu2433_3(ClassWithDestructor) = Uninitialized[#temp2433:18] : &:r2433_2 +# 2433| r2433_4(glval) = FunctionAddress[ClassWithDestructor] : +# 2433| v2433_5(void) = Call[ClassWithDestructor] : func:r2433_4, this:r2433_2 +# 2433| mu2433_6(unknown) = ^CallSideEffect : ~m? +# 2433| mu2433_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2433_2 +# 2433| r2433_8(glval) = FunctionAddress[get_x] : +# 2433| r2433_9(char) = Call[get_x] : func:r2433_8, this:r2433_2 +# 2433| mu2433_10(unknown) = ^CallSideEffect : ~m? +# 2433| v2433_11(void) = ^IndirectReadSideEffect[-1] : &:r2433_2, ~m? +# 2433| mu2433_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2433_2 +# 2433| r2433_13(glval) = CopyValue : r2433_2 +# 2433| r2433_14(glval) = FunctionAddress[~ClassWithDestructor] : +# 2433| v2433_15(void) = Call[~ClassWithDestructor] : func:r2433_14, this:r2433_13 +# 2433| mu2433_16(unknown) = ^CallSideEffect : ~m? +# 2433| v2433_17(void) = ^IndirectReadSideEffect[-1] : &:r2433_13, ~m? +# 2433| mu2433_18(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2433_13 +# 2433| mu2433_19(char) = Store[x] : &:r2433_1, r2433_9 +# 2433| r2433_20(glval &&>) = VariableAddress[(__range)] : +# 2433| r2433_21(glval>) = VariableAddress[#temp2433:58] : +# 2433| mu2433_22(vector) = Uninitialized[#temp2433:58] : &:r2433_21 +# 2433| r2433_23(glval) = FunctionAddress[vector] : +# 2433| r2433_24(glval) = VariableAddress[x] : +# 2433| r2433_25(char) = Load[x] : &:r2433_24, ~m? +# 2433| v2433_26(void) = Call[vector] : func:r2433_23, this:r2433_21, 0:r2433_25 +# 2433| mu2433_27(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2433_21 +# 2433| r2433_28(vector &) = CopyValue : r2433_21 +# 2433| mu2433_29(vector &&) = Store[(__range)] : &:r2433_20, r2433_28 +# 2433| r2433_30(glval>) = VariableAddress[(__begin)] : +# 2433| r2433_31(glval &&>) = VariableAddress[(__range)] : +# 2433| r2433_32(vector &&) = Load[(__range)] : &:r2433_31, ~m? +#-----| r0_1(glval>) = CopyValue : r2433_32 #-----| r0_2(glval>) = Convert : r0_1 -# 2431| r2431_33(glval) = FunctionAddress[begin] : -# 2431| r2431_34(iterator) = Call[begin] : func:r2431_33, this:r0_2 +# 2433| r2433_33(glval) = FunctionAddress[begin] : +# 2433| r2433_34(iterator) = Call[begin] : func:r2433_33, this:r0_2 #-----| v0_3(void) = ^IndirectReadSideEffect[-1] : &:r0_2, ~m? -# 2431| mu2431_35(iterator) = Store[(__begin)] : &:r2431_30, r2431_34 -# 2431| r2431_36(glval>) = VariableAddress[(__end)] : -# 2431| r2431_37(glval &&>) = VariableAddress[(__range)] : -# 2431| r2431_38(vector &&) = Load[(__range)] : &:r2431_37, ~m? -#-----| r0_4(glval>) = CopyValue : r2431_38 +# 2433| mu2433_35(iterator) = Store[(__begin)] : &:r2433_30, r2433_34 +# 2433| r2433_36(glval>) = VariableAddress[(__end)] : +# 2433| r2433_37(glval &&>) = VariableAddress[(__range)] : +# 2433| r2433_38(vector &&) = Load[(__range)] : &:r2433_37, ~m? +#-----| r0_4(glval>) = CopyValue : r2433_38 #-----| r0_5(glval>) = Convert : r0_4 -# 2431| r2431_39(glval) = FunctionAddress[end] : -# 2431| r2431_40(iterator) = Call[end] : func:r2431_39, this:r0_5 +# 2433| r2433_39(glval) = FunctionAddress[end] : +# 2433| r2433_40(iterator) = Call[end] : func:r2433_39, this:r0_5 #-----| v0_6(void) = ^IndirectReadSideEffect[-1] : &:r0_5, ~m? -# 2431| mu2431_41(iterator) = Store[(__end)] : &:r2431_36, r2431_40 +# 2433| mu2433_41(iterator) = Store[(__end)] : &:r2433_36, r2433_40 #-----| Goto -> Block 11 -# 2431| Block 11 -# 2431| r2431_42(glval>) = VariableAddress[(__begin)] : -#-----| r0_7(glval>) = Convert : r2431_42 -# 2431| r2431_43(glval) = FunctionAddress[operator!=] : +# 2433| Block 11 +# 2433| r2433_42(glval>) = VariableAddress[(__begin)] : +#-----| r0_7(glval>) = Convert : r2433_42 +# 2433| r2433_43(glval) = FunctionAddress[operator!=] : #-----| r0_8(glval>) = VariableAddress[#temp0:0] : #-----| mu0_9(iterator) = Uninitialized[#temp0:0] : &:r0_8 -# 2431| r2431_44(glval) = FunctionAddress[iterator] : -# 2431| r2431_45(glval>) = VariableAddress[(__end)] : -#-----| r0_10(glval>) = Convert : r2431_45 +# 2433| r2433_44(glval) = FunctionAddress[iterator] : +# 2433| r2433_45(glval>) = VariableAddress[(__end)] : +#-----| r0_10(glval>) = Convert : r2433_45 #-----| r0_11(iterator &) = CopyValue : r0_10 -# 2431| v2431_46(void) = Call[iterator] : func:r2431_44, this:r0_8, 0:r0_11 -# 2431| mu2431_47(unknown) = ^CallSideEffect : ~m? +# 2433| v2433_46(void) = Call[iterator] : func:r2433_44, this:r0_8, 0:r0_11 +# 2433| mu2433_47(unknown) = ^CallSideEffect : ~m? #-----| v0_12(void) = ^BufferReadSideEffect[0] : &:r0_11, ~m? -# 2431| mu2431_48(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r0_8 +# 2433| mu2433_48(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r0_8 #-----| r0_13(iterator) = Load[#temp0:0] : &:r0_8, ~m? -# 2431| r2431_49(bool) = Call[operator!=] : func:r2431_43, this:r0_7, 0:r0_13 +# 2433| r2433_49(bool) = Call[operator!=] : func:r2433_43, this:r0_7, 0:r0_13 #-----| v0_14(void) = ^IndirectReadSideEffect[-1] : &:r0_7, ~m? -# 2431| v2431_50(void) = ConditionalBranch : r2431_49 +# 2433| v2433_50(void) = ConditionalBranch : r2433_49 #-----| False -> Block 13 #-----| True -> Block 12 -# 2431| Block 12 -# 2431| r2431_51(glval) = VariableAddress[y] : -# 2431| r2431_52(glval>) = VariableAddress[(__begin)] : -#-----| r0_15(glval>) = Convert : r2431_52 -# 2431| r2431_53(glval) = FunctionAddress[operator*] : -# 2431| r2431_54(char &) = Call[operator*] : func:r2431_53, this:r0_15 +# 2433| Block 12 +# 2433| r2433_51(glval) = VariableAddress[y] : +# 2433| r2433_52(glval>) = VariableAddress[(__begin)] : +#-----| r0_15(glval>) = Convert : r2433_52 +# 2433| r2433_53(glval) = FunctionAddress[operator*] : +# 2433| r2433_54(char &) = Call[operator*] : func:r2433_53, this:r0_15 #-----| v0_16(void) = ^IndirectReadSideEffect[-1] : &:r0_15, ~m? -# 2431| r2431_55(char) = Load[?] : &:r2431_54, ~m? -# 2431| mu2431_56(char) = Store[y] : &:r2431_51, r2431_55 -# 2432| r2432_1(glval) = VariableAddress[x] : -# 2432| r2432_2(char) = Load[x] : &:r2432_1, ~m? -# 2432| r2432_3(int) = Convert : r2432_2 -# 2432| r2432_4(glval) = VariableAddress[y] : -# 2432| r2432_5(char) = Load[y] : &:r2432_4, ~m? -# 2432| r2432_6(int) = Convert : r2432_5 -# 2432| r2432_7(int) = Add : r2432_6, r2432_3 -# 2432| r2432_8(char) = Convert : r2432_7 -# 2432| mu2432_9(char) = Store[y] : &:r2432_4, r2432_8 -# 2431| r2431_57(glval>) = VariableAddress[(__begin)] : -# 2431| r2431_58(glval) = FunctionAddress[operator++] : -# 2431| r2431_59(iterator &) = Call[operator++] : func:r2431_58, this:r2431_57 -# 2431| v2431_60(void) = ^IndirectReadSideEffect[-1] : &:r2431_57, ~m? -# 2431| mu2431_61(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r2431_57 -# 2431| r2431_62(glval>) = CopyValue : r2431_59 +# 2433| r2433_55(char) = Load[?] : &:r2433_54, ~m? +# 2433| mu2433_56(char) = Store[y] : &:r2433_51, r2433_55 +# 2434| r2434_1(glval) = VariableAddress[x] : +# 2434| r2434_2(char) = Load[x] : &:r2434_1, ~m? +# 2434| r2434_3(int) = Convert : r2434_2 +# 2434| r2434_4(glval) = VariableAddress[y] : +# 2434| r2434_5(char) = Load[y] : &:r2434_4, ~m? +# 2434| r2434_6(int) = Convert : r2434_5 +# 2434| r2434_7(int) = Add : r2434_6, r2434_3 +# 2434| r2434_8(char) = Convert : r2434_7 +# 2434| mu2434_9(char) = Store[y] : &:r2434_4, r2434_8 +# 2433| r2433_57(glval>) = VariableAddress[(__begin)] : +# 2433| r2433_58(glval) = FunctionAddress[operator++] : +# 2433| r2433_59(iterator &) = Call[operator++] : func:r2433_58, this:r2433_57 +# 2433| v2433_60(void) = ^IndirectReadSideEffect[-1] : &:r2433_57, ~m? +# 2433| mu2433_61(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r2433_57 +# 2433| r2433_62(glval>) = CopyValue : r2433_59 #-----| Goto (back edge) -> Block 11 -# 2431| Block 13 -# 2431| r2431_63(glval>) = CopyValue : r2431_21 -# 2431| r2431_64(glval) = FunctionAddress[~vector] : -# 2431| v2431_65(void) = Call[~vector] : func:r2431_64, this:r2431_63 -# 2431| v2431_66(void) = ^IndirectReadSideEffect[-1] : &:r2431_63, ~m? -# 2431| mu2431_67(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2431_63 -# 2433| v2433_1(void) = NoOp : -# 2411| v2411_4(void) = ReturnVoid : -# 2411| v2411_5(void) = AliasedUse : ~m? -# 2411| v2411_6(void) = ExitFunction : +# 2433| Block 13 +# 2433| r2433_63(glval>) = CopyValue : r2433_21 +# 2433| r2433_64(glval) = FunctionAddress[~vector] : +# 2433| v2433_65(void) = Call[~vector] : func:r2433_64, this:r2433_63 +# 2433| v2433_66(void) = ^IndirectReadSideEffect[-1] : &:r2433_63, ~m? +# 2433| mu2433_67(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2433_63 +# 2435| v2435_1(void) = NoOp : +# 2413| v2413_4(void) = ReturnVoid : +# 2413| v2413_5(void) = AliasedUse : ~m? +# 2413| v2413_6(void) = ExitFunction : -# 2435| void param_with_destructor_by_value(ClassWithDestructor) -# 2435| Block 0 -# 2435| v2435_1(void) = EnterFunction : -# 2435| mu2435_2(unknown) = AliasedDefinition : -# 2435| mu2435_3(unknown) = InitializeNonLocal : -# 2435| r2435_4(glval) = VariableAddress[c] : -# 2435| mu2435_5(ClassWithDestructor) = InitializeParameter[c] : &:r2435_4 -# 2437| v2437_1(void) = NoOp : -# 2435| v2435_6(void) = ReturnVoid : -# 2435| v2435_7(void) = AliasedUse : ~m? -# 2435| v2435_8(void) = ExitFunction : +# 2437| void param_with_destructor_by_value(ClassWithDestructor) +# 2437| Block 0 +# 2437| v2437_1(void) = EnterFunction : +# 2437| mu2437_2(unknown) = AliasedDefinition : +# 2437| mu2437_3(unknown) = InitializeNonLocal : +# 2437| r2437_4(glval) = VariableAddress[c] : +# 2437| mu2437_5(ClassWithDestructor) = InitializeParameter[c] : &:r2437_4 +# 2439| v2439_1(void) = NoOp : +# 2437| v2437_6(void) = ReturnVoid : +# 2437| v2437_7(void) = AliasedUse : ~m? +# 2437| v2437_8(void) = ExitFunction : -# 2439| void param_with_destructor_by_pointer(ClassWithDestructor*) -# 2439| Block 0 -# 2439| v2439_1(void) = EnterFunction : -# 2439| mu2439_2(unknown) = AliasedDefinition : -# 2439| mu2439_3(unknown) = InitializeNonLocal : -# 2439| r2439_4(glval) = VariableAddress[c] : -# 2439| mu2439_5(ClassWithDestructor *) = InitializeParameter[c] : &:r2439_4 -# 2439| r2439_6(ClassWithDestructor *) = Load[c] : &:r2439_4, ~m? -# 2439| mu2439_7(unknown) = InitializeIndirection[c] : &:r2439_6 -# 2441| v2441_1(void) = NoOp : -# 2439| v2439_8(void) = ReturnIndirection[c] : &:r2439_6, ~m? -# 2439| v2439_9(void) = ReturnVoid : -# 2439| v2439_10(void) = AliasedUse : ~m? -# 2439| v2439_11(void) = ExitFunction : +# 2441| void param_with_destructor_by_pointer(ClassWithDestructor*) +# 2441| Block 0 +# 2441| v2441_1(void) = EnterFunction : +# 2441| mu2441_2(unknown) = AliasedDefinition : +# 2441| mu2441_3(unknown) = InitializeNonLocal : +# 2441| r2441_4(glval) = VariableAddress[c] : +# 2441| mu2441_5(ClassWithDestructor *) = InitializeParameter[c] : &:r2441_4 +# 2441| r2441_6(ClassWithDestructor *) = Load[c] : &:r2441_4, ~m? +# 2441| mu2441_7(unknown) = InitializeIndirection[c] : &:r2441_6 +# 2443| v2443_1(void) = NoOp : +# 2441| v2441_8(void) = ReturnIndirection[c] : &:r2441_6, ~m? +# 2441| v2441_9(void) = ReturnVoid : +# 2441| v2441_10(void) = AliasedUse : ~m? +# 2441| v2441_11(void) = ExitFunction : -# 2443| void param_with_destructor_by_ref(ClassWithDestructor&) -# 2443| Block 0 -# 2443| v2443_1(void) = EnterFunction : -# 2443| mu2443_2(unknown) = AliasedDefinition : -# 2443| mu2443_3(unknown) = InitializeNonLocal : -# 2443| r2443_4(glval) = VariableAddress[c] : -# 2443| mu2443_5(ClassWithDestructor &) = InitializeParameter[c] : &:r2443_4 -# 2443| r2443_6(ClassWithDestructor &) = Load[c] : &:r2443_4, ~m? -# 2443| mu2443_7(unknown) = InitializeIndirection[c] : &:r2443_6 -# 2445| v2445_1(void) = NoOp : -# 2443| v2443_8(void) = ReturnIndirection[c] : &:r2443_6, ~m? -# 2443| v2443_9(void) = ReturnVoid : -# 2443| v2443_10(void) = AliasedUse : ~m? -# 2443| v2443_11(void) = ExitFunction : +# 2445| void param_with_destructor_by_ref(ClassWithDestructor&) +# 2445| Block 0 +# 2445| v2445_1(void) = EnterFunction : +# 2445| mu2445_2(unknown) = AliasedDefinition : +# 2445| mu2445_3(unknown) = InitializeNonLocal : +# 2445| r2445_4(glval) = VariableAddress[c] : +# 2445| mu2445_5(ClassWithDestructor &) = InitializeParameter[c] : &:r2445_4 +# 2445| r2445_6(ClassWithDestructor &) = Load[c] : &:r2445_4, ~m? +# 2445| mu2445_7(unknown) = InitializeIndirection[c] : &:r2445_6 +# 2447| v2447_1(void) = NoOp : +# 2445| v2445_8(void) = ReturnIndirection[c] : &:r2445_6, ~m? +# 2445| v2445_9(void) = ReturnVoid : +# 2445| v2445_10(void) = AliasedUse : ~m? +# 2445| v2445_11(void) = ExitFunction : -# 2447| void param_with_destructor_by_rref(ClassWithDestructor&&) -# 2447| Block 0 -# 2447| v2447_1(void) = EnterFunction : -# 2447| mu2447_2(unknown) = AliasedDefinition : -# 2447| mu2447_3(unknown) = InitializeNonLocal : -# 2447| r2447_4(glval) = VariableAddress[c] : -# 2447| mu2447_5(ClassWithDestructor &&) = InitializeParameter[c] : &:r2447_4 -# 2447| r2447_6(ClassWithDestructor &&) = Load[c] : &:r2447_4, ~m? -# 2447| mu2447_7(unknown) = InitializeIndirection[c] : &:r2447_6 -# 2449| v2449_1(void) = NoOp : -# 2447| v2447_8(void) = ReturnIndirection[c] : &:r2447_6, ~m? -# 2447| v2447_9(void) = ReturnVoid : -# 2447| v2447_10(void) = AliasedUse : ~m? -# 2447| v2447_11(void) = ExitFunction : +# 2449| void param_with_destructor_by_rref(ClassWithDestructor&&) +# 2449| Block 0 +# 2449| v2449_1(void) = EnterFunction : +# 2449| mu2449_2(unknown) = AliasedDefinition : +# 2449| mu2449_3(unknown) = InitializeNonLocal : +# 2449| r2449_4(glval) = VariableAddress[c] : +# 2449| mu2449_5(ClassWithDestructor &&) = InitializeParameter[c] : &:r2449_4 +# 2449| r2449_6(ClassWithDestructor &&) = Load[c] : &:r2449_4, ~m? +# 2449| mu2449_7(unknown) = InitializeIndirection[c] : &:r2449_6 +# 2451| v2451_1(void) = NoOp : +# 2449| v2449_8(void) = ReturnIndirection[c] : &:r2449_6, ~m? +# 2449| v2449_9(void) = ReturnVoid : +# 2449| v2449_10(void) = AliasedUse : ~m? +# 2449| v2449_11(void) = ExitFunction : -# 2451| void rethrow_with_destruction(int) -# 2451| Block 0 -# 2451| v2451_1(void) = EnterFunction : -# 2451| mu2451_2(unknown) = AliasedDefinition : -# 2451| mu2451_3(unknown) = InitializeNonLocal : -# 2451| r2451_4(glval) = VariableAddress[x] : -# 2451| mu2451_5(int) = InitializeParameter[x] : &:r2451_4 -# 2452| r2452_1(glval) = VariableAddress[c] : -# 2452| mu2452_2(ClassWithDestructor) = Uninitialized[c] : &:r2452_1 -# 2452| r2452_3(glval) = FunctionAddress[ClassWithDestructor] : -# 2452| v2452_4(void) = Call[ClassWithDestructor] : func:r2452_3, this:r2452_1 -# 2452| mu2452_5(unknown) = ^CallSideEffect : ~m? -# 2452| mu2452_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2452_1 -# 2453| v2453_1(void) = ReThrow : +# 2453| void rethrow_with_destruction(int) +# 2453| Block 0 +# 2453| v2453_1(void) = EnterFunction : +# 2453| mu2453_2(unknown) = AliasedDefinition : +# 2453| mu2453_3(unknown) = InitializeNonLocal : +# 2453| r2453_4(glval) = VariableAddress[x] : +# 2453| mu2453_5(int) = InitializeParameter[x] : &:r2453_4 # 2454| r2454_1(glval) = VariableAddress[c] : -# 2454| r2454_2(glval) = FunctionAddress[~ClassWithDestructor] : -# 2454| v2454_3(void) = Call[~ClassWithDestructor] : func:r2454_2, this:r2454_1 -# 2454| mu2454_4(unknown) = ^CallSideEffect : ~m? -# 2454| v2454_5(void) = ^IndirectReadSideEffect[-1] : &:r2454_1, ~m? +# 2454| mu2454_2(ClassWithDestructor) = Uninitialized[c] : &:r2454_1 +# 2454| r2454_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2454| v2454_4(void) = Call[ClassWithDestructor] : func:r2454_3, this:r2454_1 +# 2454| mu2454_5(unknown) = ^CallSideEffect : ~m? # 2454| mu2454_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2454_1 +# 2455| v2455_1(void) = ReThrow : +# 2456| r2456_1(glval) = VariableAddress[c] : +# 2456| r2456_2(glval) = FunctionAddress[~ClassWithDestructor] : +# 2456| v2456_3(void) = Call[~ClassWithDestructor] : func:r2456_2, this:r2456_1 +# 2456| mu2456_4(unknown) = ^CallSideEffect : ~m? +# 2456| v2456_5(void) = ^IndirectReadSideEffect[-1] : &:r2456_1, ~m? +# 2456| mu2456_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2456_1 #-----| C++ Exception -> Block 3 -# 2451| Block 1 -# 2451| v2451_6(void) = AliasedUse : ~m? -# 2451| v2451_7(void) = ExitFunction : +# 2453| Block 1 +# 2453| v2453_6(void) = AliasedUse : ~m? +# 2453| v2453_7(void) = ExitFunction : -# 2451| Block 2 -# 2451| v2451_8(void) = ReturnVoid : +# 2453| Block 2 +# 2453| v2453_8(void) = ReturnVoid : #-----| Goto -> Block 1 -# 2451| Block 3 -# 2451| v2451_9(void) = Unwind : +# 2453| Block 3 +# 2453| v2453_9(void) = Unwind : #-----| Goto -> Block 1 -# 2460| void new_with_destructor(ClassWithDestructor) -# 2460| Block 0 -# 2460| v2460_1(void) = EnterFunction : -# 2460| mu2460_2(unknown) = AliasedDefinition : -# 2460| mu2460_3(unknown) = InitializeNonLocal : -# 2460| r2460_4(glval) = VariableAddress[a] : -# 2460| mu2460_5(ClassWithDestructor) = InitializeParameter[a] : &:r2460_4 -# 2462| r2462_1(glval) = VariableAddress[b] : -# 2462| r2462_2(glval) = FunctionAddress[operator new] : -# 2462| r2462_3(unsigned long) = Constant[1] : -# 2462| r2462_4(void *) = Call[operator new] : func:r2462_2, 0:r2462_3 -# 2462| mu2462_5(unknown) = ^CallSideEffect : ~m? -# 2462| mu2462_6(unknown) = ^InitializeDynamicAllocation : &:r2462_4 -# 2462| r2462_7(ByValueConstructor *) = Convert : r2462_4 -# 2462| r2462_8(glval) = FunctionAddress[ByValueConstructor] : -# 2462| r2462_9(glval) = VariableAddress[#temp2462:52] : -# 2462| r2462_10(glval) = VariableAddress[a] : -# 2462| r2462_11(ClassWithDestructor) = Load[a] : &:r2462_10, ~m? -# 2462| mu2462_12(ClassWithDestructor) = Store[#temp2462:52] : &:r2462_9, r2462_11 -# 2462| r2462_13(ClassWithDestructor) = Load[#temp2462:52] : &:r2462_9, ~m? -# 2462| v2462_14(void) = Call[ByValueConstructor] : func:r2462_8, this:r2462_7, 0:r2462_13 -# 2462| mu2462_15(unknown) = ^CallSideEffect : ~m? -# 2462| mu2462_16(ByValueConstructor) = ^IndirectMayWriteSideEffect[-1] : &:r2462_7 -# 2462| r2462_17(glval) = CopyValue : r2462_9 -# 2462| r2462_18(glval) = FunctionAddress[~ClassWithDestructor] : -# 2462| v2462_19(void) = Call[~ClassWithDestructor] : func:r2462_18, this:r2462_17 -# 2462| mu2462_20(unknown) = ^CallSideEffect : ~m? -# 2462| v2462_21(void) = ^IndirectReadSideEffect[-1] : &:r2462_17, ~m? -# 2462| mu2462_22(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2462_17 -# 2462| mu2462_23(ByValueConstructor *) = Store[b] : &:r2462_1, r2462_7 -# 2463| v2463_1(void) = NoOp : -# 2460| v2460_6(void) = ReturnVoid : -# 2460| v2460_7(void) = AliasedUse : ~m? -# 2460| v2460_8(void) = ExitFunction : +# 2462| void new_with_destructor(ClassWithDestructor) +# 2462| Block 0 +# 2462| v2462_1(void) = EnterFunction : +# 2462| mu2462_2(unknown) = AliasedDefinition : +# 2462| mu2462_3(unknown) = InitializeNonLocal : +# 2462| r2462_4(glval) = VariableAddress[a] : +# 2462| mu2462_5(ClassWithDestructor) = InitializeParameter[a] : &:r2462_4 +# 2464| r2464_1(glval) = VariableAddress[b] : +# 2464| r2464_2(glval) = FunctionAddress[operator new] : +# 2464| r2464_3(unsigned long) = Constant[1] : +# 2464| r2464_4(void *) = Call[operator new] : func:r2464_2, 0:r2464_3 +# 2464| mu2464_5(unknown) = ^CallSideEffect : ~m? +# 2464| mu2464_6(unknown) = ^InitializeDynamicAllocation : &:r2464_4 +# 2464| r2464_7(ByValueConstructor *) = Convert : r2464_4 +# 2464| r2464_8(glval) = FunctionAddress[ByValueConstructor] : +# 2464| r2464_9(glval) = VariableAddress[#temp2464:52] : +# 2464| r2464_10(glval) = VariableAddress[a] : +# 2464| r2464_11(ClassWithDestructor) = Load[a] : &:r2464_10, ~m? +# 2464| mu2464_12(ClassWithDestructor) = Store[#temp2464:52] : &:r2464_9, r2464_11 +# 2464| r2464_13(ClassWithDestructor) = Load[#temp2464:52] : &:r2464_9, ~m? +# 2464| v2464_14(void) = Call[ByValueConstructor] : func:r2464_8, this:r2464_7, 0:r2464_13 +# 2464| mu2464_15(unknown) = ^CallSideEffect : ~m? +# 2464| mu2464_16(ByValueConstructor) = ^IndirectMayWriteSideEffect[-1] : &:r2464_7 +# 2464| r2464_17(glval) = CopyValue : r2464_9 +# 2464| r2464_18(glval) = FunctionAddress[~ClassWithDestructor] : +# 2464| v2464_19(void) = Call[~ClassWithDestructor] : func:r2464_18, this:r2464_17 +# 2464| mu2464_20(unknown) = ^CallSideEffect : ~m? +# 2464| v2464_21(void) = ^IndirectReadSideEffect[-1] : &:r2464_17, ~m? +# 2464| mu2464_22(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2464_17 +# 2464| mu2464_23(ByValueConstructor *) = Store[b] : &:r2464_1, r2464_7 +# 2465| v2465_1(void) = NoOp : +# 2462| v2462_6(void) = ReturnVoid : +# 2462| v2462_7(void) = AliasedUse : ~m? +# 2462| v2462_8(void) = ExitFunction : -# 2479| void rvalue_conversion_with_destructor::test() -# 2479| Block 0 -# 2479| v2479_1(void) = EnterFunction : -# 2479| mu2479_2(unknown) = AliasedDefinition : -# 2479| mu2479_3(unknown) = InitializeNonLocal : -# 2481| r2481_1(glval) = VariableAddress[a] : -# 2481| r2481_2(glval) = VariableAddress[#temp2481:18] : -# 2481| r2481_3(glval) = FunctionAddress[get] : -# 2481| r2481_4(B) = Call[get] : func:r2481_3 -# 2481| mu2481_5(unknown) = ^CallSideEffect : ~m? -# 2481| mu2481_6(B) = Store[#temp2481:18] : &:r2481_2, r2481_4 -# 2481| r2481_7(glval) = Convert : r2481_2 -# 2481| r2481_8(glval) = FunctionAddress[operator->] : -# 2481| r2481_9(A *) = Call[operator->] : func:r2481_8, this:r2481_7 -# 2481| mu2481_10(unknown) = ^CallSideEffect : ~m? -# 2481| v2481_11(void) = ^IndirectReadSideEffect[-1] : &:r2481_7, ~m? -# 2481| r2481_12(glval) = FieldAddress[a] : r2481_9 -# 2481| r2481_13(glval) = CopyValue : r2481_2 -# 2481| r2481_14(glval) = FunctionAddress[~B] : -# 2481| v2481_15(void) = Call[~B] : func:r2481_14, this:r2481_13 -# 2481| mu2481_16(unknown) = ^CallSideEffect : ~m? -# 2481| v2481_17(void) = ^IndirectReadSideEffect[-1] : &:r2481_13, ~m? -# 2481| mu2481_18(B) = ^IndirectMayWriteSideEffect[-1] : &:r2481_13 -# 2481| r2481_19(unsigned int) = Load[?] : &:r2481_12, ~m? -# 2481| mu2481_20(unsigned int) = Store[a] : &:r2481_1, r2481_19 -# 2482| v2482_1(void) = NoOp : -# 2479| v2479_4(void) = ReturnVoid : -# 2479| v2479_5(void) = AliasedUse : ~m? -# 2479| v2479_6(void) = ExitFunction : +# 2481| void rvalue_conversion_with_destructor::test() +# 2481| Block 0 +# 2481| v2481_1(void) = EnterFunction : +# 2481| mu2481_2(unknown) = AliasedDefinition : +# 2481| mu2481_3(unknown) = InitializeNonLocal : +# 2483| r2483_1(glval) = VariableAddress[a] : +# 2483| r2483_2(glval) = VariableAddress[#temp2483:18] : +# 2483| r2483_3(glval) = FunctionAddress[get] : +# 2483| r2483_4(B) = Call[get] : func:r2483_3 +# 2483| mu2483_5(unknown) = ^CallSideEffect : ~m? +# 2483| mu2483_6(B) = Store[#temp2483:18] : &:r2483_2, r2483_4 +# 2483| r2483_7(glval) = Convert : r2483_2 +# 2483| r2483_8(glval) = FunctionAddress[operator->] : +# 2483| r2483_9(A *) = Call[operator->] : func:r2483_8, this:r2483_7 +# 2483| mu2483_10(unknown) = ^CallSideEffect : ~m? +# 2483| v2483_11(void) = ^IndirectReadSideEffect[-1] : &:r2483_7, ~m? +# 2483| r2483_12(glval) = FieldAddress[a] : r2483_9 +# 2483| r2483_13(glval) = CopyValue : r2483_2 +# 2483| r2483_14(glval) = FunctionAddress[~B] : +# 2483| v2483_15(void) = Call[~B] : func:r2483_14, this:r2483_13 +# 2483| mu2483_16(unknown) = ^CallSideEffect : ~m? +# 2483| v2483_17(void) = ^IndirectReadSideEffect[-1] : &:r2483_13, ~m? +# 2483| mu2483_18(B) = ^IndirectMayWriteSideEffect[-1] : &:r2483_13 +# 2483| r2483_19(unsigned int) = Load[?] : &:r2483_12, ~m? +# 2483| mu2483_20(unsigned int) = Store[a] : &:r2483_1, r2483_19 +# 2484| v2484_1(void) = NoOp : +# 2481| v2481_4(void) = ReturnVoid : +# 2481| v2481_5(void) = AliasedUse : ~m? +# 2481| v2481_6(void) = ExitFunction : -# 2485| void destructor_without_block(bool) -# 2485| Block 0 -# 2485| v2485_1(void) = EnterFunction : -# 2485| mu2485_2(unknown) = AliasedDefinition : -# 2485| mu2485_3(unknown) = InitializeNonLocal : -# 2485| r2485_4(glval) = VariableAddress[b] : -# 2485| mu2485_5(bool) = InitializeParameter[b] : &:r2485_4 -# 2487| r2487_1(glval) = VariableAddress[b] : -# 2487| r2487_2(bool) = Load[b] : &:r2487_1, ~m? -# 2487| v2487_3(void) = ConditionalBranch : r2487_2 +# 2487| void destructor_without_block(bool) +# 2487| Block 0 +# 2487| v2487_1(void) = EnterFunction : +# 2487| mu2487_2(unknown) = AliasedDefinition : +# 2487| mu2487_3(unknown) = InitializeNonLocal : +# 2487| r2487_4(glval) = VariableAddress[b] : +# 2487| mu2487_5(bool) = InitializeParameter[b] : &:r2487_4 +# 2489| r2489_1(glval) = VariableAddress[b] : +# 2489| r2489_2(bool) = Load[b] : &:r2489_1, ~m? +# 2489| v2489_3(void) = ConditionalBranch : r2489_2 #-----| False -> Block 2 #-----| True -> Block 1 -# 2488| Block 1 -# 2488| r2488_1(glval) = VariableAddress[c] : -# 2488| mu2488_2(ClassWithDestructor) = Uninitialized[c] : &:r2488_1 -# 2488| r2488_3(glval) = FunctionAddress[ClassWithDestructor] : -# 2488| v2488_4(void) = Call[ClassWithDestructor] : func:r2488_3, this:r2488_1 -# 2488| mu2488_5(unknown) = ^CallSideEffect : ~m? -# 2488| mu2488_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2488_1 +# 2490| Block 1 +# 2490| r2490_1(glval) = VariableAddress[c] : +# 2490| mu2490_2(ClassWithDestructor) = Uninitialized[c] : &:r2490_1 +# 2490| r2490_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2490| v2490_4(void) = Call[ClassWithDestructor] : func:r2490_3, this:r2490_1 +# 2490| mu2490_5(unknown) = ^CallSideEffect : ~m? +# 2490| mu2490_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2490_1 #-----| r0_1(glval) = VariableAddress[c] : #-----| r0_2(glval) = FunctionAddress[~ClassWithDestructor] : #-----| v0_3(void) = Call[~ClassWithDestructor] : func:r0_2, this:r0_1 @@ -17077,20 +17077,20 @@ ir.cpp: #-----| mu0_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r0_1 #-----| Goto -> Block 2 -# 2490| Block 2 -# 2490| r2490_1(glval) = VariableAddress[b] : -# 2490| r2490_2(bool) = Load[b] : &:r2490_1, ~m? -# 2490| v2490_3(void) = ConditionalBranch : r2490_2 +# 2492| Block 2 +# 2492| r2492_1(glval) = VariableAddress[b] : +# 2492| r2492_2(bool) = Load[b] : &:r2492_1, ~m? +# 2492| v2492_3(void) = ConditionalBranch : r2492_2 #-----| False -> Block 4 #-----| True -> Block 3 -# 2491| Block 3 -# 2491| r2491_1(glval) = VariableAddress[d] : -# 2491| mu2491_2(ClassWithDestructor) = Uninitialized[d] : &:r2491_1 -# 2491| r2491_3(glval) = FunctionAddress[ClassWithDestructor] : -# 2491| v2491_4(void) = Call[ClassWithDestructor] : func:r2491_3, this:r2491_1 -# 2491| mu2491_5(unknown) = ^CallSideEffect : ~m? -# 2491| mu2491_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2491_1 +# 2493| Block 3 +# 2493| r2493_1(glval) = VariableAddress[d] : +# 2493| mu2493_2(ClassWithDestructor) = Uninitialized[d] : &:r2493_1 +# 2493| r2493_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2493| v2493_4(void) = Call[ClassWithDestructor] : func:r2493_3, this:r2493_1 +# 2493| mu2493_5(unknown) = ^CallSideEffect : ~m? +# 2493| mu2493_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2493_1 #-----| r0_7(glval) = VariableAddress[d] : #-----| r0_8(glval) = FunctionAddress[~ClassWithDestructor] : #-----| v0_9(void) = Call[~ClassWithDestructor] : func:r0_8, this:r0_7 @@ -17099,13 +17099,13 @@ ir.cpp: #-----| mu0_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r0_7 #-----| Goto -> Block 5 -# 2493| Block 4 -# 2493| r2493_1(glval) = VariableAddress[e] : -# 2493| mu2493_2(ClassWithDestructor) = Uninitialized[e] : &:r2493_1 -# 2493| r2493_3(glval) = FunctionAddress[ClassWithDestructor] : -# 2493| v2493_4(void) = Call[ClassWithDestructor] : func:r2493_3, this:r2493_1 -# 2493| mu2493_5(unknown) = ^CallSideEffect : ~m? -# 2493| mu2493_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2493_1 +# 2495| Block 4 +# 2495| r2495_1(glval) = VariableAddress[e] : +# 2495| mu2495_2(ClassWithDestructor) = Uninitialized[e] : &:r2495_1 +# 2495| r2495_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2495| v2495_4(void) = Call[ClassWithDestructor] : func:r2495_3, this:r2495_1 +# 2495| mu2495_5(unknown) = ^CallSideEffect : ~m? +# 2495| mu2495_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2495_1 #-----| r0_13(glval) = VariableAddress[e] : #-----| r0_14(glval) = FunctionAddress[~ClassWithDestructor] : #-----| v0_15(void) = Call[~ClassWithDestructor] : func:r0_14, this:r0_13 @@ -17114,20 +17114,20 @@ ir.cpp: #-----| mu0_18(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r0_13 #-----| Goto -> Block 5 -# 2495| Block 5 -# 2495| r2495_1(glval) = VariableAddress[b] : -# 2495| r2495_2(bool) = Load[b] : &:r2495_1, ~m? -# 2495| v2495_3(void) = ConditionalBranch : r2495_2 +# 2497| Block 5 +# 2497| r2497_1(glval) = VariableAddress[b] : +# 2497| r2497_2(bool) = Load[b] : &:r2497_1, ~m? +# 2497| v2497_3(void) = ConditionalBranch : r2497_2 #-----| False -> Block 7 #-----| True -> Block 6 -# 2496| Block 6 -# 2496| r2496_1(glval) = VariableAddress[f] : -# 2496| mu2496_2(ClassWithDestructor) = Uninitialized[f] : &:r2496_1 -# 2496| r2496_3(glval) = FunctionAddress[ClassWithDestructor] : -# 2496| v2496_4(void) = Call[ClassWithDestructor] : func:r2496_3, this:r2496_1 -# 2496| mu2496_5(unknown) = ^CallSideEffect : ~m? -# 2496| mu2496_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2496_1 +# 2498| Block 6 +# 2498| r2498_1(glval) = VariableAddress[f] : +# 2498| mu2498_2(ClassWithDestructor) = Uninitialized[f] : &:r2498_1 +# 2498| r2498_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2498| v2498_4(void) = Call[ClassWithDestructor] : func:r2498_3, this:r2498_1 +# 2498| mu2498_5(unknown) = ^CallSideEffect : ~m? +# 2498| mu2498_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2498_1 #-----| r0_19(glval) = VariableAddress[f] : #-----| r0_20(glval) = FunctionAddress[~ClassWithDestructor] : #-----| v0_21(void) = Call[~ClassWithDestructor] : func:r0_20, this:r0_19 @@ -17136,1243 +17136,1229 @@ ir.cpp: #-----| mu0_24(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r0_19 #-----| Goto (back edge) -> Block 5 -# 2498| Block 7 -# 2498| r2498_1(glval) = VariableAddress[i] : -# 2498| r2498_2(int) = Constant[0] : -# 2498| mu2498_3(int) = Store[i] : &:r2498_1, r2498_2 +# 2500| Block 7 +# 2500| r2500_1(glval) = VariableAddress[i] : +# 2500| r2500_2(int) = Constant[0] : +# 2500| mu2500_3(int) = Store[i] : &:r2500_1, r2500_2 #-----| Goto -> Block 8 -# 2498| Block 8 -# 2498| r2498_4(glval) = VariableAddress[i] : -# 2498| r2498_5(int) = Load[i] : &:r2498_4, ~m? -# 2498| r2498_6(int) = Constant[42] : -# 2498| r2498_7(bool) = CompareLT : r2498_5, r2498_6 -# 2498| v2498_8(void) = ConditionalBranch : r2498_7 +# 2500| Block 8 +# 2500| r2500_4(glval) = VariableAddress[i] : +# 2500| r2500_5(int) = Load[i] : &:r2500_4, ~m? +# 2500| r2500_6(int) = Constant[42] : +# 2500| r2500_7(bool) = CompareLT : r2500_5, r2500_6 +# 2500| v2500_8(void) = ConditionalBranch : r2500_7 #-----| False -> Block 10 #-----| True -> Block 9 -# 2499| Block 9 -# 2499| r2499_1(glval) = VariableAddress[g] : -# 2499| mu2499_2(ClassWithDestructor) = Uninitialized[g] : &:r2499_1 -# 2499| r2499_3(glval) = FunctionAddress[ClassWithDestructor] : -# 2499| v2499_4(void) = Call[ClassWithDestructor] : func:r2499_3, this:r2499_1 -# 2499| mu2499_5(unknown) = ^CallSideEffect : ~m? -# 2499| mu2499_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2499_1 +# 2501| Block 9 +# 2501| r2501_1(glval) = VariableAddress[g] : +# 2501| mu2501_2(ClassWithDestructor) = Uninitialized[g] : &:r2501_1 +# 2501| r2501_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2501| v2501_4(void) = Call[ClassWithDestructor] : func:r2501_3, this:r2501_1 +# 2501| mu2501_5(unknown) = ^CallSideEffect : ~m? +# 2501| mu2501_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2501_1 #-----| r0_25(glval) = VariableAddress[g] : #-----| r0_26(glval) = FunctionAddress[~ClassWithDestructor] : #-----| v0_27(void) = Call[~ClassWithDestructor] : func:r0_26, this:r0_25 #-----| mu0_28(unknown) = ^CallSideEffect : ~m? #-----| v0_29(void) = ^IndirectReadSideEffect[-1] : &:r0_25, ~m? #-----| mu0_30(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r0_25 -# 2498| r2498_9(glval) = VariableAddress[i] : -# 2498| r2498_10(int) = Load[i] : &:r2498_9, ~m? -# 2498| r2498_11(int) = Constant[1] : -# 2498| r2498_12(int) = Add : r2498_10, r2498_11 -# 2498| mu2498_13(int) = Store[i] : &:r2498_9, r2498_12 +# 2500| r2500_9(glval) = VariableAddress[i] : +# 2500| r2500_10(int) = Load[i] : &:r2500_9, ~m? +# 2500| r2500_11(int) = Constant[1] : +# 2500| r2500_12(int) = Add : r2500_10, r2500_11 +# 2500| mu2500_13(int) = Store[i] : &:r2500_9, r2500_12 #-----| Goto (back edge) -> Block 8 -# 2500| Block 10 -# 2500| v2500_1(void) = NoOp : -# 2485| v2485_6(void) = ReturnVoid : -# 2485| v2485_7(void) = AliasedUse : ~m? -# 2485| v2485_8(void) = ExitFunction : +# 2502| Block 10 +# 2502| v2502_1(void) = NoOp : +# 2487| v2487_6(void) = ReturnVoid : +# 2487| v2487_7(void) = AliasedUse : ~m? +# 2487| v2487_8(void) = ExitFunction : -# 2502| void destruction_in_switch_1(int) -# 2502| Block 0 -# 2502| v2502_1(void) = EnterFunction : -# 2502| mu2502_2(unknown) = AliasedDefinition : -# 2502| mu2502_3(unknown) = InitializeNonLocal : -# 2502| r2502_4(glval) = VariableAddress[c] : -# 2502| mu2502_5(int) = InitializeParameter[c] : &:r2502_4 -# 2503| r2503_1(glval) = VariableAddress[c] : -# 2503| r2503_2(int) = Load[c] : &:r2503_1, ~m? -# 2503| v2503_3(void) = Switch : r2503_2 +# 2504| void destruction_in_switch_1(int) +# 2504| Block 0 +# 2504| v2504_1(void) = EnterFunction : +# 2504| mu2504_2(unknown) = AliasedDefinition : +# 2504| mu2504_3(unknown) = InitializeNonLocal : +# 2504| r2504_4(glval) = VariableAddress[c] : +# 2504| mu2504_5(int) = InitializeParameter[c] : &:r2504_4 +# 2505| r2505_1(glval) = VariableAddress[c] : +# 2505| r2505_2(int) = Load[c] : &:r2505_1, ~m? +# 2505| v2505_3(void) = Switch : r2505_2 #-----| Case[0] -> Block 1 #-----| Default -> Block 3 -# 2504| Block 1 -# 2504| v2504_1(void) = NoOp : -# 2505| r2505_1(glval) = VariableAddress[x] : -# 2505| mu2505_2(ClassWithDestructor) = Uninitialized[x] : &:r2505_1 -# 2505| r2505_3(glval) = FunctionAddress[ClassWithDestructor] : -# 2505| v2505_4(void) = Call[ClassWithDestructor] : func:r2505_3, this:r2505_1 -# 2505| mu2505_5(unknown) = ^CallSideEffect : ~m? -# 2505| mu2505_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2505_1 -# 2507| r2507_1(glval) = VariableAddress[x] : -# 2507| r2507_2(glval) = FunctionAddress[~ClassWithDestructor] : -# 2507| v2507_3(void) = Call[~ClassWithDestructor] : func:r2507_2, this:r2507_1 -# 2507| mu2507_4(unknown) = ^CallSideEffect : ~m? -# 2507| v2507_5(void) = ^IndirectReadSideEffect[-1] : &:r2507_1, ~m? -# 2507| mu2507_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2507_1 +# 2506| Block 1 # 2506| v2506_1(void) = NoOp : +# 2507| r2507_1(glval) = VariableAddress[x] : +# 2507| mu2507_2(ClassWithDestructor) = Uninitialized[x] : &:r2507_1 +# 2507| r2507_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2507| v2507_4(void) = Call[ClassWithDestructor] : func:r2507_3, this:r2507_1 +# 2507| mu2507_5(unknown) = ^CallSideEffect : ~m? +# 2507| mu2507_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2507_1 +# 2509| r2509_1(glval) = VariableAddress[x] : +# 2509| r2509_2(glval) = FunctionAddress[~ClassWithDestructor] : +# 2509| v2509_3(void) = Call[~ClassWithDestructor] : func:r2509_2, this:r2509_1 +# 2509| mu2509_4(unknown) = ^CallSideEffect : ~m? +# 2509| v2509_5(void) = ^IndirectReadSideEffect[-1] : &:r2509_1, ~m? +# 2509| mu2509_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2509_1 +# 2508| v2508_1(void) = NoOp : #-----| Goto -> Block 3 -# 2507| Block 2 -# 2507| r2507_7(glval) = VariableAddress[x] : -# 2507| r2507_8(glval) = FunctionAddress[~ClassWithDestructor] : -# 2507| v2507_9(void) = Call[~ClassWithDestructor] : func:r2507_8, this:r2507_7 -# 2507| mu2507_10(unknown) = ^CallSideEffect : ~m? -# 2507| v2507_11(void) = ^IndirectReadSideEffect[-1] : &:r2507_7, ~m? -# 2507| mu2507_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2507_7 +# 2509| Block 2 +# 2509| r2509_7(glval) = VariableAddress[x] : +# 2509| r2509_8(glval) = FunctionAddress[~ClassWithDestructor] : +# 2509| v2509_9(void) = Call[~ClassWithDestructor] : func:r2509_8, this:r2509_7 +# 2509| mu2509_10(unknown) = ^CallSideEffect : ~m? +# 2509| v2509_11(void) = ^IndirectReadSideEffect[-1] : &:r2509_7, ~m? +# 2509| mu2509_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2509_7 #-----| Goto -> Block 3 -# 2508| Block 3 -# 2508| v2508_1(void) = NoOp : -# 2509| v2509_1(void) = NoOp : -# 2502| v2502_6(void) = ReturnVoid : -# 2502| v2502_7(void) = AliasedUse : ~m? -# 2502| v2502_8(void) = ExitFunction : +# 2510| Block 3 +# 2510| v2510_1(void) = NoOp : +# 2511| v2511_1(void) = NoOp : +# 2504| v2504_6(void) = ReturnVoid : +# 2504| v2504_7(void) = AliasedUse : ~m? +# 2504| v2504_8(void) = ExitFunction : -# 2511| void destruction_in_switch_2(int) -# 2511| Block 0 -# 2511| v2511_1(void) = EnterFunction : -# 2511| mu2511_2(unknown) = AliasedDefinition : -# 2511| mu2511_3(unknown) = InitializeNonLocal : -# 2511| r2511_4(glval) = VariableAddress[c] : -# 2511| mu2511_5(int) = InitializeParameter[c] : &:r2511_4 -# 2512| r2512_1(glval) = VariableAddress[y] : -# 2512| mu2512_2(ClassWithDestructor) = Uninitialized[y] : &:r2512_1 -# 2512| r2512_3(glval) = FunctionAddress[ClassWithDestructor] : -# 2512| v2512_4(void) = Call[ClassWithDestructor] : func:r2512_3, this:r2512_1 -# 2512| mu2512_5(unknown) = ^CallSideEffect : ~m? -# 2512| mu2512_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2512_1 -# 2512| r2512_7(glval) = VariableAddress[c] : -# 2512| r2512_8(int) = Load[c] : &:r2512_7, ~m? -# 2512| v2512_9(void) = Switch : r2512_8 +# 2513| void destruction_in_switch_2(int) +# 2513| Block 0 +# 2513| v2513_1(void) = EnterFunction : +# 2513| mu2513_2(unknown) = AliasedDefinition : +# 2513| mu2513_3(unknown) = InitializeNonLocal : +# 2513| r2513_4(glval) = VariableAddress[c] : +# 2513| mu2513_5(int) = InitializeParameter[c] : &:r2513_4 +# 2514| r2514_1(glval) = VariableAddress[y] : +# 2514| mu2514_2(ClassWithDestructor) = Uninitialized[y] : &:r2514_1 +# 2514| r2514_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2514| v2514_4(void) = Call[ClassWithDestructor] : func:r2514_3, this:r2514_1 +# 2514| mu2514_5(unknown) = ^CallSideEffect : ~m? +# 2514| mu2514_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2514_1 +# 2514| r2514_7(glval) = VariableAddress[c] : +# 2514| r2514_8(int) = Load[c] : &:r2514_7, ~m? +# 2514| v2514_9(void) = Switch : r2514_8 #-----| Case[0] -> Block 1 #-----| Default -> Block 2 -# 2513| Block 1 -# 2513| v2513_1(void) = NoOp : -# 2519| r2519_1(glval) = VariableAddress[y] : -# 2519| r2519_2(glval) = FunctionAddress[~ClassWithDestructor] : -# 2519| v2519_3(void) = Call[~ClassWithDestructor] : func:r2519_2, this:r2519_1 -# 2519| mu2519_4(unknown) = ^CallSideEffect : ~m? -# 2519| v2519_5(void) = ^IndirectReadSideEffect[-1] : &:r2519_1, ~m? -# 2519| mu2519_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2519_1 -# 2514| v2514_1(void) = NoOp : -#-----| Goto -> Block 4 - -# 2516| Block 2 +# 2515| Block 1 +# 2515| v2515_1(void) = NoOp : +# 2521| r2521_1(glval) = VariableAddress[y] : +# 2521| r2521_2(glval) = FunctionAddress[~ClassWithDestructor] : +# 2521| v2521_3(void) = Call[~ClassWithDestructor] : func:r2521_2, this:r2521_1 +# 2521| mu2521_4(unknown) = ^CallSideEffect : ~m? +# 2521| v2521_5(void) = ^IndirectReadSideEffect[-1] : &:r2521_1, ~m? +# 2521| mu2521_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2521_1 # 2516| v2516_1(void) = NoOp : -# 2519| r2519_7(glval) = VariableAddress[y] : -# 2519| r2519_8(glval) = FunctionAddress[~ClassWithDestructor] : -# 2519| v2519_9(void) = Call[~ClassWithDestructor] : func:r2519_8, this:r2519_7 -# 2519| mu2519_10(unknown) = ^CallSideEffect : ~m? -# 2519| v2519_11(void) = ^IndirectReadSideEffect[-1] : &:r2519_7, ~m? -# 2519| mu2519_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2519_7 -# 2517| v2517_1(void) = NoOp : #-----| Goto -> Block 4 -# 2519| Block 3 -# 2519| r2519_13(glval) = VariableAddress[y] : -# 2519| r2519_14(glval) = FunctionAddress[~ClassWithDestructor] : -# 2519| v2519_15(void) = Call[~ClassWithDestructor] : func:r2519_14, this:r2519_13 -# 2519| mu2519_16(unknown) = ^CallSideEffect : ~m? -# 2519| v2519_17(void) = ^IndirectReadSideEffect[-1] : &:r2519_13, ~m? -# 2519| mu2519_18(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2519_13 +# 2518| Block 2 +# 2518| v2518_1(void) = NoOp : +# 2521| r2521_7(glval) = VariableAddress[y] : +# 2521| r2521_8(glval) = FunctionAddress[~ClassWithDestructor] : +# 2521| v2521_9(void) = Call[~ClassWithDestructor] : func:r2521_8, this:r2521_7 +# 2521| mu2521_10(unknown) = ^CallSideEffect : ~m? +# 2521| v2521_11(void) = ^IndirectReadSideEffect[-1] : &:r2521_7, ~m? +# 2521| mu2521_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2521_7 +# 2519| v2519_1(void) = NoOp : #-----| Goto -> Block 4 -# 2519| Block 4 -# 2519| v2519_19(void) = NoOp : -# 2520| v2520_1(void) = NoOp : -# 2511| v2511_6(void) = ReturnVoid : -# 2511| v2511_7(void) = AliasedUse : ~m? -# 2511| v2511_8(void) = ExitFunction : +# 2521| Block 3 +# 2521| r2521_13(glval) = VariableAddress[y] : +# 2521| r2521_14(glval) = FunctionAddress[~ClassWithDestructor] : +# 2521| v2521_15(void) = Call[~ClassWithDestructor] : func:r2521_14, this:r2521_13 +# 2521| mu2521_16(unknown) = ^CallSideEffect : ~m? +# 2521| v2521_17(void) = ^IndirectReadSideEffect[-1] : &:r2521_13, ~m? +# 2521| mu2521_18(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2521_13 +#-----| Goto -> Block 4 -# 2522| void destruction_in_switch_3(int) -# 2522| Block 0 -# 2522| v2522_1(void) = EnterFunction : -# 2522| mu2522_2(unknown) = AliasedDefinition : -# 2522| mu2522_3(unknown) = InitializeNonLocal : -# 2522| r2522_4(glval) = VariableAddress[c] : -# 2522| mu2522_5(int) = InitializeParameter[c] : &:r2522_4 -# 2523| r2523_1(glval) = VariableAddress[y] : -# 2523| mu2523_2(ClassWithDestructor) = Uninitialized[y] : &:r2523_1 -# 2523| r2523_3(glval) = FunctionAddress[ClassWithDestructor] : -# 2523| v2523_4(void) = Call[ClassWithDestructor] : func:r2523_3, this:r2523_1 -# 2523| mu2523_5(unknown) = ^CallSideEffect : ~m? -# 2523| mu2523_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2523_1 -# 2523| r2523_7(glval) = VariableAddress[c] : -# 2523| r2523_8(int) = Load[c] : &:r2523_7, ~m? -# 2523| v2523_9(void) = Switch : r2523_8 +# 2521| Block 4 +# 2521| v2521_19(void) = NoOp : +# 2522| v2522_1(void) = NoOp : +# 2513| v2513_6(void) = ReturnVoid : +# 2513| v2513_7(void) = AliasedUse : ~m? +# 2513| v2513_8(void) = ExitFunction : + +# 2524| void destruction_in_switch_3(int) +# 2524| Block 0 +# 2524| v2524_1(void) = EnterFunction : +# 2524| mu2524_2(unknown) = AliasedDefinition : +# 2524| mu2524_3(unknown) = InitializeNonLocal : +# 2524| r2524_4(glval) = VariableAddress[c] : +# 2524| mu2524_5(int) = InitializeParameter[c] : &:r2524_4 +# 2525| r2525_1(glval) = VariableAddress[y] : +# 2525| mu2525_2(ClassWithDestructor) = Uninitialized[y] : &:r2525_1 +# 2525| r2525_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2525| v2525_4(void) = Call[ClassWithDestructor] : func:r2525_3, this:r2525_1 +# 2525| mu2525_5(unknown) = ^CallSideEffect : ~m? +# 2525| mu2525_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2525_1 +# 2525| r2525_7(glval) = VariableAddress[c] : +# 2525| r2525_8(int) = Load[c] : &:r2525_7, ~m? +# 2525| v2525_9(void) = Switch : r2525_8 #-----| Case[0] -> Block 1 #-----| Default -> Block 3 -# 2524| Block 1 -# 2524| v2524_1(void) = NoOp : -# 2525| r2525_1(glval) = VariableAddress[x] : -# 2525| mu2525_2(ClassWithDestructor) = Uninitialized[x] : &:r2525_1 -# 2525| r2525_3(glval) = FunctionAddress[ClassWithDestructor] : -# 2525| v2525_4(void) = Call[ClassWithDestructor] : func:r2525_3, this:r2525_1 -# 2525| mu2525_5(unknown) = ^CallSideEffect : ~m? -# 2525| mu2525_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2525_1 -# 2527| r2527_1(glval) = VariableAddress[x] : -# 2527| r2527_2(glval) = FunctionAddress[~ClassWithDestructor] : -# 2527| v2527_3(void) = Call[~ClassWithDestructor] : func:r2527_2, this:r2527_1 -# 2527| mu2527_4(unknown) = ^CallSideEffect : ~m? -# 2527| v2527_5(void) = ^IndirectReadSideEffect[-1] : &:r2527_1, ~m? -# 2527| mu2527_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2527_1 -# 2531| r2531_1(glval) = VariableAddress[y] : -# 2531| r2531_2(glval) = FunctionAddress[~ClassWithDestructor] : -# 2531| v2531_3(void) = Call[~ClassWithDestructor] : func:r2531_2, this:r2531_1 -# 2531| mu2531_4(unknown) = ^CallSideEffect : ~m? -# 2531| v2531_5(void) = ^IndirectReadSideEffect[-1] : &:r2531_1, ~m? -# 2531| mu2531_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2531_1 +# 2526| Block 1 # 2526| v2526_1(void) = NoOp : +# 2527| r2527_1(glval) = VariableAddress[x] : +# 2527| mu2527_2(ClassWithDestructor) = Uninitialized[x] : &:r2527_1 +# 2527| r2527_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2527| v2527_4(void) = Call[ClassWithDestructor] : func:r2527_3, this:r2527_1 +# 2527| mu2527_5(unknown) = ^CallSideEffect : ~m? +# 2527| mu2527_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2527_1 +# 2529| r2529_1(glval) = VariableAddress[x] : +# 2529| r2529_2(glval) = FunctionAddress[~ClassWithDestructor] : +# 2529| v2529_3(void) = Call[~ClassWithDestructor] : func:r2529_2, this:r2529_1 +# 2529| mu2529_4(unknown) = ^CallSideEffect : ~m? +# 2529| v2529_5(void) = ^IndirectReadSideEffect[-1] : &:r2529_1, ~m? +# 2529| mu2529_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2529_1 +# 2533| r2533_1(glval) = VariableAddress[y] : +# 2533| r2533_2(glval) = FunctionAddress[~ClassWithDestructor] : +# 2533| v2533_3(void) = Call[~ClassWithDestructor] : func:r2533_2, this:r2533_1 +# 2533| mu2533_4(unknown) = ^CallSideEffect : ~m? +# 2533| v2533_5(void) = ^IndirectReadSideEffect[-1] : &:r2533_1, ~m? +# 2533| mu2533_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2533_1 +# 2528| v2528_1(void) = NoOp : #-----| Goto -> Block 5 -# 2527| Block 2 -# 2527| r2527_7(glval) = VariableAddress[x] : -# 2527| r2527_8(glval) = FunctionAddress[~ClassWithDestructor] : -# 2527| v2527_9(void) = Call[~ClassWithDestructor] : func:r2527_8, this:r2527_7 -# 2527| mu2527_10(unknown) = ^CallSideEffect : ~m? -# 2527| v2527_11(void) = ^IndirectReadSideEffect[-1] : &:r2527_7, ~m? -# 2527| mu2527_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2527_7 +# 2529| Block 2 +# 2529| r2529_7(glval) = VariableAddress[x] : +# 2529| r2529_8(glval) = FunctionAddress[~ClassWithDestructor] : +# 2529| v2529_9(void) = Call[~ClassWithDestructor] : func:r2529_8, this:r2529_7 +# 2529| mu2529_10(unknown) = ^CallSideEffect : ~m? +# 2529| v2529_11(void) = ^IndirectReadSideEffect[-1] : &:r2529_7, ~m? +# 2529| mu2529_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2529_7 #-----| Goto -> Block 3 -# 2528| Block 3 -# 2528| v2528_1(void) = NoOp : -# 2531| r2531_7(glval) = VariableAddress[y] : -# 2531| r2531_8(glval) = FunctionAddress[~ClassWithDestructor] : -# 2531| v2531_9(void) = Call[~ClassWithDestructor] : func:r2531_8, this:r2531_7 -# 2531| mu2531_10(unknown) = ^CallSideEffect : ~m? -# 2531| v2531_11(void) = ^IndirectReadSideEffect[-1] : &:r2531_7, ~m? -# 2531| mu2531_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2531_7 -# 2529| v2529_1(void) = NoOp : +# 2530| Block 3 +# 2530| v2530_1(void) = NoOp : +# 2533| r2533_7(glval) = VariableAddress[y] : +# 2533| r2533_8(glval) = FunctionAddress[~ClassWithDestructor] : +# 2533| v2533_9(void) = Call[~ClassWithDestructor] : func:r2533_8, this:r2533_7 +# 2533| mu2533_10(unknown) = ^CallSideEffect : ~m? +# 2533| v2533_11(void) = ^IndirectReadSideEffect[-1] : &:r2533_7, ~m? +# 2533| mu2533_12(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2533_7 +# 2531| v2531_1(void) = NoOp : #-----| Goto -> Block 5 -# 2531| Block 4 -# 2531| r2531_13(glval) = VariableAddress[y] : -# 2531| r2531_14(glval) = FunctionAddress[~ClassWithDestructor] : -# 2531| v2531_15(void) = Call[~ClassWithDestructor] : func:r2531_14, this:r2531_13 -# 2531| mu2531_16(unknown) = ^CallSideEffect : ~m? -# 2531| v2531_17(void) = ^IndirectReadSideEffect[-1] : &:r2531_13, ~m? -# 2531| mu2531_18(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2531_13 +# 2533| Block 4 +# 2533| r2533_13(glval) = VariableAddress[y] : +# 2533| r2533_14(glval) = FunctionAddress[~ClassWithDestructor] : +# 2533| v2533_15(void) = Call[~ClassWithDestructor] : func:r2533_14, this:r2533_13 +# 2533| mu2533_16(unknown) = ^CallSideEffect : ~m? +# 2533| v2533_17(void) = ^IndirectReadSideEffect[-1] : &:r2533_13, ~m? +# 2533| mu2533_18(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2533_13 #-----| Goto -> Block 5 -# 2531| Block 5 -# 2531| v2531_19(void) = NoOp : -# 2532| v2532_1(void) = NoOp : -# 2522| v2522_6(void) = ReturnVoid : -# 2522| v2522_7(void) = AliasedUse : ~m? -# 2522| v2522_8(void) = ExitFunction : +# 2533| Block 5 +# 2533| v2533_19(void) = NoOp : +# 2534| v2534_1(void) = NoOp : +# 2524| v2524_6(void) = ReturnVoid : +# 2524| v2524_7(void) = AliasedUse : ~m? +# 2524| v2524_8(void) = ExitFunction : -# 2534| void destructor_possibly_not_handled() -# 2534| Block 0 -# 2534| v2534_1(void) = EnterFunction : -# 2534| mu2534_2(unknown) = AliasedDefinition : -# 2534| mu2534_3(unknown) = InitializeNonLocal : -# 2535| r2535_1(glval) = VariableAddress[x] : -# 2535| mu2535_2(ClassWithDestructor) = Uninitialized[x] : &:r2535_1 -# 2535| r2535_3(glval) = FunctionAddress[ClassWithDestructor] : -# 2535| v2535_4(void) = Call[ClassWithDestructor] : func:r2535_3, this:r2535_1 -# 2535| mu2535_5(unknown) = ^CallSideEffect : ~m? -# 2535| mu2535_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2535_1 -# 2537| r2537_1(glval) = VariableAddress[#throw2537:5] : -# 2537| r2537_2(int) = Constant[42] : -# 2537| mu2537_3(int) = Store[#throw2537:5] : &:r2537_1, r2537_2 -# 2537| v2537_4(void) = ThrowValue : &:r2537_1, ~m? +# 2536| void destructor_possibly_not_handled() +# 2536| Block 0 +# 2536| v2536_1(void) = EnterFunction : +# 2536| mu2536_2(unknown) = AliasedDefinition : +# 2536| mu2536_3(unknown) = InitializeNonLocal : +# 2537| r2537_1(glval) = VariableAddress[x] : +# 2537| mu2537_2(ClassWithDestructor) = Uninitialized[x] : &:r2537_1 +# 2537| r2537_3(glval) = FunctionAddress[ClassWithDestructor] : +# 2537| v2537_4(void) = Call[ClassWithDestructor] : func:r2537_3, this:r2537_1 +# 2537| mu2537_5(unknown) = ^CallSideEffect : ~m? +# 2537| mu2537_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2537_1 +# 2539| r2539_1(glval) = VariableAddress[#throw2539:5] : +# 2539| r2539_2(int) = Constant[42] : +# 2539| mu2539_3(int) = Store[#throw2539:5] : &:r2539_1, r2539_2 +# 2539| v2539_4(void) = ThrowValue : &:r2539_1, ~m? #-----| C++ Exception -> Block 2 -# 2534| Block 1 -# 2534| v2534_4(void) = AliasedUse : ~m? -# 2534| v2534_5(void) = ExitFunction : +# 2536| Block 1 +# 2536| v2536_4(void) = AliasedUse : ~m? +# 2536| v2536_5(void) = ExitFunction : -# 2539| Block 2 -# 2539| v2539_1(void) = CatchByType[char] : +# 2541| Block 2 +# 2541| v2541_1(void) = CatchByType[char] : #-----| C++ Exception -> Block 4 #-----| Goto -> Block 3 -# 2539| Block 3 -# 2539| r2539_2(glval) = VariableAddress[(unnamed parameter 0)] : -# 2539| mu2539_3(char) = InitializeParameter[(unnamed parameter 0)] : &:r2539_2 -# 2539| v2539_4(void) = NoOp : -# 2541| v2541_1(void) = NoOp : -# 2541| r2541_2(glval) = VariableAddress[x] : -# 2541| r2541_3(glval) = FunctionAddress[~ClassWithDestructor] : -# 2541| v2541_4(void) = Call[~ClassWithDestructor] : func:r2541_3, this:r2541_2 -# 2541| mu2541_5(unknown) = ^CallSideEffect : ~m? -# 2541| v2541_6(void) = ^IndirectReadSideEffect[-1] : &:r2541_2, ~m? -# 2541| mu2541_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2541_2 -# 2534| v2534_6(void) = ReturnVoid : +# 2541| Block 3 +# 2541| r2541_2(glval) = VariableAddress[(unnamed parameter 0)] : +# 2541| mu2541_3(char) = InitializeParameter[(unnamed parameter 0)] : &:r2541_2 +# 2541| v2541_4(void) = NoOp : +# 2543| v2543_1(void) = NoOp : +# 2543| r2543_2(glval) = VariableAddress[x] : +# 2543| r2543_3(glval) = FunctionAddress[~ClassWithDestructor] : +# 2543| v2543_4(void) = Call[~ClassWithDestructor] : func:r2543_3, this:r2543_2 +# 2543| mu2543_5(unknown) = ^CallSideEffect : ~m? +# 2543| v2543_6(void) = ^IndirectReadSideEffect[-1] : &:r2543_2, ~m? +# 2543| mu2543_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2543_2 +# 2536| v2536_6(void) = ReturnVoid : #-----| Goto -> Block 1 -# 2541| Block 4 -# 2541| r2541_8(glval) = VariableAddress[x] : -# 2541| r2541_9(glval) = FunctionAddress[~ClassWithDestructor] : -# 2541| v2541_10(void) = Call[~ClassWithDestructor] : func:r2541_9, this:r2541_8 -# 2541| mu2541_11(unknown) = ^CallSideEffect : ~m? -# 2541| v2541_12(void) = ^IndirectReadSideEffect[-1] : &:r2541_8, ~m? -# 2541| mu2541_13(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2541_8 -# 2534| v2534_7(void) = Unwind : +# 2543| Block 4 +# 2543| r2543_8(glval) = VariableAddress[x] : +# 2543| r2543_9(glval) = FunctionAddress[~ClassWithDestructor] : +# 2543| v2543_10(void) = Call[~ClassWithDestructor] : func:r2543_9, this:r2543_8 +# 2543| mu2543_11(unknown) = ^CallSideEffect : ~m? +# 2543| v2543_12(void) = ^IndirectReadSideEffect[-1] : &:r2543_8, ~m? +# 2543| mu2543_13(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2543_8 +# 2536| v2536_7(void) = Unwind : #-----| Goto -> Block 1 -# 2545| void this_inconsistency(bool) -# 2545| Block 0 -# 2545| v2545_1(void) = EnterFunction : -# 2545| mu2545_2(unknown) = AliasedDefinition : -# 2545| mu2545_3(unknown) = InitializeNonLocal : -# 2545| r2545_4(glval) = VariableAddress[b] : -# 2545| mu2545_5(bool) = InitializeParameter[b] : &:r2545_4 -# 2546| r2546_1(glval) = VariableAddress[a] : -# 2546| r2546_2(glval) = VariableAddress[#temp2546:38] : -# 2546| r2546_3(glval) = FunctionAddress[getClassWithDestructor] : -# 2546| r2546_4(ClassWithDestructor) = Call[getClassWithDestructor] : func:r2546_3 -# 2546| mu2546_5(unknown) = ^CallSideEffect : ~m? -# 2546| mu2546_6(ClassWithDestructor) = Store[#temp2546:38] : &:r2546_2, r2546_4 -# 2546| r2546_7(glval) = Convert : r2546_2 -# 2546| r2546_8(ClassWithDestructor &) = CopyValue : r2546_7 -# 2546| mu2546_9(ClassWithDestructor &) = Store[a] : &:r2546_1, r2546_8 -# 2546| r2546_10(glval) = VariableAddress[a] : -# 2546| r2546_11(ClassWithDestructor &) = Load[a] : &:r2546_10, ~m? -# 2546| r2546_12(ClassWithDestructor) = CopyValue : r2546_11 -# 2546| r2546_13(glval) = FunctionAddress[operator bool] : -# 2546| r2546_14(bool) = Call[operator bool] : func:r2546_13, this:r2546_12 -# 2546| mu2546_15(unknown) = ^CallSideEffect : ~m? -# 2546| v2546_16(void) = ^IndirectReadSideEffect[-1] : &:r2546_12, ~m? -# 2546| r2546_17(bool) = CopyValue : r2546_14 -# 2546| v2546_18(void) = ConditionalBranch : r2546_17 +# 2547| void this_inconsistency(bool) +# 2547| Block 0 +# 2547| v2547_1(void) = EnterFunction : +# 2547| mu2547_2(unknown) = AliasedDefinition : +# 2547| mu2547_3(unknown) = InitializeNonLocal : +# 2547| r2547_4(glval) = VariableAddress[b] : +# 2547| mu2547_5(bool) = InitializeParameter[b] : &:r2547_4 +# 2548| r2548_1(glval) = VariableAddress[a] : +# 2548| r2548_2(glval) = VariableAddress[#temp2548:38] : +# 2548| r2548_3(glval) = FunctionAddress[getClassWithDestructor] : +# 2548| r2548_4(ClassWithDestructor) = Call[getClassWithDestructor] : func:r2548_3 +# 2548| mu2548_5(unknown) = ^CallSideEffect : ~m? +# 2548| mu2548_6(ClassWithDestructor) = Store[#temp2548:38] : &:r2548_2, r2548_4 +# 2548| r2548_7(glval) = Convert : r2548_2 +# 2548| r2548_8(ClassWithDestructor &) = CopyValue : r2548_7 +# 2548| mu2548_9(ClassWithDestructor &) = Store[a] : &:r2548_1, r2548_8 +# 2548| r2548_10(glval) = VariableAddress[a] : +# 2548| r2548_11(ClassWithDestructor &) = Load[a] : &:r2548_10, ~m? +# 2548| r2548_12(ClassWithDestructor) = CopyValue : r2548_11 +# 2548| r2548_13(glval) = FunctionAddress[operator bool] : +# 2548| r2548_14(bool) = Call[operator bool] : func:r2548_13, this:r2548_12 +# 2548| mu2548_15(unknown) = ^CallSideEffect : ~m? +# 2548| v2548_16(void) = ^IndirectReadSideEffect[-1] : &:r2548_12, ~m? +# 2548| r2548_17(bool) = CopyValue : r2548_14 +# 2548| v2548_18(void) = ConditionalBranch : r2548_17 #-----| False -> Block 2 #-----| True -> Block 1 -# 2547| Block 1 -# 2547| v2547_1(void) = NoOp : +# 2549| Block 1 +# 2549| v2549_1(void) = NoOp : #-----| Goto -> Block 2 -# 2547| Block 2 -# 2547| r2547_2(glval) = CopyValue : r2546_2 -# 2547| r2547_3(glval) = FunctionAddress[~ClassWithDestructor] : -# 2547| v2547_4(void) = Call[~ClassWithDestructor] : func:r2547_3, this:r2547_2 -# 2547| mu2547_5(unknown) = ^CallSideEffect : ~m? -# 2547| v2547_6(void) = ^IndirectReadSideEffect[-1] : &:r2547_2, ~m? -# 2547| mu2547_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2547_2 -# 2548| v2548_1(void) = NoOp : -# 2545| v2545_6(void) = ReturnVoid : -# 2545| v2545_7(void) = AliasedUse : ~m? -# 2545| v2545_8(void) = ExitFunction : +# 2549| Block 2 +# 2549| r2549_2(glval) = CopyValue : r2548_2 +# 2549| r2549_3(glval) = FunctionAddress[~ClassWithDestructor] : +# 2549| v2549_4(void) = Call[~ClassWithDestructor] : func:r2549_3, this:r2549_2 +# 2549| mu2549_5(unknown) = ^CallSideEffect : ~m? +# 2549| v2549_6(void) = ^IndirectReadSideEffect[-1] : &:r2549_2, ~m? +# 2549| mu2549_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2549_2 +# 2550| v2550_1(void) = NoOp : +# 2547| v2547_6(void) = ReturnVoid : +# 2547| v2547_7(void) = AliasedUse : ~m? +# 2547| v2547_8(void) = ExitFunction : -# 2550| void constexpr_inconsistency(bool) -# 2550| Block 0 -# 2550| v2550_1(void) = EnterFunction : -# 2550| mu2550_2(unknown) = AliasedDefinition : -# 2550| mu2550_3(unknown) = InitializeNonLocal : -# 2550| r2550_4(glval) = VariableAddress[b] : -# 2550| mu2550_5(bool) = InitializeParameter[b] : &:r2550_4 -# 2551| r2551_1(glval) = VariableAddress[a] : -# 2551| r2551_2(glval) = VariableAddress[#temp2551:48] : -# 2551| r2551_3(glval) = FunctionAddress[getClassWithDestructor] : -# 2551| r2551_4(ClassWithDestructor) = Call[getClassWithDestructor] : func:r2551_3 -# 2551| mu2551_5(unknown) = ^CallSideEffect : ~m? -# 2551| mu2551_6(ClassWithDestructor) = Store[#temp2551:48] : &:r2551_2, r2551_4 -# 2551| r2551_7(glval) = Convert : r2551_2 -# 2551| r2551_8(ClassWithDestructor &) = CopyValue : r2551_7 -# 2551| mu2551_9(ClassWithDestructor &) = Store[a] : &:r2551_1, r2551_8 -# 2551| r2551_10(bool) = Constant[1] : -# 2551| v2551_11(void) = ConditionalBranch : r2551_10 +# 2552| void constexpr_inconsistency(bool) +# 2552| Block 0 +# 2552| v2552_1(void) = EnterFunction : +# 2552| mu2552_2(unknown) = AliasedDefinition : +# 2552| mu2552_3(unknown) = InitializeNonLocal : +# 2552| r2552_4(glval) = VariableAddress[b] : +# 2552| mu2552_5(bool) = InitializeParameter[b] : &:r2552_4 +# 2553| r2553_1(glval) = VariableAddress[a] : +# 2553| r2553_2(glval) = VariableAddress[#temp2553:48] : +# 2553| r2553_3(glval) = FunctionAddress[getClassWithDestructor] : +# 2553| r2553_4(ClassWithDestructor) = Call[getClassWithDestructor] : func:r2553_3 +# 2553| mu2553_5(unknown) = ^CallSideEffect : ~m? +# 2553| mu2553_6(ClassWithDestructor) = Store[#temp2553:48] : &:r2553_2, r2553_4 +# 2553| r2553_7(glval) = Convert : r2553_2 +# 2553| r2553_8(ClassWithDestructor &) = CopyValue : r2553_7 +# 2553| mu2553_9(ClassWithDestructor &) = Store[a] : &:r2553_1, r2553_8 +# 2553| r2553_10(bool) = Constant[1] : +# 2553| v2553_11(void) = ConditionalBranch : r2553_10 #-----| False -> Block 2 #-----| True -> Block 1 -# 2552| Block 1 -# 2552| v2552_1(void) = NoOp : +# 2554| Block 1 +# 2554| v2554_1(void) = NoOp : #-----| Goto -> Block 2 -# 2552| Block 2 -# 2552| r2552_2(glval) = CopyValue : r2551_2 -# 2552| r2552_3(glval) = FunctionAddress[~ClassWithDestructor] : -# 2552| v2552_4(void) = Call[~ClassWithDestructor] : func:r2552_3, this:r2552_2 -# 2552| mu2552_5(unknown) = ^CallSideEffect : ~m? -# 2552| v2552_6(void) = ^IndirectReadSideEffect[-1] : &:r2552_2, ~m? -# 2552| mu2552_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2552_2 -# 2553| v2553_1(void) = NoOp : -# 2550| v2550_6(void) = ReturnVoid : -# 2550| v2550_7(void) = AliasedUse : ~m? -# 2550| v2550_8(void) = ExitFunction : +# 2554| Block 2 +# 2554| r2554_2(glval) = CopyValue : r2553_2 +# 2554| r2554_3(glval) = FunctionAddress[~ClassWithDestructor] : +# 2554| v2554_4(void) = Call[~ClassWithDestructor] : func:r2554_3, this:r2554_2 +# 2554| mu2554_5(unknown) = ^CallSideEffect : ~m? +# 2554| v2554_6(void) = ^IndirectReadSideEffect[-1] : &:r2554_2, ~m? +# 2554| mu2554_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2554_2 +# 2555| v2555_1(void) = NoOp : +# 2552| v2552_6(void) = ReturnVoid : +# 2552| v2552_7(void) = AliasedUse : ~m? +# 2552| v2552_8(void) = ExitFunction : -# 2555| void builtin_bitcast(unsigned long) -# 2555| Block 0 -# 2555| v2555_1(void) = EnterFunction : -# 2555| mu2555_2(unknown) = AliasedDefinition : -# 2555| mu2555_3(unknown) = InitializeNonLocal : -# 2555| r2555_4(glval) = VariableAddress[ul] : -# 2555| mu2555_5(unsigned long) = InitializeParameter[ul] : &:r2555_4 -# 2556| r2556_1(glval) = VariableAddress[d] : -# 2556| r2556_2(glval) = VariableAddress[ul] : -# 2556| r2556_3(unsigned long) = Load[ul] : &:r2556_2, ~m? -# 2556| r2556_4(double) = BuiltIn[__builtin_bit_cast] : 0:r2556_3 -# 2556| mu2556_5(double) = Store[d] : &:r2556_1, r2556_4 -# 2557| v2557_1(void) = NoOp : -# 2555| v2555_6(void) = ReturnVoid : -# 2555| v2555_7(void) = AliasedUse : ~m? -# 2555| v2555_8(void) = ExitFunction : +# 2557| void builtin_bitcast(unsigned long) +# 2557| Block 0 +# 2557| v2557_1(void) = EnterFunction : +# 2557| mu2557_2(unknown) = AliasedDefinition : +# 2557| mu2557_3(unknown) = InitializeNonLocal : +# 2557| r2557_4(glval) = VariableAddress[ul] : +# 2557| mu2557_5(unsigned long) = InitializeParameter[ul] : &:r2557_4 +# 2558| r2558_1(glval) = VariableAddress[d] : +# 2558| r2558_2(glval) = VariableAddress[ul] : +# 2558| r2558_3(unsigned long) = Load[ul] : &:r2558_2, ~m? +# 2558| r2558_4(double) = BuiltIn[__builtin_bit_cast] : 0:r2558_3 +# 2558| mu2558_5(double) = Store[d] : &:r2558_1, r2558_4 +# 2559| v2559_1(void) = NoOp : +# 2557| v2557_6(void) = ReturnVoid : +# 2557| v2557_7(void) = AliasedUse : ~m? +# 2557| v2557_8(void) = ExitFunction : -# 2559| void p_points_to_x_or_y(int, int) -# 2559| Block 0 -# 2559| v2559_1(void) = EnterFunction : -# 2559| mu2559_2(unknown) = AliasedDefinition : -# 2559| mu2559_3(unknown) = InitializeNonLocal : -# 2559| r2559_4(glval) = VariableAddress[a] : -# 2559| mu2559_5(int) = InitializeParameter[a] : &:r2559_4 -# 2559| r2559_6(glval) = VariableAddress[b] : -# 2559| mu2559_7(int) = InitializeParameter[b] : &:r2559_6 -# 2560| r2560_1(glval) = VariableAddress[x] : -# 2560| mu2560_2(int) = Uninitialized[x] : &:r2560_1 -# 2561| r2561_1(glval) = VariableAddress[y] : -# 2561| mu2561_2(int) = Uninitialized[y] : &:r2561_1 -# 2562| r2562_1(glval) = VariableAddress[p] : -# 2562| mu2562_2(int *) = Uninitialized[p] : &:r2562_1 -# 2563| r2563_1(glval) = VariableAddress[a] : -# 2563| r2563_2(int) = Load[a] : &:r2563_1, ~m? -# 2563| r2563_3(glval) = VariableAddress[b] : -# 2563| r2563_4(int) = Load[b] : &:r2563_3, ~m? -# 2563| r2563_5(bool) = CompareLT : r2563_2, r2563_4 -# 2563| v2563_6(void) = ConditionalBranch : r2563_5 +# 2561| void p_points_to_x_or_y(int, int) +# 2561| Block 0 +# 2561| v2561_1(void) = EnterFunction : +# 2561| mu2561_2(unknown) = AliasedDefinition : +# 2561| mu2561_3(unknown) = InitializeNonLocal : +# 2561| r2561_4(glval) = VariableAddress[a] : +# 2561| mu2561_5(int) = InitializeParameter[a] : &:r2561_4 +# 2561| r2561_6(glval) = VariableAddress[b] : +# 2561| mu2561_7(int) = InitializeParameter[b] : &:r2561_6 +# 2562| r2562_1(glval) = VariableAddress[x] : +# 2562| mu2562_2(int) = Uninitialized[x] : &:r2562_1 +# 2563| r2563_1(glval) = VariableAddress[y] : +# 2563| mu2563_2(int) = Uninitialized[y] : &:r2563_1 +# 2564| r2564_1(glval) = VariableAddress[p] : +# 2564| mu2564_2(int *) = Uninitialized[p] : &:r2564_1 +# 2565| r2565_1(glval) = VariableAddress[a] : +# 2565| r2565_2(int) = Load[a] : &:r2565_1, ~m? +# 2565| r2565_3(glval) = VariableAddress[b] : +# 2565| r2565_4(int) = Load[b] : &:r2565_3, ~m? +# 2565| r2565_5(bool) = CompareLT : r2565_2, r2565_4 +# 2565| v2565_6(void) = ConditionalBranch : r2565_5 #-----| False -> Block 2 #-----| True -> Block 1 -# 2564| Block 1 -# 2564| r2564_1(glval) = VariableAddress[x] : -# 2564| r2564_2(int *) = CopyValue : r2564_1 -# 2564| r2564_3(glval) = VariableAddress[p] : -# 2564| mu2564_4(int *) = Store[p] : &:r2564_3, r2564_2 -#-----| Goto -> Block 3 - -# 2566| Block 2 -# 2566| r2566_1(glval) = VariableAddress[y] : +# 2566| Block 1 +# 2566| r2566_1(glval) = VariableAddress[x] : # 2566| r2566_2(int *) = CopyValue : r2566_1 # 2566| r2566_3(glval) = VariableAddress[p] : # 2566| mu2566_4(int *) = Store[p] : &:r2566_3, r2566_2 #-----| Goto -> Block 3 -# 2568| Block 3 -# 2568| r2568_1(int) = Constant[5] : -# 2568| r2568_2(glval) = VariableAddress[p] : -# 2568| r2568_3(int *) = Load[p] : &:r2568_2, ~m? -# 2568| r2568_4(glval) = CopyValue : r2568_3 -# 2568| mu2568_5(int) = Store[?] : &:r2568_4, r2568_1 -# 2569| r2569_1(glval) = VariableAddress[z] : -# 2569| r2569_2(glval) = VariableAddress[x] : -# 2569| r2569_3(int) = Load[x] : &:r2569_2, ~m? -# 2569| mu2569_4(int) = Store[z] : &:r2569_1, r2569_3 -# 2570| r2570_1(glval) = VariableAddress[w] : -# 2570| r2570_2(glval) = VariableAddress[y] : -# 2570| r2570_3(int) = Load[y] : &:r2570_2, ~m? -# 2570| mu2570_4(int) = Store[w] : &:r2570_1, r2570_3 -# 2571| v2571_1(void) = NoOp : -# 2559| v2559_8(void) = ReturnVoid : -# 2559| v2559_9(void) = AliasedUse : ~m? -# 2559| v2559_10(void) = ExitFunction : +# 2568| Block 2 +# 2568| r2568_1(glval) = VariableAddress[y] : +# 2568| r2568_2(int *) = CopyValue : r2568_1 +# 2568| r2568_3(glval) = VariableAddress[p] : +# 2568| mu2568_4(int *) = Store[p] : &:r2568_3, r2568_2 +#-----| Goto -> Block 3 -# 2573| int phi_after_while() -# 2573| Block 0 -# 2573| v2573_1(void) = EnterFunction : -# 2573| mu2573_2(unknown) = AliasedDefinition : -# 2573| mu2573_3(unknown) = InitializeNonLocal : -# 2574| r2574_1(glval) = VariableAddress[r] : -# 2574| mu2574_2(int) = Uninitialized[r] : &:r2574_1 -# 2575| r2575_1(glval) = VariableAddress[rP] : -# 2575| r2575_2(glval) = VariableAddress[r] : -# 2575| r2575_3(int *) = CopyValue : r2575_2 -# 2575| mu2575_4(int *) = Store[rP] : &:r2575_1, r2575_3 +# 2570| Block 3 +# 2570| r2570_1(int) = Constant[5] : +# 2570| r2570_2(glval) = VariableAddress[p] : +# 2570| r2570_3(int *) = Load[p] : &:r2570_2, ~m? +# 2570| r2570_4(glval) = CopyValue : r2570_3 +# 2570| mu2570_5(int) = Store[?] : &:r2570_4, r2570_1 +# 2571| r2571_1(glval) = VariableAddress[z] : +# 2571| r2571_2(glval) = VariableAddress[x] : +# 2571| r2571_3(int) = Load[x] : &:r2571_2, ~m? +# 2571| mu2571_4(int) = Store[z] : &:r2571_1, r2571_3 +# 2572| r2572_1(glval) = VariableAddress[w] : +# 2572| r2572_2(glval) = VariableAddress[y] : +# 2572| r2572_3(int) = Load[y] : &:r2572_2, ~m? +# 2572| mu2572_4(int) = Store[w] : &:r2572_1, r2572_3 +# 2573| v2573_1(void) = NoOp : +# 2561| v2561_8(void) = ReturnVoid : +# 2561| v2561_9(void) = AliasedUse : ~m? +# 2561| v2561_10(void) = ExitFunction : + +# 2575| int phi_after_while() +# 2575| Block 0 +# 2575| v2575_1(void) = EnterFunction : +# 2575| mu2575_2(unknown) = AliasedDefinition : +# 2575| mu2575_3(unknown) = InitializeNonLocal : +# 2576| r2576_1(glval) = VariableAddress[r] : +# 2576| mu2576_2(int) = Uninitialized[r] : &:r2576_1 +# 2577| r2577_1(glval) = VariableAddress[rP] : +# 2577| r2577_2(glval) = VariableAddress[r] : +# 2577| r2577_3(int *) = CopyValue : r2577_2 +# 2577| mu2577_4(int *) = Store[rP] : &:r2577_1, r2577_3 #-----| Goto -> Block 1 -# 2577| Block 1 -# 2577| r2577_1(glval) = FunctionAddress[predicateA] : -# 2577| r2577_2(bool) = Call[predicateA] : func:r2577_1 -# 2577| mu2577_3(unknown) = ^CallSideEffect : ~m? -# 2577| v2577_4(void) = ConditionalBranch : r2577_2 +# 2579| Block 1 +# 2579| r2579_1(glval) = FunctionAddress[predicateA] : +# 2579| r2579_2(bool) = Call[predicateA] : func:r2579_1 +# 2579| mu2579_3(unknown) = ^CallSideEffect : ~m? +# 2579| v2579_4(void) = ConditionalBranch : r2579_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 2578| Block 2 -# 2578| r2578_1(glval) = VariableAddress[s] : -# 2578| r2578_2(int) = Constant[0] : -# 2578| mu2578_3(int) = Store[s] : &:r2578_1, r2578_2 -# 2579| r2579_1(glval) = VariableAddress[s] : -# 2579| r2579_2(int) = Load[s] : &:r2579_1, ~m? -# 2579| r2579_3(glval) = VariableAddress[rP] : -# 2579| r2579_4(int *) = Load[rP] : &:r2579_3, ~m? -# 2579| r2579_5(glval) = CopyValue : r2579_4 -# 2579| mu2579_6(int) = Store[?] : &:r2579_5, r2579_2 +# 2580| Block 2 # 2580| r2580_1(glval) = VariableAddress[s] : -# 2580| r2580_2(int *) = CopyValue : r2580_1 -# 2580| r2580_3(glval) = VariableAddress[rP] : -# 2580| mu2580_4(int *) = Store[rP] : &:r2580_3, r2580_2 +# 2580| r2580_2(int) = Constant[0] : +# 2580| mu2580_3(int) = Store[s] : &:r2580_1, r2580_2 +# 2581| r2581_1(glval) = VariableAddress[s] : +# 2581| r2581_2(int) = Load[s] : &:r2581_1, ~m? +# 2581| r2581_3(glval) = VariableAddress[rP] : +# 2581| r2581_4(int *) = Load[rP] : &:r2581_3, ~m? +# 2581| r2581_5(glval) = CopyValue : r2581_4 +# 2581| mu2581_6(int) = Store[?] : &:r2581_5, r2581_2 +# 2582| r2582_1(glval) = VariableAddress[s] : +# 2582| r2582_2(int *) = CopyValue : r2582_1 +# 2582| r2582_3(glval) = VariableAddress[rP] : +# 2582| mu2582_4(int *) = Store[rP] : &:r2582_3, r2582_2 #-----| Goto (back edge) -> Block 1 -# 2583| Block 3 -# 2583| r2583_1(glval) = VariableAddress[#return] : -# 2583| r2583_2(glval) = VariableAddress[r] : -# 2583| r2583_3(int) = Load[r] : &:r2583_2, ~m? -# 2583| mu2583_4(int) = Store[#return] : &:r2583_1, r2583_3 -# 2573| r2573_4(glval) = VariableAddress[#return] : -# 2573| v2573_5(void) = ReturnValue : &:r2573_4, ~m? -# 2573| v2573_6(void) = AliasedUse : ~m? -# 2573| v2573_7(void) = ExitFunction : +# 2585| Block 3 +# 2585| r2585_1(glval) = VariableAddress[#return] : +# 2585| r2585_2(glval) = VariableAddress[r] : +# 2585| r2585_3(int) = Load[r] : &:r2585_2, ~m? +# 2585| mu2585_4(int) = Store[#return] : &:r2585_1, r2585_3 +# 2575| r2575_4(glval) = VariableAddress[#return] : +# 2575| v2575_5(void) = ReturnValue : &:r2575_4, ~m? +# 2575| v2575_6(void) = AliasedUse : ~m? +# 2575| v2575_7(void) = ExitFunction : -# 2588| char* recursive_conditional_call_with_increment(char*, bool) -# 2588| Block 0 -# 2588| v2588_1(void) = EnterFunction : -# 2588| mu2588_2(unknown) = AliasedDefinition : -# 2588| mu2588_3(unknown) = InitializeNonLocal : -# 2588| r2588_4(glval) = VariableAddress[d] : -# 2588| mu2588_5(char *) = InitializeParameter[d] : &:r2588_4 -# 2588| r2588_6(char *) = Load[d] : &:r2588_4, ~m? -# 2588| mu2588_7(unknown) = InitializeIndirection[d] : &:r2588_6 -# 2588| r2588_8(glval) = VariableAddress[b] : -# 2588| mu2588_9(bool) = InitializeParameter[b] : &:r2588_8 -# 2590| r2590_1(glval) = VariableAddress[b] : -# 2590| r2590_2(bool) = Load[b] : &:r2590_1, ~m? -# 2590| v2590_3(void) = ConditionalBranch : r2590_2 +# 2590| char* recursive_conditional_call_with_increment(char*, bool) +# 2590| Block 0 +# 2590| v2590_1(void) = EnterFunction : +# 2590| mu2590_2(unknown) = AliasedDefinition : +# 2590| mu2590_3(unknown) = InitializeNonLocal : +# 2590| r2590_4(glval) = VariableAddress[d] : +# 2590| mu2590_5(char *) = InitializeParameter[d] : &:r2590_4 +# 2590| r2590_6(char *) = Load[d] : &:r2590_4, ~m? +# 2590| mu2590_7(unknown) = InitializeIndirection[d] : &:r2590_6 +# 2590| r2590_8(glval) = VariableAddress[b] : +# 2590| mu2590_9(bool) = InitializeParameter[b] : &:r2590_8 +# 2592| r2592_1(glval) = VariableAddress[b] : +# 2592| r2592_2(bool) = Load[b] : &:r2592_1, ~m? +# 2592| v2592_3(void) = ConditionalBranch : r2592_2 #-----| False -> Block 2 #-----| True -> Block 1 -# 2591| Block 1 -# 2591| r2591_1(glval) = FunctionAddress[recursive_conditional_call_with_increment] : -# 2591| r2591_2(glval) = VariableAddress[d] : -# 2591| r2591_3(char *) = Load[d] : &:r2591_2, ~m? -# 2591| r2591_4(glval) = VariableAddress[b] : -# 2591| r2591_5(bool) = Load[b] : &:r2591_4, ~m? -# 2591| r2591_6(char *) = Call[recursive_conditional_call_with_increment] : func:r2591_1, 0:r2591_3, 1:r2591_5 -# 2591| mu2591_7(unknown) = ^CallSideEffect : ~m? -# 2591| v2591_8(void) = ^BufferReadSideEffect[0] : &:r2591_3, ~m? -# 2591| mu2591_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r2591_3 -# 2591| r2591_10(glval) = VariableAddress[d] : -# 2591| mu2591_11(char *) = Store[d] : &:r2591_10, r2591_6 +# 2593| Block 1 +# 2593| r2593_1(glval) = FunctionAddress[recursive_conditional_call_with_increment] : +# 2593| r2593_2(glval) = VariableAddress[d] : +# 2593| r2593_3(char *) = Load[d] : &:r2593_2, ~m? +# 2593| r2593_4(glval) = VariableAddress[b] : +# 2593| r2593_5(bool) = Load[b] : &:r2593_4, ~m? +# 2593| r2593_6(char *) = Call[recursive_conditional_call_with_increment] : func:r2593_1, 0:r2593_3, 1:r2593_5 +# 2593| mu2593_7(unknown) = ^CallSideEffect : ~m? +# 2593| v2593_8(void) = ^BufferReadSideEffect[0] : &:r2593_3, ~m? +# 2593| mu2593_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r2593_3 +# 2593| r2593_10(glval) = VariableAddress[d] : +# 2593| mu2593_11(char *) = Store[d] : &:r2593_10, r2593_6 #-----| Goto -> Block 2 -# 2593| Block 2 -# 2593| r2593_1(glval) = VariableAddress[d] : -# 2593| r2593_2(char *) = Load[d] : &:r2593_1, ~m? -# 2593| r2593_3(int) = Constant[1] : -# 2593| r2593_4(char *) = PointerAdd[1] : r2593_2, r2593_3 -# 2593| mu2593_5(char *) = Store[d] : &:r2593_1, r2593_4 -# 2594| r2594_1(glval) = VariableAddress[#return] : -# 2594| r2594_2(glval) = VariableAddress[d] : -# 2594| r2594_3(char *) = Load[d] : &:r2594_2, ~m? -# 2594| mu2594_4(char *) = Store[#return] : &:r2594_1, r2594_3 -# 2588| v2588_10(void) = ReturnIndirection[d] : &:r2588_6, ~m? -# 2588| r2588_11(glval) = VariableAddress[#return] : -# 2588| v2588_12(void) = ReturnValue : &:r2588_11, ~m? -# 2588| v2588_13(void) = AliasedUse : ~m? -# 2588| v2588_14(void) = ExitFunction : +# 2595| Block 2 +# 2595| r2595_1(glval) = VariableAddress[d] : +# 2595| r2595_2(char *) = Load[d] : &:r2595_1, ~m? +# 2595| r2595_3(int) = Constant[1] : +# 2595| r2595_4(char *) = PointerAdd[1] : r2595_2, r2595_3 +# 2595| mu2595_5(char *) = Store[d] : &:r2595_1, r2595_4 +# 2596| r2596_1(glval) = VariableAddress[#return] : +# 2596| r2596_2(glval) = VariableAddress[d] : +# 2596| r2596_3(char *) = Load[d] : &:r2596_2, ~m? +# 2596| mu2596_4(char *) = Store[#return] : &:r2596_1, r2596_3 +# 2590| v2590_10(void) = ReturnIndirection[d] : &:r2590_6, ~m? +# 2590| r2590_11(glval) = VariableAddress[#return] : +# 2590| v2590_12(void) = ReturnValue : &:r2590_11, ~m? +# 2590| v2590_13(void) = AliasedUse : ~m? +# 2590| v2590_14(void) = ExitFunction : -# 2602| Recursive* merge(Recursive*) -# 2602| Block 0 -# 2602| v2602_1(void) = EnterFunction : -# 2602| mu2602_2(unknown) = AliasedDefinition : -# 2602| mu2602_3(unknown) = InitializeNonLocal : -# 2602| r2602_4(glval) = VariableAddress[a] : -# 2602| mu2602_5(Recursive *) = InitializeParameter[a] : &:r2602_4 -# 2602| r2602_6(Recursive *) = Load[a] : &:r2602_4, ~m? -# 2602| mu2602_7(unknown) = InitializeIndirection[a] : &:r2602_6 -# 2604| r2604_1(glval) = VariableAddress[b] : -# 2604| mu2604_2(Recursive *) = Uninitialized[b] : &:r2604_1 -# 2605| r2605_1(glval) = VariableAddress[p] : -# 2605| r2605_2(glval) = VariableAddress[b] : -# 2605| r2605_3(Recursive **) = CopyValue : r2605_2 -# 2605| mu2605_4(Recursive **) = Store[p] : &:r2605_1, r2605_3 +# 2604| Recursive* merge(Recursive*) +# 2604| Block 0 +# 2604| v2604_1(void) = EnterFunction : +# 2604| mu2604_2(unknown) = AliasedDefinition : +# 2604| mu2604_3(unknown) = InitializeNonLocal : +# 2604| r2604_4(glval) = VariableAddress[a] : +# 2604| mu2604_5(Recursive *) = InitializeParameter[a] : &:r2604_4 +# 2604| r2604_6(Recursive *) = Load[a] : &:r2604_4, ~m? +# 2604| mu2604_7(unknown) = InitializeIndirection[a] : &:r2604_6 +# 2606| r2606_1(glval) = VariableAddress[b] : +# 2606| mu2606_2(Recursive *) = Uninitialized[b] : &:r2606_1 +# 2607| r2607_1(glval) = VariableAddress[p] : +# 2607| r2607_2(glval) = VariableAddress[b] : +# 2607| r2607_3(Recursive **) = CopyValue : r2607_2 +# 2607| mu2607_4(Recursive **) = Store[p] : &:r2607_1, r2607_3 #-----| Goto -> Block 1 -# 2607| Block 1 -# 2607| r2607_1(glval) = FunctionAddress[predicateA] : -# 2607| r2607_2(bool) = Call[predicateA] : func:r2607_1 -# 2607| mu2607_3(unknown) = ^CallSideEffect : ~m? -# 2607| v2607_4(void) = ConditionalBranch : r2607_2 +# 2609| Block 1 +# 2609| r2609_1(glval) = FunctionAddress[predicateA] : +# 2609| r2609_2(bool) = Call[predicateA] : func:r2609_1 +# 2609| mu2609_3(unknown) = ^CallSideEffect : ~m? +# 2609| v2609_4(void) = ConditionalBranch : r2609_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 2609| Block 2 -# 2609| r2609_1(glval) = VariableAddress[a] : -# 2609| r2609_2(Recursive *) = Load[a] : &:r2609_1, ~m? -# 2609| r2609_3(glval) = VariableAddress[p] : -# 2609| r2609_4(Recursive **) = Load[p] : &:r2609_3, ~m? -# 2609| r2609_5(glval) = CopyValue : r2609_4 -# 2609| mu2609_6(Recursive *) = Store[?] : &:r2609_5, r2609_2 -# 2610| r2610_1(glval) = VariableAddress[a] : -# 2610| r2610_2(Recursive *) = Load[a] : &:r2610_1, ~m? -# 2610| r2610_3(glval) = FieldAddress[next] : r2610_2 -# 2610| r2610_4(Recursive **) = CopyValue : r2610_3 -# 2610| r2610_5(glval) = VariableAddress[p] : -# 2610| mu2610_6(Recursive **) = Store[p] : &:r2610_5, r2610_4 +# 2611| Block 2 +# 2611| r2611_1(glval) = VariableAddress[a] : +# 2611| r2611_2(Recursive *) = Load[a] : &:r2611_1, ~m? +# 2611| r2611_3(glval) = VariableAddress[p] : +# 2611| r2611_4(Recursive **) = Load[p] : &:r2611_3, ~m? +# 2611| r2611_5(glval) = CopyValue : r2611_4 +# 2611| mu2611_6(Recursive *) = Store[?] : &:r2611_5, r2611_2 +# 2612| r2612_1(glval) = VariableAddress[a] : +# 2612| r2612_2(Recursive *) = Load[a] : &:r2612_1, ~m? +# 2612| r2612_3(glval) = FieldAddress[next] : r2612_2 +# 2612| r2612_4(Recursive **) = CopyValue : r2612_3 +# 2612| r2612_5(glval) = VariableAddress[p] : +# 2612| mu2612_6(Recursive **) = Store[p] : &:r2612_5, r2612_4 #-----| Goto (back edge) -> Block 1 -# 2613| Block 3 -# 2613| r2613_1(glval) = VariableAddress[#return] : -# 2613| r2613_2(glval) = VariableAddress[b] : -# 2613| r2613_3(Recursive *) = Load[b] : &:r2613_2, ~m? -# 2613| mu2613_4(Recursive *) = Store[#return] : &:r2613_1, r2613_3 -# 2602| v2602_8(void) = ReturnIndirection[a] : &:r2602_6, ~m? -# 2602| r2602_9(glval) = VariableAddress[#return] : -# 2602| v2602_10(void) = ReturnValue : &:r2602_9, ~m? -# 2602| v2602_11(void) = AliasedUse : ~m? -# 2602| v2602_12(void) = ExitFunction : +# 2615| Block 3 +# 2615| r2615_1(glval) = VariableAddress[#return] : +# 2615| r2615_2(glval) = VariableAddress[b] : +# 2615| r2615_3(Recursive *) = Load[b] : &:r2615_2, ~m? +# 2615| mu2615_4(Recursive *) = Store[#return] : &:r2615_1, r2615_3 +# 2604| v2604_8(void) = ReturnIndirection[a] : &:r2604_6, ~m? +# 2604| r2604_9(glval) = VariableAddress[#return] : +# 2604| v2604_10(void) = ReturnValue : &:r2604_9, ~m? +# 2604| v2604_11(void) = AliasedUse : ~m? +# 2604| v2604_12(void) = ExitFunction : -# 2618| void escaping_pointer(bool) -# 2618| Block 0 -# 2618| v2618_1(void) = EnterFunction : -# 2618| mu2618_2(unknown) = AliasedDefinition : -# 2618| mu2618_3(unknown) = InitializeNonLocal : -# 2618| r2618_4(glval) = VariableAddress[b] : -# 2618| mu2618_5(bool) = InitializeParameter[b] : &:r2618_4 -# 2620| r2620_1(glval) = VariableAddress[data] : -# 2620| mu2620_2(int *) = Uninitialized[data] : &:r2620_1 -# 2621| r2621_1(glval) = VariableAddress[l1] : -# 2621| mu2621_2(int) = Uninitialized[l1] : &:r2621_1 -# 2621| r2621_3(glval) = VariableAddress[l2] : -# 2621| mu2621_4(int) = Uninitialized[l2] : &:r2621_3 -# 2622| r2622_1(glval) = VariableAddress[b] : -# 2622| r2622_2(bool) = Load[b] : &:r2622_1, ~m? -# 2622| v2622_3(void) = ConditionalBranch : r2622_2 +# 2620| void escaping_pointer(bool) +# 2620| Block 0 +# 2620| v2620_1(void) = EnterFunction : +# 2620| mu2620_2(unknown) = AliasedDefinition : +# 2620| mu2620_3(unknown) = InitializeNonLocal : +# 2620| r2620_4(glval) = VariableAddress[b] : +# 2620| mu2620_5(bool) = InitializeParameter[b] : &:r2620_4 +# 2622| r2622_1(glval) = VariableAddress[data] : +# 2622| mu2622_2(int *) = Uninitialized[data] : &:r2622_1 +# 2623| r2623_1(glval) = VariableAddress[l1] : +# 2623| mu2623_2(int) = Uninitialized[l1] : &:r2623_1 +# 2623| r2623_3(glval) = VariableAddress[l2] : +# 2623| mu2623_4(int) = Uninitialized[l2] : &:r2623_3 +# 2624| r2624_1(glval) = VariableAddress[b] : +# 2624| r2624_2(bool) = Load[b] : &:r2624_1, ~m? +# 2624| v2624_3(void) = ConditionalBranch : r2624_2 #-----| False -> Block 2 #-----| True -> Block 1 -# 2624| Block 1 -# 2624| r2624_1(glval) = VariableAddress[l1] : -# 2624| r2624_2(int *) = CopyValue : r2624_1 -# 2624| r2624_3(glval) = VariableAddress[data] : -# 2624| mu2624_4(int *) = Store[data] : &:r2624_3, r2624_2 +# 2626| Block 1 +# 2626| r2626_1(glval) = VariableAddress[l1] : +# 2626| r2626_2(int *) = CopyValue : r2626_1 +# 2626| r2626_3(glval) = VariableAddress[data] : +# 2626| mu2626_4(int *) = Store[data] : &:r2626_3, r2626_2 #-----| Goto -> Block 3 -# 2628| Block 2 -# 2628| r2628_1(glval) = VariableAddress[l2] : -# 2628| r2628_2(int *) = CopyValue : r2628_1 -# 2628| r2628_3(glval) = VariableAddress[data] : -# 2628| mu2628_4(int *) = Store[data] : &:r2628_3, r2628_2 +# 2630| Block 2 +# 2630| r2630_1(glval) = VariableAddress[l2] : +# 2630| r2630_2(int *) = CopyValue : r2630_1 +# 2630| r2630_3(glval) = VariableAddress[data] : +# 2630| mu2630_4(int *) = Store[data] : &:r2630_3, r2630_2 #-----| Goto -> Block 3 -# 2630| Block 3 -# 2630| r2630_1(glval) = FunctionAddress[use_const_int] : -# 2630| r2630_2(glval) = VariableAddress[data] : -# 2630| r2630_3(int *) = Load[data] : &:r2630_2, ~m? -# 2630| r2630_4(int *) = Convert : r2630_3 -# 2630| v2630_5(void) = Call[use_const_int] : func:r2630_1, 0:r2630_4 -# 2630| mu2630_6(unknown) = ^CallSideEffect : ~m? -# 2630| v2630_7(void) = ^BufferReadSideEffect[0] : &:r2630_4, ~m? -# 2631| v2631_1(void) = NoOp : -# 2618| v2618_6(void) = ReturnVoid : -# 2618| v2618_7(void) = AliasedUse : ~m? -# 2618| v2618_8(void) = ExitFunction : +# 2632| Block 3 +# 2632| r2632_1(glval) = FunctionAddress[use_const_int] : +# 2632| r2632_2(glval) = VariableAddress[data] : +# 2632| r2632_3(int *) = Load[data] : &:r2632_2, ~m? +# 2632| r2632_4(int *) = Convert : r2632_3 +# 2632| v2632_5(void) = Call[use_const_int] : func:r2632_1, 0:r2632_4 +# 2632| mu2632_6(unknown) = ^CallSideEffect : ~m? +# 2632| v2632_7(void) = ^BufferReadSideEffect[0] : &:r2632_4, ~m? +# 2633| v2633_1(void) = NoOp : +# 2620| v2620_6(void) = ReturnVoid : +# 2620| v2620_7(void) = AliasedUse : ~m? +# 2620| v2620_8(void) = ExitFunction : -# 2639| void needs_chi_for_initialize_groups() -# 2639| Block 0 -# 2639| v2639_1(void) = EnterFunction : -# 2639| mu2639_2(unknown) = AliasedDefinition : -# 2639| mu2639_3(unknown) = InitializeNonLocal : -# 2641| r2641_1(glval) = FunctionAddress[predicateA] : -# 2641| r2641_2(bool) = Call[predicateA] : func:r2641_1 -# 2641| mu2641_3(unknown) = ^CallSideEffect : ~m? -# 2641| v2641_4(void) = ConditionalBranch : r2641_2 +# 2641| void needs_chi_for_initialize_groups() +# 2641| Block 0 +# 2641| v2641_1(void) = EnterFunction : +# 2641| mu2641_2(unknown) = AliasedDefinition : +# 2641| mu2641_3(unknown) = InitializeNonLocal : +# 2643| r2643_1(glval) = FunctionAddress[predicateA] : +# 2643| r2643_2(bool) = Call[predicateA] : func:r2643_1 +# 2643| mu2643_3(unknown) = ^CallSideEffect : ~m? +# 2643| v2643_4(void) = ConditionalBranch : r2643_2 #-----| False -> Block 4 #-----| True -> Block 1 -# 2643| Block 1 -# 2643| r2643_1(glval) = VariableAddress[data] : -# 2643| r2643_2(glval) = FunctionAddress[malloc] : -# 2643| r2643_3(unsigned long) = Constant[100] : -# 2643| r2643_4(void *) = Call[malloc] : func:r2643_2, 0:r2643_3 -# 2643| mu2643_5(unknown) = ^CallSideEffect : ~m? -# 2643| mu2643_6(unknown) = ^InitializeDynamicAllocation : &:r2643_4 -# 2643| r2643_7(long long *) = Convert : r2643_4 -# 2643| mu2643_8(long long *) = Store[data] : &:r2643_1, r2643_7 -# 2644| r2644_1(glval) = VariableAddress[data] : -# 2644| r2644_2(long long *) = Load[data] : &:r2644_1, ~m? -# 2644| r2644_3(void *) = Convert : r2644_2 -# 2644| r2644_4(void *) = Constant[0] : -# 2644| r2644_5(bool) = CompareNE : r2644_3, r2644_4 -# 2644| v2644_6(void) = ConditionalBranch : r2644_5 +# 2645| Block 1 +# 2645| r2645_1(glval) = VariableAddress[data] : +# 2645| r2645_2(glval) = FunctionAddress[malloc] : +# 2645| r2645_3(unsigned long) = Constant[100] : +# 2645| r2645_4(void *) = Call[malloc] : func:r2645_2, 0:r2645_3 +# 2645| mu2645_5(unknown) = ^CallSideEffect : ~m? +# 2645| mu2645_6(unknown) = ^InitializeDynamicAllocation : &:r2645_4 +# 2645| r2645_7(long long *) = Convert : r2645_4 +# 2645| mu2645_8(long long *) = Store[data] : &:r2645_1, r2645_7 +# 2646| r2646_1(glval) = VariableAddress[data] : +# 2646| r2646_2(long long *) = Load[data] : &:r2646_1, ~m? +# 2646| r2646_3(void *) = Convert : r2646_2 +# 2646| r2646_4(void *) = Constant[0] : +# 2646| r2646_5(bool) = CompareNE : r2646_3, r2646_4 +# 2646| v2646_6(void) = ConditionalBranch : r2646_5 #-----| False -> Block 3 #-----| True -> Block 2 -# 2646| Block 2 -# 2646| r2646_1(glval) = FunctionAddress[malloc] : -# 2646| r2646_2(unsigned long) = Constant[100] : -# 2646| r2646_3(void *) = Call[malloc] : func:r2646_1, 0:r2646_2 -# 2646| mu2646_4(unknown) = ^CallSideEffect : ~m? -# 2646| mu2646_5(unknown) = ^InitializeDynamicAllocation : &:r2646_3 -# 2646| r2646_6(long long *) = Convert : r2646_3 -# 2646| r2646_7(glval) = VariableAddress[data] : -# 2646| mu2646_8(long long *) = Store[data] : &:r2646_7, r2646_6 +# 2648| Block 2 +# 2648| r2648_1(glval) = FunctionAddress[malloc] : +# 2648| r2648_2(unsigned long) = Constant[100] : +# 2648| r2648_3(void *) = Call[malloc] : func:r2648_1, 0:r2648_2 +# 2648| mu2648_4(unknown) = ^CallSideEffect : ~m? +# 2648| mu2648_5(unknown) = ^InitializeDynamicAllocation : &:r2648_3 +# 2648| r2648_6(long long *) = Convert : r2648_3 +# 2648| r2648_7(glval) = VariableAddress[data] : +# 2648| mu2648_8(long long *) = Store[data] : &:r2648_7, r2648_6 #-----| Goto -> Block 3 -# 2648| Block 3 -# 2648| r2648_1(glval) = FunctionAddress[use_const_void_pointer] : -# 2648| r2648_2(glval) = VariableAddress[data] : -# 2648| r2648_3(long long *) = Load[data] : &:r2648_2, ~m? -# 2648| r2648_4(void *) = Convert : r2648_3 -# 2648| v2648_5(void) = Call[use_const_void_pointer] : func:r2648_1, 0:r2648_4 -# 2648| mu2648_6(unknown) = ^CallSideEffect : ~m? -# 2648| v2648_7(void) = ^BufferReadSideEffect[0] : &:r2648_4, ~m? +# 2650| Block 3 +# 2650| r2650_1(glval) = FunctionAddress[use_const_void_pointer] : +# 2650| r2650_2(glval) = VariableAddress[data] : +# 2650| r2650_3(long long *) = Load[data] : &:r2650_2, ~m? +# 2650| r2650_4(void *) = Convert : r2650_3 +# 2650| v2650_5(void) = Call[use_const_void_pointer] : func:r2650_1, 0:r2650_4 +# 2650| mu2650_6(unknown) = ^CallSideEffect : ~m? +# 2650| v2650_7(void) = ^BufferReadSideEffect[0] : &:r2650_4, ~m? #-----| Goto -> Block 7 -# 2652| Block 4 -# 2652| r2652_1(glval) = VariableAddress[data] : -# 2652| r2652_2(glval) = FunctionAddress[malloc] : -# 2652| r2652_3(unsigned long) = Constant[100] : -# 2652| r2652_4(void *) = Call[malloc] : func:r2652_2, 0:r2652_3 -# 2652| mu2652_5(unknown) = ^CallSideEffect : ~m? -# 2652| mu2652_6(unknown) = ^InitializeDynamicAllocation : &:r2652_4 -# 2652| r2652_7(long long *) = Convert : r2652_4 -# 2652| mu2652_8(long long *) = Store[data] : &:r2652_1, r2652_7 -# 2653| r2653_1(glval) = VariableAddress[data] : -# 2653| r2653_2(long long *) = Load[data] : &:r2653_1, ~m? -# 2653| r2653_3(void *) = Convert : r2653_2 -# 2653| r2653_4(void *) = Constant[0] : -# 2653| r2653_5(bool) = CompareNE : r2653_3, r2653_4 -# 2653| v2653_6(void) = ConditionalBranch : r2653_5 +# 2654| Block 4 +# 2654| r2654_1(glval) = VariableAddress[data] : +# 2654| r2654_2(glval) = FunctionAddress[malloc] : +# 2654| r2654_3(unsigned long) = Constant[100] : +# 2654| r2654_4(void *) = Call[malloc] : func:r2654_2, 0:r2654_3 +# 2654| mu2654_5(unknown) = ^CallSideEffect : ~m? +# 2654| mu2654_6(unknown) = ^InitializeDynamicAllocation : &:r2654_4 +# 2654| r2654_7(long long *) = Convert : r2654_4 +# 2654| mu2654_8(long long *) = Store[data] : &:r2654_1, r2654_7 +# 2655| r2655_1(glval) = VariableAddress[data] : +# 2655| r2655_2(long long *) = Load[data] : &:r2655_1, ~m? +# 2655| r2655_3(void *) = Convert : r2655_2 +# 2655| r2655_4(void *) = Constant[0] : +# 2655| r2655_5(bool) = CompareNE : r2655_3, r2655_4 +# 2655| v2655_6(void) = ConditionalBranch : r2655_5 #-----| False -> Block 6 #-----| True -> Block 5 -# 2655| Block 5 -# 2655| r2655_1(glval) = FunctionAddress[malloc] : -# 2655| r2655_2(unsigned long) = Constant[200] : -# 2655| r2655_3(void *) = Call[malloc] : func:r2655_1, 0:r2655_2 -# 2655| mu2655_4(unknown) = ^CallSideEffect : ~m? -# 2655| mu2655_5(unknown) = ^InitializeDynamicAllocation : &:r2655_3 -# 2655| r2655_6(long long *) = Convert : r2655_3 -# 2655| r2655_7(glval) = VariableAddress[data] : -# 2655| mu2655_8(long long *) = Store[data] : &:r2655_7, r2655_6 +# 2657| Block 5 +# 2657| r2657_1(glval) = FunctionAddress[malloc] : +# 2657| r2657_2(unsigned long) = Constant[200] : +# 2657| r2657_3(void *) = Call[malloc] : func:r2657_1, 0:r2657_2 +# 2657| mu2657_4(unknown) = ^CallSideEffect : ~m? +# 2657| mu2657_5(unknown) = ^InitializeDynamicAllocation : &:r2657_3 +# 2657| r2657_6(long long *) = Convert : r2657_3 +# 2657| r2657_7(glval) = VariableAddress[data] : +# 2657| mu2657_8(long long *) = Store[data] : &:r2657_7, r2657_6 #-----| Goto -> Block 6 -# 2657| Block 6 -# 2657| r2657_1(glval) = FunctionAddress[use_const_void_pointer] : -# 2657| r2657_2(glval) = VariableAddress[data] : -# 2657| r2657_3(long long *) = Load[data] : &:r2657_2, ~m? -# 2657| r2657_4(void *) = Convert : r2657_3 -# 2657| v2657_5(void) = Call[use_const_void_pointer] : func:r2657_1, 0:r2657_4 -# 2657| mu2657_6(unknown) = ^CallSideEffect : ~m? -# 2657| v2657_7(void) = ^BufferReadSideEffect[0] : &:r2657_4, ~m? +# 2659| Block 6 +# 2659| r2659_1(glval) = FunctionAddress[use_const_void_pointer] : +# 2659| r2659_2(glval) = VariableAddress[data] : +# 2659| r2659_3(long long *) = Load[data] : &:r2659_2, ~m? +# 2659| r2659_4(void *) = Convert : r2659_3 +# 2659| v2659_5(void) = Call[use_const_void_pointer] : func:r2659_1, 0:r2659_4 +# 2659| mu2659_6(unknown) = ^CallSideEffect : ~m? +# 2659| v2659_7(void) = ^BufferReadSideEffect[0] : &:r2659_4, ~m? #-----| Goto -> Block 7 -# 2659| Block 7 -# 2659| v2659_1(void) = NoOp : -# 2639| v2639_4(void) = ReturnVoid : -# 2639| v2639_5(void) = AliasedUse : ~m? -# 2639| v2639_6(void) = ExitFunction : +# 2661| Block 7 +# 2661| v2661_1(void) = NoOp : +# 2641| v2641_4(void) = ReturnVoid : +# 2641| v2641_5(void) = AliasedUse : ~m? +# 2641| v2641_6(void) = ExitFunction : -# 2663| void phi_with_single_input_at_merge(bool) -# 2663| Block 0 -# 2663| v2663_1(void) = EnterFunction : -# 2663| mu2663_2(unknown) = AliasedDefinition : -# 2663| mu2663_3(unknown) = InitializeNonLocal : -# 2663| r2663_4(glval) = VariableAddress[b] : -# 2663| mu2663_5(bool) = InitializeParameter[b] : &:r2663_4 -# 2665| r2665_1(glval) = VariableAddress[data] : -# 2665| r2665_2(int *) = Constant[0] : -# 2665| mu2665_3(int *) = Store[data] : &:r2665_1, r2665_2 -# 2666| r2666_1(glval) = VariableAddress[b] : -# 2666| r2666_2(bool) = Load[b] : &:r2666_1, ~m? -# 2666| v2666_3(void) = ConditionalBranch : r2666_2 +# 2665| void phi_with_single_input_at_merge(bool) +# 2665| Block 0 +# 2665| v2665_1(void) = EnterFunction : +# 2665| mu2665_2(unknown) = AliasedDefinition : +# 2665| mu2665_3(unknown) = InitializeNonLocal : +# 2665| r2665_4(glval) = VariableAddress[b] : +# 2665| mu2665_5(bool) = InitializeParameter[b] : &:r2665_4 +# 2667| r2667_1(glval) = VariableAddress[data] : +# 2667| r2667_2(int *) = Constant[0] : +# 2667| mu2667_3(int *) = Store[data] : &:r2667_1, r2667_2 +# 2668| r2668_1(glval) = VariableAddress[b] : +# 2668| r2668_2(bool) = Load[b] : &:r2668_1, ~m? +# 2668| v2668_3(void) = ConditionalBranch : r2668_2 #-----| False -> Block 2 #-----| True -> Block 1 -# 2667| Block 1 -# 2667| r2667_1(glval) = VariableAddress[intBuffer] : -# 2667| r2667_2(int) = Constant[8] : -# 2667| mu2667_3(int) = Store[intBuffer] : &:r2667_1, r2667_2 -# 2668| r2668_1(glval) = VariableAddress[intBuffer] : -# 2668| r2668_2(int *) = CopyValue : r2668_1 -# 2668| r2668_3(glval) = VariableAddress[data] : -# 2668| mu2668_4(int *) = Store[data] : &:r2668_3, r2668_2 +# 2669| Block 1 +# 2669| r2669_1(glval) = VariableAddress[intBuffer] : +# 2669| r2669_2(int) = Constant[8] : +# 2669| mu2669_3(int) = Store[intBuffer] : &:r2669_1, r2669_2 +# 2670| r2670_1(glval) = VariableAddress[intBuffer] : +# 2670| r2670_2(int *) = CopyValue : r2670_1 +# 2670| r2670_3(glval) = VariableAddress[data] : +# 2670| mu2670_4(int *) = Store[data] : &:r2670_3, r2670_2 #-----| Goto -> Block 2 -# 2670| Block 2 -# 2670| r2670_1(glval) = FunctionAddress[use_int] : -# 2670| r2670_2(glval) = VariableAddress[data] : -# 2670| r2670_3(int *) = Load[data] : &:r2670_2, ~m? -# 2670| r2670_4(int) = Load[?] : &:r2670_3, ~m? -# 2670| v2670_5(void) = Call[use_int] : func:r2670_1, 0:r2670_4 -# 2670| mu2670_6(unknown) = ^CallSideEffect : ~m? -# 2671| v2671_1(void) = NoOp : -# 2663| v2663_6(void) = ReturnVoid : -# 2663| v2663_7(void) = AliasedUse : ~m? -# 2663| v2663_8(void) = ExitFunction : +# 2672| Block 2 +# 2672| r2672_1(glval) = FunctionAddress[use_int] : +# 2672| r2672_2(glval) = VariableAddress[data] : +# 2672| r2672_3(int *) = Load[data] : &:r2672_2, ~m? +# 2672| r2672_4(int) = Load[?] : &:r2672_3, ~m? +# 2672| v2672_5(void) = Call[use_int] : func:r2672_1, 0:r2672_4 +# 2672| mu2672_6(unknown) = ^CallSideEffect : ~m? +# 2673| v2673_1(void) = NoOp : +# 2665| v2665_6(void) = ReturnVoid : +# 2665| v2665_7(void) = AliasedUse : ~m? +# 2665| v2665_8(void) = ExitFunction : -# 2684| void test(bool) -# 2684| Block 0 -# 2684| v2684_1(void) = EnterFunction : -# 2684| mu2684_2(unknown) = AliasedDefinition : -# 2684| mu2684_3(unknown) = InitializeNonLocal : -# 2684| r2684_4(glval) = VariableAddress[b] : -# 2684| mu2684_5(bool) = InitializeParameter[b] : &:r2684_4 +# 2686| void test(bool) +# 2686| Block 0 +# 2686| v2686_1(void) = EnterFunction : +# 2686| mu2686_2(unknown) = AliasedDefinition : +# 2686| mu2686_3(unknown) = InitializeNonLocal : +# 2686| r2686_4(glval) = VariableAddress[b] : +# 2686| mu2686_5(bool) = InitializeParameter[b] : &:r2686_4 #-----| Goto -> Block 1 -# 2686| Block 1 -# 2686| r2686_1(glval) = FunctionAddress[use] : -# 2686| r2686_2(glval) = VariableAddress[b] : -# 2686| r2686_3(bool) = Load[b] : &:r2686_2, ~m? -# 2686| v2686_4(void) = ConditionalBranch : r2686_3 +# 2688| Block 1 +# 2688| r2688_1(glval) = FunctionAddress[use] : +# 2688| r2688_2(glval) = VariableAddress[b] : +# 2688| r2688_3(bool) = Load[b] : &:r2688_2, ~m? +# 2688| v2688_4(void) = ConditionalBranch : r2688_3 #-----| False -> Block 4 #-----| True -> Block 3 -# 2686| Block 2 -# 2686| r2686_5(glval) = VariableAddress[#temp2686:18] : -# 2686| r2686_6(char *) = Load[#temp2686:18] : &:r2686_5, ~m? -# 2686| v2686_7(void) = Call[use] : func:r2686_1, 0:r2686_6 -# 2686| mu2686_8(unknown) = ^CallSideEffect : ~m? -# 2686| v2686_9(void) = ^BufferReadSideEffect[0] : &:r2686_6, ~m? -# 2686| r2686_10(glval) = FunctionAddress[use] : -# 2686| r2686_11(glval) = VariableAddress[b] : -# 2686| r2686_12(bool) = Load[b] : &:r2686_11, ~m? -# 2686| v2686_13(void) = ConditionalBranch : r2686_12 +# 2688| Block 2 +# 2688| r2688_5(glval) = VariableAddress[#temp2688:18] : +# 2688| r2688_6(char *) = Load[#temp2688:18] : &:r2688_5, ~m? +# 2688| v2688_7(void) = Call[use] : func:r2688_1, 0:r2688_6 +# 2688| mu2688_8(unknown) = ^CallSideEffect : ~m? +# 2688| v2688_9(void) = ^BufferReadSideEffect[0] : &:r2688_6, ~m? +# 2688| r2688_10(glval) = FunctionAddress[use] : +# 2688| r2688_11(glval) = VariableAddress[b] : +# 2688| r2688_12(bool) = Load[b] : &:r2688_11, ~m? +# 2688| v2688_13(void) = ConditionalBranch : r2688_12 #-----| False -> Block 7 #-----| True -> Block 6 -# 2686| Block 3 -# 2686| r2686_14(glval) = StringConstant[] : -# 2686| r2686_15(char *) = Convert : r2686_14 -# 2686| r2686_16(glval) = VariableAddress[#temp2686:18] : -# 2686| mu2686_17(char *) = Store[#temp2686:18] : &:r2686_16, r2686_15 +# 2688| Block 3 +# 2688| r2688_14(glval) = StringConstant[] : +# 2688| r2688_15(char *) = Convert : r2688_14 +# 2688| r2688_16(glval) = VariableAddress[#temp2688:18] : +# 2688| mu2688_17(char *) = Store[#temp2688:18] : &:r2688_16, r2688_15 #-----| Goto -> Block 2 -# 2686| Block 4 -# 2686| r2686_18(glval) = StringConstant[] : -# 2686| r2686_19(char *) = Convert : r2686_18 -# 2686| r2686_20(glval) = VariableAddress[#temp2686:18] : -# 2686| mu2686_21(char *) = Store[#temp2686:18] : &:r2686_20, r2686_19 +# 2688| Block 4 +# 2688| r2688_18(glval) = StringConstant[] : +# 2688| r2688_19(char *) = Convert : r2688_18 +# 2688| r2688_20(glval) = VariableAddress[#temp2688:18] : +# 2688| mu2688_21(char *) = Store[#temp2688:18] : &:r2688_20, r2688_19 #-----| Goto -> Block 2 -# 2686| Block 5 -# 2686| r2686_22(glval) = VariableAddress[#temp2686:18] : -# 2686| r2686_23(char *) = Load[#temp2686:18] : &:r2686_22, ~m? -# 2686| v2686_24(void) = Call[use] : func:r2686_10, 0:r2686_23 -# 2686| mu2686_25(unknown) = ^CallSideEffect : ~m? -# 2686| v2686_26(void) = ^BufferReadSideEffect[0] : &:r2686_23, ~m? -# 2686| r2686_27(bool) = Constant[0] : -# 2686| v2686_28(void) = ConditionalBranch : r2686_27 +# 2688| Block 5 +# 2688| r2688_22(glval) = VariableAddress[#temp2688:18] : +# 2688| r2688_23(char *) = Load[#temp2688:18] : &:r2688_22, ~m? +# 2688| v2688_24(void) = Call[use] : func:r2688_10, 0:r2688_23 +# 2688| mu2688_25(unknown) = ^CallSideEffect : ~m? +# 2688| v2688_26(void) = ^BufferReadSideEffect[0] : &:r2688_23, ~m? +# 2688| r2688_27(bool) = Constant[0] : +# 2688| v2688_28(void) = ConditionalBranch : r2688_27 #-----| False -> Block 8 #-----| True (back edge) -> Block 1 -# 2686| Block 6 -# 2686| r2686_29(glval) = StringConstant[] : -# 2686| r2686_30(char *) = Convert : r2686_29 -# 2686| r2686_31(glval) = VariableAddress[#temp2686:18] : -# 2686| mu2686_32(char *) = Store[#temp2686:18] : &:r2686_31, r2686_30 +# 2688| Block 6 +# 2688| r2688_29(glval) = StringConstant[] : +# 2688| r2688_30(char *) = Convert : r2688_29 +# 2688| r2688_31(glval) = VariableAddress[#temp2688:18] : +# 2688| mu2688_32(char *) = Store[#temp2688:18] : &:r2688_31, r2688_30 #-----| Goto -> Block 5 -# 2686| Block 7 -# 2686| r2686_33(glval) = StringConstant[] : -# 2686| r2686_34(char *) = Convert : r2686_33 -# 2686| r2686_35(glval) = VariableAddress[#temp2686:18] : -# 2686| mu2686_36(char *) = Store[#temp2686:18] : &:r2686_35, r2686_34 +# 2688| Block 7 +# 2688| r2688_33(glval) = StringConstant[] : +# 2688| r2688_34(char *) = Convert : r2688_33 +# 2688| r2688_35(glval) = VariableAddress[#temp2688:18] : +# 2688| mu2688_36(char *) = Store[#temp2688:18] : &:r2688_35, r2688_34 #-----| Goto -> Block 5 -# 2687| Block 8 -# 2687| v2687_1(void) = NoOp : -# 2684| v2684_6(void) = ReturnVoid : -# 2684| v2684_7(void) = AliasedUse : ~m? -# 2684| v2684_8(void) = ExitFunction : +# 2689| Block 8 +# 2689| v2689_1(void) = NoOp : +# 2686| v2686_6(void) = ReturnVoid : +# 2686| v2686_7(void) = AliasedUse : ~m? +# 2686| v2686_8(void) = ExitFunction : -# 2691| int concepts::requires_use() -# 2691| Block 0 -# 2691| v2691_1(void) = EnterFunction : -# 2691| mu2691_2(unknown) = AliasedDefinition : -# 2691| mu2691_3(unknown) = InitializeNonLocal : -# 2692| r2692_1(glval) = VariableAddress[y] : -# 2692| r2692_2(int) = Constant[1] : -# 2692| mu2692_3(int) = Store[y] : &:r2692_1, r2692_2 -# 2693| r2693_1(glval) = VariableAddress[#return] : -# 2693| r2693_2(glval) = VariableAddress[y] : -# 2693| r2693_3(int) = Load[y] : &:r2693_2, ~m? -# 2693| mu2693_4(int) = Store[#return] : &:r2693_1, r2693_3 -# 2691| r2691_4(glval) = VariableAddress[#return] : -# 2691| v2691_5(void) = ReturnValue : &:r2691_4, ~m? -# 2691| v2691_6(void) = AliasedUse : ~m? -# 2691| v2691_7(void) = ExitFunction : +# 2693| int concepts::requires_use() +# 2693| Block 0 +# 2693| v2693_1(void) = EnterFunction : +# 2693| mu2693_2(unknown) = AliasedDefinition : +# 2693| mu2693_3(unknown) = InitializeNonLocal : +# 2694| r2694_1(glval) = VariableAddress[y] : +# 2694| r2694_2(int) = Constant[1] : +# 2694| mu2694_3(int) = Store[y] : &:r2694_1, r2694_2 +# 2695| r2695_1(glval) = VariableAddress[#return] : +# 2695| r2695_2(glval) = VariableAddress[y] : +# 2695| r2695_3(int) = Load[y] : &:r2695_2, ~m? +# 2695| mu2695_4(int) = Store[#return] : &:r2695_1, r2695_3 +# 2693| r2693_4(glval) = VariableAddress[#return] : +# 2693| v2693_5(void) = ReturnValue : &:r2693_4, ~m? +# 2693| v2693_6(void) = AliasedUse : ~m? +# 2693| v2693_7(void) = ExitFunction : -# 2698| void branch_on_integral_in_cpp(int, int) -# 2698| Block 0 -# 2698| v2698_1(void) = EnterFunction : -# 2698| mu2698_2(unknown) = AliasedDefinition : -# 2698| mu2698_3(unknown) = InitializeNonLocal : -# 2698| r2698_4(glval) = VariableAddress[x1] : -# 2698| mu2698_5(int) = InitializeParameter[x1] : &:r2698_4 -# 2698| r2698_6(glval) = VariableAddress[x2] : -# 2698| mu2698_7(int) = InitializeParameter[x2] : &:r2698_6 -# 2699| r2699_1(glval) = VariableAddress[x1] : -# 2699| r2699_2(int) = Load[x1] : &:r2699_1, ~m? -# 2699| r2699_3(int) = Constant[0] : -# 2699| r2699_4(bool) = CompareNE : r2699_2, r2699_3 -# 2699| v2699_5(void) = ConditionalBranch : r2699_4 +# 2700| void branch_on_integral_in_cpp(int, int) +# 2700| Block 0 +# 2700| v2700_1(void) = EnterFunction : +# 2700| mu2700_2(unknown) = AliasedDefinition : +# 2700| mu2700_3(unknown) = InitializeNonLocal : +# 2700| r2700_4(glval) = VariableAddress[x1] : +# 2700| mu2700_5(int) = InitializeParameter[x1] : &:r2700_4 +# 2700| r2700_6(glval) = VariableAddress[x2] : +# 2700| mu2700_7(int) = InitializeParameter[x2] : &:r2700_6 +# 2701| r2701_1(glval) = VariableAddress[x1] : +# 2701| r2701_2(int) = Load[x1] : &:r2701_1, ~m? +# 2701| r2701_3(int) = Constant[0] : +# 2701| r2701_4(bool) = CompareNE : r2701_2, r2701_3 +# 2701| v2701_5(void) = ConditionalBranch : r2701_4 #-----| False -> Block 2 #-----| True -> Block 1 -# 2699| Block 1 -# 2699| v2699_6(void) = NoOp : +# 2701| Block 1 +# 2701| v2701_6(void) = NoOp : #-----| Goto -> Block 2 -# 2700| Block 2 -# 2700| r2700_1(glval) = VariableAddress[x1] : -# 2700| r2700_2(int) = Load[x1] : &:r2700_1, ~m? -# 2700| r2700_3(int) = Constant[0] : -# 2700| r2700_4(bool) = CompareNE : r2700_2, r2700_3 -# 2700| r2700_5(bool) = LogicalNot : r2700_4 -# 2700| v2700_6(void) = ConditionalBranch : r2700_5 +# 2702| Block 2 +# 2702| r2702_1(glval) = VariableAddress[x1] : +# 2702| r2702_2(int) = Load[x1] : &:r2702_1, ~m? +# 2702| r2702_3(int) = Constant[0] : +# 2702| r2702_4(bool) = CompareNE : r2702_2, r2702_3 +# 2702| r2702_5(bool) = LogicalNot : r2702_4 +# 2702| v2702_6(void) = ConditionalBranch : r2702_5 #-----| False -> Block 4 #-----| True -> Block 3 -# 2700| Block 3 -# 2700| v2700_7(void) = NoOp : +# 2702| Block 3 +# 2702| v2702_7(void) = NoOp : #-----| Goto -> Block 4 -# 2702| Block 4 -# 2702| r2702_1(glval) = VariableAddress[y] : -# 2702| r2702_2(glval) = VariableAddress[x1] : -# 2702| r2702_3(int) = Load[x1] : &:r2702_2, ~m? -# 2702| r2702_4(int) = Constant[0] : -# 2702| r2702_5(bool) = CompareNE : r2702_3, r2702_4 -# 2702| r2702_6(bool) = LogicalNot : r2702_5 -# 2702| r2702_7(int) = Convert : r2702_6 -# 2702| mu2702_8(int) = Store[y] : &:r2702_1, r2702_7 -# 2703| r2703_1(glval) = VariableAddress[y] : -# 2703| r2703_2(int) = Load[y] : &:r2703_1, ~m? -# 2703| r2703_3(int) = Constant[0] : -# 2703| r2703_4(bool) = CompareNE : r2703_2, r2703_3 -# 2703| v2703_5(void) = ConditionalBranch : r2703_4 +# 2704| Block 4 +# 2704| r2704_1(glval) = VariableAddress[y] : +# 2704| r2704_2(glval) = VariableAddress[x1] : +# 2704| r2704_3(int) = Load[x1] : &:r2704_2, ~m? +# 2704| r2704_4(int) = Constant[0] : +# 2704| r2704_5(bool) = CompareNE : r2704_3, r2704_4 +# 2704| r2704_6(bool) = LogicalNot : r2704_5 +# 2704| r2704_7(int) = Convert : r2704_6 +# 2704| mu2704_8(int) = Store[y] : &:r2704_1, r2704_7 +# 2705| r2705_1(glval) = VariableAddress[y] : +# 2705| r2705_2(int) = Load[y] : &:r2705_1, ~m? +# 2705| r2705_3(int) = Constant[0] : +# 2705| r2705_4(bool) = CompareNE : r2705_2, r2705_3 +# 2705| v2705_5(void) = ConditionalBranch : r2705_4 #-----| False -> Block 6 #-----| True -> Block 5 -# 2703| Block 5 -# 2703| v2703_6(void) = NoOp : +# 2705| Block 5 +# 2705| v2705_6(void) = NoOp : #-----| Goto -> Block 6 -# 2704| Block 6 -# 2704| r2704_1(glval) = VariableAddress[y] : -# 2704| r2704_2(int) = Load[y] : &:r2704_1, ~m? -# 2704| r2704_3(int) = Constant[0] : -# 2704| r2704_4(bool) = CompareNE : r2704_2, r2704_3 -# 2704| r2704_5(bool) = LogicalNot : r2704_4 -# 2704| v2704_6(void) = ConditionalBranch : r2704_5 +# 2706| Block 6 +# 2706| r2706_1(glval) = VariableAddress[y] : +# 2706| r2706_2(int) = Load[y] : &:r2706_1, ~m? +# 2706| r2706_3(int) = Constant[0] : +# 2706| r2706_4(bool) = CompareNE : r2706_2, r2706_3 +# 2706| r2706_5(bool) = LogicalNot : r2706_4 +# 2706| v2706_6(void) = ConditionalBranch : r2706_5 #-----| False -> Block 8 #-----| True -> Block 7 -# 2704| Block 7 -# 2704| v2704_7(void) = NoOp : +# 2706| Block 7 +# 2706| v2706_7(void) = NoOp : #-----| Goto -> Block 8 -# 2706| Block 8 -# 2706| r2706_1(glval) = VariableAddress[x1] : -# 2706| r2706_2(int) = Load[x1] : &:r2706_1, ~m? -# 2706| r2706_3(int) = Constant[0] : -# 2706| r2706_4(bool) = CompareNE : r2706_2, r2706_3 -# 2706| v2706_5(void) = ConditionalBranch : r2706_4 -#-----| False -> Block 11 -#-----| True -> Block 9 - -# 2706| Block 9 -# 2706| r2706_6(glval) = VariableAddress[x2] : -# 2706| r2706_7(int) = Load[x2] : &:r2706_6, ~m? -# 2706| r2706_8(int) = Constant[0] : -# 2706| r2706_9(bool) = CompareNE : r2706_7, r2706_8 -# 2706| v2706_10(void) = ConditionalBranch : r2706_9 -#-----| False -> Block 11 -#-----| True -> Block 10 - -# 2706| Block 10 -# 2706| v2706_11(void) = NoOp : -#-----| Goto -> Block 11 - -# 2707| Block 11 -# 2707| r2707_1(glval) = VariableAddress[x1] : -# 2707| r2707_2(int) = Load[x1] : &:r2707_1, ~m? -# 2707| r2707_3(int) = Constant[0] : -# 2707| r2707_4(bool) = CompareNE : r2707_2, r2707_3 -# 2707| r2707_5(bool) = LogicalNot : r2707_4 -# 2707| v2707_6(void) = ConditionalBranch : r2707_5 -#-----| False -> Block 14 -#-----| True -> Block 12 - -# 2707| Block 12 -# 2707| r2707_7(glval) = VariableAddress[x2] : -# 2707| r2707_8(int) = Load[x2] : &:r2707_7, ~m? -# 2707| r2707_9(int) = Constant[0] : -# 2707| r2707_10(bool) = CompareNE : r2707_8, r2707_9 -# 2707| v2707_11(void) = ConditionalBranch : r2707_10 -#-----| False -> Block 14 -#-----| True -> Block 13 - -# 2707| Block 13 -# 2707| v2707_12(void) = NoOp : -#-----| Goto -> Block 14 - -# 2708| Block 14 +# 2708| Block 8 # 2708| r2708_1(glval) = VariableAddress[x1] : # 2708| r2708_2(int) = Load[x1] : &:r2708_1, ~m? # 2708| r2708_3(int) = Constant[0] : # 2708| r2708_4(bool) = CompareNE : r2708_2, r2708_3 # 2708| v2708_5(void) = ConditionalBranch : r2708_4 -#-----| False -> Block 17 -#-----| True -> Block 15 +#-----| False -> Block 11 +#-----| True -> Block 9 -# 2708| Block 15 +# 2708| Block 9 # 2708| r2708_6(glval) = VariableAddress[x2] : # 2708| r2708_7(int) = Load[x2] : &:r2708_6, ~m? # 2708| r2708_8(int) = Constant[0] : # 2708| r2708_9(bool) = CompareNE : r2708_7, r2708_8 -# 2708| r2708_10(bool) = LogicalNot : r2708_9 -# 2708| v2708_11(void) = ConditionalBranch : r2708_10 -#-----| False -> Block 17 -#-----| True -> Block 16 +# 2708| v2708_10(void) = ConditionalBranch : r2708_9 +#-----| False -> Block 11 +#-----| True -> Block 10 -# 2708| Block 16 -# 2708| v2708_12(void) = NoOp : -#-----| Goto -> Block 17 +# 2708| Block 10 +# 2708| v2708_11(void) = NoOp : +#-----| Goto -> Block 11 -# 2709| Block 17 +# 2709| Block 11 # 2709| r2709_1(glval) = VariableAddress[x1] : # 2709| r2709_2(int) = Load[x1] : &:r2709_1, ~m? # 2709| r2709_3(int) = Constant[0] : # 2709| r2709_4(bool) = CompareNE : r2709_2, r2709_3 # 2709| r2709_5(bool) = LogicalNot : r2709_4 # 2709| v2709_6(void) = ConditionalBranch : r2709_5 -#-----| False -> Block 20 -#-----| True -> Block 18 +#-----| False -> Block 14 +#-----| True -> Block 12 -# 2709| Block 18 +# 2709| Block 12 # 2709| r2709_7(glval) = VariableAddress[x2] : # 2709| r2709_8(int) = Load[x2] : &:r2709_7, ~m? # 2709| r2709_9(int) = Constant[0] : # 2709| r2709_10(bool) = CompareNE : r2709_8, r2709_9 -# 2709| r2709_11(bool) = LogicalNot : r2709_10 -# 2709| v2709_12(void) = ConditionalBranch : r2709_11 -#-----| False -> Block 20 -#-----| True -> Block 19 +# 2709| v2709_11(void) = ConditionalBranch : r2709_10 +#-----| False -> Block 14 +#-----| True -> Block 13 -# 2709| Block 19 -# 2709| v2709_13(void) = NoOp : -#-----| Goto -> Block 20 +# 2709| Block 13 +# 2709| v2709_12(void) = NoOp : +#-----| Goto -> Block 14 -# 2710| Block 20 +# 2710| Block 14 # 2710| r2710_1(glval) = VariableAddress[x1] : # 2710| r2710_2(int) = Load[x1] : &:r2710_1, ~m? # 2710| r2710_3(int) = Constant[0] : # 2710| r2710_4(bool) = CompareNE : r2710_2, r2710_3 # 2710| v2710_5(void) = ConditionalBranch : r2710_4 -#-----| False -> Block 21 -#-----| True -> Block 22 +#-----| False -> Block 17 +#-----| True -> Block 15 -# 2710| Block 21 +# 2710| Block 15 # 2710| r2710_6(glval) = VariableAddress[x2] : # 2710| r2710_7(int) = Load[x2] : &:r2710_6, ~m? # 2710| r2710_8(int) = Constant[0] : # 2710| r2710_9(bool) = CompareNE : r2710_7, r2710_8 -# 2710| v2710_10(void) = ConditionalBranch : r2710_9 -#-----| False -> Block 23 -#-----| True -> Block 22 +# 2710| r2710_10(bool) = LogicalNot : r2710_9 +# 2710| v2710_11(void) = ConditionalBranch : r2710_10 +#-----| False -> Block 17 +#-----| True -> Block 16 -# 2710| Block 22 -# 2710| v2710_11(void) = NoOp : -#-----| Goto -> Block 23 +# 2710| Block 16 +# 2710| v2710_12(void) = NoOp : +#-----| Goto -> Block 17 -# 2711| Block 23 +# 2711| Block 17 # 2711| r2711_1(glval) = VariableAddress[x1] : # 2711| r2711_2(int) = Load[x1] : &:r2711_1, ~m? # 2711| r2711_3(int) = Constant[0] : # 2711| r2711_4(bool) = CompareNE : r2711_2, r2711_3 # 2711| r2711_5(bool) = LogicalNot : r2711_4 # 2711| v2711_6(void) = ConditionalBranch : r2711_5 -#-----| False -> Block 24 -#-----| True -> Block 25 +#-----| False -> Block 20 +#-----| True -> Block 18 -# 2711| Block 24 +# 2711| Block 18 # 2711| r2711_7(glval) = VariableAddress[x2] : # 2711| r2711_8(int) = Load[x2] : &:r2711_7, ~m? # 2711| r2711_9(int) = Constant[0] : # 2711| r2711_10(bool) = CompareNE : r2711_8, r2711_9 -# 2711| v2711_11(void) = ConditionalBranch : r2711_10 -#-----| False -> Block 26 -#-----| True -> Block 25 +# 2711| r2711_11(bool) = LogicalNot : r2711_10 +# 2711| v2711_12(void) = ConditionalBranch : r2711_11 +#-----| False -> Block 20 +#-----| True -> Block 19 -# 2711| Block 25 -# 2711| v2711_12(void) = NoOp : -#-----| Goto -> Block 26 +# 2711| Block 19 +# 2711| v2711_13(void) = NoOp : +#-----| Goto -> Block 20 -# 2712| Block 26 +# 2712| Block 20 # 2712| r2712_1(glval) = VariableAddress[x1] : # 2712| r2712_2(int) = Load[x1] : &:r2712_1, ~m? # 2712| r2712_3(int) = Constant[0] : # 2712| r2712_4(bool) = CompareNE : r2712_2, r2712_3 # 2712| v2712_5(void) = ConditionalBranch : r2712_4 -#-----| False -> Block 27 -#-----| True -> Block 28 +#-----| False -> Block 21 +#-----| True -> Block 22 -# 2712| Block 27 +# 2712| Block 21 # 2712| r2712_6(glval) = VariableAddress[x2] : # 2712| r2712_7(int) = Load[x2] : &:r2712_6, ~m? # 2712| r2712_8(int) = Constant[0] : # 2712| r2712_9(bool) = CompareNE : r2712_7, r2712_8 -# 2712| r2712_10(bool) = LogicalNot : r2712_9 -# 2712| v2712_11(void) = ConditionalBranch : r2712_10 -#-----| False -> Block 29 -#-----| True -> Block 28 +# 2712| v2712_10(void) = ConditionalBranch : r2712_9 +#-----| False -> Block 23 +#-----| True -> Block 22 -# 2712| Block 28 -# 2712| v2712_12(void) = NoOp : -#-----| Goto -> Block 29 +# 2712| Block 22 +# 2712| v2712_11(void) = NoOp : +#-----| Goto -> Block 23 -# 2713| Block 29 +# 2713| Block 23 # 2713| r2713_1(glval) = VariableAddress[x1] : # 2713| r2713_2(int) = Load[x1] : &:r2713_1, ~m? # 2713| r2713_3(int) = Constant[0] : # 2713| r2713_4(bool) = CompareNE : r2713_2, r2713_3 # 2713| r2713_5(bool) = LogicalNot : r2713_4 # 2713| v2713_6(void) = ConditionalBranch : r2713_5 -#-----| False -> Block 30 -#-----| True -> Block 31 +#-----| False -> Block 24 +#-----| True -> Block 25 -# 2713| Block 30 +# 2713| Block 24 # 2713| r2713_7(glval) = VariableAddress[x2] : # 2713| r2713_8(int) = Load[x2] : &:r2713_7, ~m? # 2713| r2713_9(int) = Constant[0] : # 2713| r2713_10(bool) = CompareNE : r2713_8, r2713_9 -# 2713| r2713_11(bool) = LogicalNot : r2713_10 -# 2713| v2713_12(void) = ConditionalBranch : r2713_11 +# 2713| v2713_11(void) = ConditionalBranch : r2713_10 +#-----| False -> Block 26 +#-----| True -> Block 25 + +# 2713| Block 25 +# 2713| v2713_12(void) = NoOp : +#-----| Goto -> Block 26 + +# 2714| Block 26 +# 2714| r2714_1(glval) = VariableAddress[x1] : +# 2714| r2714_2(int) = Load[x1] : &:r2714_1, ~m? +# 2714| r2714_3(int) = Constant[0] : +# 2714| r2714_4(bool) = CompareNE : r2714_2, r2714_3 +# 2714| v2714_5(void) = ConditionalBranch : r2714_4 +#-----| False -> Block 27 +#-----| True -> Block 28 + +# 2714| Block 27 +# 2714| r2714_6(glval) = VariableAddress[x2] : +# 2714| r2714_7(int) = Load[x2] : &:r2714_6, ~m? +# 2714| r2714_8(int) = Constant[0] : +# 2714| r2714_9(bool) = CompareNE : r2714_7, r2714_8 +# 2714| r2714_10(bool) = LogicalNot : r2714_9 +# 2714| v2714_11(void) = ConditionalBranch : r2714_10 +#-----| False -> Block 29 +#-----| True -> Block 28 + +# 2714| Block 28 +# 2714| v2714_12(void) = NoOp : +#-----| Goto -> Block 29 + +# 2715| Block 29 +# 2715| r2715_1(glval) = VariableAddress[x1] : +# 2715| r2715_2(int) = Load[x1] : &:r2715_1, ~m? +# 2715| r2715_3(int) = Constant[0] : +# 2715| r2715_4(bool) = CompareNE : r2715_2, r2715_3 +# 2715| r2715_5(bool) = LogicalNot : r2715_4 +# 2715| v2715_6(void) = ConditionalBranch : r2715_5 +#-----| False -> Block 30 +#-----| True -> Block 31 + +# 2715| Block 30 +# 2715| r2715_7(glval) = VariableAddress[x2] : +# 2715| r2715_8(int) = Load[x2] : &:r2715_7, ~m? +# 2715| r2715_9(int) = Constant[0] : +# 2715| r2715_10(bool) = CompareNE : r2715_8, r2715_9 +# 2715| r2715_11(bool) = LogicalNot : r2715_10 +# 2715| v2715_12(void) = ConditionalBranch : r2715_11 #-----| False -> Block 32 #-----| True -> Block 31 -# 2713| Block 31 -# 2713| v2713_13(void) = NoOp : +# 2715| Block 31 +# 2715| v2715_13(void) = NoOp : #-----| Goto -> Block 32 -# 2715| Block 32 -# 2715| r2715_1(glval) = VariableAddress[x_1_and_2] : -# 2715| r2715_2(glval) = VariableAddress[x1] : -# 2715| r2715_3(int) = Load[x1] : &:r2715_2, ~m? -# 2715| r2715_4(int) = Constant[0] : -# 2715| r2715_5(bool) = CompareNE : r2715_3, r2715_4 -# 2715| v2715_6(void) = ConditionalBranch : r2715_5 +# 2717| Block 32 +# 2717| r2717_1(glval) = VariableAddress[x_1_and_2] : +# 2717| r2717_2(glval) = VariableAddress[x1] : +# 2717| r2717_3(int) = Load[x1] : &:r2717_2, ~m? +# 2717| r2717_4(int) = Constant[0] : +# 2717| r2717_5(bool) = CompareNE : r2717_3, r2717_4 +# 2717| v2717_6(void) = ConditionalBranch : r2717_5 #-----| False -> Block 33 #-----| True -> Block 36 -# 2715| Block 33 -# 2715| r2715_7(glval) = VariableAddress[#temp2715:19] : -# 2715| r2715_8(bool) = Constant[0] : -# 2715| mu2715_9(bool) = Store[#temp2715:19] : &:r2715_7, r2715_8 +# 2717| Block 33 +# 2717| r2717_7(glval) = VariableAddress[#temp2717:19] : +# 2717| r2717_8(bool) = Constant[0] : +# 2717| mu2717_9(bool) = Store[#temp2717:19] : &:r2717_7, r2717_8 #-----| Goto -> Block 34 -# 2715| Block 34 -# 2715| r2715_10(glval) = VariableAddress[#temp2715:19] : -# 2715| r2715_11(bool) = Load[#temp2715:19] : &:r2715_10, ~m? -# 2715| r2715_12(int) = Convert : r2715_11 -# 2715| mu2715_13(int) = Store[x_1_and_2] : &:r2715_1, r2715_12 -# 2716| r2716_1(glval) = VariableAddress[x_1_and_2] : -# 2716| r2716_2(int) = Load[x_1_and_2] : &:r2716_1, ~m? -# 2716| r2716_3(int) = Constant[0] : -# 2716| r2716_4(bool) = CompareNE : r2716_2, r2716_3 -# 2716| v2716_5(void) = ConditionalBranch : r2716_4 +# 2717| Block 34 +# 2717| r2717_10(glval) = VariableAddress[#temp2717:19] : +# 2717| r2717_11(bool) = Load[#temp2717:19] : &:r2717_10, ~m? +# 2717| r2717_12(int) = Convert : r2717_11 +# 2717| mu2717_13(int) = Store[x_1_and_2] : &:r2717_1, r2717_12 +# 2718| r2718_1(glval) = VariableAddress[x_1_and_2] : +# 2718| r2718_2(int) = Load[x_1_and_2] : &:r2718_1, ~m? +# 2718| r2718_3(int) = Constant[0] : +# 2718| r2718_4(bool) = CompareNE : r2718_2, r2718_3 +# 2718| v2718_5(void) = ConditionalBranch : r2718_4 #-----| False -> Block 38 #-----| True -> Block 37 -# 2715| Block 35 -# 2715| r2715_14(glval) = VariableAddress[#temp2715:19] : -# 2715| r2715_15(bool) = Constant[1] : -# 2715| mu2715_16(bool) = Store[#temp2715:19] : &:r2715_14, r2715_15 +# 2717| Block 35 +# 2717| r2717_14(glval) = VariableAddress[#temp2717:19] : +# 2717| r2717_15(bool) = Constant[1] : +# 2717| mu2717_16(bool) = Store[#temp2717:19] : &:r2717_14, r2717_15 #-----| Goto -> Block 34 -# 2715| Block 36 -# 2715| r2715_17(glval) = VariableAddress[x2] : -# 2715| r2715_18(int) = Load[x2] : &:r2715_17, ~m? -# 2715| r2715_19(int) = Constant[0] : -# 2715| r2715_20(bool) = CompareNE : r2715_18, r2715_19 -# 2715| v2715_21(void) = ConditionalBranch : r2715_20 +# 2717| Block 36 +# 2717| r2717_17(glval) = VariableAddress[x2] : +# 2717| r2717_18(int) = Load[x2] : &:r2717_17, ~m? +# 2717| r2717_19(int) = Constant[0] : +# 2717| r2717_20(bool) = CompareNE : r2717_18, r2717_19 +# 2717| v2717_21(void) = ConditionalBranch : r2717_20 #-----| False -> Block 33 #-----| True -> Block 35 -# 2716| Block 37 -# 2716| v2716_6(void) = NoOp : +# 2718| Block 37 +# 2718| v2718_6(void) = NoOp : #-----| Goto -> Block 38 -# 2717| Block 38 -# 2717| r2717_1(glval) = VariableAddress[x_1_and_2] : -# 2717| r2717_2(int) = Load[x_1_and_2] : &:r2717_1, ~m? -# 2717| r2717_3(int) = Constant[0] : -# 2717| r2717_4(bool) = CompareNE : r2717_2, r2717_3 -# 2717| r2717_5(bool) = LogicalNot : r2717_4 -# 2717| v2717_6(void) = ConditionalBranch : r2717_5 +# 2719| Block 38 +# 2719| r2719_1(glval) = VariableAddress[x_1_and_2] : +# 2719| r2719_2(int) = Load[x_1_and_2] : &:r2719_1, ~m? +# 2719| r2719_3(int) = Constant[0] : +# 2719| r2719_4(bool) = CompareNE : r2719_2, r2719_3 +# 2719| r2719_5(bool) = LogicalNot : r2719_4 +# 2719| v2719_6(void) = ConditionalBranch : r2719_5 #-----| False -> Block 40 #-----| True -> Block 39 -# 2717| Block 39 -# 2717| v2717_7(void) = NoOp : +# 2719| Block 39 +# 2719| v2719_7(void) = NoOp : #-----| Goto -> Block 40 -# 2718| Block 40 -# 2718| v2718_1(void) = NoOp : -# 2698| v2698_8(void) = ReturnVoid : -# 2698| v2698_9(void) = AliasedUse : ~m? -# 2698| v2698_10(void) = ExitFunction : +# 2720| Block 40 +# 2720| v2720_1(void) = NoOp : +# 2700| v2700_8(void) = ReturnVoid : +# 2700| v2700_9(void) = AliasedUse : ~m? +# 2700| v2700_10(void) = ExitFunction : -# 2724| char UseBracketOperator(WithBracketOperator const, int) -# 2724| Block 0 -# 2724| v2724_1(void) = EnterFunction : -# 2724| mu2724_2(unknown) = AliasedDefinition : -# 2724| mu2724_3(unknown) = InitializeNonLocal : -# 2724| r2724_4(glval) = VariableAddress[x] : -# 2724| mu2724_5(WithBracketOperator) = InitializeParameter[x] : &:r2724_4 -# 2724| r2724_6(glval) = VariableAddress[i] : -# 2724| mu2724_7(int) = InitializeParameter[i] : &:r2724_6 -# 2725| r2725_1(glval) = VariableAddress[#return] : -# 2725| r2725_2(glval) = VariableAddress[x] : -# 2725| r2725_3(glval) = FunctionAddress[operator[]] : -# 2725| r2725_4(glval) = VariableAddress[i] : -# 2725| r2725_5(int) = Load[i] : &:r2725_4, ~m? -# 2725| r2725_6(char &) = Call[operator[]] : func:r2725_3, this:r2725_2, 0:r2725_5 -# 2725| mu2725_7(unknown) = ^CallSideEffect : ~m? -# 2725| v2725_8(void) = ^IndirectReadSideEffect[-1] : &:r2725_2, ~m? -# 2725| r2725_9(char) = Load[?] : &:r2725_6, ~m? -# 2725| mu2725_10(char) = Store[#return] : &:r2725_1, r2725_9 -# 2724| r2724_8(glval) = VariableAddress[#return] : -# 2724| v2724_9(void) = ReturnValue : &:r2724_8, ~m? -# 2724| v2724_10(void) = AliasedUse : ~m? -# 2724| v2724_11(void) = ExitFunction : +# 2726| char UseBracketOperator(WithBracketOperator const, int) +# 2726| Block 0 +# 2726| v2726_1(void) = EnterFunction : +# 2726| mu2726_2(unknown) = AliasedDefinition : +# 2726| mu2726_3(unknown) = InitializeNonLocal : +# 2726| r2726_4(glval) = VariableAddress[x] : +# 2726| mu2726_5(WithBracketOperator) = InitializeParameter[x] : &:r2726_4 +# 2726| r2726_6(glval) = VariableAddress[i] : +# 2726| mu2726_7(int) = InitializeParameter[i] : &:r2726_6 +# 2727| r2727_1(glval) = VariableAddress[#return] : +# 2727| r2727_2(glval) = VariableAddress[x] : +# 2727| r2727_3(glval) = FunctionAddress[operator[]] : +# 2727| r2727_4(glval) = VariableAddress[i] : +# 2727| r2727_5(int) = Load[i] : &:r2727_4, ~m? +# 2727| r2727_6(char &) = Call[operator[]] : func:r2727_3, this:r2727_2, 0:r2727_5 +# 2727| mu2727_7(unknown) = ^CallSideEffect : ~m? +# 2727| v2727_8(void) = ^IndirectReadSideEffect[-1] : &:r2727_2, ~m? +# 2727| r2727_9(char) = Load[?] : &:r2727_6, ~m? +# 2727| mu2727_10(char) = Store[#return] : &:r2727_1, r2727_9 +# 2726| r2726_8(glval) = VariableAddress[#return] : +# 2726| v2726_9(void) = ReturnValue : &:r2726_8, ~m? +# 2726| v2726_10(void) = AliasedUse : ~m? +# 2726| v2726_11(void) = ExitFunction : -# 2728| void test_postfix_crement(int*, int) -# 2728| Block 0 -# 2728| v2728_1(void) = EnterFunction : -# 2728| mu2728_2(unknown) = AliasedDefinition : -# 2728| mu2728_3(unknown) = InitializeNonLocal : -# 2728| r2728_4(glval) = VariableAddress[p] : -# 2728| mu2728_5(int *) = InitializeParameter[p] : &:r2728_4 -# 2728| r2728_6(int *) = Load[p] : &:r2728_4, ~m? -# 2728| mu2728_7(unknown) = InitializeIndirection[p] : &:r2728_6 -# 2728| r2728_8(glval) = VariableAddress[q] : -# 2728| mu2728_9(int) = InitializeParameter[q] : &:r2728_8 -# 2729| r2729_1(glval) = VariableAddress[p] : -# 2729| r2729_2(int *) = Load[p] : &:r2729_1, ~m? -# 2729| r2729_3(int) = Constant[1] : -# 2729| r2729_4(int *) = PointerAdd[4] : r2729_2, r2729_3 -# 2729| mu2729_5(int *) = Store[p] : &:r2729_1, r2729_4 -# 2730| r2730_1(glval) = VariableAddress[q] : -# 2730| r2730_2(int) = Load[q] : &:r2730_1, ~m? -# 2730| r2730_3(int) = Constant[1] : -# 2730| r2730_4(int) = Add : r2730_2, r2730_3 -# 2730| mu2730_5(int) = Store[q] : &:r2730_1, r2730_4 +# 2730| void test_postfix_crement(int*, int) +# 2730| Block 0 +# 2730| v2730_1(void) = EnterFunction : +# 2730| mu2730_2(unknown) = AliasedDefinition : +# 2730| mu2730_3(unknown) = InitializeNonLocal : +# 2730| r2730_4(glval) = VariableAddress[p] : +# 2730| mu2730_5(int *) = InitializeParameter[p] : &:r2730_4 +# 2730| r2730_6(int *) = Load[p] : &:r2730_4, ~m? +# 2730| mu2730_7(unknown) = InitializeIndirection[p] : &:r2730_6 +# 2730| r2730_8(glval) = VariableAddress[q] : +# 2730| mu2730_9(int) = InitializeParameter[q] : &:r2730_8 # 2731| r2731_1(glval) = VariableAddress[p] : # 2731| r2731_2(int *) = Load[p] : &:r2731_1, ~m? # 2731| r2731_3(int) = Constant[1] : # 2731| r2731_4(int *) = PointerAdd[4] : r2731_2, r2731_3 # 2731| mu2731_5(int *) = Store[p] : &:r2731_1, r2731_4 -# 2731| r2731_6(int *) = CopyValue : r2731_2 # 2732| r2732_1(glval) = VariableAddress[q] : # 2732| r2732_2(int) = Load[q] : &:r2732_1, ~m? # 2732| r2732_3(int) = Constant[1] : # 2732| r2732_4(int) = Add : r2732_2, r2732_3 # 2732| mu2732_5(int) = Store[q] : &:r2732_1, r2732_4 -# 2732| r2732_6(int) = CopyValue : r2732_2 # 2733| r2733_1(glval) = VariableAddress[p] : # 2733| r2733_2(int *) = Load[p] : &:r2733_1, ~m? # 2733| r2733_3(int) = Constant[1] : # 2733| r2733_4(int *) = PointerAdd[4] : r2733_2, r2733_3 # 2733| mu2733_5(int *) = Store[p] : &:r2733_1, r2733_4 # 2733| r2733_6(int *) = CopyValue : r2733_2 -# 2733| v2733_7(void) = Convert : r2733_6 # 2734| r2734_1(glval) = VariableAddress[q] : # 2734| r2734_2(int) = Load[q] : &:r2734_1, ~m? # 2734| r2734_3(int) = Constant[1] : # 2734| r2734_4(int) = Add : r2734_2, r2734_3 # 2734| mu2734_5(int) = Store[q] : &:r2734_1, r2734_4 # 2734| r2734_6(int) = CopyValue : r2734_2 -# 2734| v2734_7(void) = Convert : r2734_6 # 2735| r2735_1(glval) = VariableAddress[p] : # 2735| r2735_2(int *) = Load[p] : &:r2735_1, ~m? # 2735| r2735_3(int) = Constant[1] : @@ -18387,430 +18373,444 @@ ir.cpp: # 2736| mu2736_5(int) = Store[q] : &:r2736_1, r2736_4 # 2736| r2736_6(int) = CopyValue : r2736_2 # 2736| v2736_7(void) = Convert : r2736_6 -# 2737| r2737_1(glval) = VariableAddress[p1] : -# 2737| r2737_2(glval) = VariableAddress[p] : -# 2737| r2737_3(int *) = Load[p] : &:r2737_2, ~m? -# 2737| r2737_4(int) = Constant[1] : -# 2737| r2737_5(int *) = PointerAdd[4] : r2737_3, r2737_4 -# 2737| mu2737_6(int *) = Store[p] : &:r2737_2, r2737_5 -# 2737| r2737_7(int *) = CopyValue : r2737_3 -# 2737| mu2737_8(int *) = Store[p1] : &:r2737_1, r2737_7 -# 2738| r2738_1(glval) = VariableAddress[q1] : -# 2738| r2738_2(glval) = VariableAddress[q] : -# 2738| r2738_3(int) = Load[q] : &:r2738_2, ~m? -# 2738| r2738_4(int) = Constant[1] : -# 2738| r2738_5(int) = Add : r2738_3, r2738_4 -# 2738| mu2738_6(int) = Store[q] : &:r2738_2, r2738_5 -# 2738| r2738_7(int) = CopyValue : r2738_3 -# 2738| mu2738_8(int) = Store[q1] : &:r2738_1, r2738_7 -# 2739| r2739_1(glval) = VariableAddress[p] : -# 2739| r2739_2(int *) = Load[p] : &:r2739_1, ~m? -# 2739| r2739_3(int) = Constant[1] : -# 2739| r2739_4(int *) = PointerAdd[4] : r2739_2, r2739_3 -# 2739| mu2739_5(int *) = Store[p] : &:r2739_1, r2739_4 -# 2739| r2739_6(int *) = CopyValue : r2739_2 -# 2739| r2739_7(int *) = Convert : r2739_6 -# 2740| r2740_1(glval) = VariableAddress[q] : -# 2740| r2740_2(int) = Load[q] : &:r2740_1, ~m? -# 2740| r2740_3(int) = Constant[1] : -# 2740| r2740_4(int) = Add : r2740_2, r2740_3 -# 2740| mu2740_5(int) = Store[q] : &:r2740_1, r2740_4 -# 2740| r2740_6(int) = CopyValue : r2740_2 -# 2740| r2740_7(int) = Convert : r2740_6 -# 2741| r2741_1(glval) = VariableAddress[p2] : -# 2741| r2741_2(glval) = VariableAddress[p] : -# 2741| r2741_3(int *) = Load[p] : &:r2741_2, ~m? -# 2741| r2741_4(int) = Constant[1] : -# 2741| r2741_5(int *) = PointerAdd[4] : r2741_3, r2741_4 -# 2741| mu2741_6(int *) = Store[p] : &:r2741_2, r2741_5 -# 2741| r2741_7(int *) = CopyValue : r2741_3 -# 2741| r2741_8(int *) = Convert : r2741_7 -# 2741| mu2741_9(int *) = Store[p2] : &:r2741_1, r2741_8 -# 2742| r2742_1(glval) = VariableAddress[q2] : -# 2742| r2742_2(glval) = VariableAddress[q] : -# 2742| r2742_3(int) = Load[q] : &:r2742_2, ~m? -# 2742| r2742_4(int) = Constant[1] : -# 2742| r2742_5(int) = Add : r2742_3, r2742_4 -# 2742| mu2742_6(int) = Store[q] : &:r2742_2, r2742_5 -# 2742| r2742_7(int) = CopyValue : r2742_3 -# 2742| r2742_8(int) = Convert : r2742_7 -# 2742| mu2742_9(int) = Store[q2] : &:r2742_1, r2742_8 -# 2743| v2743_1(void) = NoOp : -# 2728| v2728_10(void) = ReturnIndirection[p] : &:r2728_6, ~m? -# 2728| v2728_11(void) = ReturnVoid : -# 2728| v2728_12(void) = AliasedUse : ~m? -# 2728| v2728_13(void) = ExitFunction : +# 2737| r2737_1(glval) = VariableAddress[p] : +# 2737| r2737_2(int *) = Load[p] : &:r2737_1, ~m? +# 2737| r2737_3(int) = Constant[1] : +# 2737| r2737_4(int *) = PointerAdd[4] : r2737_2, r2737_3 +# 2737| mu2737_5(int *) = Store[p] : &:r2737_1, r2737_4 +# 2737| r2737_6(int *) = CopyValue : r2737_2 +# 2737| v2737_7(void) = Convert : r2737_6 +# 2738| r2738_1(glval) = VariableAddress[q] : +# 2738| r2738_2(int) = Load[q] : &:r2738_1, ~m? +# 2738| r2738_3(int) = Constant[1] : +# 2738| r2738_4(int) = Add : r2738_2, r2738_3 +# 2738| mu2738_5(int) = Store[q] : &:r2738_1, r2738_4 +# 2738| r2738_6(int) = CopyValue : r2738_2 +# 2738| v2738_7(void) = Convert : r2738_6 +# 2739| r2739_1(glval) = VariableAddress[p1] : +# 2739| r2739_2(glval) = VariableAddress[p] : +# 2739| r2739_3(int *) = Load[p] : &:r2739_2, ~m? +# 2739| r2739_4(int) = Constant[1] : +# 2739| r2739_5(int *) = PointerAdd[4] : r2739_3, r2739_4 +# 2739| mu2739_6(int *) = Store[p] : &:r2739_2, r2739_5 +# 2739| r2739_7(int *) = CopyValue : r2739_3 +# 2739| mu2739_8(int *) = Store[p1] : &:r2739_1, r2739_7 +# 2740| r2740_1(glval) = VariableAddress[q1] : +# 2740| r2740_2(glval) = VariableAddress[q] : +# 2740| r2740_3(int) = Load[q] : &:r2740_2, ~m? +# 2740| r2740_4(int) = Constant[1] : +# 2740| r2740_5(int) = Add : r2740_3, r2740_4 +# 2740| mu2740_6(int) = Store[q] : &:r2740_2, r2740_5 +# 2740| r2740_7(int) = CopyValue : r2740_3 +# 2740| mu2740_8(int) = Store[q1] : &:r2740_1, r2740_7 +# 2741| r2741_1(glval) = VariableAddress[p] : +# 2741| r2741_2(int *) = Load[p] : &:r2741_1, ~m? +# 2741| r2741_3(int) = Constant[1] : +# 2741| r2741_4(int *) = PointerAdd[4] : r2741_2, r2741_3 +# 2741| mu2741_5(int *) = Store[p] : &:r2741_1, r2741_4 +# 2741| r2741_6(int *) = CopyValue : r2741_2 +# 2741| r2741_7(int *) = Convert : r2741_6 +# 2742| r2742_1(glval) = VariableAddress[q] : +# 2742| r2742_2(int) = Load[q] : &:r2742_1, ~m? +# 2742| r2742_3(int) = Constant[1] : +# 2742| r2742_4(int) = Add : r2742_2, r2742_3 +# 2742| mu2742_5(int) = Store[q] : &:r2742_1, r2742_4 +# 2742| r2742_6(int) = CopyValue : r2742_2 +# 2742| r2742_7(int) = Convert : r2742_6 +# 2743| r2743_1(glval) = VariableAddress[p2] : +# 2743| r2743_2(glval) = VariableAddress[p] : +# 2743| r2743_3(int *) = Load[p] : &:r2743_2, ~m? +# 2743| r2743_4(int) = Constant[1] : +# 2743| r2743_5(int *) = PointerAdd[4] : r2743_3, r2743_4 +# 2743| mu2743_6(int *) = Store[p] : &:r2743_2, r2743_5 +# 2743| r2743_7(int *) = CopyValue : r2743_3 +# 2743| r2743_8(int *) = Convert : r2743_7 +# 2743| mu2743_9(int *) = Store[p2] : &:r2743_1, r2743_8 +# 2744| r2744_1(glval) = VariableAddress[q2] : +# 2744| r2744_2(glval) = VariableAddress[q] : +# 2744| r2744_3(int) = Load[q] : &:r2744_2, ~m? +# 2744| r2744_4(int) = Constant[1] : +# 2744| r2744_5(int) = Add : r2744_3, r2744_4 +# 2744| mu2744_6(int) = Store[q] : &:r2744_2, r2744_5 +# 2744| r2744_7(int) = CopyValue : r2744_3 +# 2744| r2744_8(int) = Convert : r2744_7 +# 2744| mu2744_9(int) = Store[q2] : &:r2744_1, r2744_8 +# 2745| v2745_1(void) = NoOp : +# 2730| v2730_10(void) = ReturnIndirection[p] : &:r2730_6, ~m? +# 2730| v2730_11(void) = ReturnVoid : +# 2730| v2730_12(void) = AliasedUse : ~m? +# 2730| v2730_13(void) = ExitFunction : -# 2747| void std::strong_ordering::strong_ordering(std::strong_ordering&&) -# 2747| Block 0 -# 2747| v2747_1(void) = EnterFunction : -# 2747| mu2747_2(unknown) = AliasedDefinition : -# 2747| mu2747_3(unknown) = InitializeNonLocal : -# 2747| r2747_4(glval) = VariableAddress[#this] : -# 2747| mu2747_5(glval) = InitializeParameter[#this] : &:r2747_4 -# 2747| r2747_6(glval) = Load[#this] : &:r2747_4, ~m? -# 2747| mu2747_7(strong_ordering) = InitializeIndirection[#this] : &:r2747_6 +# 2749| void std::strong_ordering::strong_ordering(std::strong_ordering&&) +# 2749| Block 0 +# 2749| v2749_1(void) = EnterFunction : +# 2749| mu2749_2(unknown) = AliasedDefinition : +# 2749| mu2749_3(unknown) = InitializeNonLocal : +# 2749| r2749_4(glval) = VariableAddress[#this] : +# 2749| mu2749_5(glval) = InitializeParameter[#this] : &:r2749_4 +# 2749| r2749_6(glval) = Load[#this] : &:r2749_4, ~m? +# 2749| mu2749_7(strong_ordering) = InitializeIndirection[#this] : &:r2749_6 #-----| r0_1(glval) = VariableAddress[(unnamed parameter 0)] : #-----| mu0_2(strong_ordering &&) = InitializeParameter[(unnamed parameter 0)] : &:r0_1 #-----| r0_3(strong_ordering &&) = Load[(unnamed parameter 0)] : &:r0_1, ~m? #-----| mu0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3 -# 2747| v2747_8(void) = NoOp : -# 2747| v2747_9(void) = ReturnIndirection[#this] : &:r2747_6, ~m? +# 2749| v2749_8(void) = NoOp : +# 2749| v2749_9(void) = ReturnIndirection[#this] : &:r2749_6, ~m? #-----| v0_5(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, ~m? -# 2747| v2747_10(void) = ReturnVoid : -# 2747| v2747_11(void) = AliasedUse : ~m? -# 2747| v2747_12(void) = ExitFunction : +# 2749| v2749_10(void) = ReturnVoid : +# 2749| v2749_11(void) = AliasedUse : ~m? +# 2749| v2749_12(void) = ExitFunction : -# 2748| void std::strong_ordering::strong_ordering(std::_Order) -# 2748| Block 0 -# 2748| v2748_1(void) = EnterFunction : -# 2748| mu2748_2(unknown) = AliasedDefinition : -# 2748| mu2748_3(unknown) = InitializeNonLocal : -# 2748| r2748_4(glval) = VariableAddress[#this] : -# 2748| mu2748_5(glval) = InitializeParameter[#this] : &:r2748_4 -# 2748| r2748_6(glval) = Load[#this] : &:r2748_4, ~m? -# 2748| mu2748_7(strong_ordering) = InitializeIndirection[#this] : &:r2748_6 -# 2748| r2748_8(glval<_Order>) = VariableAddress[v] : -# 2748| mu2748_9(_Order) = InitializeParameter[v] : &:r2748_8 -# 2748| v2748_10(void) = NoOp : -# 2748| v2748_11(void) = ReturnIndirection[#this] : &:r2748_6, ~m? -# 2748| v2748_12(void) = ReturnVoid : -# 2748| v2748_13(void) = AliasedUse : ~m? -# 2748| v2748_14(void) = ExitFunction : +# 2750| void std::strong_ordering::strong_ordering(std::_Order) +# 2750| Block 0 +# 2750| v2750_1(void) = EnterFunction : +# 2750| mu2750_2(unknown) = AliasedDefinition : +# 2750| mu2750_3(unknown) = InitializeNonLocal : +# 2750| r2750_4(glval) = VariableAddress[#this] : +# 2750| mu2750_5(glval) = InitializeParameter[#this] : &:r2750_4 +# 2750| r2750_6(glval) = Load[#this] : &:r2750_4, ~m? +# 2750| mu2750_7(strong_ordering) = InitializeIndirection[#this] : &:r2750_6 +# 2750| r2750_8(glval<_Order>) = VariableAddress[v] : +# 2750| mu2750_9(_Order) = InitializeParameter[v] : &:r2750_8 +# 2750| v2750_10(void) = NoOp : +# 2750| v2750_11(void) = ReturnIndirection[#this] : &:r2750_6, ~m? +# 2750| v2750_12(void) = ReturnVoid : +# 2750| v2750_13(void) = AliasedUse : ~m? +# 2750| v2750_14(void) = ExitFunction : -# 2766| std::strong_ordering ThreeWay::operator<=>(ThreeWay&) -# 2766| Block 0 -# 2766| v2766_1(void) = EnterFunction : -# 2766| mu2766_2(unknown) = AliasedDefinition : -# 2766| mu2766_3(unknown) = InitializeNonLocal : -# 2766| r2766_4(glval) = VariableAddress[#this] : -# 2766| mu2766_5(glval) = InitializeParameter[#this] : &:r2766_4 -# 2766| r2766_6(glval) = Load[#this] : &:r2766_4, ~m? -# 2766| mu2766_7(ThreeWay) = InitializeIndirection[#this] : &:r2766_6 -# 2766| r2766_8(glval) = VariableAddress[y] : -# 2766| mu2766_9(ThreeWay &) = InitializeParameter[y] : &:r2766_8 -# 2766| r2766_10(ThreeWay &) = Load[y] : &:r2766_8, ~m? -# 2766| mu2766_11(unknown) = InitializeIndirection[y] : &:r2766_10 -# 2766| r2766_12(glval) = VariableAddress[#return] : -# 2766| r2766_13(glval) = VariableAddress[#this] : -# 2766| r2766_14(ThreeWay *) = Load[#this] : &:r2766_13, ~m? -# 2766| r2766_15(glval) = FieldAddress[x] : r2766_14 -# 2766| r2766_16(int) = Load[?] : &:r2766_15, ~m? -# 2766| r2766_17(glval) = VariableAddress[y] : -# 2766| r2766_18(ThreeWay &) = Load[y] : &:r2766_17, ~m? -# 2766| r2766_19(glval) = CopyValue : r2766_18 -# 2766| r2766_20(glval) = FieldAddress[x] : r2766_19 -# 2766| r2766_21(int) = Load[?] : &:r2766_20, ~m? -# 2766| r2766_22(strong_ordering) = Spaceship : r2766_16, r2766_21 -# 2766| mu2766_23(strong_ordering) = Store[#return] : &:r2766_12, r2766_22 -# 2766| v2766_24(void) = ReturnIndirection[#this] : &:r2766_6, ~m? -# 2766| v2766_25(void) = ReturnIndirection[y] : &:r2766_10, ~m? -# 2766| r2766_26(glval) = VariableAddress[#return] : -# 2766| v2766_27(void) = ReturnValue : &:r2766_26, ~m? -# 2766| v2766_28(void) = AliasedUse : ~m? -# 2766| v2766_29(void) = ExitFunction : +# 2768| std::strong_ordering ThreeWay::operator<=>(ThreeWay&) +# 2768| Block 0 +# 2768| v2768_1(void) = EnterFunction : +# 2768| mu2768_2(unknown) = AliasedDefinition : +# 2768| mu2768_3(unknown) = InitializeNonLocal : +# 2768| r2768_4(glval) = VariableAddress[#this] : +# 2768| mu2768_5(glval) = InitializeParameter[#this] : &:r2768_4 +# 2768| r2768_6(glval) = Load[#this] : &:r2768_4, ~m? +# 2768| mu2768_7(ThreeWay) = InitializeIndirection[#this] : &:r2768_6 +# 2768| r2768_8(glval) = VariableAddress[y] : +# 2768| mu2768_9(ThreeWay &) = InitializeParameter[y] : &:r2768_8 +# 2768| r2768_10(ThreeWay &) = Load[y] : &:r2768_8, ~m? +# 2768| mu2768_11(unknown) = InitializeIndirection[y] : &:r2768_10 +# 2768| r2768_12(glval) = VariableAddress[#return] : +# 2768| r2768_13(glval) = VariableAddress[#this] : +# 2768| r2768_14(ThreeWay *) = Load[#this] : &:r2768_13, ~m? +# 2768| r2768_15(glval) = FieldAddress[x] : r2768_14 +# 2768| r2768_16(int) = Load[?] : &:r2768_15, ~m? +# 2768| r2768_17(glval) = VariableAddress[y] : +# 2768| r2768_18(ThreeWay &) = Load[y] : &:r2768_17, ~m? +# 2768| r2768_19(glval) = CopyValue : r2768_18 +# 2768| r2768_20(glval) = FieldAddress[x] : r2768_19 +# 2768| r2768_21(int) = Load[?] : &:r2768_20, ~m? +# 2768| r2768_22(strong_ordering) = Spaceship : r2768_16, r2768_21 +# 2768| mu2768_23(strong_ordering) = Store[#return] : &:r2768_12, r2768_22 +# 2768| v2768_24(void) = ReturnIndirection[#this] : &:r2768_6, ~m? +# 2768| v2768_25(void) = ReturnIndirection[y] : &:r2768_10, ~m? +# 2768| r2768_26(glval) = VariableAddress[#return] : +# 2768| v2768_27(void) = ReturnValue : &:r2768_26, ~m? +# 2768| v2768_28(void) = AliasedUse : ~m? +# 2768| v2768_29(void) = ExitFunction : -# 2769| void test_three_way(int, int, ThreeWay, ThreeWay) -# 2769| Block 0 -# 2769| v2769_1(void) = EnterFunction : -# 2769| mu2769_2(unknown) = AliasedDefinition : -# 2769| mu2769_3(unknown) = InitializeNonLocal : -# 2769| r2769_4(glval) = VariableAddress[a] : -# 2769| mu2769_5(int) = InitializeParameter[a] : &:r2769_4 -# 2769| r2769_6(glval) = VariableAddress[b] : -# 2769| mu2769_7(int) = InitializeParameter[b] : &:r2769_6 -# 2769| r2769_8(glval) = VariableAddress[c] : -# 2769| mu2769_9(ThreeWay) = InitializeParameter[c] : &:r2769_8 -# 2769| r2769_10(glval) = VariableAddress[d] : -# 2769| mu2769_11(ThreeWay) = InitializeParameter[d] : &:r2769_10 -# 2770| r2770_1(glval) = VariableAddress[x] : -# 2770| r2770_2(glval) = VariableAddress[a] : -# 2770| r2770_3(int) = Load[a] : &:r2770_2, ~m? -# 2770| r2770_4(glval) = VariableAddress[b] : -# 2770| r2770_5(int) = Load[b] : &:r2770_4, ~m? -# 2770| r2770_6(strong_ordering) = Spaceship : r2770_3, r2770_5 -# 2770| mu2770_7(strong_ordering) = Store[x] : &:r2770_1, r2770_6 -# 2771| r2771_1(glval) = VariableAddress[y] : -# 2771| r2771_2(glval) = VariableAddress[c] : -# 2771| r2771_3(glval) = FunctionAddress[operator<=>] : -# 2771| r2771_4(glval) = VariableAddress[d] : -# 2771| r2771_5(ThreeWay &) = CopyValue : r2771_4 -# 2771| r2771_6(strong_ordering) = Call[operator<=>] : func:r2771_3, this:r2771_2, 0:r2771_5 -# 2771| mu2771_7(unknown) = ^CallSideEffect : ~m? -# 2771| v2771_8(void) = ^IndirectReadSideEffect[-1] : &:r2771_2, ~m? -# 2771| v2771_9(void) = ^BufferReadSideEffect[0] : &:r2771_5, ~m? -# 2771| mu2771_10(ThreeWay) = ^IndirectMayWriteSideEffect[-1] : &:r2771_2 -# 2771| mu2771_11(unknown) = ^BufferMayWriteSideEffect[0] : &:r2771_5 -# 2771| mu2771_12(strong_ordering) = Store[y] : &:r2771_1, r2771_6 -# 2772| v2772_1(void) = NoOp : -# 2769| v2769_12(void) = ReturnVoid : -# 2769| v2769_13(void) = AliasedUse : ~m? -# 2769| v2769_14(void) = ExitFunction : +# 2771| void test_three_way(int, int, ThreeWay, ThreeWay) +# 2771| Block 0 +# 2771| v2771_1(void) = EnterFunction : +# 2771| mu2771_2(unknown) = AliasedDefinition : +# 2771| mu2771_3(unknown) = InitializeNonLocal : +# 2771| r2771_4(glval) = VariableAddress[a] : +# 2771| mu2771_5(int) = InitializeParameter[a] : &:r2771_4 +# 2771| r2771_6(glval) = VariableAddress[b] : +# 2771| mu2771_7(int) = InitializeParameter[b] : &:r2771_6 +# 2771| r2771_8(glval) = VariableAddress[c] : +# 2771| mu2771_9(ThreeWay) = InitializeParameter[c] : &:r2771_8 +# 2771| r2771_10(glval) = VariableAddress[d] : +# 2771| mu2771_11(ThreeWay) = InitializeParameter[d] : &:r2771_10 +# 2772| r2772_1(glval) = VariableAddress[x] : +# 2772| r2772_2(glval) = VariableAddress[a] : +# 2772| r2772_3(int) = Load[a] : &:r2772_2, ~m? +# 2772| r2772_4(glval) = VariableAddress[b] : +# 2772| r2772_5(int) = Load[b] : &:r2772_4, ~m? +# 2772| r2772_6(strong_ordering) = Spaceship : r2772_3, r2772_5 +# 2772| mu2772_7(strong_ordering) = Store[x] : &:r2772_1, r2772_6 +# 2773| r2773_1(glval) = VariableAddress[y] : +# 2773| r2773_2(glval) = VariableAddress[c] : +# 2773| r2773_3(glval) = FunctionAddress[operator<=>] : +# 2773| r2773_4(glval) = VariableAddress[d] : +# 2773| r2773_5(ThreeWay &) = CopyValue : r2773_4 +# 2773| r2773_6(strong_ordering) = Call[operator<=>] : func:r2773_3, this:r2773_2, 0:r2773_5 +# 2773| mu2773_7(unknown) = ^CallSideEffect : ~m? +# 2773| v2773_8(void) = ^IndirectReadSideEffect[-1] : &:r2773_2, ~m? +# 2773| v2773_9(void) = ^BufferReadSideEffect[0] : &:r2773_5, ~m? +# 2773| mu2773_10(ThreeWay) = ^IndirectMayWriteSideEffect[-1] : &:r2773_2 +# 2773| mu2773_11(unknown) = ^BufferMayWriteSideEffect[0] : &:r2773_5 +# 2773| mu2773_12(strong_ordering) = Store[y] : &:r2773_1, r2773_6 +# 2774| v2774_1(void) = NoOp : +# 2771| v2771_12(void) = ReturnVoid : +# 2771| v2771_13(void) = AliasedUse : ~m? +# 2771| v2771_14(void) = ExitFunction : -# 2774| void test_allocation_with_initializer() -# 2774| Block 0 -# 2774| v2774_1(void) = EnterFunction : -# 2774| mu2774_2(unknown) = AliasedDefinition : -# 2774| mu2774_3(unknown) = InitializeNonLocal : -# 2775| r2775_1(glval) = VariableAddress[p1] : -# 2775| r2775_2(glval) = FunctionAddress[operator new] : -# 2775| r2775_3(unsigned long) = Constant[4] : -# 2775| r2775_4(void *) = Call[operator new] : func:r2775_2, 0:r2775_3 -# 2775| mu2775_5(unknown) = ^CallSideEffect : ~m? -# 2775| mu2775_6(unknown) = ^InitializeDynamicAllocation : &:r2775_4 -# 2775| r2775_7(int *) = Convert : r2775_4 -# 2775| r2775_8(int) = Constant[42] : -# 2775| mu2775_9(int) = Store[?] : &:r2775_7, r2775_8 -# 2775| mu2775_10(int *) = Store[p1] : &:r2775_1, r2775_7 -# 2776| r2776_1(glval) = VariableAddress[p2] : -# 2776| r2776_2(glval) = FunctionAddress[operator new] : -# 2776| r2776_3(unsigned long) = Constant[8] : -# 2776| r2776_4(void *) = Call[operator new] : func:r2776_2, 0:r2776_3 -# 2776| mu2776_5(unknown) = ^CallSideEffect : ~m? -# 2776| mu2776_6(unknown) = ^InitializeDynamicAllocation : &:r2776_4 -# 2776| r2776_7(long *) = Convert : r2776_4 -# 2776| r2776_8(long) = Constant[42] : -# 2776| mu2776_9(long) = Store[?] : &:r2776_7, r2776_8 -# 2776| mu2776_10(long *) = Store[p2] : &:r2776_1, r2776_7 -# 2777| v2777_1(void) = NoOp : -# 2774| v2774_4(void) = ReturnVoid : -# 2774| v2774_5(void) = AliasedUse : ~m? -# 2774| v2774_6(void) = ExitFunction : +# 2776| void test_allocation_with_initializer() +# 2776| Block 0 +# 2776| v2776_1(void) = EnterFunction : +# 2776| mu2776_2(unknown) = AliasedDefinition : +# 2776| mu2776_3(unknown) = InitializeNonLocal : +# 2777| r2777_1(glval) = VariableAddress[p1] : +# 2777| r2777_2(glval) = FunctionAddress[operator new] : +# 2777| r2777_3(unsigned long) = Constant[4] : +# 2777| r2777_4(void *) = Call[operator new] : func:r2777_2, 0:r2777_3 +# 2777| mu2777_5(unknown) = ^CallSideEffect : ~m? +# 2777| mu2777_6(unknown) = ^InitializeDynamicAllocation : &:r2777_4 +# 2777| r2777_7(int *) = Convert : r2777_4 +# 2777| r2777_8(int) = Constant[42] : +# 2777| mu2777_9(int) = Store[?] : &:r2777_7, r2777_8 +# 2777| mu2777_10(int *) = Store[p1] : &:r2777_1, r2777_7 +# 2778| r2778_1(glval) = VariableAddress[p2] : +# 2778| r2778_2(glval) = FunctionAddress[operator new] : +# 2778| r2778_3(unsigned long) = Constant[8] : +# 2778| r2778_4(void *) = Call[operator new] : func:r2778_2, 0:r2778_3 +# 2778| mu2778_5(unknown) = ^CallSideEffect : ~m? +# 2778| mu2778_6(unknown) = ^InitializeDynamicAllocation : &:r2778_4 +# 2778| r2778_7(long *) = Convert : r2778_4 +# 2778| r2778_8(long) = Constant[42] : +# 2778| mu2778_9(long) = Store[?] : &:r2778_7, r2778_8 +# 2778| mu2778_10(long *) = Store[p2] : &:r2778_1, r2778_7 +# 2779| v2779_1(void) = NoOp : +# 2776| v2776_4(void) = ReturnVoid : +# 2776| v2776_5(void) = AliasedUse : ~m? +# 2776| v2776_6(void) = ExitFunction : -# 2779| void vla_sizeof_test(int, size_t, char) -# 2779| Block 0 -# 2779| v2779_1(void) = EnterFunction : -# 2779| mu2779_2(unknown) = AliasedDefinition : -# 2779| mu2779_3(unknown) = InitializeNonLocal : -# 2779| r2779_4(glval) = VariableAddress[len1] : -# 2779| mu2779_5(int) = InitializeParameter[len1] : &:r2779_4 -# 2779| r2779_6(glval) = VariableAddress[len2] : -# 2779| mu2779_7(unsigned long) = InitializeParameter[len2] : &:r2779_6 -# 2779| r2779_8(glval) = VariableAddress[len3] : -# 2779| mu2779_9(char) = InitializeParameter[len3] : &:r2779_8 -# 2780| r2780_1(glval) = VariableAddress[tmp1] : -# 2780| mu2780_2(char[]) = Uninitialized[tmp1] : &:r2780_1 -# 2780| r2780_3(glval) = VariableAddress[len1] : -# 2780| r2780_4(int) = Load[len1] : &:r2780_3, ~m? -# 2780| v2780_5(void) = NoOp : -# 2781| r2781_1(glval) = VariableAddress[x] : -# 2781| r2781_2(unsigned long) = Constant[1] : -# 2781| r2781_3(unsigned long) = Convert : r2780_4 -# 2781| r2781_4(unsigned long) = Mul : r2781_2, r2781_3 -# 2781| mu2781_5(unsigned long) = Store[x] : &:r2781_1, r2781_4 -# 2782| r2782_1(glval) = VariableAddress[tmp2] : -# 2782| mu2782_2(int[][]) = Uninitialized[tmp2] : &:r2782_1 +# 2781| void vla_sizeof_test(int, size_t, char) +# 2781| Block 0 +# 2781| v2781_1(void) = EnterFunction : +# 2781| mu2781_2(unknown) = AliasedDefinition : +# 2781| mu2781_3(unknown) = InitializeNonLocal : +# 2781| r2781_4(glval) = VariableAddress[len1] : +# 2781| mu2781_5(int) = InitializeParameter[len1] : &:r2781_4 +# 2781| r2781_6(glval) = VariableAddress[len2] : +# 2781| mu2781_7(unsigned long) = InitializeParameter[len2] : &:r2781_6 +# 2781| r2781_8(glval) = VariableAddress[len3] : +# 2781| mu2781_9(char) = InitializeParameter[len3] : &:r2781_8 +# 2782| r2782_1(glval) = VariableAddress[tmp1] : +# 2782| mu2782_2(char[]) = Uninitialized[tmp1] : &:r2782_1 # 2782| r2782_3(glval) = VariableAddress[len1] : # 2782| r2782_4(int) = Load[len1] : &:r2782_3, ~m? -# 2782| r2782_5(glval) = VariableAddress[len2] : -# 2782| r2782_6(unsigned long) = Load[len2] : &:r2782_5, ~m? -# 2782| v2782_7(void) = NoOp : -# 2783| r2783_1(glval) = VariableAddress[y] : -# 2783| r2783_2(unsigned long) = Constant[4] : +# 2782| v2782_5(void) = NoOp : +# 2783| r2783_1(glval) = VariableAddress[x] : +# 2783| r2783_2(unsigned long) = Constant[1] : # 2783| r2783_3(unsigned long) = Convert : r2782_4 # 2783| r2783_4(unsigned long) = Mul : r2783_2, r2783_3 -# 2783| r2783_5(unsigned long) = CopyValue : r2782_6 -# 2783| r2783_6(unsigned long) = Mul : r2783_4, r2783_5 -# 2783| mu2783_7(unsigned long) = Store[y] : &:r2783_1, r2783_6 -# 2784| r2784_1(glval) = VariableAddress[z] : -# 2784| r2784_2(unsigned long) = Constant[4] : -# 2784| r2784_3(unsigned long) = CopyValue : r2782_6 -# 2784| r2784_4(unsigned long) = Mul : r2784_2, r2784_3 -# 2784| mu2784_5(unsigned long) = Store[z] : &:r2784_1, r2784_4 -# 2785| r2785_1(glval) = VariableAddress[tmp3] : -# 2785| mu2785_2(int[][][]) = Uninitialized[tmp3] : &:r2785_1 -# 2785| r2785_3(glval) = VariableAddress[len1] : -# 2785| r2785_4(int) = Load[len1] : &:r2785_3, ~m? -# 2785| r2785_5(glval) = VariableAddress[len2] : -# 2785| r2785_6(unsigned long) = Load[len2] : &:r2785_5, ~m? -# 2785| r2785_7(glval) = VariableAddress[len3] : -# 2785| r2785_8(char) = Load[len3] : &:r2785_7, ~m? -# 2785| v2785_9(void) = NoOp : -# 2786| r2786_1(glval) = VariableAddress[w] : +# 2783| mu2783_5(unsigned long) = Store[x] : &:r2783_1, r2783_4 +# 2784| r2784_1(glval) = VariableAddress[tmp2] : +# 2784| mu2784_2(int[][]) = Uninitialized[tmp2] : &:r2784_1 +# 2784| r2784_3(glval) = VariableAddress[len1] : +# 2784| r2784_4(int) = Load[len1] : &:r2784_3, ~m? +# 2784| r2784_5(glval) = VariableAddress[len2] : +# 2784| r2784_6(unsigned long) = Load[len2] : &:r2784_5, ~m? +# 2784| v2784_7(void) = NoOp : +# 2785| r2785_1(glval) = VariableAddress[y] : +# 2785| r2785_2(unsigned long) = Constant[4] : +# 2785| r2785_3(unsigned long) = Convert : r2784_4 +# 2785| r2785_4(unsigned long) = Mul : r2785_2, r2785_3 +# 2785| r2785_5(unsigned long) = CopyValue : r2784_6 +# 2785| r2785_6(unsigned long) = Mul : r2785_4, r2785_5 +# 2785| mu2785_7(unsigned long) = Store[y] : &:r2785_1, r2785_6 +# 2786| r2786_1(glval) = VariableAddress[z] : # 2786| r2786_2(unsigned long) = Constant[4] : -# 2786| r2786_3(unsigned long) = Convert : r2785_4 +# 2786| r2786_3(unsigned long) = CopyValue : r2784_6 # 2786| r2786_4(unsigned long) = Mul : r2786_2, r2786_3 -# 2786| r2786_5(unsigned long) = CopyValue : r2785_6 -# 2786| r2786_6(unsigned long) = Mul : r2786_4, r2786_5 -# 2786| r2786_7(unsigned long) = Convert : r2785_8 -# 2786| r2786_8(unsigned long) = Mul : r2786_6, r2786_7 -# 2786| mu2786_9(unsigned long) = Store[w] : &:r2786_1, r2786_8 -# 2787| r2787_1(glval) = VariableAddress[v] : -# 2787| r2787_2(unsigned long) = Constant[4] : -# 2787| r2787_3(unsigned long) = CopyValue : r2785_6 -# 2787| r2787_4(unsigned long) = Mul : r2787_2, r2787_3 -# 2787| r2787_5(unsigned long) = Convert : r2785_8 -# 2787| r2787_6(unsigned long) = Mul : r2787_4, r2787_5 -# 2787| mu2787_7(unsigned long) = Store[v] : &:r2787_1, r2787_6 -# 2788| r2788_1(glval) = VariableAddress[u] : +# 2786| mu2786_5(unsigned long) = Store[z] : &:r2786_1, r2786_4 +# 2787| r2787_1(glval) = VariableAddress[tmp3] : +# 2787| mu2787_2(int[][][]) = Uninitialized[tmp3] : &:r2787_1 +# 2787| r2787_3(glval) = VariableAddress[len1] : +# 2787| r2787_4(int) = Load[len1] : &:r2787_3, ~m? +# 2787| r2787_5(glval) = VariableAddress[len2] : +# 2787| r2787_6(unsigned long) = Load[len2] : &:r2787_5, ~m? +# 2787| r2787_7(glval) = VariableAddress[len3] : +# 2787| r2787_8(char) = Load[len3] : &:r2787_7, ~m? +# 2787| v2787_9(void) = NoOp : +# 2788| r2788_1(glval) = VariableAddress[w] : # 2788| r2788_2(unsigned long) = Constant[4] : -# 2788| r2788_3(unsigned long) = Convert : r2785_8 +# 2788| r2788_3(unsigned long) = Convert : r2787_4 # 2788| r2788_4(unsigned long) = Mul : r2788_2, r2788_3 -# 2788| mu2788_5(unsigned long) = Store[u] : &:r2788_1, r2788_4 -# 2789| r2789_1(glval) = VariableAddress[t] : +# 2788| r2788_5(unsigned long) = CopyValue : r2787_6 +# 2788| r2788_6(unsigned long) = Mul : r2788_4, r2788_5 +# 2788| r2788_7(unsigned long) = Convert : r2787_8 +# 2788| r2788_8(unsigned long) = Mul : r2788_6, r2788_7 +# 2788| mu2788_9(unsigned long) = Store[w] : &:r2788_1, r2788_8 +# 2789| r2789_1(glval) = VariableAddress[v] : # 2789| r2789_2(unsigned long) = Constant[4] : -# 2789| mu2789_3(unsigned long) = Store[t] : &:r2789_1, r2789_2 -# 2790| v2790_1(void) = NoOp : -# 2779| v2779_10(void) = ReturnVoid : -# 2779| v2779_11(void) = AliasedUse : ~m? -# 2779| v2779_12(void) = ExitFunction : +# 2789| r2789_3(unsigned long) = CopyValue : r2787_6 +# 2789| r2789_4(unsigned long) = Mul : r2789_2, r2789_3 +# 2789| r2789_5(unsigned long) = Convert : r2787_8 +# 2789| r2789_6(unsigned long) = Mul : r2789_4, r2789_5 +# 2789| mu2789_7(unsigned long) = Store[v] : &:r2789_1, r2789_6 +# 2790| r2790_1(glval) = VariableAddress[u] : +# 2790| r2790_2(unsigned long) = Constant[4] : +# 2790| r2790_3(unsigned long) = Convert : r2787_8 +# 2790| r2790_4(unsigned long) = Mul : r2790_2, r2790_3 +# 2790| mu2790_5(unsigned long) = Store[u] : &:r2790_1, r2790_4 +# 2791| r2791_1(glval) = VariableAddress[t] : +# 2791| r2791_2(unsigned long) = Constant[4] : +# 2791| mu2791_3(unsigned long) = Store[t] : &:r2791_1, r2791_2 +# 2792| v2792_1(void) = NoOp : +# 2781| v2781_10(void) = ReturnVoid : +# 2781| v2781_11(void) = AliasedUse : ~m? +# 2781| v2781_12(void) = ExitFunction : -# 2792| void vla_sizeof_test2(int, size_t, char) -# 2792| Block 0 -# 2792| v2792_1(void) = EnterFunction : -# 2792| mu2792_2(unknown) = AliasedDefinition : -# 2792| mu2792_3(unknown) = InitializeNonLocal : -# 2792| r2792_4(glval) = VariableAddress[len1] : -# 2792| mu2792_5(int) = InitializeParameter[len1] : &:r2792_4 -# 2792| r2792_6(glval) = VariableAddress[len2] : -# 2792| mu2792_7(unsigned long) = InitializeParameter[len2] : &:r2792_6 -# 2792| r2792_8(glval) = VariableAddress[len3] : -# 2792| mu2792_9(char) = InitializeParameter[len3] : &:r2792_8 -# 2793| r2793_1(glval) = VariableAddress[tmp1] : -# 2793| mu2793_2(int[][]) = Uninitialized[tmp1] : &:r2793_1 -# 2793| r2793_3(glval) = VariableAddress[len1] : -# 2793| r2793_4(int) = Load[len1] : &:r2793_3, ~m? -# 2793| r2793_5(glval) = VariableAddress[len2] : -# 2793| r2793_6(unsigned long) = Load[len2] : &:r2793_5, ~m? -# 2793| v2793_7(void) = NoOp : -# 2794| r2794_1(glval) = VariableAddress[z] : -# 2794| r2794_2(unsigned long) = Constant[4] : -# 2794| r2794_3(unsigned long) = CopyValue : r2793_6 -# 2794| r2794_4(unsigned long) = Mul : r2794_2, r2794_3 -# 2794| mu2794_5(unsigned long) = Store[z] : &:r2794_1, r2794_4 -# 2795| r2795_1(glval) = VariableAddress[tmp2] : -# 2795| mu2795_2(int[][][]) = Uninitialized[tmp2] : &:r2795_1 +# 2794| void vla_sizeof_test2(int, size_t, char) +# 2794| Block 0 +# 2794| v2794_1(void) = EnterFunction : +# 2794| mu2794_2(unknown) = AliasedDefinition : +# 2794| mu2794_3(unknown) = InitializeNonLocal : +# 2794| r2794_4(glval) = VariableAddress[len1] : +# 2794| mu2794_5(int) = InitializeParameter[len1] : &:r2794_4 +# 2794| r2794_6(glval) = VariableAddress[len2] : +# 2794| mu2794_7(unsigned long) = InitializeParameter[len2] : &:r2794_6 +# 2794| r2794_8(glval) = VariableAddress[len3] : +# 2794| mu2794_9(char) = InitializeParameter[len3] : &:r2794_8 +# 2795| r2795_1(glval) = VariableAddress[tmp1] : +# 2795| mu2795_2(int[][]) = Uninitialized[tmp1] : &:r2795_1 # 2795| r2795_3(glval) = VariableAddress[len1] : # 2795| r2795_4(int) = Load[len1] : &:r2795_3, ~m? # 2795| r2795_5(glval) = VariableAddress[len2] : # 2795| r2795_6(unsigned long) = Load[len2] : &:r2795_5, ~m? -# 2795| r2795_7(glval) = VariableAddress[len3] : -# 2795| r2795_8(char) = Load[len3] : &:r2795_7, ~m? -# 2795| v2795_9(void) = NoOp : -# 2796| r2796_1(glval) = VariableAddress[v] : +# 2795| v2795_7(void) = NoOp : +# 2796| r2796_1(glval) = VariableAddress[z] : # 2796| r2796_2(unsigned long) = Constant[4] : # 2796| r2796_3(unsigned long) = CopyValue : r2795_6 # 2796| r2796_4(unsigned long) = Mul : r2796_2, r2796_3 -# 2796| r2796_5(unsigned long) = Convert : r2795_8 -# 2796| r2796_6(unsigned long) = Mul : r2796_4, r2796_5 -# 2796| mu2796_7(unsigned long) = Store[v] : &:r2796_1, r2796_6 -# 2797| r2797_1(glval) = VariableAddress[u] : -# 2797| r2797_2(unsigned long) = Constant[4] : -# 2797| r2797_3(unsigned long) = Convert : r2795_8 -# 2797| r2797_4(unsigned long) = Mul : r2797_2, r2797_3 -# 2797| mu2797_5(unsigned long) = Store[u] : &:r2797_1, r2797_4 -# 2798| r2798_1(glval) = VariableAddress[t] : +# 2796| mu2796_5(unsigned long) = Store[z] : &:r2796_1, r2796_4 +# 2797| r2797_1(glval) = VariableAddress[tmp2] : +# 2797| mu2797_2(int[][][]) = Uninitialized[tmp2] : &:r2797_1 +# 2797| r2797_3(glval) = VariableAddress[len1] : +# 2797| r2797_4(int) = Load[len1] : &:r2797_3, ~m? +# 2797| r2797_5(glval) = VariableAddress[len2] : +# 2797| r2797_6(unsigned long) = Load[len2] : &:r2797_5, ~m? +# 2797| r2797_7(glval) = VariableAddress[len3] : +# 2797| r2797_8(char) = Load[len3] : &:r2797_7, ~m? +# 2797| v2797_9(void) = NoOp : +# 2798| r2798_1(glval) = VariableAddress[v] : # 2798| r2798_2(unsigned long) = Constant[4] : -# 2798| mu2798_3(unsigned long) = Store[t] : &:r2798_1, r2798_2 -# 2799| v2799_1(void) = NoOp : -# 2792| v2792_10(void) = ReturnVoid : -# 2792| v2792_11(void) = AliasedUse : ~m? -# 2792| v2792_12(void) = ExitFunction : +# 2798| r2798_3(unsigned long) = CopyValue : r2797_6 +# 2798| r2798_4(unsigned long) = Mul : r2798_2, r2798_3 +# 2798| r2798_5(unsigned long) = Convert : r2797_8 +# 2798| r2798_6(unsigned long) = Mul : r2798_4, r2798_5 +# 2798| mu2798_7(unsigned long) = Store[v] : &:r2798_1, r2798_6 +# 2799| r2799_1(glval) = VariableAddress[u] : +# 2799| r2799_2(unsigned long) = Constant[4] : +# 2799| r2799_3(unsigned long) = Convert : r2797_8 +# 2799| r2799_4(unsigned long) = Mul : r2799_2, r2799_3 +# 2799| mu2799_5(unsigned long) = Store[u] : &:r2799_1, r2799_4 +# 2800| r2800_1(glval) = VariableAddress[t] : +# 2800| r2800_2(unsigned long) = Constant[4] : +# 2800| mu2800_3(unsigned long) = Store[t] : &:r2800_1, r2800_2 +# 2801| v2801_1(void) = NoOp : +# 2794| v2794_10(void) = ReturnVoid : +# 2794| v2794_11(void) = AliasedUse : ~m? +# 2794| v2794_12(void) = ExitFunction : -# 2801| size_t vla_sizeof_test3(int, size_t, char, bool) -# 2801| Block 0 -# 2801| v2801_1(void) = EnterFunction : -# 2801| mu2801_2(unknown) = AliasedDefinition : -# 2801| mu2801_3(unknown) = InitializeNonLocal : -# 2801| r2801_4(glval) = VariableAddress[len1] : -# 2801| mu2801_5(int) = InitializeParameter[len1] : &:r2801_4 -# 2801| r2801_6(glval) = VariableAddress[len2] : -# 2801| mu2801_7(unsigned long) = InitializeParameter[len2] : &:r2801_6 -# 2801| r2801_8(glval) = VariableAddress[len3] : -# 2801| mu2801_9(char) = InitializeParameter[len3] : &:r2801_8 -# 2801| r2801_10(glval) = VariableAddress[b] : -# 2801| mu2801_11(bool) = InitializeParameter[b] : &:r2801_10 -# 2802| r2802_1(glval) = VariableAddress[len1] : -# 2802| r2802_2(int) = Load[len1] : &:r2802_1, ~m? -# 2802| r2802_3(glval) = VariableAddress[len2] : -# 2802| r2802_4(unsigned long) = Load[len2] : &:r2802_3, ~m? -# 2802| v2802_5(void) = NoOp : -# 2803| v2803_1(void) = NoOp : -# 2804| r2804_1(glval) = VariableAddress[len3] : -# 2804| r2804_2(char) = Load[len3] : &:r2804_1, ~m? -# 2804| v2804_3(void) = NoOp : -# 2806| r2806_1(glval) = VariableAddress[b] : -# 2806| r2806_2(bool) = Load[b] : &:r2806_1, ~m? -# 2806| v2806_3(void) = ConditionalBranch : r2806_2 +# 2803| size_t vla_sizeof_test3(int, size_t, char, bool) +# 2803| Block 0 +# 2803| v2803_1(void) = EnterFunction : +# 2803| mu2803_2(unknown) = AliasedDefinition : +# 2803| mu2803_3(unknown) = InitializeNonLocal : +# 2803| r2803_4(glval) = VariableAddress[len1] : +# 2803| mu2803_5(int) = InitializeParameter[len1] : &:r2803_4 +# 2803| r2803_6(glval) = VariableAddress[len2] : +# 2803| mu2803_7(unsigned long) = InitializeParameter[len2] : &:r2803_6 +# 2803| r2803_8(glval) = VariableAddress[len3] : +# 2803| mu2803_9(char) = InitializeParameter[len3] : &:r2803_8 +# 2803| r2803_10(glval) = VariableAddress[b] : +# 2803| mu2803_11(bool) = InitializeParameter[b] : &:r2803_10 +# 2804| r2804_1(glval) = VariableAddress[len1] : +# 2804| r2804_2(int) = Load[len1] : &:r2804_1, ~m? +# 2804| r2804_3(glval) = VariableAddress[len2] : +# 2804| r2804_4(unsigned long) = Load[len2] : &:r2804_3, ~m? +# 2804| v2804_5(void) = NoOp : +# 2805| v2805_1(void) = NoOp : +# 2806| r2806_1(glval) = VariableAddress[len3] : +# 2806| r2806_2(char) = Load[len3] : &:r2806_1, ~m? +# 2806| v2806_3(void) = NoOp : +# 2808| r2808_1(glval) = VariableAddress[b] : +# 2808| r2808_2(bool) = Load[b] : &:r2808_1, ~m? +# 2808| v2808_3(void) = ConditionalBranch : r2808_2 #-----| False -> Block 3 #-----| True -> Block 2 -# 2801| Block 1 -# 2801| r2801_12(glval) = VariableAddress[#return] : -# 2801| v2801_13(void) = ReturnValue : &:r2801_12, ~m? -# 2801| v2801_14(void) = AliasedUse : ~m? -# 2801| v2801_15(void) = ExitFunction : +# 2803| Block 1 +# 2803| r2803_12(glval) = VariableAddress[#return] : +# 2803| v2803_13(void) = ReturnValue : &:r2803_12, ~m? +# 2803| v2803_14(void) = AliasedUse : ~m? +# 2803| v2803_15(void) = ExitFunction : -# 2807| Block 2 -# 2807| r2807_1(glval) = VariableAddress[tmp] : -# 2807| mu2807_2(long[][][]) = Uninitialized[tmp] : &:r2807_1 -# 2807| v2807_3(void) = NoOp : -# 2808| r2808_1(glval) = VariableAddress[#return] : -# 2808| r2808_2(unsigned long) = Constant[8] : -# 2808| r2808_3(unsigned long) = Convert : r2802_2 -# 2808| r2808_4(unsigned long) = Mul : r2808_2, r2808_3 -# 2808| r2808_5(unsigned long) = CopyValue : r2802_4 -# 2808| r2808_6(unsigned long) = Mul : r2808_4, r2808_5 -# 2808| mu2808_7(unsigned long) = Store[#return] : &:r2808_1, r2808_6 +# 2809| Block 2 +# 2809| r2809_1(glval) = VariableAddress[tmp] : +# 2809| mu2809_2(long[][][]) = Uninitialized[tmp] : &:r2809_1 +# 2809| v2809_3(void) = NoOp : +# 2810| r2810_1(glval) = VariableAddress[#return] : +# 2810| r2810_2(unsigned long) = Constant[8] : +# 2810| r2810_3(unsigned long) = Convert : r2804_2 +# 2810| r2810_4(unsigned long) = Mul : r2810_2, r2810_3 +# 2810| r2810_5(unsigned long) = CopyValue : r2804_4 +# 2810| r2810_6(unsigned long) = Mul : r2810_4, r2810_5 +# 2810| mu2810_7(unsigned long) = Store[#return] : &:r2810_1, r2810_6 #-----| Goto -> Block 1 -# 2811| Block 3 -# 2811| r2811_1(glval) = VariableAddress[#return] : -# 2811| r2811_2(unsigned long) = Constant[0] : -# 2811| mu2811_3(unsigned long) = Store[#return] : &:r2811_1, r2811_2 +# 2813| Block 3 +# 2813| r2813_1(glval) = VariableAddress[#return] : +# 2813| r2813_2(unsigned long) = Constant[0] : +# 2813| mu2813_3(unsigned long) = Store[#return] : &:r2813_1, r2813_2 #-----| Goto -> Block 1 -# 2814| void vla_sizeof_test4(int, size_t) -# 2814| Block 0 -# 2814| v2814_1(void) = EnterFunction : -# 2814| mu2814_2(unknown) = AliasedDefinition : -# 2814| mu2814_3(unknown) = InitializeNonLocal : -# 2814| r2814_4(glval) = VariableAddress[len1] : -# 2814| mu2814_5(int) = InitializeParameter[len1] : &:r2814_4 -# 2814| r2814_6(glval) = VariableAddress[len2] : -# 2814| mu2814_7(unsigned long) = InitializeParameter[len2] : &:r2814_6 -# 2815| r2815_1(glval) = VariableAddress[tmp1] : -# 2815| mu2815_2(int[][]) = Uninitialized[tmp1] : &:r2815_1 -# 2815| r2815_3(glval) = VariableAddress[len1] : -# 2815| r2815_4(int) = Load[len1] : &:r2815_3, ~m? -# 2815| r2815_5(glval) = VariableAddress[len2] : -# 2815| r2815_6(unsigned long) = Load[len2] : &:r2815_5, ~m? -# 2815| v2815_7(void) = NoOp : -# 2816| r2816_1(glval) = VariableAddress[z] : -# 2816| r2816_2(unsigned long) = Constant[4] : -# 2816| r2816_3(unsigned long) = CopyValue : r2815_6 -# 2816| r2816_4(unsigned long) = Mul : r2816_2, r2816_3 -# 2816| mu2816_5(unsigned long) = Store[z] : &:r2816_1, r2816_4 -# 2817| v2817_1(void) = NoOp : -# 2814| v2814_8(void) = ReturnVoid : -# 2814| v2814_9(void) = AliasedUse : ~m? -# 2814| v2814_10(void) = ExitFunction : +# 2816| void vla_sizeof_test4(int, size_t) +# 2816| Block 0 +# 2816| v2816_1(void) = EnterFunction : +# 2816| mu2816_2(unknown) = AliasedDefinition : +# 2816| mu2816_3(unknown) = InitializeNonLocal : +# 2816| r2816_4(glval) = VariableAddress[len1] : +# 2816| mu2816_5(int) = InitializeParameter[len1] : &:r2816_4 +# 2816| r2816_6(glval) = VariableAddress[len2] : +# 2816| mu2816_7(unsigned long) = InitializeParameter[len2] : &:r2816_6 +# 2817| r2817_1(glval) = VariableAddress[tmp1] : +# 2817| mu2817_2(int[][]) = Uninitialized[tmp1] : &:r2817_1 +# 2817| r2817_3(glval) = VariableAddress[len1] : +# 2817| r2817_4(int) = Load[len1] : &:r2817_3, ~m? +# 2817| r2817_5(glval) = VariableAddress[len2] : +# 2817| r2817_6(unsigned long) = Load[len2] : &:r2817_5, ~m? +# 2817| v2817_7(void) = NoOp : +# 2818| r2818_1(glval) = VariableAddress[z] : +# 2818| r2818_2(unsigned long) = Constant[4] : +# 2818| r2818_3(unsigned long) = CopyValue : r2817_6 +# 2818| r2818_4(unsigned long) = Mul : r2818_2, r2818_3 +# 2818| mu2818_5(unsigned long) = Store[z] : &:r2818_1, r2818_4 +# 2819| v2819_1(void) = NoOp : +# 2816| v2816_8(void) = ReturnVoid : +# 2816| v2816_9(void) = AliasedUse : ~m? +# 2816| v2816_10(void) = ExitFunction : -# 2819| void vla_sizeof_test5(int, size_t) -# 2819| Block 0 -# 2819| v2819_1(void) = EnterFunction : -# 2819| mu2819_2(unknown) = AliasedDefinition : -# 2819| mu2819_3(unknown) = InitializeNonLocal : -# 2819| r2819_4(glval) = VariableAddress[len1] : -# 2819| mu2819_5(int) = InitializeParameter[len1] : &:r2819_4 -# 2819| r2819_6(glval) = VariableAddress[len2] : -# 2819| mu2819_7(unsigned long) = InitializeParameter[len2] : &:r2819_6 -# 2820| r2820_1(glval) = VariableAddress[tmp1] : -# 2820| mu2820_2(int[][]) = Uninitialized[tmp1] : &:r2820_1 -# 2820| r2820_3(glval) = VariableAddress[len1] : -# 2820| r2820_4(int) = Load[len1] : &:r2820_3, ~m? -# 2820| r2820_5(glval) = VariableAddress[len2] : -# 2820| r2820_6(unsigned long) = Load[len2] : &:r2820_5, ~m? -# 2820| v2820_7(void) = NoOp : -# 2821| r2821_1(glval) = VariableAddress[z] : -# 2821| r2821_2(unsigned long) = Constant[4] : -# 2821| r2821_3(unsigned long) = CopyValue : r2820_6 -# 2821| r2821_4(unsigned long) = Mul : r2821_2, r2821_3 -# 2821| mu2821_5(unsigned long) = Store[z] : &:r2821_1, r2821_4 -# 2822| v2822_1(void) = NoOp : -# 2819| v2819_8(void) = ReturnVoid : -# 2819| v2819_9(void) = AliasedUse : ~m? -# 2819| v2819_10(void) = ExitFunction : +# 2821| void vla_sizeof_test5(int, size_t) +# 2821| Block 0 +# 2821| v2821_1(void) = EnterFunction : +# 2821| mu2821_2(unknown) = AliasedDefinition : +# 2821| mu2821_3(unknown) = InitializeNonLocal : +# 2821| r2821_4(glval) = VariableAddress[len1] : +# 2821| mu2821_5(int) = InitializeParameter[len1] : &:r2821_4 +# 2821| r2821_6(glval) = VariableAddress[len2] : +# 2821| mu2821_7(unsigned long) = InitializeParameter[len2] : &:r2821_6 +# 2822| r2822_1(glval) = VariableAddress[tmp1] : +# 2822| mu2822_2(int[][]) = Uninitialized[tmp1] : &:r2822_1 +# 2822| r2822_3(glval) = VariableAddress[len1] : +# 2822| r2822_4(int) = Load[len1] : &:r2822_3, ~m? +# 2822| r2822_5(glval) = VariableAddress[len2] : +# 2822| r2822_6(unsigned long) = Load[len2] : &:r2822_5, ~m? +# 2822| v2822_7(void) = NoOp : +# 2823| r2823_1(glval) = VariableAddress[z] : +# 2823| r2823_2(unsigned long) = Constant[4] : +# 2823| r2823_3(unsigned long) = CopyValue : r2822_6 +# 2823| r2823_4(unsigned long) = Mul : r2823_2, r2823_3 +# 2823| mu2823_5(unsigned long) = Store[z] : &:r2823_1, r2823_4 +# 2824| v2824_1(void) = NoOp : +# 2821| v2821_8(void) = ReturnVoid : +# 2821| v2821_9(void) = AliasedUse : ~m? +# 2821| v2821_10(void) = ExitFunction : ir23.cpp: # 1| bool consteval_1() diff --git a/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency.expected b/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency.expected index b83d9ea47e3..f1b75895c3e 100644 --- a/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency.expected +++ b/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency.expected @@ -27,7 +27,7 @@ invalidOverlap nonUniqueEnclosingIRFunction fieldAddressOnNonPointer thisArgumentIsNonPointer -| ir.cpp:2546:34:2546:34 | Call: call to operator bool | Call instruction 'Call: call to operator bool' has a `this` argument operand that is not an address, in function '$@'. | ir.cpp:2545:6:2545:23 | void this_inconsistency(bool) | void this_inconsistency(bool) | +| ir.cpp:2548:34:2548:34 | Call: call to operator bool | Call instruction 'Call: call to operator bool' has a `this` argument operand that is not an address, in function '$@'. | ir.cpp:2547:6:2547:23 | void this_inconsistency(bool) | void this_inconsistency(bool) | nonUniqueIRVariable nonBooleanOperand missingCppType diff --git a/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency_unsound.expected b/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency_unsound.expected index b83d9ea47e3..f1b75895c3e 100644 --- a/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency_unsound.expected +++ b/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency_unsound.expected @@ -27,7 +27,7 @@ invalidOverlap nonUniqueEnclosingIRFunction fieldAddressOnNonPointer thisArgumentIsNonPointer -| ir.cpp:2546:34:2546:34 | Call: call to operator bool | Call instruction 'Call: call to operator bool' has a `this` argument operand that is not an address, in function '$@'. | ir.cpp:2545:6:2545:23 | void this_inconsistency(bool) | void this_inconsistency(bool) | +| ir.cpp:2548:34:2548:34 | Call: call to operator bool | Call instruction 'Call: call to operator bool' has a `this` argument operand that is not an address, in function '$@'. | ir.cpp:2547:6:2547:23 | void this_inconsistency(bool) | void this_inconsistency(bool) | nonUniqueIRVariable nonBooleanOperand missingCppType diff --git a/cpp/ql/test/library-tests/vector_types/builtin_ops.expected b/cpp/ql/test/library-tests/vector_types/builtin_ops.expected index 756ca2f1c17..0fe2627ff18 100644 --- a/cpp/ql/test/library-tests/vector_types/builtin_ops.expected +++ b/cpp/ql/test/library-tests/vector_types/builtin_ops.expected @@ -1,4 +1,4 @@ | vector_types2.cpp:10:15:10:42 | __builtin_shuffle | | vector_types2.cpp:11:15:11:45 | __builtin_shuffle | | vector_types.cpp:31:13:31:49 | __builtin_shufflevector | -| vector_types.cpp:58:10:58:52 | __builtin_convertvector | +| vector_types.cpp:63:10:63:52 | __builtin_convertvector | diff --git a/cpp/ql/test/library-tests/vector_types/variables.expected b/cpp/ql/test/library-tests/vector_types/variables.expected index 52fa98dd3f0..284df7f4ff1 100644 --- a/cpp/ql/test/library-tests/vector_types/variables.expected +++ b/cpp/ql/test/library-tests/vector_types/variables.expected @@ -34,4 +34,4 @@ | vector_types.cpp:47:23:47:25 | dst | dst | file://:0:0:0:0 | v16i * | 8 | | vector_types.cpp:47:34:47:36 | src | src | file://:0:0:0:0 | v16i * | 8 | | vector_types.cpp:47:43:47:43 | n | n | file://:0:0:0:0 | int | 4 | -| vector_types.cpp:57:43:57:44 | vf | vf | vector_types.cpp:55:16:55:27 | vector4float | 16 | +| vector_types.cpp:62:43:62:44 | vf | vf | vector_types.cpp:60:16:60:27 | vector4float | 16 | diff --git a/cpp/ql/test/library-tests/vector_types/vector_types.cpp b/cpp/ql/test/library-tests/vector_types/vector_types.cpp index 778b88ed5f8..79a90fa6fb9 100644 --- a/cpp/ql/test/library-tests/vector_types/vector_types.cpp +++ b/cpp/ql/test/library-tests/vector_types/vector_types.cpp @@ -51,6 +51,11 @@ void shift_left(v16i *dst, v16i *src, int n) { *dst = *src << n; } + + + + + typedef double vector4double __attribute__((__vector_size__(32))); typedef float vector4float __attribute__((__vector_size__(16))); From 89c11b8daf0409ddd9d72c17d154c05eaeb659df Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Thu, 8 Jan 2026 11:06:26 +0100 Subject: [PATCH 40/63] C++: Add tests for logical vector operations --- .../test/library-tests/ir/ir/PrintAST.expected | 16 +++++++++++++++- .../test/library-tests/ir/ir/aliased_ir.expected | 4 ---- .../ir/ir/aliased_ssa_consistency.expected | 1 + .../ir/aliased_ssa_consistency_unsound.expected | 1 + cpp/ql/test/library-tests/ir/ir/ir.cpp | 4 ++-- .../library-tests/ir/ir/raw_consistency.expected | 4 ++++ cpp/ql/test/library-tests/ir/ir/raw_ir.expected | 16 ++++++++++++---- .../ir/ir/unaliased_ssa_consistency.expected | 1 + .../unaliased_ssa_consistency_unsound.expected | 1 + .../vector_types/variables.expected | 3 +++ .../library-tests/vector_types/vector_types.cpp | 8 ++++---- 11 files changed, 44 insertions(+), 15 deletions(-) diff --git a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected index 7db69b595cb..c544d01794b 100644 --- a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected +++ b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected @@ -13331,7 +13331,21 @@ ir.cpp: # 1216| getRightOperand(): [VariableAccess] vi4_shuffle # 1216| Type = [SpecifiedType] __attribute((vector_size(16UL))) int # 1216| ValueCategory = prvalue(load) -# 1219| getStmt(5): [ReturnStmt] return ... +# 1217| getStmt(5): [ExprStmt] ExprStmt +# 1217| getExpr(): [AssignExpr] ... = ... +# 1217| Type = [SpecifiedType] __attribute((vector_size(16UL))) int +# 1217| ValueCategory = lvalue +# 1217| getLValue(): [VariableAccess] vi4 +# 1217| Type = [SpecifiedType] __attribute((vector_size(16UL))) int +# 1217| ValueCategory = lvalue +# 1218| getStmt(6): [ExprStmt] ExprStmt +# 1218| getExpr(): [AssignExpr] ... = ... +# 1218| Type = [SpecifiedType] __attribute((vector_size(16UL))) int +# 1218| ValueCategory = lvalue +# 1218| getLValue(): [VariableAccess] vi4 +# 1218| Type = [SpecifiedType] __attribute((vector_size(16UL))) int +# 1218| ValueCategory = lvalue +# 1219| getStmt(7): [ReturnStmt] return ... # 1221| [TopLevelFunction] void* memcpy(void*, void*, int) # 1221| : # 1221| getParameter(0): [Parameter] dst diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected index 0ff90fbb5d8..b7f7d598348 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected @@ -10486,10 +10486,6 @@ ir.cpp: # 1216| r1216_5(__attribute((vector_size(16UL))) int) = Add : r1216_2, r1216_4 # 1216| r1216_6(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : # 1216| m1216_7(__attribute((vector_size(16UL))) int) = Store[vi4] : &:r1216_6, r1216_5 -# 1219| v1219_1(void) = NoOp : -# 1211| v1211_7(void) = ReturnVoid : -# 1211| v1211_8(void) = AliasedUse : m1211_3 -# 1211| v1211_9(void) = ExitFunction : # 1223| int ModeledCallTarget(int) # 1223| Block 0 diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency.expected index f1b75895c3e..3bbce2b470a 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency.expected @@ -6,6 +6,7 @@ missingOperandType duplicateChiOperand sideEffectWithoutPrimary instructionWithoutSuccessor +| ir.cpp:1216:3:1216:25 | Store: ... = ... | Instruction 'Store: ... = ...' has no successors in function '$@'. | ir.cpp:1211:6:1211:16 | void VectorTypes(int) | void VectorTypes(int) | ambiguousSuccessors unexplainedLoop unnecessaryPhiInstruction diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency_unsound.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency_unsound.expected index f1b75895c3e..3bbce2b470a 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency_unsound.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency_unsound.expected @@ -6,6 +6,7 @@ missingOperandType duplicateChiOperand sideEffectWithoutPrimary instructionWithoutSuccessor +| ir.cpp:1216:3:1216:25 | Store: ... = ... | Instruction 'Store: ... = ...' has no successors in function '$@'. | ir.cpp:1211:6:1211:16 | void VectorTypes(int) | void VectorTypes(int) | ambiguousSuccessors unexplainedLoop unnecessaryPhiInstruction diff --git a/cpp/ql/test/library-tests/ir/ir/ir.cpp b/cpp/ql/test/library-tests/ir/ir/ir.cpp index 2bc8fcca9a3..99876f7e9a4 100644 --- a/cpp/ql/test/library-tests/ir/ir/ir.cpp +++ b/cpp/ql/test/library-tests/ir/ir/ir.cpp @@ -1214,8 +1214,8 @@ void VectorTypes(int i) { vi4[i] = x; vector(4, int) vi4_shuffle = __builtin_shufflevector(vi4, vi4, 3+0, 2, 1, 0); vi4 = vi4 + vi4_shuffle; - - + vi4 = vi4 && vi4_shuffle; + vi4 = vi4 || vi4_shuffle; } void *memcpy(void *dst, void *src, int size); diff --git a/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected b/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected index de43ad9631a..b1965792181 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected @@ -1,4 +1,6 @@ missingOperand +| ir.cpp:1217:3:1217:26 | Store: ... = ... | Instruction 'Store' is missing an expected operand with tag 'StoreValue' in function '$@'. | ir.cpp:1211:6:1211:16 | void VectorTypes(int) | void VectorTypes(int) | +| ir.cpp:1218:3:1218:26 | Store: ... = ... | Instruction 'Store' is missing an expected operand with tag 'StoreValue' in function '$@'. | ir.cpp:1211:6:1211:16 | void VectorTypes(int) | void VectorTypes(int) | unexpectedOperand duplicateOperand missingPhiOperand @@ -6,6 +8,8 @@ missingOperandType duplicateChiOperand sideEffectWithoutPrimary instructionWithoutSuccessor +| ir.cpp:1216:3:1216:25 | Store: ... = ... | Instruction 'Store: ... = ...' has no successors in function '$@'. | ir.cpp:1211:6:1211:16 | void VectorTypes(int) | void VectorTypes(int) | +| ir.cpp:1217:3:1217:26 | Store: ... = ... | Instruction 'Store: ... = ...' has no successors in function '$@'. | ir.cpp:1211:6:1211:16 | void VectorTypes(int) | void VectorTypes(int) | ambiguousSuccessors unexplainedLoop unnecessaryPhiInstruction diff --git a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected index 4fce667c611..44a97e35cf5 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected @@ -9692,10 +9692,18 @@ ir.cpp: # 1216| r1216_5(__attribute((vector_size(16UL))) int) = Add : r1216_2, r1216_4 # 1216| r1216_6(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : # 1216| mu1216_7(__attribute((vector_size(16UL))) int) = Store[vi4] : &:r1216_6, r1216_5 -# 1219| v1219_1(void) = NoOp : -# 1211| v1211_6(void) = ReturnVoid : -# 1211| v1211_7(void) = AliasedUse : ~m? -# 1211| v1211_8(void) = ExitFunction : + +# 1217| Block 1 +# 1217| r1217_1(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : +# 1217| mu1217_2(__attribute((vector_size(16UL))) int) = Store[vi4] : &:r1217_1 + +# 1218| Block 2 +# 1218| r1218_1(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : +# 1218| mu1218_2(__attribute((vector_size(16UL))) int) = Store[vi4] : &:r1218_1 +# 1219| v1219_1(void) = NoOp : +# 1211| v1211_6(void) = ReturnVoid : +# 1211| v1211_7(void) = AliasedUse : ~m? +# 1211| v1211_8(void) = ExitFunction : # 1223| int ModeledCallTarget(int) # 1223| Block 0 diff --git a/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency.expected b/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency.expected index f1b75895c3e..3bbce2b470a 100644 --- a/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency.expected +++ b/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency.expected @@ -6,6 +6,7 @@ missingOperandType duplicateChiOperand sideEffectWithoutPrimary instructionWithoutSuccessor +| ir.cpp:1216:3:1216:25 | Store: ... = ... | Instruction 'Store: ... = ...' has no successors in function '$@'. | ir.cpp:1211:6:1211:16 | void VectorTypes(int) | void VectorTypes(int) | ambiguousSuccessors unexplainedLoop unnecessaryPhiInstruction diff --git a/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency_unsound.expected b/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency_unsound.expected index f1b75895c3e..3bbce2b470a 100644 --- a/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency_unsound.expected +++ b/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency_unsound.expected @@ -6,6 +6,7 @@ missingOperandType duplicateChiOperand sideEffectWithoutPrimary instructionWithoutSuccessor +| ir.cpp:1216:3:1216:25 | Store: ... = ... | Instruction 'Store: ... = ...' has no successors in function '$@'. | ir.cpp:1211:6:1211:16 | void VectorTypes(int) | void VectorTypes(int) | ambiguousSuccessors unexplainedLoop unnecessaryPhiInstruction diff --git a/cpp/ql/test/library-tests/vector_types/variables.expected b/cpp/ql/test/library-tests/vector_types/variables.expected index 284df7f4ff1..a4062385baf 100644 --- a/cpp/ql/test/library-tests/vector_types/variables.expected +++ b/cpp/ql/test/library-tests/vector_types/variables.expected @@ -34,4 +34,7 @@ | vector_types.cpp:47:23:47:25 | dst | dst | file://:0:0:0:0 | v16i * | 8 | | vector_types.cpp:47:34:47:36 | src | src | file://:0:0:0:0 | v16i * | 8 | | vector_types.cpp:47:43:47:43 | n | n | file://:0:0:0:0 | int | 4 | +| vector_types.cpp:54:20:54:22 | dst | dst | file://:0:0:0:0 | v16i * | 8 | +| vector_types.cpp:54:31:54:34 | src1 | src1 | file://:0:0:0:0 | v16i * | 8 | +| vector_types.cpp:54:43:54:46 | src2 | src2 | file://:0:0:0:0 | v16i * | 8 | | vector_types.cpp:62:43:62:44 | vf | vf | vector_types.cpp:60:16:60:27 | vector4float | 16 | diff --git a/cpp/ql/test/library-tests/vector_types/vector_types.cpp b/cpp/ql/test/library-tests/vector_types/vector_types.cpp index 79a90fa6fb9..84e263897d2 100644 --- a/cpp/ql/test/library-tests/vector_types/vector_types.cpp +++ b/cpp/ql/test/library-tests/vector_types/vector_types.cpp @@ -51,10 +51,10 @@ void shift_left(v16i *dst, v16i *src, int n) { *dst = *src << n; } - - - - +void logical(v16i *dst, v16i *src1, v16i *src2) { + *dst = *src1 && *src2; + *dst = *src1 || *src2; +} typedef double vector4double __attribute__((__vector_size__(32))); typedef float vector4float __attribute__((__vector_size__(16))); From 217c5cb78bc02d45bf358a7362c2e28023dcc009 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Thu, 8 Jan 2026 11:20:23 +0100 Subject: [PATCH 41/63] C++: Update tests after adding extractor support for logical vector operations --- .../library-tests/ir/ir/PrintAST.expected | 18 +++++ .../library-tests/ir/ir/aliased_ir.expected | 74 ++++++++++++++++++ .../ir/ir/aliased_ssa_consistency.expected | 1 - .../aliased_ssa_consistency_unsound.expected | 1 - .../ir/ir/raw_consistency.expected | 4 - .../test/library-tests/ir/ir/raw_ir.expected | 78 ++++++++++++++++--- .../ir/ir/unaliased_ssa_consistency.expected | 1 - ...unaliased_ssa_consistency_unsound.expected | 1 - .../vector_types/vector_ops.expected | 2 + 9 files changed, 163 insertions(+), 17 deletions(-) diff --git a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected index c544d01794b..e6f88ceb778 100644 --- a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected +++ b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected @@ -13338,6 +13338,15 @@ ir.cpp: # 1217| getLValue(): [VariableAccess] vi4 # 1217| Type = [SpecifiedType] __attribute((vector_size(16UL))) int # 1217| ValueCategory = lvalue +# 1217| getRValue(): [LogicalAndExpr] ... && ... +# 1217| Type = [GNUVectorType] __attribute((vector_size(16))) int +# 1217| ValueCategory = prvalue +# 1217| getLeftOperand(): [VariableAccess] vi4 +# 1217| Type = [SpecifiedType] __attribute((vector_size(16UL))) int +# 1217| ValueCategory = prvalue(load) +# 1217| getRightOperand(): [VariableAccess] vi4_shuffle +# 1217| Type = [SpecifiedType] __attribute((vector_size(16UL))) int +# 1217| ValueCategory = prvalue(load) # 1218| getStmt(6): [ExprStmt] ExprStmt # 1218| getExpr(): [AssignExpr] ... = ... # 1218| Type = [SpecifiedType] __attribute((vector_size(16UL))) int @@ -13345,6 +13354,15 @@ ir.cpp: # 1218| getLValue(): [VariableAccess] vi4 # 1218| Type = [SpecifiedType] __attribute((vector_size(16UL))) int # 1218| ValueCategory = lvalue +# 1218| getRValue(): [LogicalOrExpr] ... || ... +# 1218| Type = [GNUVectorType] __attribute((vector_size(16))) int +# 1218| ValueCategory = prvalue +# 1218| getLeftOperand(): [VariableAccess] vi4 +# 1218| Type = [SpecifiedType] __attribute((vector_size(16UL))) int +# 1218| ValueCategory = prvalue(load) +# 1218| getRightOperand(): [VariableAccess] vi4_shuffle +# 1218| Type = [SpecifiedType] __attribute((vector_size(16UL))) int +# 1218| ValueCategory = prvalue(load) # 1219| getStmt(7): [ReturnStmt] return ... # 1221| [TopLevelFunction] void* memcpy(void*, void*, int) # 1221| : diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected index b7f7d598348..94daf808a72 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected @@ -10486,6 +10486,80 @@ ir.cpp: # 1216| r1216_5(__attribute((vector_size(16UL))) int) = Add : r1216_2, r1216_4 # 1216| r1216_6(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : # 1216| m1216_7(__attribute((vector_size(16UL))) int) = Store[vi4] : &:r1216_6, r1216_5 +# 1217| r1217_1(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : +# 1217| r1217_2(__attribute((vector_size(16UL))) int) = Load[vi4] : &:r1217_1, m1216_7 +# 1217| r1217_3(__attribute((vector_size(16UL))) int) = Constant[0] : +# 1217| r1217_4(bool) = CompareNE : r1217_2, r1217_3 +# 1217| v1217_5(void) = ConditionalBranch : r1217_4 +#-----| False -> Block 1 +#-----| True -> Block 4 + +# 1217| Block 1 +# 1217| r1217_6(glval<__attribute((vector_size(16))) int>) = VariableAddress[#temp1217:9] : +# 1217| r1217_7(__attribute((vector_size(16))) int) = Constant[0] : +# 1217| m1217_8(__attribute((vector_size(16))) int) = Store[#temp1217:9] : &:r1217_6, r1217_7 +#-----| Goto -> Block 2 + +# 1217| Block 2 +# 1217| m1217_9(__attribute((vector_size(16))) int) = Phi : from 1:m1217_8, from 3:m1217_16 +# 1217| r1217_10(glval<__attribute((vector_size(16))) int>) = VariableAddress[#temp1217:9] : +# 1217| r1217_11(__attribute((vector_size(16))) int) = Load[#temp1217:9] : &:r1217_10, m1217_9 +# 1217| r1217_12(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : +# 1217| m1217_13(__attribute((vector_size(16UL))) int) = Store[vi4] : &:r1217_12, r1217_11 +# 1218| r1218_1(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : +# 1218| r1218_2(__attribute((vector_size(16UL))) int) = Load[vi4] : &:r1218_1, m1217_13 +# 1218| r1218_3(__attribute((vector_size(16UL))) int) = Constant[0] : +# 1218| r1218_4(bool) = CompareNE : r1218_2, r1218_3 +# 1218| v1218_5(void) = ConditionalBranch : r1218_4 +#-----| False -> Block 8 +#-----| True -> Block 7 + +# 1217| Block 3 +# 1217| r1217_14(glval<__attribute((vector_size(16))) int>) = VariableAddress[#temp1217:9] : +# 1217| r1217_15(__attribute((vector_size(16))) int) = Constant[1] : +# 1217| m1217_16(__attribute((vector_size(16))) int) = Store[#temp1217:9] : &:r1217_14, r1217_15 +#-----| Goto -> Block 2 + +# 1217| Block 4 +# 1217| r1217_17(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4_shuffle] : +# 1217| r1217_18(__attribute((vector_size(16UL))) int) = Load[vi4_shuffle] : &:r1217_17, m1215_11 +# 1217| r1217_19(__attribute((vector_size(16UL))) int) = Constant[0] : +# 1217| r1217_20(bool) = CompareNE : r1217_18, r1217_19 +# 1217| v1217_21(void) = ConditionalBranch : r1217_20 +#-----| False -> Block 1 +#-----| True -> Block 3 + +# 1218| Block 5 +# 1218| r1218_6(glval<__attribute((vector_size(16))) int>) = VariableAddress[#temp1218:9] : +# 1218| r1218_7(__attribute((vector_size(16))) int) = Constant[0] : +# 1218| m1218_8(__attribute((vector_size(16))) int) = Store[#temp1218:9] : &:r1218_6, r1218_7 +#-----| Goto -> Block 6 + +# 1218| Block 6 +# 1218| m1218_9(__attribute((vector_size(16))) int) = Phi : from 5:m1218_8, from 7:m1218_16 +# 1218| r1218_10(glval<__attribute((vector_size(16))) int>) = VariableAddress[#temp1218:9] : +# 1218| r1218_11(__attribute((vector_size(16))) int) = Load[#temp1218:9] : &:r1218_10, m1218_9 +# 1218| r1218_12(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : +# 1218| m1218_13(__attribute((vector_size(16UL))) int) = Store[vi4] : &:r1218_12, r1218_11 +# 1219| v1219_1(void) = NoOp : +# 1211| v1211_7(void) = ReturnVoid : +# 1211| v1211_8(void) = AliasedUse : m1211_3 +# 1211| v1211_9(void) = ExitFunction : + +# 1218| Block 7 +# 1218| r1218_14(glval<__attribute((vector_size(16))) int>) = VariableAddress[#temp1218:9] : +# 1218| r1218_15(__attribute((vector_size(16))) int) = Constant[1] : +# 1218| m1218_16(__attribute((vector_size(16))) int) = Store[#temp1218:9] : &:r1218_14, r1218_15 +#-----| Goto -> Block 6 + +# 1218| Block 8 +# 1218| r1218_17(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4_shuffle] : +# 1218| r1218_18(__attribute((vector_size(16UL))) int) = Load[vi4_shuffle] : &:r1218_17, m1215_11 +# 1218| r1218_19(__attribute((vector_size(16UL))) int) = Constant[0] : +# 1218| r1218_20(bool) = CompareNE : r1218_18, r1218_19 +# 1218| v1218_21(void) = ConditionalBranch : r1218_20 +#-----| False -> Block 5 +#-----| True -> Block 7 # 1223| int ModeledCallTarget(int) # 1223| Block 0 diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency.expected index 3bbce2b470a..f1b75895c3e 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency.expected @@ -6,7 +6,6 @@ missingOperandType duplicateChiOperand sideEffectWithoutPrimary instructionWithoutSuccessor -| ir.cpp:1216:3:1216:25 | Store: ... = ... | Instruction 'Store: ... = ...' has no successors in function '$@'. | ir.cpp:1211:6:1211:16 | void VectorTypes(int) | void VectorTypes(int) | ambiguousSuccessors unexplainedLoop unnecessaryPhiInstruction diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency_unsound.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency_unsound.expected index 3bbce2b470a..f1b75895c3e 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency_unsound.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency_unsound.expected @@ -6,7 +6,6 @@ missingOperandType duplicateChiOperand sideEffectWithoutPrimary instructionWithoutSuccessor -| ir.cpp:1216:3:1216:25 | Store: ... = ... | Instruction 'Store: ... = ...' has no successors in function '$@'. | ir.cpp:1211:6:1211:16 | void VectorTypes(int) | void VectorTypes(int) | ambiguousSuccessors unexplainedLoop unnecessaryPhiInstruction diff --git a/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected b/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected index b1965792181..de43ad9631a 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected @@ -1,6 +1,4 @@ missingOperand -| ir.cpp:1217:3:1217:26 | Store: ... = ... | Instruction 'Store' is missing an expected operand with tag 'StoreValue' in function '$@'. | ir.cpp:1211:6:1211:16 | void VectorTypes(int) | void VectorTypes(int) | -| ir.cpp:1218:3:1218:26 | Store: ... = ... | Instruction 'Store' is missing an expected operand with tag 'StoreValue' in function '$@'. | ir.cpp:1211:6:1211:16 | void VectorTypes(int) | void VectorTypes(int) | unexpectedOperand duplicateOperand missingPhiOperand @@ -8,8 +6,6 @@ missingOperandType duplicateChiOperand sideEffectWithoutPrimary instructionWithoutSuccessor -| ir.cpp:1216:3:1216:25 | Store: ... = ... | Instruction 'Store: ... = ...' has no successors in function '$@'. | ir.cpp:1211:6:1211:16 | void VectorTypes(int) | void VectorTypes(int) | -| ir.cpp:1217:3:1217:26 | Store: ... = ... | Instruction 'Store: ... = ...' has no successors in function '$@'. | ir.cpp:1211:6:1211:16 | void VectorTypes(int) | void VectorTypes(int) | ambiguousSuccessors unexplainedLoop unnecessaryPhiInstruction diff --git a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected index 44a97e35cf5..94e18abb9df 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected @@ -9692,18 +9692,78 @@ ir.cpp: # 1216| r1216_5(__attribute((vector_size(16UL))) int) = Add : r1216_2, r1216_4 # 1216| r1216_6(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : # 1216| mu1216_7(__attribute((vector_size(16UL))) int) = Store[vi4] : &:r1216_6, r1216_5 +# 1217| r1217_1(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : +# 1217| r1217_2(__attribute((vector_size(16UL))) int) = Load[vi4] : &:r1217_1, ~m? +# 1217| r1217_3(__attribute((vector_size(16UL))) int) = Constant[0] : +# 1217| r1217_4(bool) = CompareNE : r1217_2, r1217_3 +# 1217| v1217_5(void) = ConditionalBranch : r1217_4 +#-----| False -> Block 1 +#-----| True -> Block 4 # 1217| Block 1 -# 1217| r1217_1(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : -# 1217| mu1217_2(__attribute((vector_size(16UL))) int) = Store[vi4] : &:r1217_1 +# 1217| r1217_6(glval<__attribute((vector_size(16))) int>) = VariableAddress[#temp1217:9] : +# 1217| r1217_7(__attribute((vector_size(16))) int) = Constant[0] : +# 1217| mu1217_8(__attribute((vector_size(16))) int) = Store[#temp1217:9] : &:r1217_6, r1217_7 +#-----| Goto -> Block 2 -# 1218| Block 2 -# 1218| r1218_1(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : -# 1218| mu1218_2(__attribute((vector_size(16UL))) int) = Store[vi4] : &:r1218_1 -# 1219| v1219_1(void) = NoOp : -# 1211| v1211_6(void) = ReturnVoid : -# 1211| v1211_7(void) = AliasedUse : ~m? -# 1211| v1211_8(void) = ExitFunction : +# 1217| Block 2 +# 1217| r1217_9(glval<__attribute((vector_size(16))) int>) = VariableAddress[#temp1217:9] : +# 1217| r1217_10(__attribute((vector_size(16))) int) = Load[#temp1217:9] : &:r1217_9, ~m? +# 1217| r1217_11(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : +# 1217| mu1217_12(__attribute((vector_size(16UL))) int) = Store[vi4] : &:r1217_11, r1217_10 +# 1218| r1218_1(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : +# 1218| r1218_2(__attribute((vector_size(16UL))) int) = Load[vi4] : &:r1218_1, ~m? +# 1218| r1218_3(__attribute((vector_size(16UL))) int) = Constant[0] : +# 1218| r1218_4(bool) = CompareNE : r1218_2, r1218_3 +# 1218| v1218_5(void) = ConditionalBranch : r1218_4 +#-----| False -> Block 8 +#-----| True -> Block 7 + +# 1217| Block 3 +# 1217| r1217_13(glval<__attribute((vector_size(16))) int>) = VariableAddress[#temp1217:9] : +# 1217| r1217_14(__attribute((vector_size(16))) int) = Constant[1] : +# 1217| mu1217_15(__attribute((vector_size(16))) int) = Store[#temp1217:9] : &:r1217_13, r1217_14 +#-----| Goto -> Block 2 + +# 1217| Block 4 +# 1217| r1217_16(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4_shuffle] : +# 1217| r1217_17(__attribute((vector_size(16UL))) int) = Load[vi4_shuffle] : &:r1217_16, ~m? +# 1217| r1217_18(__attribute((vector_size(16UL))) int) = Constant[0] : +# 1217| r1217_19(bool) = CompareNE : r1217_17, r1217_18 +# 1217| v1217_20(void) = ConditionalBranch : r1217_19 +#-----| False -> Block 1 +#-----| True -> Block 3 + +# 1218| Block 5 +# 1218| r1218_6(glval<__attribute((vector_size(16))) int>) = VariableAddress[#temp1218:9] : +# 1218| r1218_7(__attribute((vector_size(16))) int) = Constant[0] : +# 1218| mu1218_8(__attribute((vector_size(16))) int) = Store[#temp1218:9] : &:r1218_6, r1218_7 +#-----| Goto -> Block 6 + +# 1218| Block 6 +# 1218| r1218_9(glval<__attribute((vector_size(16))) int>) = VariableAddress[#temp1218:9] : +# 1218| r1218_10(__attribute((vector_size(16))) int) = Load[#temp1218:9] : &:r1218_9, ~m? +# 1218| r1218_11(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4] : +# 1218| mu1218_12(__attribute((vector_size(16UL))) int) = Store[vi4] : &:r1218_11, r1218_10 +# 1219| v1219_1(void) = NoOp : +# 1211| v1211_6(void) = ReturnVoid : +# 1211| v1211_7(void) = AliasedUse : ~m? +# 1211| v1211_8(void) = ExitFunction : + +# 1218| Block 7 +# 1218| r1218_13(glval<__attribute((vector_size(16))) int>) = VariableAddress[#temp1218:9] : +# 1218| r1218_14(__attribute((vector_size(16))) int) = Constant[1] : +# 1218| mu1218_15(__attribute((vector_size(16))) int) = Store[#temp1218:9] : &:r1218_13, r1218_14 +#-----| Goto -> Block 6 + +# 1218| Block 8 +# 1218| r1218_16(glval<__attribute((vector_size(16UL))) int>) = VariableAddress[vi4_shuffle] : +# 1218| r1218_17(__attribute((vector_size(16UL))) int) = Load[vi4_shuffle] : &:r1218_16, ~m? +# 1218| r1218_18(__attribute((vector_size(16UL))) int) = Constant[0] : +# 1218| r1218_19(bool) = CompareNE : r1218_17, r1218_18 +# 1218| v1218_20(void) = ConditionalBranch : r1218_19 +#-----| False -> Block 5 +#-----| True -> Block 7 # 1223| int ModeledCallTarget(int) # 1223| Block 0 diff --git a/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency.expected b/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency.expected index 3bbce2b470a..f1b75895c3e 100644 --- a/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency.expected +++ b/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency.expected @@ -6,7 +6,6 @@ missingOperandType duplicateChiOperand sideEffectWithoutPrimary instructionWithoutSuccessor -| ir.cpp:1216:3:1216:25 | Store: ... = ... | Instruction 'Store: ... = ...' has no successors in function '$@'. | ir.cpp:1211:6:1211:16 | void VectorTypes(int) | void VectorTypes(int) | ambiguousSuccessors unexplainedLoop unnecessaryPhiInstruction diff --git a/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency_unsound.expected b/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency_unsound.expected index 3bbce2b470a..f1b75895c3e 100644 --- a/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency_unsound.expected +++ b/cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency_unsound.expected @@ -6,7 +6,6 @@ missingOperandType duplicateChiOperand sideEffectWithoutPrimary instructionWithoutSuccessor -| ir.cpp:1216:3:1216:25 | Store: ... = ... | Instruction 'Store: ... = ...' has no successors in function '$@'. | ir.cpp:1211:6:1211:16 | void VectorTypes(int) | void VectorTypes(int) | ambiguousSuccessors unexplainedLoop unnecessaryPhiInstruction diff --git a/cpp/ql/test/library-tests/vector_types/vector_ops.expected b/cpp/ql/test/library-tests/vector_types/vector_ops.expected index 376457b88c8..7c08015a94a 100644 --- a/cpp/ql/test/library-tests/vector_types/vector_ops.expected +++ b/cpp/ql/test/library-tests/vector_types/vector_ops.expected @@ -2,3 +2,5 @@ | vector_types.cpp:21:10:21:18 | ... < ... | < | file://:0:0:0:0 | __attribute((vector_size(16))) int | | vector_types.cpp:51:10:51:18 | ... << ... | << | file://:0:0:0:0 | __attribute((vector_size(16))) int | | vector_types.cpp:51:18:51:18 | (vector fill) ... | (vector fill) | file://:0:0:0:0 | __attribute((vector_size(16))) int | +| vector_types.cpp:55:10:55:23 | ... && ... | && | file://:0:0:0:0 | __attribute((vector_size(16))) int | +| vector_types.cpp:56:10:56:23 | ... \|\| ... | \|\| | file://:0:0:0:0 | __attribute((vector_size(16))) int | From 56f53285305932b2fd98c4dbcac6438c9c10b7a9 Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Thu, 8 Jan 2026 11:59:10 +0100 Subject: [PATCH 42/63] Rust: Use `getAssocItem` consistently in stdlib classes --- .../codeql/rust/frameworks/stdlib/Stdlib.qll | 32 ++++--------------- 1 file changed, 7 insertions(+), 25 deletions(-) diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/Stdlib.qll b/rust/ql/lib/codeql/rust/frameworks/stdlib/Stdlib.qll index ec0e38f5739..114c283bbdb 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/Stdlib.qll +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/Stdlib.qll @@ -1,5 +1,5 @@ /** - * Provides classes modeling security-relevant aspects of the standard libraries. + * Provides classes modeling relevant aspects of the standard libraries. */ private import rust @@ -140,10 +140,7 @@ class FutureTrait extends Trait { /** Gets the `Output` associated type. */ pragma[nomagic] - TypeAlias getOutputType() { - result = this.getAssocItemList().getAnAssocItem() and - result.getName().getText() = "Output" - } + TypeAlias getOutputType() { result = this.(TraitItemNode).getAssocItem("Output") } } /** @@ -160,10 +157,7 @@ class FnOnceTrait extends Trait { /** Gets the `Output` associated type. */ pragma[nomagic] - TypeAlias getOutputType() { - result = this.getAssocItemList().getAnAssocItem() and - result.getName().getText() = "Output" - } + TypeAlias getOutputType() { result = this.(TraitItemNode).getAssocItem("Output") } } /** @@ -177,10 +171,7 @@ class IteratorTrait extends Trait { /** Gets the `Item` associated type. */ pragma[nomagic] - TypeAlias getItemType() { - result = this.getAssocItemList().getAnAssocItem() and - result.getName().getText() = "Item" - } + TypeAlias getItemType() { result = this.(TraitItemNode).getAssocItem("Item") } } /** @@ -194,10 +185,7 @@ class IntoIteratorTrait extends Trait { /** Gets the `Item` associated type. */ pragma[nomagic] - TypeAlias getItemType() { - result = this.getAssocItemList().getAnAssocItem() and - result.getName().getText() = "Item" - } + TypeAlias getItemType() { result = this.(TraitItemNode).getAssocItem("Item") } } /** @@ -224,10 +212,7 @@ class DerefTrait extends Trait { /** Gets the `Target` associated type. */ pragma[nomagic] - TypeAlias getTargetType() { - result = this.getAssocItemList().getAnAssocItem() and - result.getName().getText() = "Target" - } + TypeAlias getTargetType() { result = this.(TraitItemNode).getAssocItem("Target") } } /** @@ -244,10 +229,7 @@ class IndexTrait extends Trait { /** Gets the `Output` associated type. */ pragma[nomagic] - TypeAlias getOutputType() { - result = this.getAssocItemList().getAnAssocItem() and - result.getName().getText() = "Output" - } + TypeAlias getOutputType() { result = this.(TraitItemNode).getAssocItem("Output") } } /** From af5adbac30bd18c8e31c61150281c6e320be9c7d Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Thu, 8 Jan 2026 15:02:34 +0100 Subject: [PATCH 43/63] SSA: Improve performance of finding relevant phi input nodes. --- shared/ssa/codeql/ssa/Ssa.qll | 72 ++++++++++++++++++++++++++++++----- 1 file changed, 62 insertions(+), 10 deletions(-) diff --git a/shared/ssa/codeql/ssa/Ssa.qll b/shared/ssa/codeql/ssa/Ssa.qll index 26f3d9f9771..b58d28c534f 100644 --- a/shared/ssa/codeql/ssa/Ssa.qll +++ b/shared/ssa/codeql/ssa/Ssa.qll @@ -2081,6 +2081,54 @@ module Make< ) } + pragma[nomagic] + private predicate phiInputHasRead(SsaPhiExt phi, BasicBlock input) { + exists(DfInput::getARead(getAPhiInputDef(phi, input))) + } + + /** Holds if `bb` is the target end of a branch edge of a guard and the guard controls `bb`. */ + pragma[nomagic] + private predicate guardControlledBranchTarget(BasicBlock bb) { + exists(BasicBlock guard | + any(DfInput::Guard g).hasValueBranchEdge(guard, bb, _) and + dominatingEdge(guard, bb) + ) + } + + /** + * Holds if `prev` is the block containing the unique predecessor of `phi` + * that reaches `phi` through the input block `input`, and that `mid` is a + * block in the dominator tree between `prev` and `input` that is + * guard-equivalent with `input` in the sense that the set of guards + * controlling `mid` is the same as the set of guards controlling `input`. + * + * This is restricted to phi inputs that are actually read. + */ + private predicate phiInputGuardEquivalenceReaches( + BasicBlock prev, BasicBlock mid, SsaPhiExt phi, BasicBlock input + ) { + phiInputHasRead(phi, input) and + AdjacentSsaRefs::adjacentRefPhi(prev, _, input, phi.getBasicBlock(), phi.getSourceVariable()) and + mid = input + or + exists(BasicBlock mid0 | + phiInputGuardEquivalenceReaches(prev, mid0, phi, input) and + not guardControlledBranchTarget(mid0) and + mid0 != prev and + mid = mid0.getImmediateDominator() + ) + } + + /** + * Holds if the immediately preceding reference to the input to `phi` from + * the block `input` is guard-equivalent with `input`. + * + * This is restricted to phi inputs that are actually read. + */ + private predicate phiInputIsGuardEquivalentWithPreviousRef(SsaPhiExt phi, BasicBlock input) { + exists(BasicBlock prev | phiInputGuardEquivalenceReaches(prev, prev, phi, input)) + } + /** * Holds if the input to `phi` from the block `input` might be relevant for * barrier guards as a separately synthesized `TSsaInputNode`. @@ -2095,7 +2143,7 @@ module Make< or DfInput::supportBarrierGuardsOnPhiEdges() and // If the input isn't explicitly read then a guard cannot check it. - exists(DfInput::getARead(getAPhiInputDef(phi, input))) and + phiInputHasRead(phi, input) and ( // The input node is relevant either if it sits directly on a branch // edge for a guard, @@ -2114,15 +2162,19 @@ module Make< // } // // phi-read node for `x` // ``` - exists(BasicBlock prev | - AdjacentSsaRefs::adjacentRefPhi(prev, _, input, phi.getBasicBlock(), - phi.getSourceVariable()) and - prev != input and - exists(DfInput::Guard g, DfInput::GuardValue val | - DfInput::guardDirectlyControlsBlock(g, input, val) and - not DfInput::guardDirectlyControlsBlock(g, prev, val) - ) - ) + not phiInputIsGuardEquivalentWithPreviousRef(phi, input) + // An equivalent, but less performant, way to express this is as follows: + // ``` + // exists(BasicBlock prev | + // AdjacentSsaRefs::adjacentRefPhi(prev, _, input, phi.getBasicBlock(), + // phi.getSourceVariable()) and + // prev != input and + // exists(DfInput::Guard g, DfInput::GuardValue val | + // DfInput::guardDirectlyControlsBlock(g, input, val) and + // not DfInput::guardDirectlyControlsBlock(g, prev, val) + // ) + // ) + // ``` ) } From cce6823d3b49ea87f06930dc5f29d8e674e73b1e Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan Date: Thu, 8 Jan 2026 15:33:59 +0000 Subject: [PATCH 44/63] Delete experimental models that have been promoted They were promoted in https://github.com/github/codeql/pull/17590 --- .../java/security/DecompressionBombQuery.qll | 2 +- .../java/security/FileAndFormRemoteSource.qll | 120 ------------------ 2 files changed, 1 insertion(+), 121 deletions(-) delete mode 100644 java/ql/src/experimental/semmle/code/java/security/FileAndFormRemoteSource.qll diff --git a/java/ql/src/experimental/semmle/code/java/security/DecompressionBombQuery.qll b/java/ql/src/experimental/semmle/code/java/security/DecompressionBombQuery.qll index e7d35aebe70..5f666893527 100644 --- a/java/ql/src/experimental/semmle/code/java/security/DecompressionBombQuery.qll +++ b/java/ql/src/experimental/semmle/code/java/security/DecompressionBombQuery.qll @@ -1,7 +1,7 @@ deprecated module; -import experimental.semmle.code.java.security.FileAndFormRemoteSource import experimental.semmle.code.java.security.DecompressionBomb::DecompressionBomb +import semmle.code.java.dataflow.FlowSources module DecompressionBombsConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource } diff --git a/java/ql/src/experimental/semmle/code/java/security/FileAndFormRemoteSource.qll b/java/ql/src/experimental/semmle/code/java/security/FileAndFormRemoteSource.qll deleted file mode 100644 index 6cde0f00689..00000000000 --- a/java/ql/src/experimental/semmle/code/java/security/FileAndFormRemoteSource.qll +++ /dev/null @@ -1,120 +0,0 @@ -deprecated module; - -import java -import semmle.code.java.dataflow.FlowSources - -class CommonsFileUploadAdditionalTaintStep extends Unit { - abstract predicate step(DataFlow::Node n1, DataFlow::Node n2); -} - -module ApacheCommonsFileUpload { - module RemoteFlowSource { - class TypeServletFileUpload extends RefType { - TypeServletFileUpload() { - this.hasQualifiedName("org.apache.commons.fileupload.servlet", "ServletFileUpload") - } - } - - class TypeFileUpload extends RefType { - TypeFileUpload() { - this.getAStrictAncestor*().hasQualifiedName("org.apache.commons.fileupload", "FileItem") - } - } - - class TypeFileItemStream extends RefType { - TypeFileItemStream() { - this.getAStrictAncestor*() - .hasQualifiedName("org.apache.commons.fileupload", "FileItemStream") - } - } - - class ServletFileUpload extends RemoteFlowSource { - ServletFileUpload() { - exists(MethodCall ma | - ma.getReceiverType() instanceof TypeServletFileUpload and - ma.getCallee().hasName("parseRequest") and - this.asExpr() = ma - ) - } - - override string getSourceType() { result = "Apache Commons Fileupload" } - } - - private class FileItemRemoteSource extends RemoteFlowSource { - FileItemRemoteSource() { - exists(MethodCall ma | - ma.getReceiverType() instanceof TypeFileUpload and - ma.getCallee() - .hasName([ - "getInputStream", "getFieldName", "getContentType", "get", "getName", "getString" - ]) and - this.asExpr() = ma - ) - } - - override string getSourceType() { result = "Apache Commons Fileupload" } - } - - private class FileItemStreamRemoteSource extends RemoteFlowSource { - FileItemStreamRemoteSource() { - exists(MethodCall ma | - ma.getReceiverType() instanceof TypeFileItemStream and - ma.getCallee().hasName(["getContentType", "getFieldName", "getName", "openStream"]) and - this.asExpr() = ma - ) - } - - override string getSourceType() { result = "Apache Commons Fileupload" } - } - } - - module Util { - class TypeStreams extends RefType { - TypeStreams() { this.hasQualifiedName("org.apache.commons.fileupload.util", "Streams") } - } - - private class AsStringAdditionalTaintStep extends CommonsFileUploadAdditionalTaintStep { - override predicate step(DataFlow::Node n1, DataFlow::Node n2) { - exists(Call call | - call.getCallee().getDeclaringType() instanceof TypeStreams and - call.getArgument(0) = n1.asExpr() and - call = n2.asExpr() and - call.getCallee().hasName("asString") - ) - } - } - - private class CopyAdditionalTaintStep extends CommonsFileUploadAdditionalTaintStep { - override predicate step(DataFlow::Node n1, DataFlow::Node n2) { - exists(Call call | - call.getCallee().getDeclaringType() instanceof TypeStreams and - call.getArgument(0) = n1.asExpr() and - call.getArgument(1) = n2.asExpr() and - call.getCallee().hasName("copy") - ) - } - } - } -} - -module ServletRemoteMultiPartSources { - class TypePart extends RefType { - TypePart() { this.hasQualifiedName(["javax.servlet.http", "jakarta.servlet.http"], "Part") } - } - - private class ServletPartCalls extends RemoteFlowSource { - ServletPartCalls() { - exists(MethodCall ma | - ma.getReceiverType() instanceof TypePart and - ma.getCallee() - .hasName([ - "getInputStream", "getName", "getContentType", "getHeader", "getHeaders", - "getHeaderNames", "getSubmittedFileName", "write" - ]) and - this.asExpr() = ma - ) - } - - override string getSourceType() { result = "Javax Servlet Http" } - } -} From bea93ae03e7b50e18eeb4ba46907e388c843f80d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 9 Jan 2026 00:26:15 +0000 Subject: [PATCH 45/63] Add changed framework coverage reports --- java/documentation/library-coverage/coverage.csv | 5 +++-- java/documentation/library-coverage/coverage.rst | 6 +++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/java/documentation/library-coverage/coverage.csv b/java/documentation/library-coverage/coverage.csv index 3fc7be04e30..2da774f260f 100644 --- a/java/documentation/library-coverage/coverage.csv +++ b/java/documentation/library-coverage/coverage.csv @@ -76,7 +76,7 @@ jakarta.activation,2,,2,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,1,,,,,,,,,,,,,,,,2, jakarta.faces.context,4,7,,,,,,,,,,,,,,2,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,7,, jakarta.json,,,123,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,23 jakarta.persistence,2,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,1, -jakarta.servlet,2,19,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,19,, +jakarta.servlet,2,26,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,26,, jakarta.ws.rs.client,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, jakarta.ws.rs.container,,9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,, jakarta.ws.rs.core,2,,149,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,94,55 @@ -115,7 +115,7 @@ javax.script,1,,50,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,14,36 javax.security.auth,7,,147,,,4,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,50,97 javax.security.cert,,,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5, javax.security.sasl,,,49,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,42,7 -javax.servlet,10,22,3,,,,,,,,,,,,,,1,,,,,,,,,,2,,,,,,,,,,3,,,2,,2,,,,,,,,,22,3, +javax.servlet,10,29,3,,,,,,,,,,,,,,1,,,,,,,,,,2,,,,,,,,,,3,,,2,,2,,,,,,,,,29,3, javax.smartcardio,,,34,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,24,10 javax.sound.midi,,,60,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,51,9 javax.sound.sampled,,,90,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,53,37 @@ -154,6 +154,7 @@ org.apache.commons.collections,,,800,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, org.apache.commons.collections4,,,800,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,17,783 org.apache.commons.compress.archivers.tar,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4, org.apache.commons.exec,10,,,,6,,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.commons.fileupload,,11,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,11,4, org.apache.commons.httpclient.util,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, org.apache.commons.io,124,,570,,,,,,,,,4,,,,,,,,,,,,,,,105,,,,,,,,,15,,,,,,,,,,,,,,,,556,14 org.apache.commons.jelly,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,, diff --git a/java/documentation/library-coverage/coverage.rst b/java/documentation/library-coverage/coverage.rst index 170f4319468..93a10c9d294 100644 --- a/java/documentation/library-coverage/coverage.rst +++ b/java/documentation/library-coverage/coverage.rst @@ -19,9 +19,9 @@ Java framework & library support JBoss Logging,``org.jboss.logging``,,,324,,,,,, `JSON-java `_,``org.json``,,236,,,,,,, Java Standard Library,``java.*``,10,4628,260,99,,9,,,26 - Java extensions,"``javax.*``, ``jakarta.*``",87,4185,90,10,4,2,1,1,4 + Java extensions,"``javax.*``, ``jakarta.*``",101,4185,90,10,4,2,1,1,4 Kotlin Standard Library,``kotlin*``,,1849,16,14,,,,,2 `Spring `_,``org.springframework.*``,46,492,143,26,,28,14,,35 - Others,"``actions.osgi``, ``antlr``, ``ch.ethz.ssh2``, ``cn.hutool.core.codec``, ``com.alibaba.com.caucho.hessian.io``, ``com.alibaba.druid.sql``, ``com.alibaba.fastjson2``, ``com.amazonaws.auth``, ``com.auth0.jwt.algorithms``, ``com.azure.identity``, ``com.caucho.burlap.io``, ``com.caucho.hessian.io``, ``com.cedarsoftware.util.io``, ``com.esotericsoftware.kryo.io``, ``com.esotericsoftware.kryo5.io``, ``com.esotericsoftware.yamlbeans``, ``com.fasterxml.jackson.core``, ``com.fasterxml.jackson.databind``, ``com.google.gson``, ``com.hubspot.jinjava``, ``com.jcraft.jsch``, ``com.microsoft.sqlserver.jdbc``, ``com.mitchellbosecke.pebble``, ``com.mongodb``, ``com.opensymphony.xwork2``, ``com.rabbitmq.client``, ``com.sshtools.j2ssh.authentication``, ``com.sun.crypto.provider``, ``com.sun.jndi.ldap``, ``com.sun.net.httpserver``, ``com.sun.net.ssl``, ``com.sun.rowset``, ``com.sun.security.auth.module``, ``com.sun.security.ntlm``, ``com.sun.security.sasl.digest``, ``com.thoughtworks.xstream``, ``com.trilead.ssh2``, ``com.unboundid.ldap.sdk``, ``com.zaxxer.hikari``, ``flexjson``, ``freemarker.cache``, ``freemarker.template``, ``groovy.lang``, ``groovy.text``, ``groovy.util``, ``hudson``, ``io.jsonwebtoken``, ``io.netty.bootstrap``, ``io.netty.buffer``, ``io.netty.channel``, ``io.netty.handler.codec``, ``io.netty.handler.ssl``, ``io.netty.handler.stream``, ``io.netty.resolver``, ``io.netty.util``, ``io.undertow.server.handlers.resource``, ``javafx.scene.web``, ``jenkins``, ``jodd.json``, ``liquibase.database.jvm``, ``liquibase.statement.core``, ``net.lingala.zip4j``, ``net.schmizz.sshj``, ``net.sf.json``, ``net.sf.saxon.s9api``, ``ognl``, ``okhttp3``, ``org.acegisecurity``, ``org.antlr.runtime``, ``org.apache.commons.codec``, ``org.apache.commons.compress.archivers.tar``, ``org.apache.commons.exec``, ``org.apache.commons.httpclient.util``, ``org.apache.commons.jelly``, ``org.apache.commons.jexl2``, ``org.apache.commons.jexl3``, ``org.apache.commons.lang``, ``org.apache.commons.logging``, ``org.apache.commons.net``, ``org.apache.commons.ognl``, ``org.apache.cxf.catalog``, ``org.apache.cxf.common.classloader``, ``org.apache.cxf.common.jaxb``, ``org.apache.cxf.common.logging``, ``org.apache.cxf.configuration.jsse``, ``org.apache.cxf.helpers``, ``org.apache.cxf.resource``, ``org.apache.cxf.staxutils``, ``org.apache.cxf.tools.corba.utils``, ``org.apache.cxf.tools.util``, ``org.apache.cxf.transform``, ``org.apache.directory.ldap.client.api``, ``org.apache.hadoop.fs``, ``org.apache.hadoop.hive.metastore``, ``org.apache.hadoop.hive.ql.exec``, ``org.apache.hadoop.hive.ql.metadata``, ``org.apache.hc.client5.http.async.methods``, ``org.apache.hc.client5.http.classic.methods``, ``org.apache.hc.client5.http.fluent``, ``org.apache.hive.hcatalog.templeton``, ``org.apache.ibatis.jdbc``, ``org.apache.ibatis.mapping``, ``org.apache.log4j``, ``org.apache.shiro.authc``, ``org.apache.shiro.codec``, ``org.apache.shiro.jndi``, ``org.apache.shiro.mgt``, ``org.apache.sshd.client.session``, ``org.apache.struts.beanvalidation.validation.interceptor``, ``org.apache.struts2``, ``org.apache.tools.ant``, ``org.apache.tools.zip``, ``org.apache.velocity.app``, ``org.apache.velocity.runtime``, ``org.codehaus.cargo.container.installer``, ``org.codehaus.groovy.control``, ``org.dom4j``, ``org.eclipse.jetty.client``, ``org.exolab.castor.xml``, ``org.fusesource.leveldbjni``, ``org.geogebra.web.full.main``, ``org.gradle.api.file``, ``org.hibernate``, ``org.ho.yaml``, ``org.influxdb``, ``org.jabsorb``, ``org.jboss.vfs``, ``org.jdbi.v3.core``, ``org.jenkins.ui.icon``, ``org.jenkins.ui.symbol``, ``org.jooq``, ``org.keycloak.models.map.storage``, ``org.kohsuke.stapler``, ``org.lastaflute.web``, ``org.mvel2``, ``org.openjdk.jmh.runner.options``, ``org.owasp.esapi``, ``org.pac4j.jwt.config.encryption``, ``org.pac4j.jwt.config.signature``, ``org.scijava.log``, ``org.slf4j``, ``org.thymeleaf``, ``org.xml.sax``, ``org.xmlpull.v1``, ``org.yaml.snakeyaml``, ``play.libs.ws``, ``play.mvc``, ``ratpack.core.form``, ``ratpack.core.handling``, ``ratpack.core.http``, ``ratpack.exec``, ``ratpack.form``, ``ratpack.func``, ``ratpack.handling``, ``ratpack.http``, ``ratpack.util``, ``retrofit2``, ``software.amazon.awssdk.transfer.s3.model``, ``sun.jvmstat.perfdata.monitor.protocol.local``, ``sun.jvmstat.perfdata.monitor.protocol.rmi``, ``sun.misc``, ``sun.net.ftp``, ``sun.net.www.protocol.http``, ``sun.security.acl``, ``sun.security.jgss.krb5``, ``sun.security.krb5``, ``sun.security.pkcs``, ``sun.security.pkcs11``, ``sun.security.provider``, ``sun.security.ssl``, ``sun.security.x509``, ``sun.tools.jconsole``",133,10525,927,140,6,22,18,,208 - Totals,,338,26367,2656,404,16,128,33,1,409 + Others,"``actions.osgi``, ``antlr``, ``ch.ethz.ssh2``, ``cn.hutool.core.codec``, ``com.alibaba.com.caucho.hessian.io``, ``com.alibaba.druid.sql``, ``com.alibaba.fastjson2``, ``com.amazonaws.auth``, ``com.auth0.jwt.algorithms``, ``com.azure.identity``, ``com.caucho.burlap.io``, ``com.caucho.hessian.io``, ``com.cedarsoftware.util.io``, ``com.esotericsoftware.kryo.io``, ``com.esotericsoftware.kryo5.io``, ``com.esotericsoftware.yamlbeans``, ``com.fasterxml.jackson.core``, ``com.fasterxml.jackson.databind``, ``com.google.gson``, ``com.hubspot.jinjava``, ``com.jcraft.jsch``, ``com.microsoft.sqlserver.jdbc``, ``com.mitchellbosecke.pebble``, ``com.mongodb``, ``com.opensymphony.xwork2``, ``com.rabbitmq.client``, ``com.sshtools.j2ssh.authentication``, ``com.sun.crypto.provider``, ``com.sun.jndi.ldap``, ``com.sun.net.httpserver``, ``com.sun.net.ssl``, ``com.sun.rowset``, ``com.sun.security.auth.module``, ``com.sun.security.ntlm``, ``com.sun.security.sasl.digest``, ``com.thoughtworks.xstream``, ``com.trilead.ssh2``, ``com.unboundid.ldap.sdk``, ``com.zaxxer.hikari``, ``flexjson``, ``freemarker.cache``, ``freemarker.template``, ``groovy.lang``, ``groovy.text``, ``groovy.util``, ``hudson``, ``io.jsonwebtoken``, ``io.netty.bootstrap``, ``io.netty.buffer``, ``io.netty.channel``, ``io.netty.handler.codec``, ``io.netty.handler.ssl``, ``io.netty.handler.stream``, ``io.netty.resolver``, ``io.netty.util``, ``io.undertow.server.handlers.resource``, ``javafx.scene.web``, ``jenkins``, ``jodd.json``, ``liquibase.database.jvm``, ``liquibase.statement.core``, ``net.lingala.zip4j``, ``net.schmizz.sshj``, ``net.sf.json``, ``net.sf.saxon.s9api``, ``ognl``, ``okhttp3``, ``org.acegisecurity``, ``org.antlr.runtime``, ``org.apache.commons.codec``, ``org.apache.commons.compress.archivers.tar``, ``org.apache.commons.exec``, ``org.apache.commons.fileupload``, ``org.apache.commons.httpclient.util``, ``org.apache.commons.jelly``, ``org.apache.commons.jexl2``, ``org.apache.commons.jexl3``, ``org.apache.commons.lang``, ``org.apache.commons.logging``, ``org.apache.commons.net``, ``org.apache.commons.ognl``, ``org.apache.cxf.catalog``, ``org.apache.cxf.common.classloader``, ``org.apache.cxf.common.jaxb``, ``org.apache.cxf.common.logging``, ``org.apache.cxf.configuration.jsse``, ``org.apache.cxf.helpers``, ``org.apache.cxf.resource``, ``org.apache.cxf.staxutils``, ``org.apache.cxf.tools.corba.utils``, ``org.apache.cxf.tools.util``, ``org.apache.cxf.transform``, ``org.apache.directory.ldap.client.api``, ``org.apache.hadoop.fs``, ``org.apache.hadoop.hive.metastore``, ``org.apache.hadoop.hive.ql.exec``, ``org.apache.hadoop.hive.ql.metadata``, ``org.apache.hc.client5.http.async.methods``, ``org.apache.hc.client5.http.classic.methods``, ``org.apache.hc.client5.http.fluent``, ``org.apache.hive.hcatalog.templeton``, ``org.apache.ibatis.jdbc``, ``org.apache.ibatis.mapping``, ``org.apache.log4j``, ``org.apache.shiro.authc``, ``org.apache.shiro.codec``, ``org.apache.shiro.jndi``, ``org.apache.shiro.mgt``, ``org.apache.sshd.client.session``, ``org.apache.struts.beanvalidation.validation.interceptor``, ``org.apache.struts2``, ``org.apache.tools.ant``, ``org.apache.tools.zip``, ``org.apache.velocity.app``, ``org.apache.velocity.runtime``, ``org.codehaus.cargo.container.installer``, ``org.codehaus.groovy.control``, ``org.dom4j``, ``org.eclipse.jetty.client``, ``org.exolab.castor.xml``, ``org.fusesource.leveldbjni``, ``org.geogebra.web.full.main``, ``org.gradle.api.file``, ``org.hibernate``, ``org.ho.yaml``, ``org.influxdb``, ``org.jabsorb``, ``org.jboss.vfs``, ``org.jdbi.v3.core``, ``org.jenkins.ui.icon``, ``org.jenkins.ui.symbol``, ``org.jooq``, ``org.keycloak.models.map.storage``, ``org.kohsuke.stapler``, ``org.lastaflute.web``, ``org.mvel2``, ``org.openjdk.jmh.runner.options``, ``org.owasp.esapi``, ``org.pac4j.jwt.config.encryption``, ``org.pac4j.jwt.config.signature``, ``org.scijava.log``, ``org.slf4j``, ``org.thymeleaf``, ``org.xml.sax``, ``org.xmlpull.v1``, ``org.yaml.snakeyaml``, ``play.libs.ws``, ``play.mvc``, ``ratpack.core.form``, ``ratpack.core.handling``, ``ratpack.core.http``, ``ratpack.exec``, ``ratpack.form``, ``ratpack.func``, ``ratpack.handling``, ``ratpack.http``, ``ratpack.util``, ``retrofit2``, ``software.amazon.awssdk.transfer.s3.model``, ``sun.jvmstat.perfdata.monitor.protocol.local``, ``sun.jvmstat.perfdata.monitor.protocol.rmi``, ``sun.misc``, ``sun.net.ftp``, ``sun.net.www.protocol.http``, ``sun.security.acl``, ``sun.security.jgss.krb5``, ``sun.security.krb5``, ``sun.security.pkcs``, ``sun.security.pkcs11``, ``sun.security.provider``, ``sun.security.ssl``, ``sun.security.x509``, ``sun.tools.jconsole``",144,10529,927,140,6,22,18,,208 + Totals,,363,26371,2656,404,16,128,33,1,409 From 9af432d2f9b78d341de188efa05e1227c2bb8049 Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Sat, 4 Oct 2025 16:19:00 +0200 Subject: [PATCH 46/63] C++: Add simple range analysis tests for inequalities --- .../SimpleRangeAnalysis/lowerBound.expected | 1285 +-- .../SimpleRangeAnalysis/nrOfBounds.expected | 6900 +++++++++-------- .../SimpleRangeAnalysis/ternaryLower.expected | 295 +- .../SimpleRangeAnalysis/ternaryUpper.expected | 295 +- .../rangeanalysis/SimpleRangeAnalysis/test.c | 11 + .../SimpleRangeAnalysis/upperBound.expected | 1283 +-- 6 files changed, 5103 insertions(+), 4966 deletions(-) diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/lowerBound.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/lowerBound.expected index eb1dbc7b93f..8fe3b0ea0a1 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/lowerBound.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/lowerBound.expected @@ -352,664 +352,679 @@ | test.c:333:10:333:14 | total | -2147483648 | | test.c:341:32:341:34 | odd | 9007199254740991 | | test.c:343:10:343:16 | shifted | 4503599627370495 | -| test.c:348:7:348:7 | x | -2147483648 | -| test.c:352:10:352:10 | i | 0 | -| test.c:353:5:353:5 | i | 0 | -| test.c:355:3:355:3 | d | -2147483648 | -| test.c:355:7:355:7 | i | 3 | -| test.c:356:7:356:7 | x | 0 | -| test.c:357:9:357:9 | d | 3 | -| test.c:357:14:357:14 | x | 0 | -| test.c:367:3:367:4 | y1 | 0 | -| test.c:367:8:367:8 | x | 0 | -| test.c:367:18:367:18 | x | 0 | -| test.c:368:3:368:4 | y2 | 0 | -| test.c:368:8:368:8 | x | 0 | -| test.c:368:24:368:24 | x | 0 | -| test.c:369:3:369:4 | y3 | 0 | -| test.c:370:3:370:4 | y4 | 0 | -| test.c:371:3:371:4 | y5 | 0 | -| test.c:372:3:372:4 | y6 | 0 | -| test.c:373:3:373:4 | y7 | 0 | -| test.c:374:3:374:4 | y8 | 0 | -| test.c:375:7:375:7 | x | 0 | -| test.c:376:5:376:6 | y3 | 0 | -| test.c:376:10:376:10 | x | 0 | -| test.c:377:5:377:6 | y4 | 0 | -| test.c:377:10:377:10 | x | 0 | -| test.c:378:5:378:6 | y5 | 0 | -| test.c:378:11:378:11 | x | 0 | -| test.c:379:5:379:6 | y6 | 0 | -| test.c:379:27:379:27 | x | 0 | -| test.c:380:5:380:6 | y7 | 0 | -| test.c:380:27:380:27 | x | 0 | -| test.c:381:5:381:6 | y8 | 0 | -| test.c:381:28:381:28 | x | 0 | -| test.c:383:10:383:11 | y1 | 0 | -| test.c:383:15:383:16 | y2 | 0 | -| test.c:383:20:383:21 | y3 | 0 | -| test.c:383:25:383:26 | y4 | 0 | -| test.c:383:30:383:31 | y5 | 0 | -| test.c:383:35:383:36 | y6 | 0 | -| test.c:383:40:383:41 | y7 | 0 | -| test.c:383:45:383:46 | y8 | 0 | -| test.c:389:3:389:4 | y1 | 0 | -| test.c:389:8:389:8 | x | 0 | -| test.c:389:18:389:18 | x | 101 | -| test.c:390:3:390:4 | y2 | 0 | -| test.c:390:8:390:8 | x | 0 | -| test.c:390:25:390:25 | x | 101 | -| test.c:391:3:391:4 | y3 | 0 | -| test.c:392:3:392:4 | y4 | 0 | -| test.c:393:3:393:4 | y5 | 0 | -| test.c:394:7:394:7 | x | 0 | -| test.c:395:5:395:6 | y3 | 0 | -| test.c:395:11:395:11 | x | 300 | -| test.c:396:5:396:6 | y4 | 0 | -| test.c:396:11:396:11 | x | 300 | -| test.c:397:5:397:6 | y5 | 0 | -| test.c:397:27:397:27 | x | 300 | -| test.c:399:10:399:11 | y1 | 101 | -| test.c:399:15:399:16 | y2 | 101 | -| test.c:399:20:399:21 | y3 | 0 | -| test.c:399:25:399:26 | y4 | 100 | -| test.c:399:30:399:31 | y5 | 0 | -| test.c:404:14:404:14 | m | -Infinity | -| test.c:404:18:404:18 | n | -Infinity | -| test.c:404:22:404:22 | o | -Infinity | -| test.c:404:26:404:26 | p | -Infinity | -| test.c:404:30:404:30 | q | -Infinity | -| test.c:405:14:405:14 | m | -Infinity | -| test.c:405:18:405:18 | n | -Infinity | -| test.c:405:22:405:22 | o | -Infinity | -| test.c:405:26:405:26 | p | -Infinity | -| test.c:405:30:405:30 | q | -Infinity | -| test.c:406:14:406:14 | m | -Infinity | -| test.c:406:18:406:18 | n | -Infinity | -| test.c:406:22:406:22 | o | -Infinity | -| test.c:406:26:406:26 | p | -Infinity | -| test.c:406:30:406:30 | q | -Infinity | -| test.c:407:14:407:14 | m | -Infinity | -| test.c:407:18:407:18 | n | -Infinity | -| test.c:407:22:407:22 | o | -Infinity | -| test.c:407:26:407:26 | p | -Infinity | -| test.c:407:30:407:30 | q | -Infinity | -| test.c:408:14:408:14 | m | -Infinity | -| test.c:408:18:408:18 | n | -Infinity | -| test.c:408:22:408:22 | o | -Infinity | -| test.c:408:26:408:26 | p | -Infinity | -| test.c:408:30:408:30 | q | -Infinity | -| test.c:409:14:409:14 | m | -Infinity | -| test.c:409:18:409:18 | n | -Infinity | -| test.c:409:22:409:22 | o | -Infinity | -| test.c:409:26:409:26 | p | -Infinity | -| test.c:409:30:409:30 | q | -Infinity | -| test.c:410:14:410:14 | m | -Infinity | -| test.c:410:18:410:18 | n | -Infinity | -| test.c:410:22:410:22 | o | -Infinity | -| test.c:410:26:410:26 | p | -Infinity | -| test.c:410:30:410:30 | q | -Infinity | -| test.c:411:14:411:14 | m | -Infinity | -| test.c:411:18:411:18 | n | -Infinity | -| test.c:411:22:411:22 | o | -Infinity | -| test.c:411:26:411:26 | p | -Infinity | -| test.c:411:30:411:30 | q | -Infinity | -| test.c:412:14:412:14 | m | -Infinity | -| test.c:412:18:412:18 | n | -Infinity | -| test.c:412:22:412:22 | o | -Infinity | -| test.c:412:26:412:26 | p | -Infinity | -| test.c:412:30:412:30 | q | -Infinity | -| test.c:413:14:413:14 | m | -Infinity | -| test.c:413:18:413:18 | n | -Infinity | -| test.c:413:22:413:22 | o | -Infinity | -| test.c:413:26:413:26 | p | -Infinity | -| test.c:413:30:413:30 | q | -Infinity | -| test.c:414:14:414:14 | m | -Infinity | -| test.c:414:18:414:18 | n | -Infinity | -| test.c:414:22:414:22 | o | -Infinity | -| test.c:414:26:414:26 | p | -Infinity | -| test.c:414:30:414:30 | q | -Infinity | +| test.c:348:27:348:27 | e | 0 | +| test.c:348:40:348:40 | e | 0.5 | +| test.c:349:25:349:25 | e | 0 | +| test.c:349:39:349:39 | e | 0 | +| test.c:350:27:350:27 | e | 0 | +| test.c:350:40:350:40 | e | 0.333333 | +| test.c:351:27:351:27 | e | 0 | +| test.c:351:40:351:40 | e | 0.5 | +| test.c:352:27:352:27 | e | 0 | +| test.c:352:41:352:41 | e | 8.5 | +| test.c:354:10:354:12 | bi1 | 0.5 | +| test.c:354:16:354:18 | bi2 | 0 | +| test.c:354:22:354:24 | bi3 | 0.333333 | +| test.c:354:28:354:30 | bi4 | 0.5 | +| test.c:354:34:354:36 | bi5 | 2 | +| test.c:359:7:359:7 | x | -2147483648 | +| test.c:363:10:363:10 | i | 0 | +| test.c:364:5:364:5 | i | 0 | +| test.c:366:3:366:3 | d | -2147483648 | +| test.c:366:7:366:7 | i | 3 | +| test.c:367:7:367:7 | x | 0 | +| test.c:368:9:368:9 | d | 3 | +| test.c:368:14:368:14 | x | 0 | +| test.c:378:3:378:4 | y1 | 0 | +| test.c:378:8:378:8 | x | 0 | +| test.c:378:18:378:18 | x | 0 | +| test.c:379:3:379:4 | y2 | 0 | +| test.c:379:8:379:8 | x | 0 | +| test.c:379:24:379:24 | x | 0 | +| test.c:380:3:380:4 | y3 | 0 | +| test.c:381:3:381:4 | y4 | 0 | +| test.c:382:3:382:4 | y5 | 0 | +| test.c:383:3:383:4 | y6 | 0 | +| test.c:384:3:384:4 | y7 | 0 | +| test.c:385:3:385:4 | y8 | 0 | +| test.c:386:7:386:7 | x | 0 | +| test.c:387:5:387:6 | y3 | 0 | +| test.c:387:10:387:10 | x | 0 | +| test.c:388:5:388:6 | y4 | 0 | +| test.c:388:10:388:10 | x | 0 | +| test.c:389:5:389:6 | y5 | 0 | +| test.c:389:11:389:11 | x | 0 | +| test.c:390:5:390:6 | y6 | 0 | +| test.c:390:27:390:27 | x | 0 | +| test.c:391:5:391:6 | y7 | 0 | +| test.c:391:27:391:27 | x | 0 | +| test.c:392:5:392:6 | y8 | 0 | +| test.c:392:28:392:28 | x | 0 | +| test.c:394:10:394:11 | y1 | 0 | +| test.c:394:15:394:16 | y2 | 0 | +| test.c:394:20:394:21 | y3 | 0 | +| test.c:394:25:394:26 | y4 | 0 | +| test.c:394:30:394:31 | y5 | 0 | +| test.c:394:35:394:36 | y6 | 0 | +| test.c:394:40:394:41 | y7 | 0 | +| test.c:394:45:394:46 | y8 | 0 | +| test.c:400:3:400:4 | y1 | 0 | +| test.c:400:8:400:8 | x | 0 | +| test.c:400:18:400:18 | x | 101 | +| test.c:401:3:401:4 | y2 | 0 | +| test.c:401:8:401:8 | x | 0 | +| test.c:401:25:401:25 | x | 101 | +| test.c:402:3:402:4 | y3 | 0 | +| test.c:403:3:403:4 | y4 | 0 | +| test.c:404:3:404:4 | y5 | 0 | +| test.c:405:7:405:7 | x | 0 | +| test.c:406:5:406:6 | y3 | 0 | +| test.c:406:11:406:11 | x | 300 | +| test.c:407:5:407:6 | y4 | 0 | +| test.c:407:11:407:11 | x | 300 | +| test.c:408:5:408:6 | y5 | 0 | +| test.c:408:27:408:27 | x | 300 | +| test.c:410:10:410:11 | y1 | 101 | +| test.c:410:15:410:16 | y2 | 101 | +| test.c:410:20:410:21 | y3 | 0 | +| test.c:410:25:410:26 | y4 | 100 | +| test.c:410:30:410:31 | y5 | 0 | | test.c:415:14:415:14 | m | -Infinity | | test.c:415:18:415:18 | n | -Infinity | | test.c:415:22:415:22 | o | -Infinity | | test.c:415:26:415:26 | p | -Infinity | | test.c:415:30:415:30 | q | -Infinity | -| test.c:421:19:421:19 | a | 0.143339 | -| test.c:421:23:421:23 | b | 0.222479 | -| test.c:421:27:421:27 | c | 0.051213 | -| test.c:421:31:421:31 | d | 0.369769 | -| test.c:421:35:421:35 | e | 0.105977 | -| test.c:421:39:421:39 | f | 0.107867 | -| test.c:421:43:421:43 | g | 0.025243 | -| test.c:421:47:421:47 | h | 0.149635 | -| test.c:421:51:421:51 | i | 0.053282 | -| test.c:421:55:421:55 | j | 0.276432 | -| test.c:421:59:421:59 | k | 0.205191 | -| test.c:421:63:421:63 | l | 0.132041 | -| test.c:423:10:423:15 | output | 1.842468 | -| test.c:430:7:430:9 | rhs | 0 | -| test.c:430:19:430:21 | rhs | 0 | -| test.c:431:7:431:9 | rhs | 0 | -| test.c:431:19:431:21 | rhs | 0 | -| test.c:432:7:432:9 | rhs | 0 | -| test.c:432:19:432:21 | rhs | 0 | -| test.c:433:7:433:9 | rhs | 0 | -| test.c:433:19:433:21 | rhs | 0 | -| test.c:434:7:434:9 | rhs | 0 | -| test.c:434:19:434:21 | rhs | 0 | -| test.c:435:10:435:12 | rhs | 0 | -| test.c:439:7:439:7 | a | -2147483648 | -| test.c:440:9:440:9 | b | -2147483648 | -| test.c:441:7:441:7 | a | 17 | -| test.c:441:12:441:12 | b | 23 | -| test.c:443:9:443:9 | a | 17 | -| test.c:444:7:444:7 | b | -2147483648 | -| test.c:449:11:449:11 | a | -2147483648 | -| test.c:449:15:449:15 | b | -2147483648 | -| test.c:450:10:450:10 | a | -2147483648 | -| test.c:450:14:450:14 | b | -2147483648 | -| test.c:457:10:457:11 | ip | 0 | -| test.c:457:20:457:21 | ip | 0 | -| test.c:457:40:457:41 | ip | 0 | -| test.c:458:14:458:15 | ip | 1 | -| test.c:459:14:459:15 | ip | 0 | -| test.c:459:34:459:35 | ip | 0 | -| test.c:460:11:460:12 | ip | 0 | -| test.c:461:13:461:14 | ip | 0 | -| test.c:462:14:462:15 | ip | 0 | -| test.c:463:14:463:15 | ip | 0 | -| test.c:464:15:464:16 | ip | 0 | -| test.c:464:41:464:42 | ip | 0 | -| test.c:464:52:464:53 | ip | 0 | -| test.c:464:67:464:68 | ip | 0 | -| test.c:464:78:464:79 | ip | 0 | -| test.c:465:18:465:19 | ip | 0 | -| test.c:466:23:466:24 | ip | 0 | -| test.c:466:34:466:35 | ip | 0 | -| test.c:467:25:467:26 | ip | 0 | +| test.c:416:14:416:14 | m | -Infinity | +| test.c:416:18:416:18 | n | -Infinity | +| test.c:416:22:416:22 | o | -Infinity | +| test.c:416:26:416:26 | p | -Infinity | +| test.c:416:30:416:30 | q | -Infinity | +| test.c:417:14:417:14 | m | -Infinity | +| test.c:417:18:417:18 | n | -Infinity | +| test.c:417:22:417:22 | o | -Infinity | +| test.c:417:26:417:26 | p | -Infinity | +| test.c:417:30:417:30 | q | -Infinity | +| test.c:418:14:418:14 | m | -Infinity | +| test.c:418:18:418:18 | n | -Infinity | +| test.c:418:22:418:22 | o | -Infinity | +| test.c:418:26:418:26 | p | -Infinity | +| test.c:418:30:418:30 | q | -Infinity | +| test.c:419:14:419:14 | m | -Infinity | +| test.c:419:18:419:18 | n | -Infinity | +| test.c:419:22:419:22 | o | -Infinity | +| test.c:419:26:419:26 | p | -Infinity | +| test.c:419:30:419:30 | q | -Infinity | +| test.c:420:14:420:14 | m | -Infinity | +| test.c:420:18:420:18 | n | -Infinity | +| test.c:420:22:420:22 | o | -Infinity | +| test.c:420:26:420:26 | p | -Infinity | +| test.c:420:30:420:30 | q | -Infinity | +| test.c:421:14:421:14 | m | -Infinity | +| test.c:421:18:421:18 | n | -Infinity | +| test.c:421:22:421:22 | o | -Infinity | +| test.c:421:26:421:26 | p | -Infinity | +| test.c:421:30:421:30 | q | -Infinity | +| test.c:422:14:422:14 | m | -Infinity | +| test.c:422:18:422:18 | n | -Infinity | +| test.c:422:22:422:22 | o | -Infinity | +| test.c:422:26:422:26 | p | -Infinity | +| test.c:422:30:422:30 | q | -Infinity | +| test.c:423:14:423:14 | m | -Infinity | +| test.c:423:18:423:18 | n | -Infinity | +| test.c:423:22:423:22 | o | -Infinity | +| test.c:423:26:423:26 | p | -Infinity | +| test.c:423:30:423:30 | q | -Infinity | +| test.c:424:14:424:14 | m | -Infinity | +| test.c:424:18:424:18 | n | -Infinity | +| test.c:424:22:424:22 | o | -Infinity | +| test.c:424:26:424:26 | p | -Infinity | +| test.c:424:30:424:30 | q | -Infinity | +| test.c:425:14:425:14 | m | -Infinity | +| test.c:425:18:425:18 | n | -Infinity | +| test.c:425:22:425:22 | o | -Infinity | +| test.c:425:26:425:26 | p | -Infinity | +| test.c:425:30:425:30 | q | -Infinity | +| test.c:426:14:426:14 | m | -Infinity | +| test.c:426:18:426:18 | n | -Infinity | +| test.c:426:22:426:22 | o | -Infinity | +| test.c:426:26:426:26 | p | -Infinity | +| test.c:426:30:426:30 | q | -Infinity | +| test.c:432:19:432:19 | a | 0.143339 | +| test.c:432:23:432:23 | b | 0.222479 | +| test.c:432:27:432:27 | c | 0.051213 | +| test.c:432:31:432:31 | d | 0.369769 | +| test.c:432:35:432:35 | e | 0.105977 | +| test.c:432:39:432:39 | f | 0.107867 | +| test.c:432:43:432:43 | g | 0.025243 | +| test.c:432:47:432:47 | h | 0.149635 | +| test.c:432:51:432:51 | i | 0.053282 | +| test.c:432:55:432:55 | j | 0.276432 | +| test.c:432:59:432:59 | k | 0.205191 | +| test.c:432:63:432:63 | l | 0.132041 | +| test.c:434:10:434:15 | output | 1.842468 | +| test.c:441:7:441:9 | rhs | 0 | +| test.c:441:19:441:21 | rhs | 0 | +| test.c:442:7:442:9 | rhs | 0 | +| test.c:442:19:442:21 | rhs | 0 | +| test.c:443:7:443:9 | rhs | 0 | +| test.c:443:19:443:21 | rhs | 0 | +| test.c:444:7:444:9 | rhs | 0 | +| test.c:444:19:444:21 | rhs | 0 | +| test.c:445:7:445:9 | rhs | 0 | +| test.c:445:19:445:21 | rhs | 0 | +| test.c:446:10:446:12 | rhs | 0 | +| test.c:450:7:450:7 | a | -2147483648 | +| test.c:451:9:451:9 | b | -2147483648 | +| test.c:452:7:452:7 | a | 17 | +| test.c:452:12:452:12 | b | 23 | +| test.c:454:9:454:9 | a | 17 | +| test.c:455:7:455:7 | b | -2147483648 | +| test.c:460:11:460:11 | a | -2147483648 | +| test.c:460:15:460:15 | b | -2147483648 | +| test.c:461:10:461:10 | a | -2147483648 | +| test.c:461:14:461:14 | b | -2147483648 | +| test.c:468:10:468:11 | ip | 0 | | test.c:468:20:468:21 | ip | 0 | -| test.c:469:11:469:12 | ip | 0 | -| test.c:469:26:469:27 | ip | 0 | -| test.c:470:16:470:17 | ip | 0 | -| test.c:471:16:471:17 | ip | 0 | -| test.c:472:16:472:17 | ip | 0 | -| test.c:473:17:473:18 | ip | 0 | -| test.c:474:22:474:23 | ip | 0 | -| test.c:474:33:474:34 | ip | 0 | -| test.c:474:48:474:49 | ip | 0 | -| test.c:474:59:474:60 | ip | 0 | -| test.c:475:20:475:21 | ip | 0 | -| test.c:476:25:476:26 | ip | 0 | -| test.c:476:36:476:37 | ip | 0 | -| test.c:477:27:477:28 | ip | 0 | -| test.c:478:22:478:23 | ip | 0 | -| test.c:479:15:479:16 | ip | 0 | -| test.c:479:30:479:31 | ip | 0 | +| test.c:468:40:468:41 | ip | 0 | +| test.c:469:14:469:15 | ip | 1 | +| test.c:470:14:470:15 | ip | 0 | +| test.c:470:34:470:35 | ip | 0 | +| test.c:471:11:471:12 | ip | 0 | +| test.c:472:13:472:14 | ip | 0 | +| test.c:473:14:473:15 | ip | 0 | +| test.c:474:14:474:15 | ip | 0 | +| test.c:475:15:475:16 | ip | 0 | +| test.c:475:41:475:42 | ip | 0 | +| test.c:475:52:475:53 | ip | 0 | +| test.c:475:67:475:68 | ip | 0 | +| test.c:475:78:475:79 | ip | 0 | +| test.c:476:18:476:19 | ip | 0 | +| test.c:477:23:477:24 | ip | 0 | +| test.c:477:34:477:35 | ip | 0 | +| test.c:478:25:478:26 | ip | 0 | +| test.c:479:20:479:21 | ip | 0 | | test.c:480:11:480:12 | ip | 0 | -| test.c:481:12:481:13 | ip | 0 | -| test.c:482:12:482:13 | ip | 0 | -| test.c:483:13:483:14 | ip | 0 | -| test.c:483:39:483:40 | ip | 0 | -| test.c:483:50:483:51 | ip | 0 | -| test.c:483:65:483:66 | ip | 0 | -| test.c:483:76:483:77 | ip | 0 | -| test.c:484:16:484:17 | ip | 0 | -| test.c:485:21:485:22 | ip | 0 | -| test.c:485:32:485:33 | ip | 0 | -| test.c:486:23:486:24 | ip | 0 | -| test.c:487:18:487:19 | ip | 0 | -| test.c:488:11:488:12 | ip | 0 | -| test.c:488:17:488:18 | ip | 0 | -| test.c:488:37:488:38 | ip | 0 | -| test.c:488:43:488:44 | ip | 0 | -| test.c:489:14:489:15 | ip | 0 | -| test.c:490:14:490:15 | ip | 0 | -| test.c:491:14:491:15 | ip | 0 | -| test.c:492:15:492:16 | ip | 0 | -| test.c:492:41:492:42 | ip | 0 | -| test.c:492:52:492:53 | ip | 0 | -| test.c:492:67:492:68 | ip | 0 | -| test.c:492:78:492:79 | ip | 0 | -| test.c:493:18:493:19 | ip | 0 | -| test.c:494:23:494:24 | ip | 0 | -| test.c:494:34:494:35 | ip | 0 | -| test.c:495:25:495:26 | ip | 0 | -| test.c:496:20:496:21 | ip | 0 | -| test.c:497:14:497:15 | ip | 0 | -| test.c:497:20:497:21 | ip | 0 | -| test.c:498:16:498:17 | ip | 0 | -| test.c:499:12:499:13 | ip | 0 | +| test.c:480:26:480:27 | ip | 0 | +| test.c:481:16:481:17 | ip | 0 | +| test.c:482:16:482:17 | ip | 0 | +| test.c:483:16:483:17 | ip | 0 | +| test.c:484:17:484:18 | ip | 0 | +| test.c:485:22:485:23 | ip | 0 | +| test.c:485:33:485:34 | ip | 0 | +| test.c:485:48:485:49 | ip | 0 | +| test.c:485:59:485:60 | ip | 0 | +| test.c:486:20:486:21 | ip | 0 | +| test.c:487:25:487:26 | ip | 0 | +| test.c:487:36:487:37 | ip | 0 | +| test.c:488:27:488:28 | ip | 0 | +| test.c:489:22:489:23 | ip | 0 | +| test.c:490:15:490:16 | ip | 0 | +| test.c:490:30:490:31 | ip | 0 | +| test.c:491:11:491:12 | ip | 0 | +| test.c:492:12:492:13 | ip | 0 | +| test.c:493:12:493:13 | ip | 0 | +| test.c:494:13:494:14 | ip | 0 | +| test.c:494:39:494:40 | ip | 0 | +| test.c:494:50:494:51 | ip | 0 | +| test.c:494:65:494:66 | ip | 0 | +| test.c:494:76:494:77 | ip | 0 | +| test.c:495:16:495:17 | ip | 0 | +| test.c:496:21:496:22 | ip | 0 | +| test.c:496:32:496:33 | ip | 0 | +| test.c:497:23:497:24 | ip | 0 | +| test.c:498:18:498:19 | ip | 0 | +| test.c:499:11:499:12 | ip | 0 | +| test.c:499:17:499:18 | ip | 0 | +| test.c:499:37:499:38 | ip | 0 | +| test.c:499:43:499:44 | ip | 0 | | test.c:500:14:500:15 | ip | 0 | -| test.c:501:15:501:16 | ip | 0 | -| test.c:502:16:502:17 | ip | 0 | -| test.c:503:16:503:17 | ip | 0 | -| test.c:504:17:504:18 | ip | 0 | -| test.c:505:22:505:23 | ip | 0 | -| test.c:505:33:505:34 | ip | 0 | -| test.c:505:48:505:49 | ip | 0 | -| test.c:505:59:505:60 | ip | 0 | -| test.c:506:20:506:21 | ip | 0 | -| test.c:507:25:507:26 | ip | 0 | -| test.c:507:36:507:37 | ip | 0 | -| test.c:508:27:508:28 | ip | 0 | -| test.c:509:22:509:23 | ip | 0 | -| test.c:510:13:510:14 | ip | 0 | -| test.c:510:28:510:29 | ip | 0 | -| test.c:511:18:511:19 | ip | 0 | -| test.c:512:18:512:19 | ip | 0 | -| test.c:513:18:513:19 | ip | 0 | -| test.c:514:19:514:20 | ip | 0 | -| test.c:515:24:515:25 | ip | 0 | -| test.c:515:35:515:36 | ip | 0 | -| test.c:515:50:515:51 | ip | 0 | -| test.c:515:61:515:62 | ip | 0 | +| test.c:501:14:501:15 | ip | 0 | +| test.c:502:14:502:15 | ip | 0 | +| test.c:503:15:503:16 | ip | 0 | +| test.c:503:41:503:42 | ip | 0 | +| test.c:503:52:503:53 | ip | 0 | +| test.c:503:67:503:68 | ip | 0 | +| test.c:503:78:503:79 | ip | 0 | +| test.c:504:18:504:19 | ip | 0 | +| test.c:505:23:505:24 | ip | 0 | +| test.c:505:34:505:35 | ip | 0 | +| test.c:506:25:506:26 | ip | 0 | +| test.c:507:20:507:21 | ip | 0 | +| test.c:508:14:508:15 | ip | 0 | +| test.c:508:20:508:21 | ip | 0 | +| test.c:509:16:509:17 | ip | 0 | +| test.c:510:12:510:13 | ip | 0 | +| test.c:511:14:511:15 | ip | 0 | +| test.c:512:15:512:16 | ip | 0 | +| test.c:513:16:513:17 | ip | 0 | +| test.c:514:16:514:17 | ip | 0 | +| test.c:515:17:515:18 | ip | 0 | | test.c:516:22:516:23 | ip | 0 | -| test.c:517:27:517:28 | ip | 0 | -| test.c:517:38:517:39 | ip | 0 | -| test.c:518:29:518:30 | ip | 0 | -| test.c:519:24:519:25 | ip | 0 | -| test.c:520:17:520:18 | ip | 0 | -| test.c:520:32:520:33 | ip | 0 | -| test.c:521:14:521:15 | ip | 0 | +| test.c:516:33:516:34 | ip | 0 | +| test.c:516:48:516:49 | ip | 0 | +| test.c:516:59:516:60 | ip | 0 | +| test.c:517:20:517:21 | ip | 0 | +| test.c:518:25:518:26 | ip | 0 | +| test.c:518:36:518:37 | ip | 0 | +| test.c:519:27:519:28 | ip | 0 | +| test.c:520:22:520:23 | ip | 0 | +| test.c:521:13:521:14 | ip | 0 | +| test.c:521:28:521:29 | ip | 0 | | test.c:522:18:522:19 | ip | 0 | | test.c:523:18:523:19 | ip | 0 | -| test.c:524:19:524:20 | ip | 0 | -| test.c:525:24:525:25 | ip | 0 | -| test.c:525:35:525:36 | ip | 0 | -| test.c:525:50:525:51 | ip | 0 | -| test.c:525:61:525:62 | ip | 0 | -| test.c:526:22:526:23 | ip | 0 | -| test.c:527:27:527:28 | ip | 0 | -| test.c:527:38:527:39 | ip | 0 | -| test.c:528:29:528:30 | ip | 0 | -| test.c:529:24:529:25 | ip | 0 | -| test.c:530:17:530:18 | ip | 0 | -| test.c:530:23:530:24 | ip | 0 | -| test.c:530:43:530:44 | ip | 0 | -| test.c:530:49:530:50 | ip | 0 | -| test.c:531:16:531:17 | ip | 0 | -| test.c:532:16:532:17 | ip | 0 | -| test.c:533:16:533:17 | ip | 0 | -| test.c:534:17:534:18 | ip | 0 | -| test.c:535:22:535:23 | ip | 0 | -| test.c:535:33:535:34 | ip | 0 | -| test.c:535:48:535:49 | ip | 0 | -| test.c:535:59:535:60 | ip | 0 | -| test.c:536:20:536:21 | ip | 0 | -| test.c:537:25:537:26 | ip | 0 | -| test.c:537:36:537:37 | ip | 0 | +| test.c:524:18:524:19 | ip | 0 | +| test.c:525:19:525:20 | ip | 0 | +| test.c:526:24:526:25 | ip | 0 | +| test.c:526:35:526:36 | ip | 0 | +| test.c:526:50:526:51 | ip | 0 | +| test.c:526:61:526:62 | ip | 0 | +| test.c:527:22:527:23 | ip | 0 | +| test.c:528:27:528:28 | ip | 0 | +| test.c:528:38:528:39 | ip | 0 | +| test.c:529:29:529:30 | ip | 0 | +| test.c:530:24:530:25 | ip | 0 | +| test.c:531:17:531:18 | ip | 0 | +| test.c:531:32:531:33 | ip | 0 | +| test.c:532:14:532:15 | ip | 0 | +| test.c:533:18:533:19 | ip | 0 | +| test.c:534:18:534:19 | ip | 0 | +| test.c:535:19:535:20 | ip | 0 | +| test.c:536:24:536:25 | ip | 0 | +| test.c:536:35:536:36 | ip | 0 | +| test.c:536:50:536:51 | ip | 0 | +| test.c:536:61:536:62 | ip | 0 | +| test.c:537:22:537:23 | ip | 0 | | test.c:538:27:538:28 | ip | 0 | -| test.c:539:22:539:23 | ip | 0 | -| test.c:540:16:540:17 | ip | 0 | -| test.c:540:22:540:23 | ip | 0 | -| test.c:541:18:541:19 | ip | 0 | -| test.c:542:14:542:15 | ip | 0 | -| test.c:543:14:543:15 | ip | 0 | -| test.c:543:24:543:25 | ip | 0 | -| test.c:543:44:543:45 | ip | 0 | -| test.c:544:16:544:17 | ip | 1 | -| test.c:545:16:545:17 | ip | 0 | -| test.c:545:36:545:37 | ip | 0 | -| test.c:546:14:546:15 | ip | 0 | -| test.c:547:19:547:20 | ip | 0 | -| test.c:548:20:548:21 | ip | 0 | -| test.c:549:20:549:21 | ip | 0 | -| test.c:550:21:550:22 | ip | 0 | -| test.c:551:26:551:27 | ip | 0 | -| test.c:551:37:551:38 | ip | 0 | -| test.c:551:52:551:53 | ip | 0 | -| test.c:551:63:551:64 | ip | 0 | -| test.c:552:24:552:25 | ip | 0 | -| test.c:553:29:553:30 | ip | 0 | -| test.c:553:40:553:41 | ip | 0 | -| test.c:554:31:554:32 | ip | 0 | -| test.c:555:26:555:27 | ip | 0 | -| test.c:556:17:556:18 | ip | 0 | -| test.c:556:32:556:33 | ip | 0 | -| test.c:557:22:557:23 | ip | 0 | -| test.c:558:22:558:23 | ip | 0 | -| test.c:559:22:559:23 | ip | 0 | -| test.c:560:23:560:24 | ip | 0 | -| test.c:561:28:561:29 | ip | 0 | -| test.c:561:39:561:40 | ip | 0 | -| test.c:561:54:561:55 | ip | 0 | -| test.c:561:65:561:66 | ip | 0 | +| test.c:538:38:538:39 | ip | 0 | +| test.c:539:29:539:30 | ip | 0 | +| test.c:540:24:540:25 | ip | 0 | +| test.c:541:17:541:18 | ip | 0 | +| test.c:541:23:541:24 | ip | 0 | +| test.c:541:43:541:44 | ip | 0 | +| test.c:541:49:541:50 | ip | 0 | +| test.c:542:16:542:17 | ip | 0 | +| test.c:543:16:543:17 | ip | 0 | +| test.c:544:16:544:17 | ip | 0 | +| test.c:545:17:545:18 | ip | 0 | +| test.c:546:22:546:23 | ip | 0 | +| test.c:546:33:546:34 | ip | 0 | +| test.c:546:48:546:49 | ip | 0 | +| test.c:546:59:546:60 | ip | 0 | +| test.c:547:20:547:21 | ip | 0 | +| test.c:548:25:548:26 | ip | 0 | +| test.c:548:36:548:37 | ip | 0 | +| test.c:549:27:549:28 | ip | 0 | +| test.c:550:22:550:23 | ip | 0 | +| test.c:551:16:551:17 | ip | 0 | +| test.c:551:22:551:23 | ip | 0 | +| test.c:552:18:552:19 | ip | 0 | +| test.c:553:14:553:15 | ip | 0 | +| test.c:554:14:554:15 | ip | 0 | +| test.c:554:24:554:25 | ip | 0 | +| test.c:554:44:554:45 | ip | 0 | +| test.c:555:16:555:17 | ip | 1 | +| test.c:556:16:556:17 | ip | 0 | +| test.c:556:36:556:37 | ip | 0 | +| test.c:557:14:557:15 | ip | 0 | +| test.c:558:19:558:20 | ip | 0 | +| test.c:559:20:559:21 | ip | 0 | +| test.c:560:20:560:21 | ip | 0 | +| test.c:561:21:561:22 | ip | 0 | | test.c:562:26:562:27 | ip | 0 | -| test.c:563:31:563:32 | ip | 0 | -| test.c:563:42:563:43 | ip | 0 | -| test.c:564:33:564:34 | ip | 0 | -| test.c:565:28:565:29 | ip | 0 | -| test.c:566:21:566:22 | ip | 0 | -| test.c:566:36:566:37 | ip | 0 | +| test.c:562:37:562:38 | ip | 0 | +| test.c:562:52:562:53 | ip | 0 | +| test.c:562:63:562:64 | ip | 0 | +| test.c:563:24:563:25 | ip | 0 | +| test.c:564:29:564:30 | ip | 0 | +| test.c:564:40:564:41 | ip | 0 | +| test.c:565:31:565:32 | ip | 0 | +| test.c:566:26:566:27 | ip | 0 | | test.c:567:17:567:18 | ip | 0 | -| test.c:568:18:568:19 | ip | 0 | -| test.c:569:18:569:19 | ip | 0 | -| test.c:570:19:570:20 | ip | 0 | -| test.c:571:24:571:25 | ip | 0 | -| test.c:571:35:571:36 | ip | 0 | -| test.c:571:50:571:51 | ip | 0 | -| test.c:571:61:571:62 | ip | 0 | -| test.c:572:22:572:23 | ip | 0 | -| test.c:573:27:573:28 | ip | 0 | -| test.c:573:38:573:39 | ip | 0 | -| test.c:574:29:574:30 | ip | 0 | -| test.c:575:24:575:25 | ip | 0 | -| test.c:576:17:576:18 | ip | 0 | -| test.c:576:23:576:24 | ip | 0 | -| test.c:576:43:576:44 | ip | 0 | -| test.c:576:49:576:50 | ip | 0 | -| test.c:577:20:577:21 | ip | 0 | -| test.c:578:20:578:21 | ip | 0 | -| test.c:579:20:579:21 | ip | 0 | -| test.c:580:21:580:22 | ip | 0 | -| test.c:581:26:581:27 | ip | 0 | -| test.c:581:37:581:38 | ip | 0 | -| test.c:581:52:581:53 | ip | 0 | -| test.c:581:63:581:64 | ip | 0 | +| test.c:567:32:567:33 | ip | 0 | +| test.c:568:22:568:23 | ip | 0 | +| test.c:569:22:569:23 | ip | 0 | +| test.c:570:22:570:23 | ip | 0 | +| test.c:571:23:571:24 | ip | 0 | +| test.c:572:28:572:29 | ip | 0 | +| test.c:572:39:572:40 | ip | 0 | +| test.c:572:54:572:55 | ip | 0 | +| test.c:572:65:572:66 | ip | 0 | +| test.c:573:26:573:27 | ip | 0 | +| test.c:574:31:574:32 | ip | 0 | +| test.c:574:42:574:43 | ip | 0 | +| test.c:575:33:575:34 | ip | 0 | +| test.c:576:28:576:29 | ip | 0 | +| test.c:577:21:577:22 | ip | 0 | +| test.c:577:36:577:37 | ip | 0 | +| test.c:578:17:578:18 | ip | 0 | +| test.c:579:18:579:19 | ip | 0 | +| test.c:580:18:580:19 | ip | 0 | +| test.c:581:19:581:20 | ip | 0 | | test.c:582:24:582:25 | ip | 0 | -| test.c:583:29:583:30 | ip | 0 | -| test.c:583:40:583:41 | ip | 0 | -| test.c:584:31:584:32 | ip | 0 | -| test.c:585:26:585:27 | ip | 0 | -| test.c:586:20:586:21 | ip | 0 | -| test.c:586:26:586:27 | ip | 0 | -| test.c:587:22:587:23 | ip | 0 | -| test.c:588:18:588:19 | ip | 0 | -| test.c:589:16:589:17 | ip | 0 | -| test.c:590:17:590:18 | ip | 0 | -| test.c:591:18:591:19 | ip | 0 | -| test.c:592:18:592:19 | ip | 0 | -| test.c:593:19:593:20 | ip | 0 | -| test.c:594:24:594:25 | ip | 0 | -| test.c:594:35:594:36 | ip | 0 | -| test.c:594:50:594:51 | ip | 0 | -| test.c:594:61:594:62 | ip | 0 | -| test.c:595:22:595:23 | ip | 0 | -| test.c:596:27:596:28 | ip | 0 | -| test.c:596:38:596:39 | ip | 0 | -| test.c:597:29:597:30 | ip | 0 | -| test.c:598:24:598:25 | ip | 0 | -| test.c:599:15:599:16 | ip | 0 | -| test.c:599:30:599:31 | ip | 0 | -| test.c:600:20:600:21 | ip | 0 | -| test.c:601:20:601:21 | ip | 0 | -| test.c:602:20:602:21 | ip | 0 | -| test.c:603:21:603:22 | ip | 0 | -| test.c:604:26:604:27 | ip | 0 | -| test.c:604:37:604:38 | ip | 0 | -| test.c:604:52:604:53 | ip | 0 | -| test.c:604:63:604:64 | ip | 0 | +| test.c:582:35:582:36 | ip | 0 | +| test.c:582:50:582:51 | ip | 0 | +| test.c:582:61:582:62 | ip | 0 | +| test.c:583:22:583:23 | ip | 0 | +| test.c:584:27:584:28 | ip | 0 | +| test.c:584:38:584:39 | ip | 0 | +| test.c:585:29:585:30 | ip | 0 | +| test.c:586:24:586:25 | ip | 0 | +| test.c:587:17:587:18 | ip | 0 | +| test.c:587:23:587:24 | ip | 0 | +| test.c:587:43:587:44 | ip | 0 | +| test.c:587:49:587:50 | ip | 0 | +| test.c:588:20:588:21 | ip | 0 | +| test.c:589:20:589:21 | ip | 0 | +| test.c:590:20:590:21 | ip | 0 | +| test.c:591:21:591:22 | ip | 0 | +| test.c:592:26:592:27 | ip | 0 | +| test.c:592:37:592:38 | ip | 0 | +| test.c:592:52:592:53 | ip | 0 | +| test.c:592:63:592:64 | ip | 0 | +| test.c:593:24:593:25 | ip | 0 | +| test.c:594:29:594:30 | ip | 0 | +| test.c:594:40:594:41 | ip | 0 | +| test.c:595:31:595:32 | ip | 0 | +| test.c:596:26:596:27 | ip | 0 | +| test.c:597:20:597:21 | ip | 0 | +| test.c:597:26:597:27 | ip | 0 | +| test.c:598:22:598:23 | ip | 0 | +| test.c:599:18:599:19 | ip | 0 | +| test.c:600:16:600:17 | ip | 0 | +| test.c:601:17:601:18 | ip | 0 | +| test.c:602:18:602:19 | ip | 0 | +| test.c:603:18:603:19 | ip | 0 | +| test.c:604:19:604:20 | ip | 0 | | test.c:605:24:605:25 | ip | 0 | -| test.c:606:29:606:30 | ip | 0 | -| test.c:606:40:606:41 | ip | 0 | -| test.c:607:31:607:32 | ip | 0 | -| test.c:608:26:608:27 | ip | 0 | -| test.c:609:19:609:20 | ip | 0 | -| test.c:609:34:609:35 | ip | 0 | -| test.c:610:16:610:17 | ip | 0 | +| test.c:605:35:605:36 | ip | 0 | +| test.c:605:50:605:51 | ip | 0 | +| test.c:605:61:605:62 | ip | 0 | +| test.c:606:22:606:23 | ip | 0 | +| test.c:607:27:607:28 | ip | 0 | +| test.c:607:38:607:39 | ip | 0 | +| test.c:608:29:608:30 | ip | 0 | +| test.c:609:24:609:25 | ip | 0 | +| test.c:610:15:610:16 | ip | 0 | +| test.c:610:30:610:31 | ip | 0 | | test.c:611:20:611:21 | ip | 0 | | test.c:612:20:612:21 | ip | 0 | -| test.c:613:21:613:22 | ip | 0 | -| test.c:614:26:614:27 | ip | 0 | -| test.c:614:37:614:38 | ip | 0 | -| test.c:614:52:614:53 | ip | 0 | -| test.c:614:63:614:64 | ip | 0 | -| test.c:615:24:615:25 | ip | 0 | -| test.c:616:29:616:30 | ip | 0 | -| test.c:616:40:616:41 | ip | 0 | -| test.c:617:31:617:32 | ip | 0 | -| test.c:618:26:618:27 | ip | 0 | -| test.c:619:19:619:20 | ip | 0 | -| test.c:619:25:619:26 | ip | 0 | -| test.c:619:45:619:46 | ip | 0 | -| test.c:619:51:619:52 | ip | 0 | -| test.c:620:18:620:19 | ip | 0 | -| test.c:621:18:621:19 | ip | 0 | -| test.c:622:18:622:19 | ip | 0 | -| test.c:623:19:623:20 | ip | 0 | -| test.c:624:24:624:25 | ip | 0 | -| test.c:624:35:624:36 | ip | 0 | -| test.c:624:50:624:51 | ip | 0 | -| test.c:624:61:624:62 | ip | 0 | -| test.c:625:22:625:23 | ip | 0 | -| test.c:626:27:626:28 | ip | 0 | -| test.c:626:38:626:39 | ip | 0 | +| test.c:613:20:613:21 | ip | 0 | +| test.c:614:21:614:22 | ip | 0 | +| test.c:615:26:615:27 | ip | 0 | +| test.c:615:37:615:38 | ip | 0 | +| test.c:615:52:615:53 | ip | 0 | +| test.c:615:63:615:64 | ip | 0 | +| test.c:616:24:616:25 | ip | 0 | +| test.c:617:29:617:30 | ip | 0 | +| test.c:617:40:617:41 | ip | 0 | +| test.c:618:31:618:32 | ip | 0 | +| test.c:619:26:619:27 | ip | 0 | +| test.c:620:19:620:20 | ip | 0 | +| test.c:620:34:620:35 | ip | 0 | +| test.c:621:16:621:17 | ip | 0 | +| test.c:622:20:622:21 | ip | 0 | +| test.c:623:20:623:21 | ip | 0 | +| test.c:624:21:624:22 | ip | 0 | +| test.c:625:26:625:27 | ip | 0 | +| test.c:625:37:625:38 | ip | 0 | +| test.c:625:52:625:53 | ip | 0 | +| test.c:625:63:625:64 | ip | 0 | +| test.c:626:24:626:25 | ip | 0 | | test.c:627:29:627:30 | ip | 0 | -| test.c:628:24:628:25 | ip | 0 | -| test.c:629:18:629:19 | ip | 0 | -| test.c:629:24:629:25 | ip | 0 | -| test.c:630:20:630:21 | ip | 0 | -| test.c:631:16:631:17 | ip | 0 | -| test.c:632:10:632:23 | special_number | 0 | -| test.c:640:7:640:8 | c1 | -2147483648 | -| test.c:640:13:640:13 | x | 0 | -| test.c:641:7:641:8 | c2 | -2147483648 | -| test.c:641:13:641:13 | x | 0 | -| test.c:642:7:642:8 | c3 | -2147483648 | -| test.c:642:13:642:13 | x | 0 | -| test.c:643:7:643:8 | c4 | -2147483648 | -| test.c:643:13:643:13 | x | 0 | -| test.c:644:7:644:8 | c5 | -2147483648 | -| test.c:644:13:644:13 | x | 0 | -| test.c:645:7:645:8 | c1 | -2147483648 | -| test.c:645:13:645:14 | c2 | -2147483648 | -| test.c:645:19:645:19 | x | 0 | -| test.c:646:7:646:8 | c1 | -2147483648 | -| test.c:646:13:646:14 | c3 | -2147483648 | -| test.c:646:19:646:19 | x | 0 | -| test.c:647:7:647:8 | c1 | -2147483648 | -| test.c:647:13:647:14 | c4 | -2147483648 | -| test.c:647:19:647:19 | x | 0 | -| test.c:648:7:648:8 | c1 | -2147483648 | -| test.c:648:13:648:14 | c5 | -2147483648 | -| test.c:648:19:648:19 | x | 0 | -| test.c:649:7:649:8 | c2 | -2147483648 | -| test.c:649:13:649:14 | c3 | -2147483648 | -| test.c:649:19:649:19 | x | 0 | -| test.c:651:11:651:11 | x | 0 | -| test.c:651:15:651:15 | x | 0 | -| test.c:651:19:651:19 | x | 0 | -| test.c:651:23:651:23 | x | 0 | -| test.c:651:27:651:27 | x | 0 | -| test.c:651:31:651:31 | x | 0 | -| test.c:651:35:651:35 | x | 0 | -| test.c:651:39:651:39 | x | 0 | -| test.c:651:43:651:43 | x | 0 | -| test.c:651:47:651:47 | x | 0 | -| test.c:651:51:651:51 | x | 0 | -| test.c:651:55:651:55 | x | 0 | -| test.c:652:10:652:10 | y | -2147483648 | -| test.c:657:20:657:20 | x | 0 | -| test.c:657:30:657:30 | x | 0 | -| test.c:660:3:660:4 | y1 | 0 | -| test.c:660:11:660:11 | y | 0 | -| test.c:660:14:660:14 | y | 1 | -| test.c:661:3:661:4 | y2 | 0 | -| test.c:661:9:661:9 | y | 1 | -| test.c:661:14:661:14 | y | 2 | -| test.c:661:22:661:22 | y | 5 | -| test.c:662:10:662:11 | y1 | 1 | -| test.c:662:15:662:16 | y2 | 5 | -| test.c:670:3:670:3 | i | -2147483648 | -| test.c:671:7:671:7 | i | 10 | -| test.c:673:3:673:3 | i | -2147483648 | -| test.c:674:3:674:3 | i | 10 | -| test.c:675:7:675:7 | i | 20 | -| test.c:677:3:677:3 | i | -2147483648 | -| test.c:678:3:678:3 | i | 40 | -| test.c:679:7:679:7 | i | 30 | +| test.c:627:40:627:41 | ip | 0 | +| test.c:628:31:628:32 | ip | 0 | +| test.c:629:26:629:27 | ip | 0 | +| test.c:630:19:630:20 | ip | 0 | +| test.c:630:25:630:26 | ip | 0 | +| test.c:630:45:630:46 | ip | 0 | +| test.c:630:51:630:52 | ip | 0 | +| test.c:631:18:631:19 | ip | 0 | +| test.c:632:18:632:19 | ip | 0 | +| test.c:633:18:633:19 | ip | 0 | +| test.c:634:19:634:20 | ip | 0 | +| test.c:635:24:635:25 | ip | 0 | +| test.c:635:35:635:36 | ip | 0 | +| test.c:635:50:635:51 | ip | 0 | +| test.c:635:61:635:62 | ip | 0 | +| test.c:636:22:636:23 | ip | 0 | +| test.c:637:27:637:28 | ip | 0 | +| test.c:637:38:637:39 | ip | 0 | +| test.c:638:29:638:30 | ip | 0 | +| test.c:639:24:639:25 | ip | 0 | +| test.c:640:18:640:19 | ip | 0 | +| test.c:640:24:640:25 | ip | 0 | +| test.c:641:20:641:21 | ip | 0 | +| test.c:642:16:642:17 | ip | 0 | +| test.c:643:10:643:23 | special_number | 0 | +| test.c:651:7:651:8 | c1 | -2147483648 | +| test.c:651:13:651:13 | x | 0 | +| test.c:652:7:652:8 | c2 | -2147483648 | +| test.c:652:13:652:13 | x | 0 | +| test.c:653:7:653:8 | c3 | -2147483648 | +| test.c:653:13:653:13 | x | 0 | +| test.c:654:7:654:8 | c4 | -2147483648 | +| test.c:654:13:654:13 | x | 0 | +| test.c:655:7:655:8 | c5 | -2147483648 | +| test.c:655:13:655:13 | x | 0 | +| test.c:656:7:656:8 | c1 | -2147483648 | +| test.c:656:13:656:14 | c2 | -2147483648 | +| test.c:656:19:656:19 | x | 0 | +| test.c:657:7:657:8 | c1 | -2147483648 | +| test.c:657:13:657:14 | c3 | -2147483648 | +| test.c:657:19:657:19 | x | 0 | +| test.c:658:7:658:8 | c1 | -2147483648 | +| test.c:658:13:658:14 | c4 | -2147483648 | +| test.c:658:19:658:19 | x | 0 | +| test.c:659:7:659:8 | c1 | -2147483648 | +| test.c:659:13:659:14 | c5 | -2147483648 | +| test.c:659:19:659:19 | x | 0 | +| test.c:660:7:660:8 | c2 | -2147483648 | +| test.c:660:13:660:14 | c3 | -2147483648 | +| test.c:660:19:660:19 | x | 0 | +| test.c:662:11:662:11 | x | 0 | +| test.c:662:15:662:15 | x | 0 | +| test.c:662:19:662:19 | x | 0 | +| test.c:662:23:662:23 | x | 0 | +| test.c:662:27:662:27 | x | 0 | +| test.c:662:31:662:31 | x | 0 | +| test.c:662:35:662:35 | x | 0 | +| test.c:662:39:662:39 | x | 0 | +| test.c:662:43:662:43 | x | 0 | +| test.c:662:47:662:47 | x | 0 | +| test.c:662:51:662:51 | x | 0 | +| test.c:662:55:662:55 | x | 0 | +| test.c:663:10:663:10 | y | -2147483648 | +| test.c:668:20:668:20 | x | 0 | +| test.c:668:30:668:30 | x | 0 | +| test.c:671:3:671:4 | y1 | 0 | +| test.c:671:11:671:11 | y | 0 | +| test.c:671:14:671:14 | y | 1 | +| test.c:672:3:672:4 | y2 | 0 | +| test.c:672:9:672:9 | y | 1 | +| test.c:672:14:672:14 | y | 2 | +| test.c:672:22:672:22 | y | 5 | +| test.c:673:10:673:11 | y1 | 1 | +| test.c:673:15:673:16 | y2 | 5 | | test.c:681:3:681:3 | i | -2147483648 | -| test.c:681:7:681:7 | j | -2147483648 | -| test.c:682:7:682:7 | i | 40 | +| test.c:682:7:682:7 | i | 10 | | test.c:684:3:684:3 | i | -2147483648 | -| test.c:684:8:684:8 | j | 40 | -| test.c:685:7:685:7 | i | 50 | -| test.c:687:3:687:3 | i | -2147483648 | -| test.c:687:13:687:13 | j | 50 | -| test.c:688:7:688:7 | i | 60 | -| test.c:695:12:695:12 | a | 0 | -| test.c:695:17:695:17 | a | 3 | -| test.c:695:33:695:33 | b | 0 | -| test.c:695:38:695:38 | b | 5 | -| test.c:696:13:696:13 | a | 3 | -| test.c:696:15:696:15 | b | 5 | -| test.c:697:5:697:9 | total | 0 | -| test.c:697:14:697:14 | r | 15 | -| test.c:699:12:699:12 | a | 0 | -| test.c:699:17:699:17 | a | 3 | -| test.c:699:33:699:33 | b | 0 | -| test.c:699:38:699:38 | b | 0 | -| test.c:700:13:700:13 | a | 3 | -| test.c:700:15:700:15 | b | 0 | -| test.c:701:5:701:9 | total | 0 | -| test.c:701:14:701:14 | r | 0 | -| test.c:703:12:703:12 | a | 0 | -| test.c:703:17:703:17 | a | 3 | -| test.c:703:34:703:34 | b | 0 | -| test.c:703:39:703:39 | b | 13 | -| test.c:704:13:704:13 | a | 3 | -| test.c:704:15:704:15 | b | 13 | -| test.c:705:5:705:9 | total | 0 | -| test.c:705:14:705:14 | r | 39 | -| test.c:708:10:708:14 | total | 0 | -| test.c:714:12:714:12 | b | 0 | -| test.c:714:17:714:17 | b | 5 | -| test.c:715:16:715:16 | b | 5 | +| test.c:685:3:685:3 | i | 10 | +| test.c:686:7:686:7 | i | 20 | +| test.c:688:3:688:3 | i | -2147483648 | +| test.c:689:3:689:3 | i | 40 | +| test.c:690:7:690:7 | i | 30 | +| test.c:692:3:692:3 | i | -2147483648 | +| test.c:692:7:692:7 | j | -2147483648 | +| test.c:693:7:693:7 | i | 40 | +| test.c:695:3:695:3 | i | -2147483648 | +| test.c:695:8:695:8 | j | 40 | +| test.c:696:7:696:7 | i | 50 | +| test.c:698:3:698:3 | i | -2147483648 | +| test.c:698:13:698:13 | j | 50 | +| test.c:699:7:699:7 | i | 60 | +| test.c:706:12:706:12 | a | 0 | +| test.c:706:17:706:17 | a | 3 | +| test.c:706:33:706:33 | b | 0 | +| test.c:706:38:706:38 | b | 5 | +| test.c:707:13:707:13 | a | 3 | +| test.c:707:15:707:15 | b | 5 | +| test.c:708:5:708:9 | total | 0 | +| test.c:708:14:708:14 | r | 15 | +| test.c:710:12:710:12 | a | 0 | +| test.c:710:17:710:17 | a | 3 | +| test.c:710:33:710:33 | b | 0 | +| test.c:710:38:710:38 | b | 0 | +| test.c:711:13:711:13 | a | 3 | +| test.c:711:15:711:15 | b | 0 | +| test.c:712:5:712:9 | total | 0 | +| test.c:712:14:712:14 | r | 0 | +| test.c:714:12:714:12 | a | 0 | +| test.c:714:17:714:17 | a | 3 | +| test.c:714:34:714:34 | b | 0 | +| test.c:714:39:714:39 | b | 13 | +| test.c:715:13:715:13 | a | 3 | +| test.c:715:15:715:15 | b | 13 | | test.c:716:5:716:9 | total | 0 | -| test.c:716:14:716:14 | r | 55 | -| test.c:718:12:718:12 | b | 0 | -| test.c:718:17:718:17 | b | 0 | -| test.c:719:16:719:16 | b | 0 | -| test.c:720:5:720:9 | total | 0 | -| test.c:720:14:720:14 | r | 0 | -| test.c:722:13:722:13 | b | 0 | -| test.c:722:18:722:18 | b | 13 | -| test.c:723:16:723:16 | b | 13 | -| test.c:724:5:724:9 | total | 0 | -| test.c:724:14:724:14 | r | 143 | -| test.c:727:10:727:14 | total | 0 | -| test.c:732:3:732:3 | x | 0 | -| test.c:732:7:732:7 | y | 0 | -| test.c:733:3:733:4 | xy | 0 | -| test.c:733:8:733:8 | x | 1000000003 | -| test.c:733:12:733:12 | y | 1000000003 | -| test.c:734:10:734:11 | xy | 1000000006000000000 | -| test.c:739:3:739:3 | x | 0 | -| test.c:740:3:740:3 | y | 0 | -| test.c:741:3:741:4 | xy | 0 | -| test.c:741:8:741:8 | x | 274177 | -| test.c:741:12:741:12 | y | 67280421310721 | -| test.c:742:10:742:11 | xy | 18446744073709551616 | -| test.c:746:7:746:8 | ui | 0 | -| test.c:747:43:747:44 | ui | 10 | -| test.c:747:48:747:49 | ui | 10 | -| test.c:748:12:748:17 | result | 100 | -| test.c:750:7:750:8 | ul | 0 | -| test.c:751:28:751:29 | ul | 10 | -| test.c:751:33:751:34 | ul | 10 | -| test.c:752:12:752:17 | result | 0 | -| test.c:758:7:758:8 | ui | 0 | -| test.c:758:19:758:20 | ui | 0 | -| test.c:759:5:759:6 | ui | 2 | -| test.c:759:11:759:12 | ui | 2 | -| test.c:760:12:760:13 | ui | 4 | -| test.c:764:3:764:9 | uiconst | 10 | -| test.c:767:3:767:9 | ulconst | 10 | -| test.c:768:10:768:16 | uiconst | 40 | -| test.c:768:20:768:26 | ulconst | 40 | -| test.c:772:7:772:7 | i | -2147483648 | -| test.c:772:18:772:18 | i | -1 | -| test.c:773:5:773:5 | i | -2147483648 | -| test.c:773:13:773:13 | i | -1 | -| test.c:774:9:774:9 | i | -5 | -| test.c:776:5:776:5 | i | -2147483648 | -| test.c:776:9:776:9 | i | -5 | -| test.c:777:9:777:9 | i | -30 | -| test.c:779:5:779:5 | i | -30 | -| test.c:780:9:780:9 | i | -210 | -| test.c:782:5:782:5 | i | -210 | -| test.c:783:9:783:9 | i | -1155 | -| test.c:785:7:785:7 | i | -2147483648 | -| test.c:786:5:786:5 | i | -2147483648 | -| test.c:786:9:786:9 | i | -1 | -| test.c:787:9:787:9 | i | 1 | -| test.c:789:3:789:3 | i | -2147483648 | -| test.c:789:7:789:7 | i | -2147483648 | -| test.c:790:10:790:10 | i | -2147483648 | -| test.c:793:3:793:3 | i | -2147483648 | -| test.c:793:10:793:11 | sc | 1 | -| test.c:795:7:795:7 | i | -128 | -| test.c:802:7:802:7 | n | 0 | -| test.c:804:7:804:7 | n | 0 | -| test.c:805:9:805:9 | n | 1 | -| test.c:808:7:808:7 | n | 0 | -| test.c:809:9:809:9 | n | 1 | -| test.c:811:9:811:9 | n | 0 | -| test.c:814:8:814:8 | n | 0 | -| test.c:815:9:815:9 | n | 0 | -| test.c:817:9:817:9 | n | 1 | -| test.c:820:10:820:10 | n | 0 | -| test.c:821:5:821:5 | n | 1 | -| test.c:824:7:824:7 | n | 0 | -| test.c:828:7:828:7 | n | -32768 | -| test.c:831:7:831:7 | n | 0 | -| test.c:832:9:832:9 | n | 0 | -| test.c:834:9:834:9 | n | 1 | -| test.c:837:7:837:7 | n | 0 | -| test.c:838:9:838:9 | n | 1 | -| test.c:840:9:840:9 | n | 0 | -| test.c:843:10:843:10 | n | 0 | -| test.c:844:5:844:5 | n | 1 | -| test.c:847:7:847:7 | n | 0 | -| test.c:851:7:851:7 | n | -32768 | -| test.c:852:9:852:9 | n | -32768 | -| test.c:853:11:853:11 | n | 0 | -| test.c:857:7:857:7 | n | -32768 | -| test.c:858:13:858:13 | n | 5 | -| test.c:861:9:861:9 | n | 6 | -| test.c:864:7:864:7 | n | -32768 | -| test.c:864:22:864:22 | n | -32767 | -| test.c:865:9:865:9 | n | -32766 | +| test.c:716:14:716:14 | r | 39 | +| test.c:719:10:719:14 | total | 0 | +| test.c:725:12:725:12 | b | 0 | +| test.c:725:17:725:17 | b | 5 | +| test.c:726:16:726:16 | b | 5 | +| test.c:727:5:727:9 | total | 0 | +| test.c:727:14:727:14 | r | 55 | +| test.c:729:12:729:12 | b | 0 | +| test.c:729:17:729:17 | b | 0 | +| test.c:730:16:730:16 | b | 0 | +| test.c:731:5:731:9 | total | 0 | +| test.c:731:14:731:14 | r | 0 | +| test.c:733:13:733:13 | b | 0 | +| test.c:733:18:733:18 | b | 13 | +| test.c:734:16:734:16 | b | 13 | +| test.c:735:5:735:9 | total | 0 | +| test.c:735:14:735:14 | r | 143 | +| test.c:738:10:738:14 | total | 0 | +| test.c:743:3:743:3 | x | 0 | +| test.c:743:7:743:7 | y | 0 | +| test.c:744:3:744:4 | xy | 0 | +| test.c:744:8:744:8 | x | 1000000003 | +| test.c:744:12:744:12 | y | 1000000003 | +| test.c:745:10:745:11 | xy | 1000000006000000000 | +| test.c:750:3:750:3 | x | 0 | +| test.c:751:3:751:3 | y | 0 | +| test.c:752:3:752:4 | xy | 0 | +| test.c:752:8:752:8 | x | 274177 | +| test.c:752:12:752:12 | y | 67280421310721 | +| test.c:753:10:753:11 | xy | 18446744073709551616 | +| test.c:757:7:757:8 | ui | 0 | +| test.c:758:43:758:44 | ui | 10 | +| test.c:758:48:758:49 | ui | 10 | +| test.c:759:12:759:17 | result | 100 | +| test.c:761:7:761:8 | ul | 0 | +| test.c:762:28:762:29 | ul | 10 | +| test.c:762:33:762:34 | ul | 10 | +| test.c:763:12:763:17 | result | 0 | +| test.c:769:7:769:8 | ui | 0 | +| test.c:769:19:769:20 | ui | 0 | +| test.c:770:5:770:6 | ui | 2 | +| test.c:770:11:770:12 | ui | 2 | +| test.c:771:12:771:13 | ui | 4 | +| test.c:775:3:775:9 | uiconst | 10 | +| test.c:778:3:778:9 | ulconst | 10 | +| test.c:779:10:779:16 | uiconst | 40 | +| test.c:779:20:779:26 | ulconst | 40 | +| test.c:783:7:783:7 | i | -2147483648 | +| test.c:783:18:783:18 | i | -1 | +| test.c:784:5:784:5 | i | -2147483648 | +| test.c:784:13:784:13 | i | -1 | +| test.c:785:9:785:9 | i | -5 | +| test.c:787:5:787:5 | i | -2147483648 | +| test.c:787:9:787:9 | i | -5 | +| test.c:788:9:788:9 | i | -30 | +| test.c:790:5:790:5 | i | -30 | +| test.c:791:9:791:9 | i | -210 | +| test.c:793:5:793:5 | i | -210 | +| test.c:794:9:794:9 | i | -1155 | +| test.c:796:7:796:7 | i | -2147483648 | +| test.c:797:5:797:5 | i | -2147483648 | +| test.c:797:9:797:9 | i | -1 | +| test.c:798:9:798:9 | i | 1 | +| test.c:800:3:800:3 | i | -2147483648 | +| test.c:800:7:800:7 | i | -2147483648 | +| test.c:801:10:801:10 | i | -2147483648 | +| test.c:804:3:804:3 | i | -2147483648 | +| test.c:804:10:804:11 | sc | 1 | +| test.c:806:7:806:7 | i | -128 | +| test.c:813:7:813:7 | n | 0 | +| test.c:815:7:815:7 | n | 0 | +| test.c:816:9:816:9 | n | 1 | +| test.c:819:7:819:7 | n | 0 | +| test.c:820:9:820:9 | n | 1 | +| test.c:822:9:822:9 | n | 0 | +| test.c:825:8:825:8 | n | 0 | +| test.c:826:9:826:9 | n | 0 | +| test.c:828:9:828:9 | n | 1 | +| test.c:831:10:831:10 | n | 0 | +| test.c:832:5:832:5 | n | 1 | +| test.c:835:7:835:7 | n | 0 | +| test.c:839:7:839:7 | n | -32768 | +| test.c:842:7:842:7 | n | 0 | +| test.c:843:9:843:9 | n | 0 | +| test.c:845:9:845:9 | n | 1 | +| test.c:848:7:848:7 | n | 0 | +| test.c:849:9:849:9 | n | 1 | +| test.c:851:9:851:9 | n | 0 | +| test.c:854:10:854:10 | n | 0 | +| test.c:855:5:855:5 | n | 1 | +| test.c:858:7:858:7 | n | 0 | +| test.c:862:7:862:7 | n | -32768 | +| test.c:863:9:863:9 | n | -32768 | +| test.c:864:11:864:11 | n | 0 | | test.c:868:7:868:7 | n | -32768 | -| test.c:869:5:869:5 | n | 0 | -| test.c:869:10:869:10 | n | 1 | -| test.c:869:14:869:14 | n | 0 | -| test.c:870:6:870:6 | n | 0 | -| test.c:870:10:870:10 | n | 0 | -| test.c:870:14:870:14 | n | 1 | -| test.c:881:7:881:8 | ss | -32768 | -| test.c:882:9:882:10 | ss | 0 | -| test.c:885:7:885:8 | ss | -32768 | -| test.c:886:9:886:10 | ss | -32768 | -| test.c:889:14:889:15 | us | 0 | -| test.c:890:9:890:10 | us | 0 | -| test.c:893:14:893:15 | us | 0 | -| test.c:894:9:894:10 | us | 0 | -| test.c:897:7:897:8 | ss | -32768 | -| test.c:898:9:898:10 | ss | -32768 | -| test.c:901:7:901:8 | ss | -32768 | -| test.c:902:9:902:10 | ss | -1 | -| test.c:908:8:908:8 | s | -2147483648 | -| test.c:908:15:908:15 | s | 0 | -| test.c:908:23:908:23 | s | 0 | -| test.c:909:18:909:18 | s | 0 | -| test.c:909:22:909:22 | s | 0 | -| test.c:910:9:910:14 | result | 0 | -| test.c:916:7:916:7 | i | 0 | -| test.c:917:9:917:9 | i | -2147483648 | -| test.c:921:7:921:7 | u | 0 | -| test.c:922:9:922:9 | u | 0 | -| test.c:927:12:927:12 | s | -2147483648 | -| test.c:928:7:928:8 | s2 | -4 | -| test.c:933:7:933:7 | x | -2147483648 | -| test.c:934:9:934:9 | y | -2147483648 | -| test.c:938:7:938:7 | y | -2147483648 | -| test.c:947:7:947:7 | x | -2147483648 | -| test.c:952:7:952:7 | x | -2147483648 | -| test.c:959:8:959:8 | x | 2147483647 | -| test.c:959:12:959:12 | y | 256 | -| test.c:960:9:960:9 | x | 2147483647 | -| test.c:961:9:961:9 | y | 256 | +| test.c:869:13:869:13 | n | 5 | +| test.c:872:9:872:9 | n | 6 | +| test.c:875:7:875:7 | n | -32768 | +| test.c:875:22:875:22 | n | -32767 | +| test.c:876:9:876:9 | n | -32766 | +| test.c:879:7:879:7 | n | -32768 | +| test.c:880:5:880:5 | n | 0 | +| test.c:880:10:880:10 | n | 1 | +| test.c:880:14:880:14 | n | 0 | +| test.c:881:6:881:6 | n | 0 | +| test.c:881:10:881:10 | n | 0 | +| test.c:881:14:881:14 | n | 1 | +| test.c:892:7:892:8 | ss | -32768 | +| test.c:893:9:893:10 | ss | 0 | +| test.c:896:7:896:8 | ss | -32768 | +| test.c:897:9:897:10 | ss | -32768 | +| test.c:900:14:900:15 | us | 0 | +| test.c:901:9:901:10 | us | 0 | +| test.c:904:14:904:15 | us | 0 | +| test.c:905:9:905:10 | us | 0 | +| test.c:908:7:908:8 | ss | -32768 | +| test.c:909:9:909:10 | ss | -32768 | +| test.c:912:7:912:8 | ss | -32768 | +| test.c:913:9:913:10 | ss | -1 | +| test.c:919:8:919:8 | s | -2147483648 | +| test.c:919:15:919:15 | s | 0 | +| test.c:919:23:919:23 | s | 0 | +| test.c:920:18:920:18 | s | 0 | +| test.c:920:22:920:22 | s | 0 | +| test.c:921:9:921:14 | result | 0 | +| test.c:927:7:927:7 | i | 0 | +| test.c:928:9:928:9 | i | -2147483648 | +| test.c:932:7:932:7 | u | 0 | +| test.c:933:9:933:9 | u | 0 | +| test.c:938:12:938:12 | s | -2147483648 | +| test.c:939:7:939:8 | s2 | -4 | +| test.c:944:7:944:7 | x | -2147483648 | +| test.c:945:9:945:9 | y | -2147483648 | +| test.c:949:7:949:7 | y | -2147483648 | +| test.c:958:7:958:7 | x | -2147483648 | +| test.c:963:7:963:7 | x | -2147483648 | +| test.c:970:8:970:8 | x | 2147483647 | +| test.c:970:12:970:12 | y | 256 | +| test.c:971:9:971:9 | x | 2147483647 | +| test.c:972:9:972:9 | y | 256 | | test.cpp:10:7:10:7 | b | -2147483648 | | test.cpp:11:5:11:5 | x | -2147483648 | | test.cpp:13:10:13:10 | x | -2147483648 | diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected index 21d139a51a5..7d583e47f5b 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected @@ -976,3490 +976,3576 @@ estimateNrOfBounds | test.c:341:32:341:39 | ... >> ... | 1.0 | | test.c:341:39:341:39 | 1 | 1.0 | | test.c:343:10:343:16 | shifted | 1.0 | -| test.c:347:13:347:14 | 0 | 1.0 | -| test.c:348:7:348:7 | x | 1.0 | -| test.c:348:7:348:11 | ... < ... | 1.0 | -| test.c:348:11:348:11 | 0 | 1.0 | -| test.c:349:12:349:13 | - ... | 1.0 | -| test.c:349:13:349:13 | 1 | 1.0 | -| test.c:352:10:352:10 | i | 13.0 | -| test.c:352:10:352:14 | ... < ... | 1.0 | -| test.c:352:14:352:14 | 3 | 1.0 | -| test.c:353:5:353:5 | i | 13.0 | -| test.c:353:5:353:7 | ... ++ | 13.0 | -| test.c:355:3:355:3 | d | 1.0 | -| test.c:355:3:355:7 | ... = ... | 13.0 | -| test.c:355:7:355:7 | i | 13.0 | -| test.c:356:7:356:7 | x | 1.0 | -| test.c:356:7:356:11 | ... < ... | 1.0 | -| test.c:356:11:356:11 | 0 | 1.0 | -| test.c:357:9:357:9 | d | 13.0 | -| test.c:357:9:357:14 | ... > ... | 1.0 | -| test.c:357:13:357:14 | - ... | 1.0 | -| test.c:357:14:357:14 | x | 1.0 | -| test.c:358:14:358:14 | 1 | 1.0 | -| test.c:361:10:361:10 | 0 | 1.0 | -| test.c:367:3:367:4 | y1 | 1.0 | -| test.c:367:3:367:23 | ... = ... | 1.0 | -| test.c:367:8:367:8 | x | 1.0 | -| test.c:367:8:367:14 | ... < ... | 1.0 | -| test.c:367:8:367:23 | ... ? ... : ... | 1.0 | -| test.c:367:12:367:14 | 100 | 1.0 | -| test.c:367:12:367:14 | (unsigned int)... | 1.0 | -| test.c:367:18:367:18 | x | 1.0 | -| test.c:367:22:367:23 | 10 | 1.0 | -| test.c:367:22:367:23 | (unsigned int)... | 1.0 | -| test.c:368:3:368:4 | y2 | 1.0 | -| test.c:368:3:368:24 | ... = ... | 2.0 | -| test.c:368:8:368:8 | x | 2.0 | -| test.c:368:8:368:15 | ... >= ... | 1.0 | -| test.c:368:8:368:24 | ... ? ... : ... | 2.0 | -| test.c:368:13:368:15 | 100 | 1.0 | -| test.c:368:13:368:15 | (unsigned int)... | 1.0 | -| test.c:368:19:368:20 | 10 | 1.0 | -| test.c:368:19:368:20 | (unsigned int)... | 1.0 | -| test.c:368:24:368:24 | x | 2.0 | -| test.c:369:3:369:4 | y3 | 1.0 | -| test.c:369:3:369:8 | ... = ... | 1.0 | -| test.c:369:8:369:8 | 0 | 1.0 | -| test.c:369:8:369:8 | (unsigned int)... | 1.0 | -| test.c:370:3:370:4 | y4 | 1.0 | -| test.c:370:3:370:8 | ... = ... | 1.0 | -| test.c:370:8:370:8 | 0 | 1.0 | -| test.c:370:8:370:8 | (unsigned int)... | 1.0 | -| test.c:371:3:371:4 | y5 | 1.0 | -| test.c:371:3:371:8 | ... = ... | 1.0 | -| test.c:371:8:371:8 | 0 | 1.0 | -| test.c:371:8:371:8 | (unsigned int)... | 1.0 | -| test.c:372:3:372:4 | y6 | 1.0 | -| test.c:372:3:372:8 | ... = ... | 1.0 | -| test.c:372:8:372:8 | 0 | 1.0 | -| test.c:372:8:372:8 | (unsigned int)... | 1.0 | -| test.c:373:3:373:4 | y7 | 1.0 | -| test.c:373:3:373:8 | ... = ... | 1.0 | -| test.c:373:8:373:8 | 0 | 1.0 | -| test.c:373:8:373:8 | (unsigned int)... | 1.0 | -| test.c:374:3:374:4 | y8 | 1.0 | -| test.c:374:3:374:8 | ... = ... | 1.0 | -| test.c:374:8:374:8 | 0 | 1.0 | -| test.c:374:8:374:8 | (unsigned int)... | 1.0 | -| test.c:375:7:375:7 | x | 4.0 | -| test.c:375:7:375:13 | ... < ... | 1.0 | -| test.c:375:11:375:13 | 300 | 1.0 | -| test.c:375:11:375:13 | (unsigned int)... | 1.0 | -| test.c:376:5:376:6 | y3 | 1.0 | -| test.c:376:5:376:15 | ... = ... | 4.0 | -| test.c:376:10:376:10 | x | 4.0 | -| test.c:376:10:376:15 | ... ? ... : ... | 4.0 | -| test.c:376:15:376:15 | 5 | 1.0 | -| test.c:376:15:376:15 | (unsigned int)... | 1.0 | -| test.c:377:5:377:6 | y4 | 1.0 | -| test.c:377:5:377:17 | ... = ... | 4.0 | -| test.c:377:10:377:10 | x | 4.0 | -| test.c:377:10:377:17 | ... ? ... : ... | 4.0 | -| test.c:377:15:377:17 | 500 | 1.0 | -| test.c:377:15:377:17 | (unsigned int)... | 1.0 | -| test.c:378:5:378:6 | y5 | 1.0 | -| test.c:378:5:378:21 | ... = ... | 4.0 | -| test.c:378:10:378:14 | (...) | 4.0 | -| test.c:378:10:378:21 | ... ? ... : ... | 4.0 | -| test.c:378:11:378:11 | x | 4.0 | -| test.c:378:11:378:13 | ... + ... | 4.0 | -| test.c:378:13:378:13 | 1 | 1.0 | -| test.c:378:13:378:13 | (unsigned int)... | 1.0 | -| test.c:378:19:378:21 | 500 | 1.0 | -| test.c:378:19:378:21 | (unsigned int)... | 1.0 | -| test.c:379:5:379:6 | y6 | 1.0 | -| test.c:379:5:379:36 | ... = ... | 4.0 | -| test.c:379:10:379:31 | (...) | 4.0 | -| test.c:379:10:379:36 | (unsigned int)... | 4.0 | -| test.c:379:10:379:36 | ... ? ... : ... | 4.0 | -| test.c:379:11:379:30 | (unsigned char)... | 4.0 | -| test.c:379:26:379:30 | (...) | 4.0 | -| test.c:379:27:379:27 | x | 4.0 | -| test.c:379:27:379:29 | ... + ... | 4.0 | -| test.c:379:29:379:29 | 1 | 1.0 | -| test.c:379:29:379:29 | (unsigned int)... | 1.0 | -| test.c:379:36:379:36 | 5 | 1.0 | -| test.c:380:5:380:6 | y7 | 1.0 | -| test.c:380:5:380:38 | ... = ... | 4.0 | -| test.c:380:10:380:31 | (...) | 4.0 | -| test.c:380:10:380:38 | (unsigned int)... | 4.0 | -| test.c:380:10:380:38 | ... ? ... : ... | 4.0 | -| test.c:380:11:380:30 | (unsigned char)... | 4.0 | -| test.c:380:26:380:30 | (...) | 4.0 | -| test.c:380:27:380:27 | x | 4.0 | -| test.c:380:27:380:29 | ... + ... | 4.0 | -| test.c:380:29:380:29 | 1 | 1.0 | -| test.c:380:29:380:29 | (unsigned int)... | 1.0 | -| test.c:380:36:380:38 | 500 | 1.0 | -| test.c:381:5:381:6 | y8 | 1.0 | -| test.c:381:5:381:39 | ... = ... | 4.0 | -| test.c:381:10:381:32 | (...) | 4.0 | -| test.c:381:10:381:39 | (unsigned int)... | 4.0 | -| test.c:381:10:381:39 | ... ? ... : ... | 4.0 | -| test.c:381:11:381:31 | (unsigned short)... | 4.0 | -| test.c:381:27:381:31 | (...) | 4.0 | -| test.c:381:28:381:28 | x | 4.0 | -| test.c:381:28:381:30 | ... + ... | 4.0 | -| test.c:381:30:381:30 | 1 | 1.0 | -| test.c:381:30:381:30 | (unsigned int)... | 1.0 | -| test.c:381:37:381:39 | 500 | 1.0 | -| test.c:383:10:383:11 | y1 | 1.0 | -| test.c:383:10:383:16 | ... + ... | 2.0 | -| test.c:383:10:383:21 | ... + ... | 10.0 | -| test.c:383:10:383:26 | ... + ... | 50.0 | -| test.c:383:10:383:31 | ... + ... | 250.0 | -| test.c:383:10:383:36 | ... + ... | 1250.0 | -| test.c:383:10:383:41 | ... + ... | 6250.0 | -| test.c:383:10:383:46 | ... + ... | 31250.0 | -| test.c:383:15:383:16 | y2 | 2.0 | -| test.c:383:20:383:21 | y3 | 5.0 | -| test.c:383:25:383:26 | y4 | 5.0 | -| test.c:383:30:383:31 | y5 | 5.0 | -| test.c:383:35:383:36 | y6 | 5.0 | -| test.c:383:40:383:41 | y7 | 5.0 | -| test.c:383:45:383:46 | y8 | 5.0 | -| test.c:389:3:389:4 | y1 | 1.0 | -| test.c:389:3:389:24 | ... = ... | 1.0 | -| test.c:389:8:389:8 | x | 1.0 | -| test.c:389:8:389:14 | ... > ... | 1.0 | -| test.c:389:8:389:24 | ... ? ... : ... | 1.0 | -| test.c:389:12:389:14 | 100 | 1.0 | -| test.c:389:12:389:14 | (unsigned int)... | 1.0 | -| test.c:389:18:389:18 | x | 1.0 | -| test.c:389:22:389:24 | 110 | 1.0 | -| test.c:389:22:389:24 | (unsigned int)... | 1.0 | -| test.c:390:3:390:4 | y2 | 1.0 | -| test.c:390:3:390:25 | ... = ... | 2.0 | -| test.c:390:8:390:8 | x | 2.0 | -| test.c:390:8:390:15 | ... <= ... | 1.0 | -| test.c:390:8:390:25 | ... ? ... : ... | 2.0 | -| test.c:390:13:390:15 | 100 | 1.0 | -| test.c:390:13:390:15 | (unsigned int)... | 1.0 | -| test.c:390:19:390:21 | 110 | 1.0 | -| test.c:390:19:390:21 | (unsigned int)... | 1.0 | -| test.c:390:25:390:25 | x | 2.0 | -| test.c:391:3:391:4 | y3 | 1.0 | -| test.c:391:3:391:11 | ... = ... | 1.0 | -| test.c:391:8:391:11 | 1000 | 1.0 | -| test.c:391:8:391:11 | (unsigned int)... | 1.0 | -| test.c:392:3:392:4 | y4 | 1.0 | -| test.c:392:3:392:11 | ... = ... | 1.0 | -| test.c:392:8:392:11 | 1000 | 1.0 | -| test.c:392:8:392:11 | (unsigned int)... | 1.0 | -| test.c:393:3:393:4 | y5 | 1.0 | -| test.c:393:3:393:11 | ... = ... | 1.0 | -| test.c:393:8:393:11 | 1000 | 1.0 | -| test.c:393:8:393:11 | (unsigned int)... | 1.0 | -| test.c:394:7:394:7 | x | 4.0 | -| test.c:394:7:394:14 | ... >= ... | 1.0 | -| test.c:394:12:394:14 | 300 | 1.0 | -| test.c:394:12:394:14 | (unsigned int)... | 1.0 | -| test.c:395:5:395:6 | y3 | 1.0 | -| test.c:395:5:395:21 | ... = ... | 4.0 | -| test.c:395:10:395:16 | (...) | 4.0 | -| test.c:395:10:395:21 | ... ? ... : ... | 4.0 | -| test.c:395:11:395:11 | x | 4.0 | -| test.c:395:11:395:15 | ... - ... | 4.0 | -| test.c:395:13:395:15 | 300 | 1.0 | -| test.c:395:13:395:15 | (unsigned int)... | 1.0 | -| test.c:395:21:395:21 | 5 | 1.0 | -| test.c:395:21:395:21 | (unsigned int)... | 1.0 | -| test.c:396:5:396:6 | y4 | 1.0 | -| test.c:396:5:396:21 | ... = ... | 4.0 | -| test.c:396:10:396:16 | (...) | 4.0 | -| test.c:396:10:396:21 | ... ? ... : ... | 4.0 | -| test.c:396:11:396:11 | x | 4.0 | -| test.c:396:11:396:15 | ... - ... | 4.0 | -| test.c:396:13:396:15 | 200 | 1.0 | -| test.c:396:13:396:15 | (unsigned int)... | 1.0 | -| test.c:396:21:396:21 | 5 | 1.0 | -| test.c:396:21:396:21 | (unsigned int)... | 1.0 | -| test.c:397:5:397:6 | y5 | 1.0 | -| test.c:397:5:397:38 | ... = ... | 4.0 | -| test.c:397:10:397:33 | (...) | 4.0 | -| test.c:397:10:397:38 | (unsigned int)... | 4.0 | -| test.c:397:10:397:38 | ... ? ... : ... | 4.0 | -| test.c:397:11:397:32 | (unsigned char)... | 4.0 | -| test.c:397:26:397:32 | (...) | 4.0 | -| test.c:397:27:397:27 | x | 4.0 | -| test.c:397:27:397:31 | ... - ... | 4.0 | -| test.c:397:29:397:31 | 200 | 1.0 | -| test.c:397:29:397:31 | (unsigned int)... | 1.0 | -| test.c:397:38:397:38 | 5 | 1.0 | -| test.c:399:10:399:11 | y1 | 1.0 | -| test.c:399:10:399:16 | ... + ... | 2.0 | -| test.c:399:10:399:21 | ... + ... | 10.0 | -| test.c:399:10:399:26 | ... + ... | 50.0 | -| test.c:399:10:399:31 | ... + ... | 250.0 | -| test.c:399:15:399:16 | y2 | 2.0 | -| test.c:399:20:399:21 | y3 | 5.0 | -| test.c:399:25:399:26 | y4 | 5.0 | -| test.c:399:30:399:31 | y5 | 5.0 | -| test.c:404:14:404:14 | m | 1.0 | -| test.c:404:14:404:108 | ... ? ... : ... | 1.0 | -| test.c:404:18:404:18 | n | 1.0 | -| test.c:404:18:404:95 | ... ? ... : ... | 1.0 | -| test.c:404:22:404:22 | o | 1.0 | -| test.c:404:22:404:82 | ... ? ... : ... | 1.0 | -| test.c:404:26:404:26 | p | 1.0 | -| test.c:404:26:404:69 | ... ? ... : ... | 1.0 | -| test.c:404:30:404:30 | q | 1.0 | -| test.c:404:30:404:56 | ... ? ... : ... | 1.0 | -| test.c:404:34:404:43 | 0.4743882700000000008 | 1.0 | -| test.c:404:47:404:56 | 0.1433388700000000071 | 1.0 | -| test.c:404:60:404:69 | 0.3527920299999999787 | 1.0 | -| test.c:404:73:404:82 | 0.3920645799999999959 | 1.0 | -| test.c:404:86:404:95 | 0.2154022499999999896 | 1.0 | -| test.c:404:99:404:108 | 0.4049680500000000238 | 1.0 | -| test.c:405:14:405:14 | m | 2.0 | -| test.c:405:14:405:108 | ... ? ... : ... | 1.0 | -| test.c:405:18:405:18 | n | 3.0 | -| test.c:405:18:405:95 | ... ? ... : ... | 1.0 | -| test.c:405:22:405:22 | o | 3.0 | -| test.c:405:22:405:82 | ... ? ... : ... | 1.0 | -| test.c:405:26:405:26 | p | 3.0 | -| test.c:405:26:405:69 | ... ? ... : ... | 1.0 | -| test.c:405:30:405:30 | q | 3.0 | -| test.c:405:30:405:56 | ... ? ... : ... | 1.0 | -| test.c:405:34:405:43 | 0.3418334800000000229 | 1.0 | -| test.c:405:47:405:56 | 0.3533464000000000049 | 1.0 | -| test.c:405:60:405:69 | 0.2224785300000000077 | 1.0 | -| test.c:405:73:405:82 | 0.326618929999999974 | 1.0 | -| test.c:405:86:405:95 | 0.5927046500000000551 | 1.0 | -| test.c:405:99:405:108 | 0.5297741000000000255 | 1.0 | -| test.c:406:14:406:14 | m | 4.0 | -| test.c:406:14:406:108 | ... ? ... : ... | 1.0 | -| test.c:406:18:406:18 | n | 9.0 | -| test.c:406:18:406:95 | ... ? ... : ... | 1.0 | -| test.c:406:22:406:22 | o | 9.0 | -| test.c:406:22:406:82 | ... ? ... : ... | 1.0 | -| test.c:406:26:406:26 | p | 9.0 | -| test.c:406:26:406:69 | ... ? ... : ... | 1.0 | -| test.c:406:30:406:30 | q | 9.0 | -| test.c:406:30:406:56 | ... ? ... : ... | 1.0 | -| test.c:406:34:406:43 | 0.774296030000000024 | 1.0 | -| test.c:406:47:406:56 | 0.3147808400000000062 | 1.0 | -| test.c:406:60:406:69 | 0.3123551399999999756 | 1.0 | -| test.c:406:73:406:82 | 0.05121255999999999725 | 1.0 | -| test.c:406:86:406:95 | 0.7931074500000000471 | 1.0 | -| test.c:406:99:406:108 | 0.6798145100000000385 | 1.0 | -| test.c:407:14:407:14 | m | 8.0 | -| test.c:407:14:407:108 | ... ? ... : ... | 1.0 | -| test.c:407:18:407:18 | n | 27.0 | -| test.c:407:18:407:95 | ... ? ... : ... | 1.0 | -| test.c:407:22:407:22 | o | 27.0 | -| test.c:407:22:407:82 | ... ? ... : ... | 1.0 | -| test.c:407:26:407:26 | p | 27.0 | -| test.c:407:26:407:69 | ... ? ... : ... | 1.0 | -| test.c:407:30:407:30 | q | 27.0 | -| test.c:407:30:407:56 | ... ? ... : ... | 1.0 | -| test.c:407:34:407:43 | 0.4472955599999999809 | 1.0 | -| test.c:407:47:407:56 | 0.8059920200000000312 | 1.0 | -| test.c:407:60:407:69 | 0.9899726199999999698 | 1.0 | -| test.c:407:73:407:82 | 0.5995273199999999747 | 1.0 | -| test.c:407:86:407:95 | 0.3697694799999999837 | 1.0 | -| test.c:407:99:407:108 | 0.8386683499999999514 | 1.0 | -| test.c:408:14:408:14 | m | 16.0 | -| test.c:408:14:408:108 | ... ? ... : ... | 1.0 | -| test.c:408:18:408:18 | n | 81.0 | -| test.c:408:18:408:95 | ... ? ... : ... | 1.0 | -| test.c:408:22:408:22 | o | 81.0 | -| test.c:408:22:408:82 | ... ? ... : ... | 1.0 | -| test.c:408:26:408:26 | p | 81.0 | -| test.c:408:26:408:69 | ... ? ... : ... | 1.0 | -| test.c:408:30:408:30 | q | 81.0 | -| test.c:408:30:408:56 | ... ? ... : ... | 1.0 | -| test.c:408:34:408:43 | 0.4931182800000000199 | 1.0 | -| test.c:408:47:408:56 | 0.9038991100000000056 | 1.0 | -| test.c:408:60:408:69 | 0.1059771199999999941 | 1.0 | -| test.c:408:73:408:82 | 0.2177842600000000073 | 1.0 | -| test.c:408:86:408:95 | 0.7248596600000000167 | 1.0 | -| test.c:408:99:408:108 | 0.6873487400000000136 | 1.0 | -| test.c:409:14:409:14 | m | 32.0 | -| test.c:409:14:409:108 | ... ? ... : ... | 1.0 | -| test.c:409:18:409:18 | n | 243.0 | -| test.c:409:18:409:95 | ... ? ... : ... | 1.0 | -| test.c:409:22:409:22 | o | 243.0 | -| test.c:409:22:409:82 | ... ? ... : ... | 1.0 | -| test.c:409:26:409:26 | p | 243.0 | -| test.c:409:26:409:69 | ... ? ... : ... | 1.0 | -| test.c:409:30:409:30 | q | 243.0 | -| test.c:409:30:409:56 | ... ? ... : ... | 1.0 | -| test.c:409:34:409:43 | 0.4745284799999999747 | 1.0 | -| test.c:409:47:409:56 | 0.107866500000000004 | 1.0 | -| test.c:409:60:409:69 | 0.1188457599999999947 | 1.0 | -| test.c:409:73:409:82 | 0.7616405200000000431 | 1.0 | -| test.c:409:86:409:95 | 0.3480889200000000239 | 1.0 | -| test.c:409:99:409:108 | 0.584408649999999974 | 1.0 | -| test.c:410:14:410:14 | m | 64.0 | -| test.c:410:14:410:108 | ... ? ... : ... | 1.0 | -| test.c:410:18:410:18 | n | 729.0 | -| test.c:410:18:410:95 | ... ? ... : ... | 1.0 | -| test.c:410:22:410:22 | o | 729.0 | -| test.c:410:22:410:82 | ... ? ... : ... | 1.0 | -| test.c:410:26:410:26 | p | 729.0 | -| test.c:410:26:410:69 | ... ? ... : ... | 1.0 | -| test.c:410:30:410:30 | q | 729.0 | -| test.c:410:30:410:56 | ... ? ... : ... | 1.0 | -| test.c:410:34:410:43 | 0.02524326 | 1.0 | -| test.c:410:47:410:56 | 0.8290504600000000446 | 1.0 | -| test.c:410:60:410:69 | 0.95823075000000002 | 1.0 | -| test.c:410:73:410:82 | 0.1251655799999999985 | 1.0 | -| test.c:410:86:410:95 | 0.8523517900000000536 | 1.0 | -| test.c:410:99:410:108 | 0.3623238400000000081 | 1.0 | -| test.c:411:14:411:14 | m | 128.0 | -| test.c:411:14:411:108 | ... ? ... : ... | 1.0 | -| test.c:411:18:411:18 | n | 2187.0 | -| test.c:411:18:411:95 | ... ? ... : ... | 1.0 | -| test.c:411:22:411:22 | o | 2187.0 | -| test.c:411:22:411:82 | ... ? ... : ... | 1.0 | -| test.c:411:26:411:26 | p | 2187.0 | -| test.c:411:26:411:69 | ... ? ... : ... | 1.0 | -| test.c:411:30:411:30 | q | 2187.0 | -| test.c:411:30:411:56 | ... ? ... : ... | 1.0 | -| test.c:411:34:411:43 | 0.3870862600000000153 | 1.0 | -| test.c:411:47:411:56 | 0.3287604399999999871 | 1.0 | -| test.c:411:60:411:69 | 0.1496348500000000137 | 1.0 | -| test.c:411:73:411:82 | 0.4504110800000000192 | 1.0 | -| test.c:411:86:411:95 | 0.4864090899999999884 | 1.0 | -| test.c:411:99:411:108 | 0.8433127200000000157 | 1.0 | -| test.c:412:14:412:14 | m | 256.0 | -| test.c:412:14:412:108 | ... ? ... : ... | 1.0 | -| test.c:412:18:412:18 | n | 6561.0 | -| test.c:412:18:412:95 | ... ? ... : ... | 1.0 | -| test.c:412:22:412:22 | o | 6561.0 | -| test.c:412:22:412:82 | ... ? ... : ... | 1.0 | -| test.c:412:26:412:26 | p | 6561.0 | -| test.c:412:26:412:69 | ... ? ... : ... | 1.0 | -| test.c:412:30:412:30 | q | 6561.0 | -| test.c:412:30:412:56 | ... ? ... : ... | 1.0 | -| test.c:412:34:412:43 | 0.1575506299999999971 | 1.0 | -| test.c:412:47:412:56 | 0.7708683299999999905 | 1.0 | -| test.c:412:60:412:69 | 0.2642848099999999811 | 1.0 | -| test.c:412:73:412:82 | 0.1480050800000000111 | 1.0 | -| test.c:412:86:412:95 | 0.374281430000000026 | 1.0 | -| test.c:412:99:412:108 | 0.05328182000000000057 | 1.0 | -| test.c:413:14:413:14 | m | 512.0 | -| test.c:413:14:413:108 | ... ? ... : ... | 1.0 | -| test.c:413:18:413:18 | n | 19683.0 | -| test.c:413:18:413:95 | ... ? ... : ... | 1.0 | -| test.c:413:22:413:22 | o | 19683.0 | -| test.c:413:22:413:82 | ... ? ... : ... | 1.0 | -| test.c:413:26:413:26 | p | 19683.0 | -| test.c:413:26:413:69 | ... ? ... : ... | 1.0 | -| test.c:413:30:413:30 | q | 19683.0 | -| test.c:413:30:413:56 | ... ? ... : ... | 1.0 | -| test.c:413:34:413:43 | 0.4173653600000000186 | 1.0 | -| test.c:413:47:413:56 | 0.7682662799999999681 | 1.0 | -| test.c:413:60:413:69 | 0.2764323799999999776 | 1.0 | -| test.c:413:73:413:82 | 0.5567927400000000082 | 1.0 | -| test.c:413:86:413:95 | 0.3946885700000000163 | 1.0 | -| test.c:413:99:413:108 | 0.6907214400000000198 | 1.0 | -| test.c:414:14:414:14 | m | 1024.0 | -| test.c:414:14:414:108 | ... ? ... : ... | 1.0 | -| test.c:414:18:414:18 | n | 59049.0 | -| test.c:414:18:414:95 | ... ? ... : ... | 1.0 | -| test.c:414:22:414:22 | o | 59049.0 | -| test.c:414:22:414:82 | ... ? ... : ... | 1.0 | -| test.c:414:26:414:26 | p | 59049.0 | -| test.c:414:26:414:69 | ... ? ... : ... | 1.0 | -| test.c:414:30:414:30 | q | 59049.0 | -| test.c:414:30:414:56 | ... ? ... : ... | 1.0 | -| test.c:414:34:414:43 | 0.8895534499999999678 | 1.0 | -| test.c:414:47:414:56 | 0.2990482400000000207 | 1.0 | -| test.c:414:60:414:69 | 0.7624258299999999711 | 1.0 | -| test.c:414:73:414:82 | 0.2051910999999999874 | 1.0 | -| test.c:414:86:414:95 | 0.8874555899999999609 | 1.0 | -| test.c:414:99:414:108 | 0.8137279800000000174 | 1.0 | -| test.c:415:14:415:14 | m | 2048.0 | +| test.c:348:22:348:32 | (...) | 1.0 | +| test.c:348:22:348:36 | ... > ... | 1.0 | +| test.c:348:22:348:44 | ... ? ... : ... | 1.0 | +| test.c:348:23:348:23 | 2 | 1.0 | +| test.c:348:23:348:23 | (unsigned int)... | 1.0 | +| test.c:348:23:348:27 | ... * ... | 1.0 | +| test.c:348:23:348:31 | ... + ... | 1.0 | +| test.c:348:27:348:27 | e | 1.0 | +| test.c:348:31:348:31 | 1 | 1.0 | +| test.c:348:31:348:31 | (unsigned int)... | 1.0 | +| test.c:348:36:348:36 | 0 | 1.0 | +| test.c:348:36:348:36 | (unsigned int)... | 1.0 | +| test.c:348:40:348:40 | e | 1.0 | +| test.c:348:44:348:44 | 2 | 1.0 | +| test.c:348:44:348:44 | (unsigned int)... | 1.0 | +| test.c:349:20:349:30 | (...) | 2.0 | +| test.c:349:20:349:35 | ... >= ... | 1.0 | +| test.c:349:20:349:43 | (signed int)... | 2.0 | +| test.c:349:20:349:43 | ... ? ... : ... | 2.0 | +| test.c:349:21:349:21 | 2 | 1.0 | +| test.c:349:21:349:21 | (unsigned int)... | 1.0 | +| test.c:349:21:349:25 | ... * ... | 2.0 | +| test.c:349:21:349:29 | ... + ... | 2.0 | +| test.c:349:25:349:25 | e | 2.0 | +| test.c:349:29:349:29 | 1 | 1.0 | +| test.c:349:29:349:29 | (unsigned int)... | 1.0 | +| test.c:349:35:349:35 | 0 | 1.0 | +| test.c:349:35:349:35 | (unsigned int)... | 1.0 | +| test.c:349:39:349:39 | e | 2.0 | +| test.c:349:43:349:43 | 2 | 1.0 | +| test.c:349:43:349:43 | (unsigned int)... | 1.0 | +| test.c:350:22:350:32 | (...) | 4.0 | +| test.c:350:22:350:36 | ... > ... | 1.0 | +| test.c:350:22:350:44 | ... ? ... : ... | 4.0 | +| test.c:350:23:350:23 | 3 | 1.0 | +| test.c:350:23:350:23 | (unsigned int)... | 1.0 | +| test.c:350:23:350:27 | ... * ... | 4.0 | +| test.c:350:23:350:31 | ... + ... | 4.0 | +| test.c:350:27:350:27 | e | 4.0 | +| test.c:350:31:350:31 | 2 | 1.0 | +| test.c:350:31:350:31 | (unsigned int)... | 1.0 | +| test.c:350:36:350:36 | 0 | 1.0 | +| test.c:350:36:350:36 | (unsigned int)... | 1.0 | +| test.c:350:40:350:40 | e | 4.0 | +| test.c:350:44:350:44 | 2 | 1.0 | +| test.c:350:44:350:44 | (unsigned int)... | 1.0 | +| test.c:351:22:351:32 | (...) | 8.0 | +| test.c:351:22:351:36 | ... > ... | 1.0 | +| test.c:351:22:351:44 | ... ? ... : ... | 8.0 | +| test.c:351:23:351:23 | 2 | 1.0 | +| test.c:351:23:351:23 | (unsigned int)... | 1.0 | +| test.c:351:23:351:27 | ... * ... | 8.0 | +| test.c:351:23:351:31 | ... + ... | 8.0 | +| test.c:351:27:351:27 | e | 8.0 | +| test.c:351:31:351:31 | 1 | 1.0 | +| test.c:351:31:351:31 | (unsigned int)... | 1.0 | +| test.c:351:36:351:36 | 0 | 1.0 | +| test.c:351:36:351:36 | (unsigned int)... | 1.0 | +| test.c:351:40:351:40 | e | 8.0 | +| test.c:351:44:351:44 | 2 | 1.0 | +| test.c:351:44:351:44 | (unsigned int)... | 1.0 | +| test.c:352:22:352:32 | (...) | 16.0 | +| test.c:352:22:352:37 | ... > ... | 1.0 | +| test.c:352:22:352:45 | ... ? ... : ... | 16.0 | +| test.c:352:23:352:23 | 2 | 1.0 | +| test.c:352:23:352:23 | (unsigned int)... | 1.0 | +| test.c:352:23:352:27 | ... * ... | 16.0 | +| test.c:352:23:352:31 | ... + ... | 16.0 | +| test.c:352:27:352:27 | e | 16.0 | +| test.c:352:31:352:31 | 1 | 1.0 | +| test.c:352:31:352:31 | (unsigned int)... | 1.0 | +| test.c:352:36:352:37 | 16 | 1.0 | +| test.c:352:36:352:37 | (unsigned int)... | 1.0 | +| test.c:352:41:352:41 | e | 16.0 | +| test.c:352:45:352:45 | 2 | 1.0 | +| test.c:352:45:352:45 | (unsigned int)... | 1.0 | +| test.c:354:10:354:12 | bi1 | 1.0 | +| test.c:354:10:354:18 | ... + ... | 2.0 | +| test.c:354:10:354:24 | ... + ... | 8.0 | +| test.c:354:10:354:30 | ... + ... | 64.0 | +| test.c:354:10:354:36 | ... + ... | 1024.0 | +| test.c:354:16:354:18 | (unsigned int)... | 2.0 | +| test.c:354:16:354:18 | bi2 | 2.0 | +| test.c:354:22:354:24 | bi3 | 4.0 | +| test.c:354:28:354:30 | bi4 | 8.0 | +| test.c:354:34:354:36 | bi5 | 16.0 | +| test.c:358:13:358:14 | 0 | 1.0 | +| test.c:359:7:359:7 | x | 1.0 | +| test.c:359:7:359:11 | ... < ... | 1.0 | +| test.c:359:11:359:11 | 0 | 1.0 | +| test.c:360:12:360:13 | - ... | 1.0 | +| test.c:360:13:360:13 | 1 | 1.0 | +| test.c:363:10:363:10 | i | 13.0 | +| test.c:363:10:363:14 | ... < ... | 1.0 | +| test.c:363:14:363:14 | 3 | 1.0 | +| test.c:364:5:364:5 | i | 13.0 | +| test.c:364:5:364:7 | ... ++ | 13.0 | +| test.c:366:3:366:3 | d | 1.0 | +| test.c:366:3:366:7 | ... = ... | 13.0 | +| test.c:366:7:366:7 | i | 13.0 | +| test.c:367:7:367:7 | x | 1.0 | +| test.c:367:7:367:11 | ... < ... | 1.0 | +| test.c:367:11:367:11 | 0 | 1.0 | +| test.c:368:9:368:9 | d | 13.0 | +| test.c:368:9:368:14 | ... > ... | 1.0 | +| test.c:368:13:368:14 | - ... | 1.0 | +| test.c:368:14:368:14 | x | 1.0 | +| test.c:369:14:369:14 | 1 | 1.0 | +| test.c:372:10:372:10 | 0 | 1.0 | +| test.c:378:3:378:4 | y1 | 1.0 | +| test.c:378:3:378:23 | ... = ... | 1.0 | +| test.c:378:8:378:8 | x | 1.0 | +| test.c:378:8:378:14 | ... < ... | 1.0 | +| test.c:378:8:378:23 | ... ? ... : ... | 1.0 | +| test.c:378:12:378:14 | 100 | 1.0 | +| test.c:378:12:378:14 | (unsigned int)... | 1.0 | +| test.c:378:18:378:18 | x | 1.0 | +| test.c:378:22:378:23 | 10 | 1.0 | +| test.c:378:22:378:23 | (unsigned int)... | 1.0 | +| test.c:379:3:379:4 | y2 | 1.0 | +| test.c:379:3:379:24 | ... = ... | 2.0 | +| test.c:379:8:379:8 | x | 2.0 | +| test.c:379:8:379:15 | ... >= ... | 1.0 | +| test.c:379:8:379:24 | ... ? ... : ... | 2.0 | +| test.c:379:13:379:15 | 100 | 1.0 | +| test.c:379:13:379:15 | (unsigned int)... | 1.0 | +| test.c:379:19:379:20 | 10 | 1.0 | +| test.c:379:19:379:20 | (unsigned int)... | 1.0 | +| test.c:379:24:379:24 | x | 2.0 | +| test.c:380:3:380:4 | y3 | 1.0 | +| test.c:380:3:380:8 | ... = ... | 1.0 | +| test.c:380:8:380:8 | 0 | 1.0 | +| test.c:380:8:380:8 | (unsigned int)... | 1.0 | +| test.c:381:3:381:4 | y4 | 1.0 | +| test.c:381:3:381:8 | ... = ... | 1.0 | +| test.c:381:8:381:8 | 0 | 1.0 | +| test.c:381:8:381:8 | (unsigned int)... | 1.0 | +| test.c:382:3:382:4 | y5 | 1.0 | +| test.c:382:3:382:8 | ... = ... | 1.0 | +| test.c:382:8:382:8 | 0 | 1.0 | +| test.c:382:8:382:8 | (unsigned int)... | 1.0 | +| test.c:383:3:383:4 | y6 | 1.0 | +| test.c:383:3:383:8 | ... = ... | 1.0 | +| test.c:383:8:383:8 | 0 | 1.0 | +| test.c:383:8:383:8 | (unsigned int)... | 1.0 | +| test.c:384:3:384:4 | y7 | 1.0 | +| test.c:384:3:384:8 | ... = ... | 1.0 | +| test.c:384:8:384:8 | 0 | 1.0 | +| test.c:384:8:384:8 | (unsigned int)... | 1.0 | +| test.c:385:3:385:4 | y8 | 1.0 | +| test.c:385:3:385:8 | ... = ... | 1.0 | +| test.c:385:8:385:8 | 0 | 1.0 | +| test.c:385:8:385:8 | (unsigned int)... | 1.0 | +| test.c:386:7:386:7 | x | 4.0 | +| test.c:386:7:386:13 | ... < ... | 1.0 | +| test.c:386:11:386:13 | 300 | 1.0 | +| test.c:386:11:386:13 | (unsigned int)... | 1.0 | +| test.c:387:5:387:6 | y3 | 1.0 | +| test.c:387:5:387:15 | ... = ... | 4.0 | +| test.c:387:10:387:10 | x | 4.0 | +| test.c:387:10:387:15 | ... ? ... : ... | 4.0 | +| test.c:387:15:387:15 | 5 | 1.0 | +| test.c:387:15:387:15 | (unsigned int)... | 1.0 | +| test.c:388:5:388:6 | y4 | 1.0 | +| test.c:388:5:388:17 | ... = ... | 4.0 | +| test.c:388:10:388:10 | x | 4.0 | +| test.c:388:10:388:17 | ... ? ... : ... | 4.0 | +| test.c:388:15:388:17 | 500 | 1.0 | +| test.c:388:15:388:17 | (unsigned int)... | 1.0 | +| test.c:389:5:389:6 | y5 | 1.0 | +| test.c:389:5:389:21 | ... = ... | 4.0 | +| test.c:389:10:389:14 | (...) | 4.0 | +| test.c:389:10:389:21 | ... ? ... : ... | 4.0 | +| test.c:389:11:389:11 | x | 4.0 | +| test.c:389:11:389:13 | ... + ... | 4.0 | +| test.c:389:13:389:13 | 1 | 1.0 | +| test.c:389:13:389:13 | (unsigned int)... | 1.0 | +| test.c:389:19:389:21 | 500 | 1.0 | +| test.c:389:19:389:21 | (unsigned int)... | 1.0 | +| test.c:390:5:390:6 | y6 | 1.0 | +| test.c:390:5:390:36 | ... = ... | 4.0 | +| test.c:390:10:390:31 | (...) | 4.0 | +| test.c:390:10:390:36 | (unsigned int)... | 4.0 | +| test.c:390:10:390:36 | ... ? ... : ... | 4.0 | +| test.c:390:11:390:30 | (unsigned char)... | 4.0 | +| test.c:390:26:390:30 | (...) | 4.0 | +| test.c:390:27:390:27 | x | 4.0 | +| test.c:390:27:390:29 | ... + ... | 4.0 | +| test.c:390:29:390:29 | 1 | 1.0 | +| test.c:390:29:390:29 | (unsigned int)... | 1.0 | +| test.c:390:36:390:36 | 5 | 1.0 | +| test.c:391:5:391:6 | y7 | 1.0 | +| test.c:391:5:391:38 | ... = ... | 4.0 | +| test.c:391:10:391:31 | (...) | 4.0 | +| test.c:391:10:391:38 | (unsigned int)... | 4.0 | +| test.c:391:10:391:38 | ... ? ... : ... | 4.0 | +| test.c:391:11:391:30 | (unsigned char)... | 4.0 | +| test.c:391:26:391:30 | (...) | 4.0 | +| test.c:391:27:391:27 | x | 4.0 | +| test.c:391:27:391:29 | ... + ... | 4.0 | +| test.c:391:29:391:29 | 1 | 1.0 | +| test.c:391:29:391:29 | (unsigned int)... | 1.0 | +| test.c:391:36:391:38 | 500 | 1.0 | +| test.c:392:5:392:6 | y8 | 1.0 | +| test.c:392:5:392:39 | ... = ... | 4.0 | +| test.c:392:10:392:32 | (...) | 4.0 | +| test.c:392:10:392:39 | (unsigned int)... | 4.0 | +| test.c:392:10:392:39 | ... ? ... : ... | 4.0 | +| test.c:392:11:392:31 | (unsigned short)... | 4.0 | +| test.c:392:27:392:31 | (...) | 4.0 | +| test.c:392:28:392:28 | x | 4.0 | +| test.c:392:28:392:30 | ... + ... | 4.0 | +| test.c:392:30:392:30 | 1 | 1.0 | +| test.c:392:30:392:30 | (unsigned int)... | 1.0 | +| test.c:392:37:392:39 | 500 | 1.0 | +| test.c:394:10:394:11 | y1 | 1.0 | +| test.c:394:10:394:16 | ... + ... | 2.0 | +| test.c:394:10:394:21 | ... + ... | 10.0 | +| test.c:394:10:394:26 | ... + ... | 50.0 | +| test.c:394:10:394:31 | ... + ... | 250.0 | +| test.c:394:10:394:36 | ... + ... | 1250.0 | +| test.c:394:10:394:41 | ... + ... | 6250.0 | +| test.c:394:10:394:46 | ... + ... | 31250.0 | +| test.c:394:15:394:16 | y2 | 2.0 | +| test.c:394:20:394:21 | y3 | 5.0 | +| test.c:394:25:394:26 | y4 | 5.0 | +| test.c:394:30:394:31 | y5 | 5.0 | +| test.c:394:35:394:36 | y6 | 5.0 | +| test.c:394:40:394:41 | y7 | 5.0 | +| test.c:394:45:394:46 | y8 | 5.0 | +| test.c:400:3:400:4 | y1 | 1.0 | +| test.c:400:3:400:24 | ... = ... | 1.0 | +| test.c:400:8:400:8 | x | 1.0 | +| test.c:400:8:400:14 | ... > ... | 1.0 | +| test.c:400:8:400:24 | ... ? ... : ... | 1.0 | +| test.c:400:12:400:14 | 100 | 1.0 | +| test.c:400:12:400:14 | (unsigned int)... | 1.0 | +| test.c:400:18:400:18 | x | 1.0 | +| test.c:400:22:400:24 | 110 | 1.0 | +| test.c:400:22:400:24 | (unsigned int)... | 1.0 | +| test.c:401:3:401:4 | y2 | 1.0 | +| test.c:401:3:401:25 | ... = ... | 2.0 | +| test.c:401:8:401:8 | x | 2.0 | +| test.c:401:8:401:15 | ... <= ... | 1.0 | +| test.c:401:8:401:25 | ... ? ... : ... | 2.0 | +| test.c:401:13:401:15 | 100 | 1.0 | +| test.c:401:13:401:15 | (unsigned int)... | 1.0 | +| test.c:401:19:401:21 | 110 | 1.0 | +| test.c:401:19:401:21 | (unsigned int)... | 1.0 | +| test.c:401:25:401:25 | x | 2.0 | +| test.c:402:3:402:4 | y3 | 1.0 | +| test.c:402:3:402:11 | ... = ... | 1.0 | +| test.c:402:8:402:11 | 1000 | 1.0 | +| test.c:402:8:402:11 | (unsigned int)... | 1.0 | +| test.c:403:3:403:4 | y4 | 1.0 | +| test.c:403:3:403:11 | ... = ... | 1.0 | +| test.c:403:8:403:11 | 1000 | 1.0 | +| test.c:403:8:403:11 | (unsigned int)... | 1.0 | +| test.c:404:3:404:4 | y5 | 1.0 | +| test.c:404:3:404:11 | ... = ... | 1.0 | +| test.c:404:8:404:11 | 1000 | 1.0 | +| test.c:404:8:404:11 | (unsigned int)... | 1.0 | +| test.c:405:7:405:7 | x | 4.0 | +| test.c:405:7:405:14 | ... >= ... | 1.0 | +| test.c:405:12:405:14 | 300 | 1.0 | +| test.c:405:12:405:14 | (unsigned int)... | 1.0 | +| test.c:406:5:406:6 | y3 | 1.0 | +| test.c:406:5:406:21 | ... = ... | 4.0 | +| test.c:406:10:406:16 | (...) | 4.0 | +| test.c:406:10:406:21 | ... ? ... : ... | 4.0 | +| test.c:406:11:406:11 | x | 4.0 | +| test.c:406:11:406:15 | ... - ... | 4.0 | +| test.c:406:13:406:15 | 300 | 1.0 | +| test.c:406:13:406:15 | (unsigned int)... | 1.0 | +| test.c:406:21:406:21 | 5 | 1.0 | +| test.c:406:21:406:21 | (unsigned int)... | 1.0 | +| test.c:407:5:407:6 | y4 | 1.0 | +| test.c:407:5:407:21 | ... = ... | 4.0 | +| test.c:407:10:407:16 | (...) | 4.0 | +| test.c:407:10:407:21 | ... ? ... : ... | 4.0 | +| test.c:407:11:407:11 | x | 4.0 | +| test.c:407:11:407:15 | ... - ... | 4.0 | +| test.c:407:13:407:15 | 200 | 1.0 | +| test.c:407:13:407:15 | (unsigned int)... | 1.0 | +| test.c:407:21:407:21 | 5 | 1.0 | +| test.c:407:21:407:21 | (unsigned int)... | 1.0 | +| test.c:408:5:408:6 | y5 | 1.0 | +| test.c:408:5:408:38 | ... = ... | 4.0 | +| test.c:408:10:408:33 | (...) | 4.0 | +| test.c:408:10:408:38 | (unsigned int)... | 4.0 | +| test.c:408:10:408:38 | ... ? ... : ... | 4.0 | +| test.c:408:11:408:32 | (unsigned char)... | 4.0 | +| test.c:408:26:408:32 | (...) | 4.0 | +| test.c:408:27:408:27 | x | 4.0 | +| test.c:408:27:408:31 | ... - ... | 4.0 | +| test.c:408:29:408:31 | 200 | 1.0 | +| test.c:408:29:408:31 | (unsigned int)... | 1.0 | +| test.c:408:38:408:38 | 5 | 1.0 | +| test.c:410:10:410:11 | y1 | 1.0 | +| test.c:410:10:410:16 | ... + ... | 2.0 | +| test.c:410:10:410:21 | ... + ... | 10.0 | +| test.c:410:10:410:26 | ... + ... | 50.0 | +| test.c:410:10:410:31 | ... + ... | 250.0 | +| test.c:410:15:410:16 | y2 | 2.0 | +| test.c:410:20:410:21 | y3 | 5.0 | +| test.c:410:25:410:26 | y4 | 5.0 | +| test.c:410:30:410:31 | y5 | 5.0 | +| test.c:415:14:415:14 | m | 1.0 | | test.c:415:14:415:108 | ... ? ... : ... | 1.0 | -| test.c:415:18:415:18 | n | 177147.0 | +| test.c:415:18:415:18 | n | 1.0 | | test.c:415:18:415:95 | ... ? ... : ... | 1.0 | -| test.c:415:22:415:22 | o | 177147.0 | +| test.c:415:22:415:22 | o | 1.0 | | test.c:415:22:415:82 | ... ? ... : ... | 1.0 | -| test.c:415:26:415:26 | p | 177147.0 | +| test.c:415:26:415:26 | p | 1.0 | | test.c:415:26:415:69 | ... ? ... : ... | 1.0 | -| test.c:415:30:415:30 | q | 177147.0 | +| test.c:415:30:415:30 | q | 1.0 | | test.c:415:30:415:56 | ... ? ... : ... | 1.0 | -| test.c:415:34:415:43 | 0.4218627600000000033 | 1.0 | -| test.c:415:47:415:56 | 0.5384335799999999672 | 1.0 | -| test.c:415:60:415:69 | 0.4499667900000000054 | 1.0 | -| test.c:415:73:415:82 | 0.1320411400000000013 | 1.0 | -| test.c:415:86:415:95 | 0.5203124099999999475 | 1.0 | -| test.c:415:99:415:108 | 0.4276264699999999808 | 1.0 | -| test.c:421:19:421:19 | a | 1.0 | -| test.c:421:19:421:23 | ... + ... | 1.0 | -| test.c:421:19:421:27 | ... + ... | 1.0 | -| test.c:421:19:421:31 | ... + ... | 1.0 | -| test.c:421:19:421:35 | ... + ... | 1.0 | -| test.c:421:19:421:39 | ... + ... | 1.0 | -| test.c:421:19:421:43 | ... + ... | 1.0 | -| test.c:421:19:421:47 | ... + ... | 1.0 | -| test.c:421:19:421:51 | ... + ... | 1.0 | -| test.c:421:19:421:55 | ... + ... | 1.0 | -| test.c:421:19:421:59 | ... + ... | 1.0 | -| test.c:421:19:421:63 | ... + ... | 1.0 | -| test.c:421:23:421:23 | b | 1.0 | -| test.c:421:27:421:27 | c | 1.0 | -| test.c:421:31:421:31 | d | 1.0 | -| test.c:421:35:421:35 | e | 1.0 | -| test.c:421:39:421:39 | f | 1.0 | -| test.c:421:43:421:43 | g | 1.0 | -| test.c:421:47:421:47 | h | 1.0 | -| test.c:421:51:421:51 | i | 1.0 | -| test.c:421:55:421:55 | j | 1.0 | -| test.c:421:59:421:59 | k | 1.0 | -| test.c:421:63:421:63 | l | 1.0 | -| test.c:423:10:423:15 | output | 1.0 | -| test.c:430:7:430:9 | rhs | 1.0 | -| test.c:430:7:430:14 | ... < ... | 1.0 | -| test.c:430:13:430:14 | 12 | 1.0 | -| test.c:430:13:430:14 | (unsigned int)... | 1.0 | -| test.c:430:19:430:21 | rhs | 1.0 | -| test.c:430:19:430:26 | ... << ... | 1.0 | -| test.c:430:26:430:26 | 1 | 1.0 | -| test.c:431:7:431:9 | rhs | 2.0 | -| test.c:431:7:431:14 | ... < ... | 1.0 | -| test.c:431:13:431:14 | 13 | 1.0 | -| test.c:431:13:431:14 | (unsigned int)... | 1.0 | -| test.c:431:19:431:21 | rhs | 2.0 | -| test.c:431:19:431:26 | ... << ... | 1.0 | -| test.c:431:26:431:26 | 1 | 1.0 | -| test.c:432:7:432:9 | rhs | 3.0 | -| test.c:432:7:432:14 | ... < ... | 1.0 | -| test.c:432:13:432:14 | 14 | 1.0 | -| test.c:432:13:432:14 | (unsigned int)... | 1.0 | -| test.c:432:19:432:21 | rhs | 3.0 | -| test.c:432:19:432:26 | ... << ... | 1.0 | -| test.c:432:26:432:26 | 1 | 1.0 | -| test.c:433:7:433:9 | rhs | 4.0 | -| test.c:433:7:433:14 | ... < ... | 1.0 | -| test.c:433:13:433:14 | 15 | 1.0 | -| test.c:433:13:433:14 | (unsigned int)... | 1.0 | -| test.c:433:19:433:21 | rhs | 4.0 | -| test.c:433:19:433:26 | ... << ... | 1.0 | -| test.c:433:26:433:26 | 1 | 1.0 | -| test.c:434:7:434:9 | rhs | 5.0 | -| test.c:434:7:434:14 | ... < ... | 1.0 | -| test.c:434:13:434:14 | 16 | 1.0 | -| test.c:434:13:434:14 | (unsigned int)... | 1.0 | -| test.c:434:19:434:21 | rhs | 5.0 | -| test.c:434:19:434:26 | ... << ... | 1.0 | -| test.c:434:26:434:26 | 1 | 1.0 | -| test.c:435:10:435:12 | (int)... | 6.0 | -| test.c:435:10:435:12 | rhs | 6.0 | -| test.c:439:7:439:7 | a | 1.0 | -| test.c:439:7:439:13 | ... == ... | 1.0 | -| test.c:439:12:439:13 | 17 | 1.0 | -| test.c:440:9:440:9 | b | 1.0 | -| test.c:440:9:440:15 | ... == ... | 1.0 | -| test.c:440:14:440:15 | 23 | 1.0 | -| test.c:441:7:441:7 | a | 1.0 | -| test.c:441:7:441:12 | ... += ... | 1.0 | -| test.c:441:12:441:12 | b | 1.0 | -| test.c:443:9:443:9 | a | 2.0 | -| test.c:443:9:443:15 | ... == ... | 1.0 | -| test.c:443:14:443:15 | 18 | 1.0 | -| test.c:444:7:444:7 | b | 1.0 | -| test.c:444:7:444:12 | ... = ... | 1.0 | -| test.c:444:11:444:12 | 10 | 1.0 | -| test.c:449:11:449:11 | a | 4.0 | -| test.c:449:11:449:15 | ... + ... | 16.0 | -| test.c:449:15:449:15 | b | 4.0 | -| test.c:450:10:450:10 | a | 4.0 | -| test.c:450:10:450:14 | ... + ... | 16.0 | -| test.c:450:14:450:14 | b | 4.0 | -| test.c:457:4:459:50 | (...) | 1.0 | -| test.c:457:4:542:26 | ... > ... | 1.0 | -| test.c:457:4:631:27 | ... ? ... : ... | 1.297918419127476E201 | -| test.c:457:5:457:6 | 14 | 1.0 | -| test.c:457:5:457:6 | (unsigned int)... | 1.0 | -| test.c:457:5:457:11 | ... * ... | 1.0 | -| test.c:457:5:457:55 | ... > ... | 1.0 | -| test.c:457:5:459:49 | ... ? ... : ... | 1.0 | -| test.c:457:10:457:11 | ip | 1.0 | -| test.c:457:15:457:26 | (...) | 1.0 | -| test.c:457:15:457:31 | ... * ... | 1.0 | -| test.c:457:15:457:55 | ... + ... | 1.0 | -| test.c:457:16:457:16 | 2 | 1.0 | -| test.c:457:16:457:16 | (unsigned int)... | 1.0 | -| test.c:457:16:457:21 | ... * ... | 1.0 | -| test.c:457:16:457:25 | ... + ... | 1.0 | -| test.c:457:20:457:21 | ip | 1.0 | -| test.c:457:25:457:25 | 1 | 1.0 | -| test.c:457:25:457:25 | (unsigned int)... | 1.0 | -| test.c:457:30:457:31 | 17 | 1.0 | -| test.c:457:30:457:31 | (unsigned int)... | 1.0 | -| test.c:457:35:457:50 | (...) | 1.0 | -| test.c:457:35:457:55 | ... * ... | 1.0 | -| test.c:457:36:457:36 | 2 | 1.0 | -| test.c:457:36:457:36 | (unsigned int)... | 1.0 | -| test.c:457:36:457:41 | ... * ... | 1.0 | -| test.c:457:36:457:45 | ... + ... | 1.0 | -| test.c:457:36:457:49 | ... + ... | 1.0 | -| test.c:457:40:457:41 | ip | 1.0 | -| test.c:457:45:457:45 | 1 | 1.0 | -| test.c:457:45:457:45 | (unsigned int)... | 1.0 | -| test.c:457:49:457:49 | 1 | 1.0 | -| test.c:457:49:457:49 | (unsigned int)... | 1.0 | -| test.c:457:54:457:55 | 17 | 1.0 | -| test.c:457:54:457:55 | (unsigned int)... | 1.0 | -| test.c:458:9:458:10 | 14 | 1.0 | -| test.c:458:9:458:10 | (unsigned int)... | 1.0 | -| test.c:458:9:458:15 | ... * ... | 1.0 | -| test.c:458:14:458:15 | ip | 1.0 | -| test.c:459:9:459:20 | (...) | 1.0 | -| test.c:459:9:459:25 | ... * ... | 1.0 | -| test.c:459:9:459:49 | ... + ... | 1.0 | -| test.c:459:10:459:10 | 2 | 1.0 | -| test.c:459:10:459:10 | (unsigned int)... | 1.0 | -| test.c:459:10:459:15 | ... * ... | 1.0 | -| test.c:459:10:459:19 | ... + ... | 1.0 | -| test.c:459:14:459:15 | ip | 1.0 | -| test.c:459:19:459:19 | 1 | 1.0 | -| test.c:459:19:459:19 | (unsigned int)... | 1.0 | -| test.c:459:24:459:25 | 14 | 1.0 | -| test.c:459:24:459:25 | (unsigned int)... | 1.0 | -| test.c:459:29:459:44 | (...) | 1.0 | -| test.c:459:29:459:49 | ... * ... | 1.0 | -| test.c:459:30:459:30 | 2 | 1.0 | -| test.c:459:30:459:30 | (unsigned int)... | 1.0 | -| test.c:459:30:459:35 | ... * ... | 1.0 | -| test.c:459:30:459:39 | ... + ... | 1.0 | -| test.c:459:30:459:43 | ... + ... | 1.0 | -| test.c:459:34:459:35 | ip | 1.0 | -| test.c:459:39:459:39 | 1 | 1.0 | -| test.c:459:39:459:39 | (unsigned int)... | 1.0 | -| test.c:459:43:459:43 | 1 | 1.0 | -| test.c:459:43:459:43 | (unsigned int)... | 1.0 | -| test.c:459:48:459:49 | 17 | 1.0 | -| test.c:459:48:459:49 | (unsigned int)... | 1.0 | -| test.c:460:5:542:26 | (...) | 9.29462083211502E84 | -| test.c:460:6:460:6 | 2 | 1.0 | -| test.c:460:6:460:6 | (unsigned int)... | 1.0 | -| test.c:460:6:460:23 | ... * ... | 2.0 | -| test.c:460:6:479:42 | ... + ... | 4.524508125E10 | -| test.c:460:6:499:24 | ... > ... | 1.0 | -| test.c:460:6:542:25 | ... ? ... : ... | 9.29462083211502E84 | -| test.c:460:10:460:23 | (...) | 2.0 | -| test.c:460:11:460:12 | ip | 2.0 | -| test.c:460:11:460:17 | ... * ... | 2.0 | -| test.c:460:11:460:22 | ... + ... | 2.0 | -| test.c:460:16:460:17 | 14 | 1.0 | -| test.c:460:16:460:17 | (unsigned int)... | 1.0 | -| test.c:460:21:460:22 | 32 | 1.0 | -| test.c:460:21:460:22 | (unsigned int)... | 1.0 | -| test.c:461:7:479:42 | (...) | 2.2622540625E10 | -| test.c:461:8:461:8 | 4 | 1.0 | -| test.c:461:8:461:8 | (unsigned int)... | 1.0 | -| test.c:461:8:461:25 | ... * ... | 2.0 | -| test.c:461:8:462:26 | ... + ... | 4.0 | -| test.c:461:8:463:26 | ... + ... | 8.0 | -| test.c:461:8:468:22 | ... + ... | 1000.0 | -| test.c:461:8:469:37 | ... > ... | 1.0 | -| test.c:461:8:479:41 | ... ? ... : ... | 2.2622540625E10 | -| test.c:461:12:461:25 | (...) | 2.0 | -| test.c:461:13:461:14 | ip | 2.0 | -| test.c:461:13:461:19 | ... * ... | 2.0 | -| test.c:461:13:461:24 | ... + ... | 2.0 | -| test.c:461:18:461:19 | 14 | 1.0 | -| test.c:461:18:461:19 | (unsigned int)... | 1.0 | -| test.c:461:23:461:24 | 32 | 1.0 | -| test.c:461:23:461:24 | (unsigned int)... | 1.0 | -| test.c:462:9:462:26 | (...) | 2.0 | -| test.c:462:10:462:10 | 2 | 1.0 | -| test.c:462:10:462:10 | (unsigned int)... | 1.0 | -| test.c:462:10:462:15 | ... * ... | 2.0 | -| test.c:462:10:462:20 | ... * ... | 2.0 | -| test.c:462:10:462:25 | ... + ... | 2.0 | -| test.c:462:14:462:15 | ip | 2.0 | -| test.c:462:19:462:20 | 14 | 1.0 | -| test.c:462:19:462:20 | (unsigned int)... | 1.0 | -| test.c:462:24:462:25 | 32 | 1.0 | -| test.c:462:24:462:25 | (unsigned int)... | 1.0 | -| test.c:463:9:463:9 | 2 | 1.0 | -| test.c:463:9:463:9 | (unsigned int)... | 1.0 | -| test.c:463:9:463:26 | ... * ... | 2.0 | -| test.c:463:13:463:26 | (...) | 2.0 | -| test.c:463:14:463:15 | ip | 2.0 | -| test.c:463:14:463:20 | ... * ... | 2.0 | -| test.c:463:14:463:25 | ... + ... | 2.0 | -| test.c:463:19:463:20 | 14 | 1.0 | -| test.c:463:19:463:20 | (unsigned int)... | 1.0 | -| test.c:463:24:463:25 | 64 | 1.0 | -| test.c:463:24:463:25 | (unsigned int)... | 1.0 | -| test.c:464:9:468:22 | (...) | 125.0 | -| test.c:464:10:464:21 | (...) | 2.0 | -| test.c:464:10:464:26 | ... * ... | 2.0 | -| test.c:464:10:464:80 | ... > ... | 1.0 | -| test.c:464:10:468:21 | ... ? ... : ... | 125.0 | -| test.c:464:11:464:11 | 2 | 1.0 | -| test.c:464:11:464:11 | (unsigned int)... | 1.0 | -| test.c:464:11:464:16 | ... * ... | 2.0 | -| test.c:464:11:464:20 | ... + ... | 2.0 | -| test.c:464:15:464:16 | ip | 2.0 | -| test.c:464:20:464:20 | 1 | 1.0 | -| test.c:464:20:464:20 | (unsigned int)... | 1.0 | -| test.c:464:25:464:26 | 14 | 1.0 | -| test.c:464:25:464:26 | (unsigned int)... | 1.0 | -| test.c:464:30:464:80 | (...) | 4.0 | -| test.c:464:31:464:32 | 17 | 1.0 | -| test.c:464:31:464:32 | (unsigned int)... | 1.0 | -| test.c:464:31:464:43 | ... * ... | 2.0 | -| test.c:464:31:464:53 | ... > ... | 1.0 | -| test.c:464:31:464:79 | ... ? ... : ... | 4.0 | -| test.c:464:36:464:43 | (...) | 2.0 | -| test.c:464:37:464:37 | 2 | 1.0 | -| test.c:464:37:464:37 | (unsigned int)... | 1.0 | -| test.c:464:37:464:42 | ... * ... | 2.0 | -| test.c:464:41:464:42 | ip | 2.0 | -| test.c:464:47:464:48 | 17 | 1.0 | -| test.c:464:47:464:48 | (unsigned int)... | 1.0 | -| test.c:464:47:464:53 | ... * ... | 2.0 | -| test.c:464:52:464:53 | ip | 2.0 | -| test.c:464:57:464:58 | 17 | 1.0 | -| test.c:464:57:464:58 | (unsigned int)... | 1.0 | -| test.c:464:57:464:69 | ... * ... | 2.0 | -| test.c:464:62:464:69 | (...) | 2.0 | -| test.c:464:63:464:63 | 2 | 1.0 | -| test.c:464:63:464:63 | (unsigned int)... | 1.0 | -| test.c:464:63:464:68 | ... * ... | 2.0 | -| test.c:464:67:464:68 | ip | 2.0 | -| test.c:464:73:464:74 | 17 | 1.0 | -| test.c:464:73:464:74 | (unsigned int)... | 1.0 | -| test.c:464:73:464:79 | ... * ... | 2.0 | -| test.c:464:78:464:79 | ip | 2.0 | -| test.c:465:13:465:24 | (...) | 5.0 | -| test.c:465:13:465:29 | ... * ... | 5.0 | -| test.c:465:14:465:14 | 2 | 1.0 | -| test.c:465:14:465:14 | (unsigned int)... | 1.0 | -| test.c:465:14:465:19 | ... * ... | 5.0 | -| test.c:465:14:465:23 | ... + ... | 5.0 | -| test.c:465:18:465:19 | ip | 5.0 | -| test.c:465:23:465:23 | 1 | 1.0 | -| test.c:465:23:465:23 | (unsigned int)... | 1.0 | -| test.c:465:28:465:29 | 14 | 1.0 | -| test.c:465:28:465:29 | (unsigned int)... | 1.0 | -| test.c:466:13:466:14 | 14 | 1.0 | -| test.c:466:13:466:14 | (unsigned int)... | 1.0 | -| test.c:466:13:466:25 | ... * ... | 5.0 | -| test.c:466:13:466:35 | ... > ... | 1.0 | -| test.c:466:13:468:21 | ... ? ... : ... | 25.0 | -| test.c:466:18:466:25 | (...) | 5.0 | -| test.c:466:19:466:19 | 2 | 1.0 | -| test.c:466:19:466:19 | (unsigned int)... | 1.0 | -| test.c:466:19:466:24 | ... * ... | 5.0 | -| test.c:466:23:466:24 | ip | 5.0 | -| test.c:466:29:466:30 | 17 | 1.0 | -| test.c:466:29:466:30 | (unsigned int)... | 1.0 | -| test.c:466:29:466:35 | ... * ... | 5.0 | -| test.c:466:34:466:35 | ip | 5.0 | -| test.c:467:15:467:16 | 14 | 1.0 | -| test.c:467:15:467:16 | (unsigned int)... | 1.0 | -| test.c:467:15:467:27 | ... * ... | 5.0 | -| test.c:467:20:467:27 | (...) | 5.0 | -| test.c:467:21:467:21 | 2 | 1.0 | -| test.c:467:21:467:21 | (unsigned int)... | 1.0 | -| test.c:467:21:467:26 | ... * ... | 5.0 | -| test.c:467:25:467:26 | ip | 5.0 | -| test.c:468:15:468:16 | 14 | 1.0 | -| test.c:468:15:468:16 | (unsigned int)... | 1.0 | -| test.c:468:15:468:21 | ... * ... | 5.0 | -| test.c:468:20:468:21 | ip | 5.0 | -| test.c:469:7:469:7 | 2 | 1.0 | -| test.c:469:7:469:7 | (unsigned int)... | 1.0 | -| test.c:469:7:469:12 | ... * ... | 15.0 | -| test.c:469:7:469:17 | ... * ... | 15.0 | -| test.c:469:7:469:37 | ... + ... | 225.0 | -| test.c:469:11:469:12 | ip | 15.0 | -| test.c:469:16:469:17 | 14 | 1.0 | -| test.c:469:16:469:17 | (unsigned int)... | 1.0 | -| test.c:469:21:469:32 | (...) | 15.0 | -| test.c:469:21:469:37 | ... * ... | 15.0 | -| test.c:469:22:469:22 | 2 | 1.0 | -| test.c:469:22:469:22 | (unsigned int)... | 1.0 | -| test.c:469:22:469:27 | ... * ... | 15.0 | -| test.c:469:22:469:31 | ... + ... | 15.0 | -| test.c:469:26:469:27 | ip | 15.0 | -| test.c:469:31:469:31 | 1 | 1.0 | -| test.c:469:31:469:31 | (unsigned int)... | 1.0 | -| test.c:469:36:469:37 | 17 | 1.0 | -| test.c:469:36:469:37 | (unsigned int)... | 1.0 | -| test.c:470:11:470:11 | 4 | 1.0 | -| test.c:470:11:470:11 | (unsigned int)... | 1.0 | -| test.c:470:11:470:28 | ... * ... | 15.0 | -| test.c:470:11:471:28 | ... + ... | 225.0 | -| test.c:470:11:472:28 | ... + ... | 3375.0 | -| test.c:470:11:478:24 | ... + ... | 1.00544625E8 | -| test.c:470:15:470:28 | (...) | 15.0 | -| test.c:470:16:470:17 | ip | 15.0 | -| test.c:470:16:470:22 | ... * ... | 15.0 | -| test.c:470:16:470:27 | ... + ... | 15.0 | -| test.c:470:21:470:22 | 14 | 1.0 | -| test.c:470:21:470:22 | (unsigned int)... | 1.0 | -| test.c:470:26:470:27 | 32 | 1.0 | -| test.c:470:26:470:27 | (unsigned int)... | 1.0 | -| test.c:471:11:471:28 | (...) | 15.0 | -| test.c:471:12:471:12 | 2 | 1.0 | -| test.c:471:12:471:12 | (unsigned int)... | 1.0 | -| test.c:471:12:471:17 | ... * ... | 15.0 | -| test.c:471:12:471:22 | ... * ... | 15.0 | -| test.c:471:12:471:27 | ... + ... | 15.0 | -| test.c:471:16:471:17 | ip | 15.0 | -| test.c:471:21:471:22 | 14 | 1.0 | +| test.c:415:34:415:43 | 0.4743882700000000008 | 1.0 | +| test.c:415:47:415:56 | 0.1433388700000000071 | 1.0 | +| test.c:415:60:415:69 | 0.3527920299999999787 | 1.0 | +| test.c:415:73:415:82 | 0.3920645799999999959 | 1.0 | +| test.c:415:86:415:95 | 0.2154022499999999896 | 1.0 | +| test.c:415:99:415:108 | 0.4049680500000000238 | 1.0 | +| test.c:416:14:416:14 | m | 2.0 | +| test.c:416:14:416:108 | ... ? ... : ... | 1.0 | +| test.c:416:18:416:18 | n | 3.0 | +| test.c:416:18:416:95 | ... ? ... : ... | 1.0 | +| test.c:416:22:416:22 | o | 3.0 | +| test.c:416:22:416:82 | ... ? ... : ... | 1.0 | +| test.c:416:26:416:26 | p | 3.0 | +| test.c:416:26:416:69 | ... ? ... : ... | 1.0 | +| test.c:416:30:416:30 | q | 3.0 | +| test.c:416:30:416:56 | ... ? ... : ... | 1.0 | +| test.c:416:34:416:43 | 0.3418334800000000229 | 1.0 | +| test.c:416:47:416:56 | 0.3533464000000000049 | 1.0 | +| test.c:416:60:416:69 | 0.2224785300000000077 | 1.0 | +| test.c:416:73:416:82 | 0.326618929999999974 | 1.0 | +| test.c:416:86:416:95 | 0.5927046500000000551 | 1.0 | +| test.c:416:99:416:108 | 0.5297741000000000255 | 1.0 | +| test.c:417:14:417:14 | m | 4.0 | +| test.c:417:14:417:108 | ... ? ... : ... | 1.0 | +| test.c:417:18:417:18 | n | 9.0 | +| test.c:417:18:417:95 | ... ? ... : ... | 1.0 | +| test.c:417:22:417:22 | o | 9.0 | +| test.c:417:22:417:82 | ... ? ... : ... | 1.0 | +| test.c:417:26:417:26 | p | 9.0 | +| test.c:417:26:417:69 | ... ? ... : ... | 1.0 | +| test.c:417:30:417:30 | q | 9.0 | +| test.c:417:30:417:56 | ... ? ... : ... | 1.0 | +| test.c:417:34:417:43 | 0.774296030000000024 | 1.0 | +| test.c:417:47:417:56 | 0.3147808400000000062 | 1.0 | +| test.c:417:60:417:69 | 0.3123551399999999756 | 1.0 | +| test.c:417:73:417:82 | 0.05121255999999999725 | 1.0 | +| test.c:417:86:417:95 | 0.7931074500000000471 | 1.0 | +| test.c:417:99:417:108 | 0.6798145100000000385 | 1.0 | +| test.c:418:14:418:14 | m | 8.0 | +| test.c:418:14:418:108 | ... ? ... : ... | 1.0 | +| test.c:418:18:418:18 | n | 27.0 | +| test.c:418:18:418:95 | ... ? ... : ... | 1.0 | +| test.c:418:22:418:22 | o | 27.0 | +| test.c:418:22:418:82 | ... ? ... : ... | 1.0 | +| test.c:418:26:418:26 | p | 27.0 | +| test.c:418:26:418:69 | ... ? ... : ... | 1.0 | +| test.c:418:30:418:30 | q | 27.0 | +| test.c:418:30:418:56 | ... ? ... : ... | 1.0 | +| test.c:418:34:418:43 | 0.4472955599999999809 | 1.0 | +| test.c:418:47:418:56 | 0.8059920200000000312 | 1.0 | +| test.c:418:60:418:69 | 0.9899726199999999698 | 1.0 | +| test.c:418:73:418:82 | 0.5995273199999999747 | 1.0 | +| test.c:418:86:418:95 | 0.3697694799999999837 | 1.0 | +| test.c:418:99:418:108 | 0.8386683499999999514 | 1.0 | +| test.c:419:14:419:14 | m | 16.0 | +| test.c:419:14:419:108 | ... ? ... : ... | 1.0 | +| test.c:419:18:419:18 | n | 81.0 | +| test.c:419:18:419:95 | ... ? ... : ... | 1.0 | +| test.c:419:22:419:22 | o | 81.0 | +| test.c:419:22:419:82 | ... ? ... : ... | 1.0 | +| test.c:419:26:419:26 | p | 81.0 | +| test.c:419:26:419:69 | ... ? ... : ... | 1.0 | +| test.c:419:30:419:30 | q | 81.0 | +| test.c:419:30:419:56 | ... ? ... : ... | 1.0 | +| test.c:419:34:419:43 | 0.4931182800000000199 | 1.0 | +| test.c:419:47:419:56 | 0.9038991100000000056 | 1.0 | +| test.c:419:60:419:69 | 0.1059771199999999941 | 1.0 | +| test.c:419:73:419:82 | 0.2177842600000000073 | 1.0 | +| test.c:419:86:419:95 | 0.7248596600000000167 | 1.0 | +| test.c:419:99:419:108 | 0.6873487400000000136 | 1.0 | +| test.c:420:14:420:14 | m | 32.0 | +| test.c:420:14:420:108 | ... ? ... : ... | 1.0 | +| test.c:420:18:420:18 | n | 243.0 | +| test.c:420:18:420:95 | ... ? ... : ... | 1.0 | +| test.c:420:22:420:22 | o | 243.0 | +| test.c:420:22:420:82 | ... ? ... : ... | 1.0 | +| test.c:420:26:420:26 | p | 243.0 | +| test.c:420:26:420:69 | ... ? ... : ... | 1.0 | +| test.c:420:30:420:30 | q | 243.0 | +| test.c:420:30:420:56 | ... ? ... : ... | 1.0 | +| test.c:420:34:420:43 | 0.4745284799999999747 | 1.0 | +| test.c:420:47:420:56 | 0.107866500000000004 | 1.0 | +| test.c:420:60:420:69 | 0.1188457599999999947 | 1.0 | +| test.c:420:73:420:82 | 0.7616405200000000431 | 1.0 | +| test.c:420:86:420:95 | 0.3480889200000000239 | 1.0 | +| test.c:420:99:420:108 | 0.584408649999999974 | 1.0 | +| test.c:421:14:421:14 | m | 64.0 | +| test.c:421:14:421:108 | ... ? ... : ... | 1.0 | +| test.c:421:18:421:18 | n | 729.0 | +| test.c:421:18:421:95 | ... ? ... : ... | 1.0 | +| test.c:421:22:421:22 | o | 729.0 | +| test.c:421:22:421:82 | ... ? ... : ... | 1.0 | +| test.c:421:26:421:26 | p | 729.0 | +| test.c:421:26:421:69 | ... ? ... : ... | 1.0 | +| test.c:421:30:421:30 | q | 729.0 | +| test.c:421:30:421:56 | ... ? ... : ... | 1.0 | +| test.c:421:34:421:43 | 0.02524326 | 1.0 | +| test.c:421:47:421:56 | 0.8290504600000000446 | 1.0 | +| test.c:421:60:421:69 | 0.95823075000000002 | 1.0 | +| test.c:421:73:421:82 | 0.1251655799999999985 | 1.0 | +| test.c:421:86:421:95 | 0.8523517900000000536 | 1.0 | +| test.c:421:99:421:108 | 0.3623238400000000081 | 1.0 | +| test.c:422:14:422:14 | m | 128.0 | +| test.c:422:14:422:108 | ... ? ... : ... | 1.0 | +| test.c:422:18:422:18 | n | 2187.0 | +| test.c:422:18:422:95 | ... ? ... : ... | 1.0 | +| test.c:422:22:422:22 | o | 2187.0 | +| test.c:422:22:422:82 | ... ? ... : ... | 1.0 | +| test.c:422:26:422:26 | p | 2187.0 | +| test.c:422:26:422:69 | ... ? ... : ... | 1.0 | +| test.c:422:30:422:30 | q | 2187.0 | +| test.c:422:30:422:56 | ... ? ... : ... | 1.0 | +| test.c:422:34:422:43 | 0.3870862600000000153 | 1.0 | +| test.c:422:47:422:56 | 0.3287604399999999871 | 1.0 | +| test.c:422:60:422:69 | 0.1496348500000000137 | 1.0 | +| test.c:422:73:422:82 | 0.4504110800000000192 | 1.0 | +| test.c:422:86:422:95 | 0.4864090899999999884 | 1.0 | +| test.c:422:99:422:108 | 0.8433127200000000157 | 1.0 | +| test.c:423:14:423:14 | m | 256.0 | +| test.c:423:14:423:108 | ... ? ... : ... | 1.0 | +| test.c:423:18:423:18 | n | 6561.0 | +| test.c:423:18:423:95 | ... ? ... : ... | 1.0 | +| test.c:423:22:423:22 | o | 6561.0 | +| test.c:423:22:423:82 | ... ? ... : ... | 1.0 | +| test.c:423:26:423:26 | p | 6561.0 | +| test.c:423:26:423:69 | ... ? ... : ... | 1.0 | +| test.c:423:30:423:30 | q | 6561.0 | +| test.c:423:30:423:56 | ... ? ... : ... | 1.0 | +| test.c:423:34:423:43 | 0.1575506299999999971 | 1.0 | +| test.c:423:47:423:56 | 0.7708683299999999905 | 1.0 | +| test.c:423:60:423:69 | 0.2642848099999999811 | 1.0 | +| test.c:423:73:423:82 | 0.1480050800000000111 | 1.0 | +| test.c:423:86:423:95 | 0.374281430000000026 | 1.0 | +| test.c:423:99:423:108 | 0.05328182000000000057 | 1.0 | +| test.c:424:14:424:14 | m | 512.0 | +| test.c:424:14:424:108 | ... ? ... : ... | 1.0 | +| test.c:424:18:424:18 | n | 19683.0 | +| test.c:424:18:424:95 | ... ? ... : ... | 1.0 | +| test.c:424:22:424:22 | o | 19683.0 | +| test.c:424:22:424:82 | ... ? ... : ... | 1.0 | +| test.c:424:26:424:26 | p | 19683.0 | +| test.c:424:26:424:69 | ... ? ... : ... | 1.0 | +| test.c:424:30:424:30 | q | 19683.0 | +| test.c:424:30:424:56 | ... ? ... : ... | 1.0 | +| test.c:424:34:424:43 | 0.4173653600000000186 | 1.0 | +| test.c:424:47:424:56 | 0.7682662799999999681 | 1.0 | +| test.c:424:60:424:69 | 0.2764323799999999776 | 1.0 | +| test.c:424:73:424:82 | 0.5567927400000000082 | 1.0 | +| test.c:424:86:424:95 | 0.3946885700000000163 | 1.0 | +| test.c:424:99:424:108 | 0.6907214400000000198 | 1.0 | +| test.c:425:14:425:14 | m | 1024.0 | +| test.c:425:14:425:108 | ... ? ... : ... | 1.0 | +| test.c:425:18:425:18 | n | 59049.0 | +| test.c:425:18:425:95 | ... ? ... : ... | 1.0 | +| test.c:425:22:425:22 | o | 59049.0 | +| test.c:425:22:425:82 | ... ? ... : ... | 1.0 | +| test.c:425:26:425:26 | p | 59049.0 | +| test.c:425:26:425:69 | ... ? ... : ... | 1.0 | +| test.c:425:30:425:30 | q | 59049.0 | +| test.c:425:30:425:56 | ... ? ... : ... | 1.0 | +| test.c:425:34:425:43 | 0.8895534499999999678 | 1.0 | +| test.c:425:47:425:56 | 0.2990482400000000207 | 1.0 | +| test.c:425:60:425:69 | 0.7624258299999999711 | 1.0 | +| test.c:425:73:425:82 | 0.2051910999999999874 | 1.0 | +| test.c:425:86:425:95 | 0.8874555899999999609 | 1.0 | +| test.c:425:99:425:108 | 0.8137279800000000174 | 1.0 | +| test.c:426:14:426:14 | m | 2048.0 | +| test.c:426:14:426:108 | ... ? ... : ... | 1.0 | +| test.c:426:18:426:18 | n | 177147.0 | +| test.c:426:18:426:95 | ... ? ... : ... | 1.0 | +| test.c:426:22:426:22 | o | 177147.0 | +| test.c:426:22:426:82 | ... ? ... : ... | 1.0 | +| test.c:426:26:426:26 | p | 177147.0 | +| test.c:426:26:426:69 | ... ? ... : ... | 1.0 | +| test.c:426:30:426:30 | q | 177147.0 | +| test.c:426:30:426:56 | ... ? ... : ... | 1.0 | +| test.c:426:34:426:43 | 0.4218627600000000033 | 1.0 | +| test.c:426:47:426:56 | 0.5384335799999999672 | 1.0 | +| test.c:426:60:426:69 | 0.4499667900000000054 | 1.0 | +| test.c:426:73:426:82 | 0.1320411400000000013 | 1.0 | +| test.c:426:86:426:95 | 0.5203124099999999475 | 1.0 | +| test.c:426:99:426:108 | 0.4276264699999999808 | 1.0 | +| test.c:432:19:432:19 | a | 1.0 | +| test.c:432:19:432:23 | ... + ... | 1.0 | +| test.c:432:19:432:27 | ... + ... | 1.0 | +| test.c:432:19:432:31 | ... + ... | 1.0 | +| test.c:432:19:432:35 | ... + ... | 1.0 | +| test.c:432:19:432:39 | ... + ... | 1.0 | +| test.c:432:19:432:43 | ... + ... | 1.0 | +| test.c:432:19:432:47 | ... + ... | 1.0 | +| test.c:432:19:432:51 | ... + ... | 1.0 | +| test.c:432:19:432:55 | ... + ... | 1.0 | +| test.c:432:19:432:59 | ... + ... | 1.0 | +| test.c:432:19:432:63 | ... + ... | 1.0 | +| test.c:432:23:432:23 | b | 1.0 | +| test.c:432:27:432:27 | c | 1.0 | +| test.c:432:31:432:31 | d | 1.0 | +| test.c:432:35:432:35 | e | 1.0 | +| test.c:432:39:432:39 | f | 1.0 | +| test.c:432:43:432:43 | g | 1.0 | +| test.c:432:47:432:47 | h | 1.0 | +| test.c:432:51:432:51 | i | 1.0 | +| test.c:432:55:432:55 | j | 1.0 | +| test.c:432:59:432:59 | k | 1.0 | +| test.c:432:63:432:63 | l | 1.0 | +| test.c:434:10:434:15 | output | 1.0 | +| test.c:441:7:441:9 | rhs | 1.0 | +| test.c:441:7:441:14 | ... < ... | 1.0 | +| test.c:441:13:441:14 | 12 | 1.0 | +| test.c:441:13:441:14 | (unsigned int)... | 1.0 | +| test.c:441:19:441:21 | rhs | 1.0 | +| test.c:441:19:441:26 | ... << ... | 1.0 | +| test.c:441:26:441:26 | 1 | 1.0 | +| test.c:442:7:442:9 | rhs | 2.0 | +| test.c:442:7:442:14 | ... < ... | 1.0 | +| test.c:442:13:442:14 | 13 | 1.0 | +| test.c:442:13:442:14 | (unsigned int)... | 1.0 | +| test.c:442:19:442:21 | rhs | 2.0 | +| test.c:442:19:442:26 | ... << ... | 1.0 | +| test.c:442:26:442:26 | 1 | 1.0 | +| test.c:443:7:443:9 | rhs | 3.0 | +| test.c:443:7:443:14 | ... < ... | 1.0 | +| test.c:443:13:443:14 | 14 | 1.0 | +| test.c:443:13:443:14 | (unsigned int)... | 1.0 | +| test.c:443:19:443:21 | rhs | 3.0 | +| test.c:443:19:443:26 | ... << ... | 1.0 | +| test.c:443:26:443:26 | 1 | 1.0 | +| test.c:444:7:444:9 | rhs | 4.0 | +| test.c:444:7:444:14 | ... < ... | 1.0 | +| test.c:444:13:444:14 | 15 | 1.0 | +| test.c:444:13:444:14 | (unsigned int)... | 1.0 | +| test.c:444:19:444:21 | rhs | 4.0 | +| test.c:444:19:444:26 | ... << ... | 1.0 | +| test.c:444:26:444:26 | 1 | 1.0 | +| test.c:445:7:445:9 | rhs | 5.0 | +| test.c:445:7:445:14 | ... < ... | 1.0 | +| test.c:445:13:445:14 | 16 | 1.0 | +| test.c:445:13:445:14 | (unsigned int)... | 1.0 | +| test.c:445:19:445:21 | rhs | 5.0 | +| test.c:445:19:445:26 | ... << ... | 1.0 | +| test.c:445:26:445:26 | 1 | 1.0 | +| test.c:446:10:446:12 | (int)... | 6.0 | +| test.c:446:10:446:12 | rhs | 6.0 | +| test.c:450:7:450:7 | a | 1.0 | +| test.c:450:7:450:13 | ... == ... | 1.0 | +| test.c:450:12:450:13 | 17 | 1.0 | +| test.c:451:9:451:9 | b | 1.0 | +| test.c:451:9:451:15 | ... == ... | 1.0 | +| test.c:451:14:451:15 | 23 | 1.0 | +| test.c:452:7:452:7 | a | 1.0 | +| test.c:452:7:452:12 | ... += ... | 1.0 | +| test.c:452:12:452:12 | b | 1.0 | +| test.c:454:9:454:9 | a | 2.0 | +| test.c:454:9:454:15 | ... == ... | 1.0 | +| test.c:454:14:454:15 | 18 | 1.0 | +| test.c:455:7:455:7 | b | 1.0 | +| test.c:455:7:455:12 | ... = ... | 1.0 | +| test.c:455:11:455:12 | 10 | 1.0 | +| test.c:460:11:460:11 | a | 4.0 | +| test.c:460:11:460:15 | ... + ... | 16.0 | +| test.c:460:15:460:15 | b | 4.0 | +| test.c:461:10:461:10 | a | 4.0 | +| test.c:461:10:461:14 | ... + ... | 16.0 | +| test.c:461:14:461:14 | b | 4.0 | +| test.c:468:4:470:50 | (...) | 1.0 | +| test.c:468:4:553:26 | ... > ... | 1.0 | +| test.c:468:4:642:27 | ... ? ... : ... | 1.297918419127476E201 | +| test.c:468:5:468:6 | 14 | 1.0 | +| test.c:468:5:468:6 | (unsigned int)... | 1.0 | +| test.c:468:5:468:11 | ... * ... | 1.0 | +| test.c:468:5:468:55 | ... > ... | 1.0 | +| test.c:468:5:470:49 | ... ? ... : ... | 1.0 | +| test.c:468:10:468:11 | ip | 1.0 | +| test.c:468:15:468:26 | (...) | 1.0 | +| test.c:468:15:468:31 | ... * ... | 1.0 | +| test.c:468:15:468:55 | ... + ... | 1.0 | +| test.c:468:16:468:16 | 2 | 1.0 | +| test.c:468:16:468:16 | (unsigned int)... | 1.0 | +| test.c:468:16:468:21 | ... * ... | 1.0 | +| test.c:468:16:468:25 | ... + ... | 1.0 | +| test.c:468:20:468:21 | ip | 1.0 | +| test.c:468:25:468:25 | 1 | 1.0 | +| test.c:468:25:468:25 | (unsigned int)... | 1.0 | +| test.c:468:30:468:31 | 17 | 1.0 | +| test.c:468:30:468:31 | (unsigned int)... | 1.0 | +| test.c:468:35:468:50 | (...) | 1.0 | +| test.c:468:35:468:55 | ... * ... | 1.0 | +| test.c:468:36:468:36 | 2 | 1.0 | +| test.c:468:36:468:36 | (unsigned int)... | 1.0 | +| test.c:468:36:468:41 | ... * ... | 1.0 | +| test.c:468:36:468:45 | ... + ... | 1.0 | +| test.c:468:36:468:49 | ... + ... | 1.0 | +| test.c:468:40:468:41 | ip | 1.0 | +| test.c:468:45:468:45 | 1 | 1.0 | +| test.c:468:45:468:45 | (unsigned int)... | 1.0 | +| test.c:468:49:468:49 | 1 | 1.0 | +| test.c:468:49:468:49 | (unsigned int)... | 1.0 | +| test.c:468:54:468:55 | 17 | 1.0 | +| test.c:468:54:468:55 | (unsigned int)... | 1.0 | +| test.c:469:9:469:10 | 14 | 1.0 | +| test.c:469:9:469:10 | (unsigned int)... | 1.0 | +| test.c:469:9:469:15 | ... * ... | 1.0 | +| test.c:469:14:469:15 | ip | 1.0 | +| test.c:470:9:470:20 | (...) | 1.0 | +| test.c:470:9:470:25 | ... * ... | 1.0 | +| test.c:470:9:470:49 | ... + ... | 1.0 | +| test.c:470:10:470:10 | 2 | 1.0 | +| test.c:470:10:470:10 | (unsigned int)... | 1.0 | +| test.c:470:10:470:15 | ... * ... | 1.0 | +| test.c:470:10:470:19 | ... + ... | 1.0 | +| test.c:470:14:470:15 | ip | 1.0 | +| test.c:470:19:470:19 | 1 | 1.0 | +| test.c:470:19:470:19 | (unsigned int)... | 1.0 | +| test.c:470:24:470:25 | 14 | 1.0 | +| test.c:470:24:470:25 | (unsigned int)... | 1.0 | +| test.c:470:29:470:44 | (...) | 1.0 | +| test.c:470:29:470:49 | ... * ... | 1.0 | +| test.c:470:30:470:30 | 2 | 1.0 | +| test.c:470:30:470:30 | (unsigned int)... | 1.0 | +| test.c:470:30:470:35 | ... * ... | 1.0 | +| test.c:470:30:470:39 | ... + ... | 1.0 | +| test.c:470:30:470:43 | ... + ... | 1.0 | +| test.c:470:34:470:35 | ip | 1.0 | +| test.c:470:39:470:39 | 1 | 1.0 | +| test.c:470:39:470:39 | (unsigned int)... | 1.0 | +| test.c:470:43:470:43 | 1 | 1.0 | +| test.c:470:43:470:43 | (unsigned int)... | 1.0 | +| test.c:470:48:470:49 | 17 | 1.0 | +| test.c:470:48:470:49 | (unsigned int)... | 1.0 | +| test.c:471:5:553:26 | (...) | 9.29462083211502E84 | +| test.c:471:6:471:6 | 2 | 1.0 | +| test.c:471:6:471:6 | (unsigned int)... | 1.0 | +| test.c:471:6:471:23 | ... * ... | 2.0 | +| test.c:471:6:490:42 | ... + ... | 4.524508125E10 | +| test.c:471:6:510:24 | ... > ... | 1.0 | +| test.c:471:6:553:25 | ... ? ... : ... | 9.29462083211502E84 | +| test.c:471:10:471:23 | (...) | 2.0 | +| test.c:471:11:471:12 | ip | 2.0 | +| test.c:471:11:471:17 | ... * ... | 2.0 | +| test.c:471:11:471:22 | ... + ... | 2.0 | +| test.c:471:16:471:17 | 14 | 1.0 | +| test.c:471:16:471:17 | (unsigned int)... | 1.0 | +| test.c:471:21:471:22 | 32 | 1.0 | | test.c:471:21:471:22 | (unsigned int)... | 1.0 | -| test.c:471:26:471:27 | 32 | 1.0 | -| test.c:471:26:471:27 | (unsigned int)... | 1.0 | -| test.c:472:11:472:11 | 2 | 1.0 | -| test.c:472:11:472:11 | (unsigned int)... | 1.0 | -| test.c:472:11:472:28 | ... * ... | 15.0 | -| test.c:472:15:472:28 | (...) | 15.0 | -| test.c:472:16:472:17 | ip | 15.0 | -| test.c:472:16:472:22 | ... * ... | 15.0 | -| test.c:472:16:472:27 | ... + ... | 15.0 | -| test.c:472:21:472:22 | 14 | 1.0 | -| test.c:472:21:472:22 | (unsigned int)... | 1.0 | -| test.c:472:26:472:27 | 64 | 1.0 | -| test.c:472:26:472:27 | (unsigned int)... | 1.0 | -| test.c:473:11:478:24 | (...) | 29791.0 | -| test.c:473:12:473:23 | (...) | 15.0 | -| test.c:473:12:473:28 | ... * ... | 15.0 | -| test.c:473:12:474:61 | ... > ... | 1.0 | -| test.c:473:12:478:23 | ... ? ... : ... | 29791.0 | -| test.c:473:13:473:13 | 2 | 1.0 | -| test.c:473:13:473:13 | (unsigned int)... | 1.0 | -| test.c:473:13:473:18 | ... * ... | 15.0 | -| test.c:473:13:473:22 | ... + ... | 15.0 | -| test.c:473:17:473:18 | ip | 15.0 | -| test.c:473:22:473:22 | 1 | 1.0 | -| test.c:473:22:473:22 | (unsigned int)... | 1.0 | -| test.c:473:27:473:28 | 14 | 1.0 | -| test.c:473:27:473:28 | (unsigned int)... | 1.0 | -| test.c:474:11:474:61 | (...) | 225.0 | -| test.c:474:12:474:13 | 14 | 1.0 | -| test.c:474:12:474:13 | (unsigned int)... | 1.0 | -| test.c:474:12:474:24 | ... * ... | 15.0 | -| test.c:474:12:474:34 | ... > ... | 1.0 | -| test.c:474:12:474:60 | ... ? ... : ... | 225.0 | -| test.c:474:17:474:24 | (...) | 15.0 | -| test.c:474:18:474:18 | 2 | 1.0 | -| test.c:474:18:474:18 | (unsigned int)... | 1.0 | -| test.c:474:18:474:23 | ... * ... | 15.0 | -| test.c:474:22:474:23 | ip | 15.0 | -| test.c:474:28:474:29 | 17 | 1.0 | -| test.c:474:28:474:29 | (unsigned int)... | 1.0 | -| test.c:474:28:474:34 | ... * ... | 15.0 | -| test.c:474:33:474:34 | ip | 15.0 | -| test.c:474:38:474:39 | 17 | 1.0 | -| test.c:474:38:474:39 | (unsigned int)... | 1.0 | -| test.c:474:38:474:50 | ... * ... | 15.0 | -| test.c:474:43:474:50 | (...) | 15.0 | -| test.c:474:44:474:44 | 2 | 1.0 | -| test.c:474:44:474:44 | (unsigned int)... | 1.0 | -| test.c:474:44:474:49 | ... * ... | 15.0 | -| test.c:474:48:474:49 | ip | 15.0 | -| test.c:474:54:474:55 | 17 | 1.0 | -| test.c:474:54:474:55 | (unsigned int)... | 1.0 | -| test.c:474:54:474:60 | ... * ... | 15.0 | -| test.c:474:59:474:60 | ip | 15.0 | -| test.c:475:15:475:26 | (...) | 31.0 | -| test.c:475:15:475:31 | ... * ... | 31.0 | -| test.c:475:16:475:16 | 2 | 1.0 | -| test.c:475:16:475:16 | (unsigned int)... | 1.0 | -| test.c:475:16:475:21 | ... * ... | 31.0 | -| test.c:475:16:475:25 | ... + ... | 31.0 | -| test.c:475:20:475:21 | ip | 31.0 | -| test.c:475:25:475:25 | 1 | 1.0 | -| test.c:475:25:475:25 | (unsigned int)... | 1.0 | -| test.c:475:30:475:31 | 14 | 1.0 | -| test.c:475:30:475:31 | (unsigned int)... | 1.0 | -| test.c:476:15:476:16 | 14 | 1.0 | -| test.c:476:15:476:16 | (unsigned int)... | 1.0 | -| test.c:476:15:476:27 | ... * ... | 31.0 | -| test.c:476:15:476:37 | ... > ... | 1.0 | -| test.c:476:15:478:23 | ... ? ... : ... | 961.0 | -| test.c:476:20:476:27 | (...) | 31.0 | -| test.c:476:21:476:21 | 2 | 1.0 | -| test.c:476:21:476:21 | (unsigned int)... | 1.0 | -| test.c:476:21:476:26 | ... * ... | 31.0 | -| test.c:476:25:476:26 | ip | 31.0 | -| test.c:476:31:476:32 | 17 | 1.0 | -| test.c:476:31:476:32 | (unsigned int)... | 1.0 | -| test.c:476:31:476:37 | ... * ... | 31.0 | -| test.c:476:36:476:37 | ip | 31.0 | -| test.c:477:17:477:18 | 14 | 1.0 | -| test.c:477:17:477:18 | (unsigned int)... | 1.0 | -| test.c:477:17:477:29 | ... * ... | 31.0 | -| test.c:477:22:477:29 | (...) | 31.0 | -| test.c:477:23:477:23 | 2 | 1.0 | -| test.c:477:23:477:23 | (unsigned int)... | 1.0 | -| test.c:477:23:477:28 | ... * ... | 31.0 | -| test.c:477:27:477:28 | ip | 31.0 | -| test.c:478:17:478:18 | 14 | 1.0 | -| test.c:478:17:478:18 | (unsigned int)... | 1.0 | -| test.c:478:17:478:23 | ... * ... | 31.0 | -| test.c:478:22:478:23 | ip | 31.0 | -| test.c:479:11:479:11 | 2 | 1.0 | -| test.c:479:11:479:11 | (unsigned int)... | 1.0 | -| test.c:479:11:479:16 | ... * ... | 15.0 | -| test.c:479:11:479:21 | ... * ... | 15.0 | -| test.c:479:11:479:41 | ... + ... | 225.0 | -| test.c:479:15:479:16 | ip | 15.0 | -| test.c:479:20:479:21 | 14 | 1.0 | -| test.c:479:20:479:21 | (unsigned int)... | 1.0 | -| test.c:479:25:479:36 | (...) | 15.0 | -| test.c:479:25:479:41 | ... * ... | 15.0 | -| test.c:479:26:479:26 | 2 | 1.0 | -| test.c:479:26:479:26 | (unsigned int)... | 1.0 | -| test.c:479:26:479:31 | ... * ... | 15.0 | -| test.c:479:26:479:35 | ... + ... | 15.0 | -| test.c:479:30:479:31 | ip | 15.0 | -| test.c:479:35:479:35 | 1 | 1.0 | -| test.c:479:35:479:35 | (unsigned int)... | 1.0 | -| test.c:479:40:479:41 | 17 | 1.0 | -| test.c:479:40:479:41 | (unsigned int)... | 1.0 | -| test.c:480:5:499:24 | (...) | 6.6142118960740864E25 | -| test.c:480:6:480:6 | 4 | 1.0 | -| test.c:480:6:480:6 | (unsigned int)... | 1.0 | -| test.c:480:6:480:23 | ... * ... | 108.0 | -| test.c:480:6:481:24 | ... + ... | 11664.0 | -| test.c:480:6:482:24 | ... + ... | 1259712.0 | -| test.c:480:6:487:20 | ... + ... | 1.2872131505856E13 | -| test.c:480:6:488:55 | ... > ... | 1.0 | -| test.c:480:6:499:23 | ... ? ... : ... | 6.6142118960740864E25 | -| test.c:480:10:480:23 | (...) | 108.0 | -| test.c:480:11:480:12 | ip | 108.0 | -| test.c:480:11:480:17 | ... * ... | 108.0 | -| test.c:480:11:480:22 | ... + ... | 108.0 | +| test.c:472:7:490:42 | (...) | 2.2622540625E10 | +| test.c:472:8:472:8 | 4 | 1.0 | +| test.c:472:8:472:8 | (unsigned int)... | 1.0 | +| test.c:472:8:472:25 | ... * ... | 2.0 | +| test.c:472:8:473:26 | ... + ... | 4.0 | +| test.c:472:8:474:26 | ... + ... | 8.0 | +| test.c:472:8:479:22 | ... + ... | 1000.0 | +| test.c:472:8:480:37 | ... > ... | 1.0 | +| test.c:472:8:490:41 | ... ? ... : ... | 2.2622540625E10 | +| test.c:472:12:472:25 | (...) | 2.0 | +| test.c:472:13:472:14 | ip | 2.0 | +| test.c:472:13:472:19 | ... * ... | 2.0 | +| test.c:472:13:472:24 | ... + ... | 2.0 | +| test.c:472:18:472:19 | 14 | 1.0 | +| test.c:472:18:472:19 | (unsigned int)... | 1.0 | +| test.c:472:23:472:24 | 32 | 1.0 | +| test.c:472:23:472:24 | (unsigned int)... | 1.0 | +| test.c:473:9:473:26 | (...) | 2.0 | +| test.c:473:10:473:10 | 2 | 1.0 | +| test.c:473:10:473:10 | (unsigned int)... | 1.0 | +| test.c:473:10:473:15 | ... * ... | 2.0 | +| test.c:473:10:473:20 | ... * ... | 2.0 | +| test.c:473:10:473:25 | ... + ... | 2.0 | +| test.c:473:14:473:15 | ip | 2.0 | +| test.c:473:19:473:20 | 14 | 1.0 | +| test.c:473:19:473:20 | (unsigned int)... | 1.0 | +| test.c:473:24:473:25 | 32 | 1.0 | +| test.c:473:24:473:25 | (unsigned int)... | 1.0 | +| test.c:474:9:474:9 | 2 | 1.0 | +| test.c:474:9:474:9 | (unsigned int)... | 1.0 | +| test.c:474:9:474:26 | ... * ... | 2.0 | +| test.c:474:13:474:26 | (...) | 2.0 | +| test.c:474:14:474:15 | ip | 2.0 | +| test.c:474:14:474:20 | ... * ... | 2.0 | +| test.c:474:14:474:25 | ... + ... | 2.0 | +| test.c:474:19:474:20 | 14 | 1.0 | +| test.c:474:19:474:20 | (unsigned int)... | 1.0 | +| test.c:474:24:474:25 | 64 | 1.0 | +| test.c:474:24:474:25 | (unsigned int)... | 1.0 | +| test.c:475:9:479:22 | (...) | 125.0 | +| test.c:475:10:475:21 | (...) | 2.0 | +| test.c:475:10:475:26 | ... * ... | 2.0 | +| test.c:475:10:475:80 | ... > ... | 1.0 | +| test.c:475:10:479:21 | ... ? ... : ... | 125.0 | +| test.c:475:11:475:11 | 2 | 1.0 | +| test.c:475:11:475:11 | (unsigned int)... | 1.0 | +| test.c:475:11:475:16 | ... * ... | 2.0 | +| test.c:475:11:475:20 | ... + ... | 2.0 | +| test.c:475:15:475:16 | ip | 2.0 | +| test.c:475:20:475:20 | 1 | 1.0 | +| test.c:475:20:475:20 | (unsigned int)... | 1.0 | +| test.c:475:25:475:26 | 14 | 1.0 | +| test.c:475:25:475:26 | (unsigned int)... | 1.0 | +| test.c:475:30:475:80 | (...) | 4.0 | +| test.c:475:31:475:32 | 17 | 1.0 | +| test.c:475:31:475:32 | (unsigned int)... | 1.0 | +| test.c:475:31:475:43 | ... * ... | 2.0 | +| test.c:475:31:475:53 | ... > ... | 1.0 | +| test.c:475:31:475:79 | ... ? ... : ... | 4.0 | +| test.c:475:36:475:43 | (...) | 2.0 | +| test.c:475:37:475:37 | 2 | 1.0 | +| test.c:475:37:475:37 | (unsigned int)... | 1.0 | +| test.c:475:37:475:42 | ... * ... | 2.0 | +| test.c:475:41:475:42 | ip | 2.0 | +| test.c:475:47:475:48 | 17 | 1.0 | +| test.c:475:47:475:48 | (unsigned int)... | 1.0 | +| test.c:475:47:475:53 | ... * ... | 2.0 | +| test.c:475:52:475:53 | ip | 2.0 | +| test.c:475:57:475:58 | 17 | 1.0 | +| test.c:475:57:475:58 | (unsigned int)... | 1.0 | +| test.c:475:57:475:69 | ... * ... | 2.0 | +| test.c:475:62:475:69 | (...) | 2.0 | +| test.c:475:63:475:63 | 2 | 1.0 | +| test.c:475:63:475:63 | (unsigned int)... | 1.0 | +| test.c:475:63:475:68 | ... * ... | 2.0 | +| test.c:475:67:475:68 | ip | 2.0 | +| test.c:475:73:475:74 | 17 | 1.0 | +| test.c:475:73:475:74 | (unsigned int)... | 1.0 | +| test.c:475:73:475:79 | ... * ... | 2.0 | +| test.c:475:78:475:79 | ip | 2.0 | +| test.c:476:13:476:24 | (...) | 5.0 | +| test.c:476:13:476:29 | ... * ... | 5.0 | +| test.c:476:14:476:14 | 2 | 1.0 | +| test.c:476:14:476:14 | (unsigned int)... | 1.0 | +| test.c:476:14:476:19 | ... * ... | 5.0 | +| test.c:476:14:476:23 | ... + ... | 5.0 | +| test.c:476:18:476:19 | ip | 5.0 | +| test.c:476:23:476:23 | 1 | 1.0 | +| test.c:476:23:476:23 | (unsigned int)... | 1.0 | +| test.c:476:28:476:29 | 14 | 1.0 | +| test.c:476:28:476:29 | (unsigned int)... | 1.0 | +| test.c:477:13:477:14 | 14 | 1.0 | +| test.c:477:13:477:14 | (unsigned int)... | 1.0 | +| test.c:477:13:477:25 | ... * ... | 5.0 | +| test.c:477:13:477:35 | ... > ... | 1.0 | +| test.c:477:13:479:21 | ... ? ... : ... | 25.0 | +| test.c:477:18:477:25 | (...) | 5.0 | +| test.c:477:19:477:19 | 2 | 1.0 | +| test.c:477:19:477:19 | (unsigned int)... | 1.0 | +| test.c:477:19:477:24 | ... * ... | 5.0 | +| test.c:477:23:477:24 | ip | 5.0 | +| test.c:477:29:477:30 | 17 | 1.0 | +| test.c:477:29:477:30 | (unsigned int)... | 1.0 | +| test.c:477:29:477:35 | ... * ... | 5.0 | +| test.c:477:34:477:35 | ip | 5.0 | +| test.c:478:15:478:16 | 14 | 1.0 | +| test.c:478:15:478:16 | (unsigned int)... | 1.0 | +| test.c:478:15:478:27 | ... * ... | 5.0 | +| test.c:478:20:478:27 | (...) | 5.0 | +| test.c:478:21:478:21 | 2 | 1.0 | +| test.c:478:21:478:21 | (unsigned int)... | 1.0 | +| test.c:478:21:478:26 | ... * ... | 5.0 | +| test.c:478:25:478:26 | ip | 5.0 | +| test.c:479:15:479:16 | 14 | 1.0 | +| test.c:479:15:479:16 | (unsigned int)... | 1.0 | +| test.c:479:15:479:21 | ... * ... | 5.0 | +| test.c:479:20:479:21 | ip | 5.0 | +| test.c:480:7:480:7 | 2 | 1.0 | +| test.c:480:7:480:7 | (unsigned int)... | 1.0 | +| test.c:480:7:480:12 | ... * ... | 15.0 | +| test.c:480:7:480:17 | ... * ... | 15.0 | +| test.c:480:7:480:37 | ... + ... | 225.0 | +| test.c:480:11:480:12 | ip | 15.0 | | test.c:480:16:480:17 | 14 | 1.0 | | test.c:480:16:480:17 | (unsigned int)... | 1.0 | -| test.c:480:21:480:22 | 32 | 1.0 | -| test.c:480:21:480:22 | (unsigned int)... | 1.0 | -| test.c:481:7:481:24 | (...) | 108.0 | -| test.c:481:8:481:8 | 2 | 1.0 | -| test.c:481:8:481:8 | (unsigned int)... | 1.0 | -| test.c:481:8:481:13 | ... * ... | 108.0 | -| test.c:481:8:481:18 | ... * ... | 108.0 | -| test.c:481:8:481:23 | ... + ... | 108.0 | -| test.c:481:12:481:13 | ip | 108.0 | -| test.c:481:17:481:18 | 14 | 1.0 | -| test.c:481:17:481:18 | (unsigned int)... | 1.0 | -| test.c:481:22:481:23 | 32 | 1.0 | -| test.c:481:22:481:23 | (unsigned int)... | 1.0 | -| test.c:482:7:482:7 | 2 | 1.0 | -| test.c:482:7:482:7 | (unsigned int)... | 1.0 | -| test.c:482:7:482:24 | ... * ... | 108.0 | -| test.c:482:11:482:24 | (...) | 108.0 | -| test.c:482:12:482:13 | ip | 108.0 | -| test.c:482:12:482:18 | ... * ... | 108.0 | -| test.c:482:12:482:23 | ... + ... | 108.0 | -| test.c:482:17:482:18 | 14 | 1.0 | -| test.c:482:17:482:18 | (unsigned int)... | 1.0 | -| test.c:482:22:482:23 | 64 | 1.0 | -| test.c:482:22:482:23 | (unsigned int)... | 1.0 | -| test.c:483:7:487:20 | (...) | 1.0218313E7 | -| test.c:483:8:483:19 | (...) | 108.0 | -| test.c:483:8:483:24 | ... * ... | 108.0 | -| test.c:483:8:483:78 | ... > ... | 1.0 | -| test.c:483:8:487:19 | ... ? ... : ... | 1.0218313E7 | -| test.c:483:9:483:9 | 2 | 1.0 | -| test.c:483:9:483:9 | (unsigned int)... | 1.0 | -| test.c:483:9:483:14 | ... * ... | 108.0 | -| test.c:483:9:483:18 | ... + ... | 108.0 | -| test.c:483:13:483:14 | ip | 108.0 | -| test.c:483:18:483:18 | 1 | 1.0 | -| test.c:483:18:483:18 | (unsigned int)... | 1.0 | -| test.c:483:23:483:24 | 14 | 1.0 | -| test.c:483:23:483:24 | (unsigned int)... | 1.0 | -| test.c:483:28:483:78 | (...) | 11664.0 | -| test.c:483:29:483:30 | 17 | 1.0 | -| test.c:483:29:483:30 | (unsigned int)... | 1.0 | -| test.c:483:29:483:41 | ... * ... | 108.0 | -| test.c:483:29:483:51 | ... > ... | 1.0 | -| test.c:483:29:483:77 | ... ? ... : ... | 11664.0 | -| test.c:483:34:483:41 | (...) | 108.0 | -| test.c:483:35:483:35 | 2 | 1.0 | -| test.c:483:35:483:35 | (unsigned int)... | 1.0 | -| test.c:483:35:483:40 | ... * ... | 108.0 | -| test.c:483:39:483:40 | ip | 108.0 | -| test.c:483:45:483:46 | 17 | 1.0 | -| test.c:483:45:483:46 | (unsigned int)... | 1.0 | -| test.c:483:45:483:51 | ... * ... | 108.0 | -| test.c:483:50:483:51 | ip | 108.0 | -| test.c:483:55:483:56 | 17 | 1.0 | -| test.c:483:55:483:56 | (unsigned int)... | 1.0 | -| test.c:483:55:483:67 | ... * ... | 108.0 | -| test.c:483:60:483:67 | (...) | 108.0 | -| test.c:483:61:483:61 | 2 | 1.0 | -| test.c:483:61:483:61 | (unsigned int)... | 1.0 | -| test.c:483:61:483:66 | ... * ... | 108.0 | -| test.c:483:65:483:66 | ip | 108.0 | -| test.c:483:71:483:72 | 17 | 1.0 | -| test.c:483:71:483:72 | (unsigned int)... | 1.0 | -| test.c:483:71:483:77 | ... * ... | 108.0 | -| test.c:483:76:483:77 | ip | 108.0 | -| test.c:484:11:484:22 | (...) | 217.0 | -| test.c:484:11:484:27 | ... * ... | 217.0 | -| test.c:484:12:484:12 | 2 | 1.0 | -| test.c:484:12:484:12 | (unsigned int)... | 1.0 | -| test.c:484:12:484:17 | ... * ... | 217.0 | -| test.c:484:12:484:21 | ... + ... | 217.0 | -| test.c:484:16:484:17 | ip | 217.0 | -| test.c:484:21:484:21 | 1 | 1.0 | -| test.c:484:21:484:21 | (unsigned int)... | 1.0 | -| test.c:484:26:484:27 | 14 | 1.0 | -| test.c:484:26:484:27 | (unsigned int)... | 1.0 | -| test.c:485:11:485:12 | 14 | 1.0 | -| test.c:485:11:485:12 | (unsigned int)... | 1.0 | -| test.c:485:11:485:23 | ... * ... | 217.0 | -| test.c:485:11:485:33 | ... > ... | 1.0 | -| test.c:485:11:487:19 | ... ? ... : ... | 47089.0 | -| test.c:485:16:485:23 | (...) | 217.0 | -| test.c:485:17:485:17 | 2 | 1.0 | -| test.c:485:17:485:17 | (unsigned int)... | 1.0 | -| test.c:485:17:485:22 | ... * ... | 217.0 | -| test.c:485:21:485:22 | ip | 217.0 | -| test.c:485:27:485:28 | 17 | 1.0 | -| test.c:485:27:485:28 | (unsigned int)... | 1.0 | -| test.c:485:27:485:33 | ... * ... | 217.0 | -| test.c:485:32:485:33 | ip | 217.0 | -| test.c:486:13:486:14 | 14 | 1.0 | -| test.c:486:13:486:14 | (unsigned int)... | 1.0 | -| test.c:486:13:486:25 | ... * ... | 217.0 | -| test.c:486:18:486:25 | (...) | 217.0 | -| test.c:486:19:486:19 | 2 | 1.0 | -| test.c:486:19:486:19 | (unsigned int)... | 1.0 | -| test.c:486:19:486:24 | ... * ... | 217.0 | -| test.c:486:23:486:24 | ip | 217.0 | -| test.c:487:13:487:14 | 14 | 1.0 | -| test.c:487:13:487:14 | (unsigned int)... | 1.0 | -| test.c:487:13:487:19 | ... * ... | 217.0 | -| test.c:487:18:487:19 | ip | 217.0 | -| test.c:488:5:488:55 | (...) | 423801.0 | -| test.c:488:6:488:7 | 14 | 1.0 | -| test.c:488:6:488:7 | (unsigned int)... | 1.0 | -| test.c:488:6:488:12 | ... * ... | 651.0 | -| test.c:488:6:488:28 | ... > ... | 1.0 | -| test.c:488:6:488:54 | ... ? ... : ... | 423801.0 | -| test.c:488:11:488:12 | ip | 651.0 | -| test.c:488:16:488:23 | (...) | 651.0 | -| test.c:488:16:488:28 | ... * ... | 651.0 | -| test.c:488:17:488:18 | ip | 651.0 | -| test.c:488:17:488:22 | ... + ... | 651.0 | -| test.c:488:22:488:22 | 1 | 1.0 | -| test.c:488:22:488:22 | (unsigned int)... | 1.0 | -| test.c:488:27:488:28 | 17 | 1.0 | -| test.c:488:27:488:28 | (unsigned int)... | 1.0 | -| test.c:488:32:488:33 | 17 | 1.0 | -| test.c:488:32:488:33 | (unsigned int)... | 1.0 | -| test.c:488:32:488:38 | ... * ... | 651.0 | -| test.c:488:37:488:38 | ip | 651.0 | -| test.c:488:42:488:49 | (...) | 651.0 | -| test.c:488:42:488:54 | ... * ... | 651.0 | -| test.c:488:43:488:44 | ip | 651.0 | -| test.c:488:43:488:48 | ... + ... | 651.0 | -| test.c:488:48:488:48 | 1 | 1.0 | -| test.c:488:48:488:48 | (unsigned int)... | 1.0 | -| test.c:488:53:488:54 | 17 | 1.0 | -| test.c:488:53:488:54 | (unsigned int)... | 1.0 | -| test.c:489:9:489:9 | 4 | 1.0 | -| test.c:489:9:489:9 | (unsigned int)... | 1.0 | -| test.c:489:9:489:26 | ... * ... | 1302.0 | -| test.c:489:9:490:26 | ... + ... | 1695204.0 | -| test.c:489:9:491:26 | ... + ... | 2.207155608E9 | -| test.c:489:9:496:22 | ... + ... | 3.9017203216097214E19 | -| test.c:489:13:489:26 | (...) | 1302.0 | -| test.c:489:14:489:15 | ip | 1302.0 | -| test.c:489:14:489:20 | ... * ... | 1302.0 | -| test.c:489:14:489:25 | ... + ... | 1302.0 | -| test.c:489:19:489:20 | 14 | 1.0 | -| test.c:489:19:489:20 | (unsigned int)... | 1.0 | -| test.c:489:24:489:25 | 32 | 1.0 | -| test.c:489:24:489:25 | (unsigned int)... | 1.0 | -| test.c:490:9:490:26 | (...) | 1302.0 | -| test.c:490:10:490:10 | 2 | 1.0 | -| test.c:490:10:490:10 | (unsigned int)... | 1.0 | -| test.c:490:10:490:15 | ... * ... | 1302.0 | -| test.c:490:10:490:20 | ... * ... | 1302.0 | -| test.c:490:10:490:25 | ... + ... | 1302.0 | -| test.c:490:14:490:15 | ip | 1302.0 | -| test.c:490:19:490:20 | 14 | 1.0 | -| test.c:490:19:490:20 | (unsigned int)... | 1.0 | -| test.c:490:24:490:25 | 32 | 1.0 | -| test.c:490:24:490:25 | (unsigned int)... | 1.0 | -| test.c:491:9:491:9 | 2 | 1.0 | -| test.c:491:9:491:9 | (unsigned int)... | 1.0 | -| test.c:491:9:491:26 | ... * ... | 1302.0 | -| test.c:491:13:491:26 | (...) | 1302.0 | -| test.c:491:14:491:15 | ip | 1302.0 | -| test.c:491:14:491:20 | ... * ... | 1302.0 | -| test.c:491:14:491:25 | ... + ... | 1302.0 | -| test.c:491:19:491:20 | 14 | 1.0 | -| test.c:491:19:491:20 | (unsigned int)... | 1.0 | -| test.c:491:24:491:25 | 64 | 1.0 | -| test.c:491:24:491:25 | (unsigned int)... | 1.0 | -| test.c:492:9:496:22 | (...) | 1.7677595125E10 | -| test.c:492:10:492:21 | (...) | 1302.0 | -| test.c:492:10:492:26 | ... * ... | 1302.0 | -| test.c:492:10:492:80 | ... > ... | 1.0 | -| test.c:492:10:496:21 | ... ? ... : ... | 1.7677595125E10 | -| test.c:492:11:492:11 | 2 | 1.0 | -| test.c:492:11:492:11 | (unsigned int)... | 1.0 | -| test.c:492:11:492:16 | ... * ... | 1302.0 | -| test.c:492:11:492:20 | ... + ... | 1302.0 | -| test.c:492:15:492:16 | ip | 1302.0 | -| test.c:492:20:492:20 | 1 | 1.0 | -| test.c:492:20:492:20 | (unsigned int)... | 1.0 | -| test.c:492:25:492:26 | 14 | 1.0 | -| test.c:492:25:492:26 | (unsigned int)... | 1.0 | -| test.c:492:30:492:80 | (...) | 1695204.0 | -| test.c:492:31:492:32 | 17 | 1.0 | -| test.c:492:31:492:32 | (unsigned int)... | 1.0 | -| test.c:492:31:492:43 | ... * ... | 1302.0 | -| test.c:492:31:492:53 | ... > ... | 1.0 | -| test.c:492:31:492:79 | ... ? ... : ... | 1695204.0 | -| test.c:492:36:492:43 | (...) | 1302.0 | -| test.c:492:37:492:37 | 2 | 1.0 | -| test.c:492:37:492:37 | (unsigned int)... | 1.0 | -| test.c:492:37:492:42 | ... * ... | 1302.0 | -| test.c:492:41:492:42 | ip | 1302.0 | -| test.c:492:47:492:48 | 17 | 1.0 | -| test.c:492:47:492:48 | (unsigned int)... | 1.0 | -| test.c:492:47:492:53 | ... * ... | 1302.0 | -| test.c:492:52:492:53 | ip | 1302.0 | -| test.c:492:57:492:58 | 17 | 1.0 | -| test.c:492:57:492:58 | (unsigned int)... | 1.0 | -| test.c:492:57:492:69 | ... * ... | 1302.0 | -| test.c:492:62:492:69 | (...) | 1302.0 | -| test.c:492:63:492:63 | 2 | 1.0 | -| test.c:492:63:492:63 | (unsigned int)... | 1.0 | -| test.c:492:63:492:68 | ... * ... | 1302.0 | -| test.c:492:67:492:68 | ip | 1302.0 | -| test.c:492:73:492:74 | 17 | 1.0 | -| test.c:492:73:492:74 | (unsigned int)... | 1.0 | -| test.c:492:73:492:79 | ... * ... | 1302.0 | -| test.c:492:78:492:79 | ip | 1302.0 | -| test.c:493:13:493:24 | (...) | 2605.0 | -| test.c:493:13:493:29 | ... * ... | 2605.0 | -| test.c:493:14:493:14 | 2 | 1.0 | -| test.c:493:14:493:14 | (unsigned int)... | 1.0 | -| test.c:493:14:493:19 | ... * ... | 2605.0 | -| test.c:493:14:493:23 | ... + ... | 2605.0 | -| test.c:493:18:493:19 | ip | 2605.0 | -| test.c:493:23:493:23 | 1 | 1.0 | -| test.c:493:23:493:23 | (unsigned int)... | 1.0 | -| test.c:493:28:493:29 | 14 | 1.0 | -| test.c:493:28:493:29 | (unsigned int)... | 1.0 | -| test.c:494:13:494:14 | 14 | 1.0 | -| test.c:494:13:494:14 | (unsigned int)... | 1.0 | -| test.c:494:13:494:25 | ... * ... | 2605.0 | -| test.c:494:13:494:35 | ... > ... | 1.0 | -| test.c:494:13:496:21 | ... ? ... : ... | 6786025.0 | -| test.c:494:18:494:25 | (...) | 2605.0 | -| test.c:494:19:494:19 | 2 | 1.0 | -| test.c:494:19:494:19 | (unsigned int)... | 1.0 | -| test.c:494:19:494:24 | ... * ... | 2605.0 | -| test.c:494:23:494:24 | ip | 2605.0 | +| test.c:480:21:480:32 | (...) | 15.0 | +| test.c:480:21:480:37 | ... * ... | 15.0 | +| test.c:480:22:480:22 | 2 | 1.0 | +| test.c:480:22:480:22 | (unsigned int)... | 1.0 | +| test.c:480:22:480:27 | ... * ... | 15.0 | +| test.c:480:22:480:31 | ... + ... | 15.0 | +| test.c:480:26:480:27 | ip | 15.0 | +| test.c:480:31:480:31 | 1 | 1.0 | +| test.c:480:31:480:31 | (unsigned int)... | 1.0 | +| test.c:480:36:480:37 | 17 | 1.0 | +| test.c:480:36:480:37 | (unsigned int)... | 1.0 | +| test.c:481:11:481:11 | 4 | 1.0 | +| test.c:481:11:481:11 | (unsigned int)... | 1.0 | +| test.c:481:11:481:28 | ... * ... | 15.0 | +| test.c:481:11:482:28 | ... + ... | 225.0 | +| test.c:481:11:483:28 | ... + ... | 3375.0 | +| test.c:481:11:489:24 | ... + ... | 1.00544625E8 | +| test.c:481:15:481:28 | (...) | 15.0 | +| test.c:481:16:481:17 | ip | 15.0 | +| test.c:481:16:481:22 | ... * ... | 15.0 | +| test.c:481:16:481:27 | ... + ... | 15.0 | +| test.c:481:21:481:22 | 14 | 1.0 | +| test.c:481:21:481:22 | (unsigned int)... | 1.0 | +| test.c:481:26:481:27 | 32 | 1.0 | +| test.c:481:26:481:27 | (unsigned int)... | 1.0 | +| test.c:482:11:482:28 | (...) | 15.0 | +| test.c:482:12:482:12 | 2 | 1.0 | +| test.c:482:12:482:12 | (unsigned int)... | 1.0 | +| test.c:482:12:482:17 | ... * ... | 15.0 | +| test.c:482:12:482:22 | ... * ... | 15.0 | +| test.c:482:12:482:27 | ... + ... | 15.0 | +| test.c:482:16:482:17 | ip | 15.0 | +| test.c:482:21:482:22 | 14 | 1.0 | +| test.c:482:21:482:22 | (unsigned int)... | 1.0 | +| test.c:482:26:482:27 | 32 | 1.0 | +| test.c:482:26:482:27 | (unsigned int)... | 1.0 | +| test.c:483:11:483:11 | 2 | 1.0 | +| test.c:483:11:483:11 | (unsigned int)... | 1.0 | +| test.c:483:11:483:28 | ... * ... | 15.0 | +| test.c:483:15:483:28 | (...) | 15.0 | +| test.c:483:16:483:17 | ip | 15.0 | +| test.c:483:16:483:22 | ... * ... | 15.0 | +| test.c:483:16:483:27 | ... + ... | 15.0 | +| test.c:483:21:483:22 | 14 | 1.0 | +| test.c:483:21:483:22 | (unsigned int)... | 1.0 | +| test.c:483:26:483:27 | 64 | 1.0 | +| test.c:483:26:483:27 | (unsigned int)... | 1.0 | +| test.c:484:11:489:24 | (...) | 29791.0 | +| test.c:484:12:484:23 | (...) | 15.0 | +| test.c:484:12:484:28 | ... * ... | 15.0 | +| test.c:484:12:485:61 | ... > ... | 1.0 | +| test.c:484:12:489:23 | ... ? ... : ... | 29791.0 | +| test.c:484:13:484:13 | 2 | 1.0 | +| test.c:484:13:484:13 | (unsigned int)... | 1.0 | +| test.c:484:13:484:18 | ... * ... | 15.0 | +| test.c:484:13:484:22 | ... + ... | 15.0 | +| test.c:484:17:484:18 | ip | 15.0 | +| test.c:484:22:484:22 | 1 | 1.0 | +| test.c:484:22:484:22 | (unsigned int)... | 1.0 | +| test.c:484:27:484:28 | 14 | 1.0 | +| test.c:484:27:484:28 | (unsigned int)... | 1.0 | +| test.c:485:11:485:61 | (...) | 225.0 | +| test.c:485:12:485:13 | 14 | 1.0 | +| test.c:485:12:485:13 | (unsigned int)... | 1.0 | +| test.c:485:12:485:24 | ... * ... | 15.0 | +| test.c:485:12:485:34 | ... > ... | 1.0 | +| test.c:485:12:485:60 | ... ? ... : ... | 225.0 | +| test.c:485:17:485:24 | (...) | 15.0 | +| test.c:485:18:485:18 | 2 | 1.0 | +| test.c:485:18:485:18 | (unsigned int)... | 1.0 | +| test.c:485:18:485:23 | ... * ... | 15.0 | +| test.c:485:22:485:23 | ip | 15.0 | +| test.c:485:28:485:29 | 17 | 1.0 | +| test.c:485:28:485:29 | (unsigned int)... | 1.0 | +| test.c:485:28:485:34 | ... * ... | 15.0 | +| test.c:485:33:485:34 | ip | 15.0 | +| test.c:485:38:485:39 | 17 | 1.0 | +| test.c:485:38:485:39 | (unsigned int)... | 1.0 | +| test.c:485:38:485:50 | ... * ... | 15.0 | +| test.c:485:43:485:50 | (...) | 15.0 | +| test.c:485:44:485:44 | 2 | 1.0 | +| test.c:485:44:485:44 | (unsigned int)... | 1.0 | +| test.c:485:44:485:49 | ... * ... | 15.0 | +| test.c:485:48:485:49 | ip | 15.0 | +| test.c:485:54:485:55 | 17 | 1.0 | +| test.c:485:54:485:55 | (unsigned int)... | 1.0 | +| test.c:485:54:485:60 | ... * ... | 15.0 | +| test.c:485:59:485:60 | ip | 15.0 | +| test.c:486:15:486:26 | (...) | 31.0 | +| test.c:486:15:486:31 | ... * ... | 31.0 | +| test.c:486:16:486:16 | 2 | 1.0 | +| test.c:486:16:486:16 | (unsigned int)... | 1.0 | +| test.c:486:16:486:21 | ... * ... | 31.0 | +| test.c:486:16:486:25 | ... + ... | 31.0 | +| test.c:486:20:486:21 | ip | 31.0 | +| test.c:486:25:486:25 | 1 | 1.0 | +| test.c:486:25:486:25 | (unsigned int)... | 1.0 | +| test.c:486:30:486:31 | 14 | 1.0 | +| test.c:486:30:486:31 | (unsigned int)... | 1.0 | +| test.c:487:15:487:16 | 14 | 1.0 | +| test.c:487:15:487:16 | (unsigned int)... | 1.0 | +| test.c:487:15:487:27 | ... * ... | 31.0 | +| test.c:487:15:487:37 | ... > ... | 1.0 | +| test.c:487:15:489:23 | ... ? ... : ... | 961.0 | +| test.c:487:20:487:27 | (...) | 31.0 | +| test.c:487:21:487:21 | 2 | 1.0 | +| test.c:487:21:487:21 | (unsigned int)... | 1.0 | +| test.c:487:21:487:26 | ... * ... | 31.0 | +| test.c:487:25:487:26 | ip | 31.0 | +| test.c:487:31:487:32 | 17 | 1.0 | +| test.c:487:31:487:32 | (unsigned int)... | 1.0 | +| test.c:487:31:487:37 | ... * ... | 31.0 | +| test.c:487:36:487:37 | ip | 31.0 | +| test.c:488:17:488:18 | 14 | 1.0 | +| test.c:488:17:488:18 | (unsigned int)... | 1.0 | +| test.c:488:17:488:29 | ... * ... | 31.0 | +| test.c:488:22:488:29 | (...) | 31.0 | +| test.c:488:23:488:23 | 2 | 1.0 | +| test.c:488:23:488:23 | (unsigned int)... | 1.0 | +| test.c:488:23:488:28 | ... * ... | 31.0 | +| test.c:488:27:488:28 | ip | 31.0 | +| test.c:489:17:489:18 | 14 | 1.0 | +| test.c:489:17:489:18 | (unsigned int)... | 1.0 | +| test.c:489:17:489:23 | ... * ... | 31.0 | +| test.c:489:22:489:23 | ip | 31.0 | +| test.c:490:11:490:11 | 2 | 1.0 | +| test.c:490:11:490:11 | (unsigned int)... | 1.0 | +| test.c:490:11:490:16 | ... * ... | 15.0 | +| test.c:490:11:490:21 | ... * ... | 15.0 | +| test.c:490:11:490:41 | ... + ... | 225.0 | +| test.c:490:15:490:16 | ip | 15.0 | +| test.c:490:20:490:21 | 14 | 1.0 | +| test.c:490:20:490:21 | (unsigned int)... | 1.0 | +| test.c:490:25:490:36 | (...) | 15.0 | +| test.c:490:25:490:41 | ... * ... | 15.0 | +| test.c:490:26:490:26 | 2 | 1.0 | +| test.c:490:26:490:26 | (unsigned int)... | 1.0 | +| test.c:490:26:490:31 | ... * ... | 15.0 | +| test.c:490:26:490:35 | ... + ... | 15.0 | +| test.c:490:30:490:31 | ip | 15.0 | +| test.c:490:35:490:35 | 1 | 1.0 | +| test.c:490:35:490:35 | (unsigned int)... | 1.0 | +| test.c:490:40:490:41 | 17 | 1.0 | +| test.c:490:40:490:41 | (unsigned int)... | 1.0 | +| test.c:491:5:510:24 | (...) | 6.6142118960740864E25 | +| test.c:491:6:491:6 | 4 | 1.0 | +| test.c:491:6:491:6 | (unsigned int)... | 1.0 | +| test.c:491:6:491:23 | ... * ... | 108.0 | +| test.c:491:6:492:24 | ... + ... | 11664.0 | +| test.c:491:6:493:24 | ... + ... | 1259712.0 | +| test.c:491:6:498:20 | ... + ... | 1.2872131505856E13 | +| test.c:491:6:499:55 | ... > ... | 1.0 | +| test.c:491:6:510:23 | ... ? ... : ... | 6.6142118960740864E25 | +| test.c:491:10:491:23 | (...) | 108.0 | +| test.c:491:11:491:12 | ip | 108.0 | +| test.c:491:11:491:17 | ... * ... | 108.0 | +| test.c:491:11:491:22 | ... + ... | 108.0 | +| test.c:491:16:491:17 | 14 | 1.0 | +| test.c:491:16:491:17 | (unsigned int)... | 1.0 | +| test.c:491:21:491:22 | 32 | 1.0 | +| test.c:491:21:491:22 | (unsigned int)... | 1.0 | +| test.c:492:7:492:24 | (...) | 108.0 | +| test.c:492:8:492:8 | 2 | 1.0 | +| test.c:492:8:492:8 | (unsigned int)... | 1.0 | +| test.c:492:8:492:13 | ... * ... | 108.0 | +| test.c:492:8:492:18 | ... * ... | 108.0 | +| test.c:492:8:492:23 | ... + ... | 108.0 | +| test.c:492:12:492:13 | ip | 108.0 | +| test.c:492:17:492:18 | 14 | 1.0 | +| test.c:492:17:492:18 | (unsigned int)... | 1.0 | +| test.c:492:22:492:23 | 32 | 1.0 | +| test.c:492:22:492:23 | (unsigned int)... | 1.0 | +| test.c:493:7:493:7 | 2 | 1.0 | +| test.c:493:7:493:7 | (unsigned int)... | 1.0 | +| test.c:493:7:493:24 | ... * ... | 108.0 | +| test.c:493:11:493:24 | (...) | 108.0 | +| test.c:493:12:493:13 | ip | 108.0 | +| test.c:493:12:493:18 | ... * ... | 108.0 | +| test.c:493:12:493:23 | ... + ... | 108.0 | +| test.c:493:17:493:18 | 14 | 1.0 | +| test.c:493:17:493:18 | (unsigned int)... | 1.0 | +| test.c:493:22:493:23 | 64 | 1.0 | +| test.c:493:22:493:23 | (unsigned int)... | 1.0 | +| test.c:494:7:498:20 | (...) | 1.0218313E7 | +| test.c:494:8:494:19 | (...) | 108.0 | +| test.c:494:8:494:24 | ... * ... | 108.0 | +| test.c:494:8:494:78 | ... > ... | 1.0 | +| test.c:494:8:498:19 | ... ? ... : ... | 1.0218313E7 | +| test.c:494:9:494:9 | 2 | 1.0 | +| test.c:494:9:494:9 | (unsigned int)... | 1.0 | +| test.c:494:9:494:14 | ... * ... | 108.0 | +| test.c:494:9:494:18 | ... + ... | 108.0 | +| test.c:494:13:494:14 | ip | 108.0 | +| test.c:494:18:494:18 | 1 | 1.0 | +| test.c:494:18:494:18 | (unsigned int)... | 1.0 | +| test.c:494:23:494:24 | 14 | 1.0 | +| test.c:494:23:494:24 | (unsigned int)... | 1.0 | +| test.c:494:28:494:78 | (...) | 11664.0 | | test.c:494:29:494:30 | 17 | 1.0 | | test.c:494:29:494:30 | (unsigned int)... | 1.0 | -| test.c:494:29:494:35 | ... * ... | 2605.0 | -| test.c:494:34:494:35 | ip | 2605.0 | -| test.c:495:15:495:16 | 14 | 1.0 | -| test.c:495:15:495:16 | (unsigned int)... | 1.0 | -| test.c:495:15:495:27 | ... * ... | 2605.0 | -| test.c:495:20:495:27 | (...) | 2605.0 | -| test.c:495:21:495:21 | 2 | 1.0 | +| test.c:494:29:494:41 | ... * ... | 108.0 | +| test.c:494:29:494:51 | ... > ... | 1.0 | +| test.c:494:29:494:77 | ... ? ... : ... | 11664.0 | +| test.c:494:34:494:41 | (...) | 108.0 | +| test.c:494:35:494:35 | 2 | 1.0 | +| test.c:494:35:494:35 | (unsigned int)... | 1.0 | +| test.c:494:35:494:40 | ... * ... | 108.0 | +| test.c:494:39:494:40 | ip | 108.0 | +| test.c:494:45:494:46 | 17 | 1.0 | +| test.c:494:45:494:46 | (unsigned int)... | 1.0 | +| test.c:494:45:494:51 | ... * ... | 108.0 | +| test.c:494:50:494:51 | ip | 108.0 | +| test.c:494:55:494:56 | 17 | 1.0 | +| test.c:494:55:494:56 | (unsigned int)... | 1.0 | +| test.c:494:55:494:67 | ... * ... | 108.0 | +| test.c:494:60:494:67 | (...) | 108.0 | +| test.c:494:61:494:61 | 2 | 1.0 | +| test.c:494:61:494:61 | (unsigned int)... | 1.0 | +| test.c:494:61:494:66 | ... * ... | 108.0 | +| test.c:494:65:494:66 | ip | 108.0 | +| test.c:494:71:494:72 | 17 | 1.0 | +| test.c:494:71:494:72 | (unsigned int)... | 1.0 | +| test.c:494:71:494:77 | ... * ... | 108.0 | +| test.c:494:76:494:77 | ip | 108.0 | +| test.c:495:11:495:22 | (...) | 217.0 | +| test.c:495:11:495:27 | ... * ... | 217.0 | +| test.c:495:12:495:12 | 2 | 1.0 | +| test.c:495:12:495:12 | (unsigned int)... | 1.0 | +| test.c:495:12:495:17 | ... * ... | 217.0 | +| test.c:495:12:495:21 | ... + ... | 217.0 | +| test.c:495:16:495:17 | ip | 217.0 | +| test.c:495:21:495:21 | 1 | 1.0 | | test.c:495:21:495:21 | (unsigned int)... | 1.0 | -| test.c:495:21:495:26 | ... * ... | 2605.0 | -| test.c:495:25:495:26 | ip | 2605.0 | -| test.c:496:15:496:16 | 14 | 1.0 | -| test.c:496:15:496:16 | (unsigned int)... | 1.0 | -| test.c:496:15:496:21 | ... * ... | 2605.0 | -| test.c:496:20:496:21 | ip | 2605.0 | -| test.c:497:9:497:10 | 14 | 1.0 | -| test.c:497:9:497:10 | (unsigned int)... | 1.0 | -| test.c:497:9:497:15 | ... * ... | 1302.0 | -| test.c:497:9:497:31 | ... > ... | 1.0 | -| test.c:497:9:499:23 | ... ? ... : ... | 1695204.0 | -| test.c:497:14:497:15 | ip | 1302.0 | -| test.c:497:19:497:26 | (...) | 1302.0 | -| test.c:497:19:497:31 | ... * ... | 1302.0 | -| test.c:497:20:497:21 | ip | 1302.0 | -| test.c:497:20:497:25 | ... + ... | 1302.0 | -| test.c:497:25:497:25 | 1 | 1.0 | -| test.c:497:25:497:25 | (unsigned int)... | 1.0 | -| test.c:497:30:497:31 | 17 | 1.0 | -| test.c:497:30:497:31 | (unsigned int)... | 1.0 | -| test.c:498:11:498:12 | 14 | 1.0 | -| test.c:498:11:498:12 | (unsigned int)... | 1.0 | -| test.c:498:11:498:17 | ... * ... | 1302.0 | -| test.c:498:16:498:17 | ip | 1302.0 | -| test.c:499:11:499:18 | (...) | 1302.0 | -| test.c:499:11:499:23 | ... * ... | 1302.0 | -| test.c:499:12:499:13 | ip | 1302.0 | -| test.c:499:12:499:17 | ... + ... | 1302.0 | -| test.c:499:17:499:17 | 1 | 1.0 | -| test.c:499:17:499:17 | (unsigned int)... | 1.0 | -| test.c:499:22:499:23 | 14 | 1.0 | -| test.c:499:22:499:23 | (unsigned int)... | 1.0 | -| test.c:500:9:500:9 | 2 | 1.0 | +| test.c:495:26:495:27 | 14 | 1.0 | +| test.c:495:26:495:27 | (unsigned int)... | 1.0 | +| test.c:496:11:496:12 | 14 | 1.0 | +| test.c:496:11:496:12 | (unsigned int)... | 1.0 | +| test.c:496:11:496:23 | ... * ... | 217.0 | +| test.c:496:11:496:33 | ... > ... | 1.0 | +| test.c:496:11:498:19 | ... ? ... : ... | 47089.0 | +| test.c:496:16:496:23 | (...) | 217.0 | +| test.c:496:17:496:17 | 2 | 1.0 | +| test.c:496:17:496:17 | (unsigned int)... | 1.0 | +| test.c:496:17:496:22 | ... * ... | 217.0 | +| test.c:496:21:496:22 | ip | 217.0 | +| test.c:496:27:496:28 | 17 | 1.0 | +| test.c:496:27:496:28 | (unsigned int)... | 1.0 | +| test.c:496:27:496:33 | ... * ... | 217.0 | +| test.c:496:32:496:33 | ip | 217.0 | +| test.c:497:13:497:14 | 14 | 1.0 | +| test.c:497:13:497:14 | (unsigned int)... | 1.0 | +| test.c:497:13:497:25 | ... * ... | 217.0 | +| test.c:497:18:497:25 | (...) | 217.0 | +| test.c:497:19:497:19 | 2 | 1.0 | +| test.c:497:19:497:19 | (unsigned int)... | 1.0 | +| test.c:497:19:497:24 | ... * ... | 217.0 | +| test.c:497:23:497:24 | ip | 217.0 | +| test.c:498:13:498:14 | 14 | 1.0 | +| test.c:498:13:498:14 | (unsigned int)... | 1.0 | +| test.c:498:13:498:19 | ... * ... | 217.0 | +| test.c:498:18:498:19 | ip | 217.0 | +| test.c:499:5:499:55 | (...) | 423801.0 | +| test.c:499:6:499:7 | 14 | 1.0 | +| test.c:499:6:499:7 | (unsigned int)... | 1.0 | +| test.c:499:6:499:12 | ... * ... | 651.0 | +| test.c:499:6:499:28 | ... > ... | 1.0 | +| test.c:499:6:499:54 | ... ? ... : ... | 423801.0 | +| test.c:499:11:499:12 | ip | 651.0 | +| test.c:499:16:499:23 | (...) | 651.0 | +| test.c:499:16:499:28 | ... * ... | 651.0 | +| test.c:499:17:499:18 | ip | 651.0 | +| test.c:499:17:499:22 | ... + ... | 651.0 | +| test.c:499:22:499:22 | 1 | 1.0 | +| test.c:499:22:499:22 | (unsigned int)... | 1.0 | +| test.c:499:27:499:28 | 17 | 1.0 | +| test.c:499:27:499:28 | (unsigned int)... | 1.0 | +| test.c:499:32:499:33 | 17 | 1.0 | +| test.c:499:32:499:33 | (unsigned int)... | 1.0 | +| test.c:499:32:499:38 | ... * ... | 651.0 | +| test.c:499:37:499:38 | ip | 651.0 | +| test.c:499:42:499:49 | (...) | 651.0 | +| test.c:499:42:499:54 | ... * ... | 651.0 | +| test.c:499:43:499:44 | ip | 651.0 | +| test.c:499:43:499:48 | ... + ... | 651.0 | +| test.c:499:48:499:48 | 1 | 1.0 | +| test.c:499:48:499:48 | (unsigned int)... | 1.0 | +| test.c:499:53:499:54 | 17 | 1.0 | +| test.c:499:53:499:54 | (unsigned int)... | 1.0 | +| test.c:500:9:500:9 | 4 | 1.0 | | test.c:500:9:500:9 | (unsigned int)... | 1.0 | -| test.c:500:9:500:26 | ... * ... | 10419.0 | -| test.c:500:9:520:44 | ... + ... | 1.9449636104972528E43 | -| test.c:500:13:500:26 | (...) | 10419.0 | -| test.c:500:14:500:15 | ip | 10419.0 | -| test.c:500:14:500:20 | ... * ... | 10419.0 | -| test.c:500:14:500:25 | ... + ... | 10419.0 | +| test.c:500:9:500:26 | ... * ... | 1302.0 | +| test.c:500:9:501:26 | ... + ... | 1695204.0 | +| test.c:500:9:502:26 | ... + ... | 2.207155608E9 | +| test.c:500:9:507:22 | ... + ... | 3.9017203216097214E19 | +| test.c:500:13:500:26 | (...) | 1302.0 | +| test.c:500:14:500:15 | ip | 1302.0 | +| test.c:500:14:500:20 | ... * ... | 1302.0 | +| test.c:500:14:500:25 | ... + ... | 1302.0 | | test.c:500:19:500:20 | 14 | 1.0 | | test.c:500:19:500:20 | (unsigned int)... | 1.0 | | test.c:500:24:500:25 | 32 | 1.0 | | test.c:500:24:500:25 | (unsigned int)... | 1.0 | -| test.c:501:9:520:44 | (...) | 1.8667469147684545E39 | -| test.c:501:10:501:10 | 4 | 1.0 | +| test.c:501:9:501:26 | (...) | 1302.0 | +| test.c:501:10:501:10 | 2 | 1.0 | | test.c:501:10:501:10 | (unsigned int)... | 1.0 | -| test.c:501:10:501:27 | ... * ... | 10419.0 | -| test.c:501:10:502:28 | ... + ... | 1.08555561E8 | -| test.c:501:10:503:28 | ... + ... | 1.131040390059E12 | -| test.c:501:10:509:24 | ... + ... | 1.0235492350954187E25 | -| test.c:501:10:510:39 | ... > ... | 1.0 | -| test.c:501:10:520:43 | ... ? ... : ... | 1.8667469147684545E39 | -| test.c:501:14:501:27 | (...) | 10419.0 | -| test.c:501:15:501:16 | ip | 10419.0 | -| test.c:501:15:501:21 | ... * ... | 10419.0 | -| test.c:501:15:501:26 | ... + ... | 10419.0 | -| test.c:501:20:501:21 | 14 | 1.0 | -| test.c:501:20:501:21 | (unsigned int)... | 1.0 | -| test.c:501:25:501:26 | 32 | 1.0 | -| test.c:501:25:501:26 | (unsigned int)... | 1.0 | -| test.c:502:11:502:28 | (...) | 10419.0 | -| test.c:502:12:502:12 | 2 | 1.0 | -| test.c:502:12:502:12 | (unsigned int)... | 1.0 | -| test.c:502:12:502:17 | ... * ... | 10419.0 | -| test.c:502:12:502:22 | ... * ... | 10419.0 | -| test.c:502:12:502:27 | ... + ... | 10419.0 | -| test.c:502:16:502:17 | ip | 10419.0 | -| test.c:502:21:502:22 | 14 | 1.0 | -| test.c:502:21:502:22 | (unsigned int)... | 1.0 | -| test.c:502:26:502:27 | 32 | 1.0 | -| test.c:502:26:502:27 | (unsigned int)... | 1.0 | +| test.c:501:10:501:15 | ... * ... | 1302.0 | +| test.c:501:10:501:20 | ... * ... | 1302.0 | +| test.c:501:10:501:25 | ... + ... | 1302.0 | +| test.c:501:14:501:15 | ip | 1302.0 | +| test.c:501:19:501:20 | 14 | 1.0 | +| test.c:501:19:501:20 | (unsigned int)... | 1.0 | +| test.c:501:24:501:25 | 32 | 1.0 | +| test.c:501:24:501:25 | (unsigned int)... | 1.0 | +| test.c:502:9:502:9 | 2 | 1.0 | +| test.c:502:9:502:9 | (unsigned int)... | 1.0 | +| test.c:502:9:502:26 | ... * ... | 1302.0 | +| test.c:502:13:502:26 | (...) | 1302.0 | +| test.c:502:14:502:15 | ip | 1302.0 | +| test.c:502:14:502:20 | ... * ... | 1302.0 | +| test.c:502:14:502:25 | ... + ... | 1302.0 | +| test.c:502:19:502:20 | 14 | 1.0 | +| test.c:502:19:502:20 | (unsigned int)... | 1.0 | +| test.c:502:24:502:25 | 64 | 1.0 | +| test.c:502:24:502:25 | (unsigned int)... | 1.0 | +| test.c:503:9:507:22 | (...) | 1.7677595125E10 | +| test.c:503:10:503:21 | (...) | 1302.0 | +| test.c:503:10:503:26 | ... * ... | 1302.0 | +| test.c:503:10:503:80 | ... > ... | 1.0 | +| test.c:503:10:507:21 | ... ? ... : ... | 1.7677595125E10 | | test.c:503:11:503:11 | 2 | 1.0 | | test.c:503:11:503:11 | (unsigned int)... | 1.0 | -| test.c:503:11:503:28 | ... * ... | 10419.0 | -| test.c:503:15:503:28 | (...) | 10419.0 | -| test.c:503:16:503:17 | ip | 10419.0 | -| test.c:503:16:503:22 | ... * ... | 10419.0 | -| test.c:503:16:503:27 | ... + ... | 10419.0 | -| test.c:503:21:503:22 | 14 | 1.0 | -| test.c:503:21:503:22 | (unsigned int)... | 1.0 | -| test.c:503:26:503:27 | 64 | 1.0 | -| test.c:503:26:503:27 | (unsigned int)... | 1.0 | -| test.c:504:11:509:24 | (...) | 9.049625849719E12 | -| test.c:504:12:504:23 | (...) | 10419.0 | -| test.c:504:12:504:28 | ... * ... | 10419.0 | -| test.c:504:12:505:61 | ... > ... | 1.0 | -| test.c:504:12:509:23 | ... ? ... : ... | 9.049625849719E12 | -| test.c:504:13:504:13 | 2 | 1.0 | -| test.c:504:13:504:13 | (unsigned int)... | 1.0 | -| test.c:504:13:504:18 | ... * ... | 10419.0 | -| test.c:504:13:504:22 | ... + ... | 10419.0 | -| test.c:504:17:504:18 | ip | 10419.0 | -| test.c:504:22:504:22 | 1 | 1.0 | -| test.c:504:22:504:22 | (unsigned int)... | 1.0 | -| test.c:504:27:504:28 | 14 | 1.0 | -| test.c:504:27:504:28 | (unsigned int)... | 1.0 | -| test.c:505:11:505:61 | (...) | 1.08555561E8 | -| test.c:505:12:505:13 | 14 | 1.0 | -| test.c:505:12:505:13 | (unsigned int)... | 1.0 | -| test.c:505:12:505:24 | ... * ... | 10419.0 | -| test.c:505:12:505:34 | ... > ... | 1.0 | -| test.c:505:12:505:60 | ... ? ... : ... | 1.08555561E8 | -| test.c:505:17:505:24 | (...) | 10419.0 | -| test.c:505:18:505:18 | 2 | 1.0 | -| test.c:505:18:505:18 | (unsigned int)... | 1.0 | -| test.c:505:18:505:23 | ... * ... | 10419.0 | -| test.c:505:22:505:23 | ip | 10419.0 | -| test.c:505:28:505:29 | 17 | 1.0 | -| test.c:505:28:505:29 | (unsigned int)... | 1.0 | -| test.c:505:28:505:34 | ... * ... | 10419.0 | -| test.c:505:33:505:34 | ip | 10419.0 | -| test.c:505:38:505:39 | 17 | 1.0 | -| test.c:505:38:505:39 | (unsigned int)... | 1.0 | -| test.c:505:38:505:50 | ... * ... | 10419.0 | -| test.c:505:43:505:50 | (...) | 10419.0 | -| test.c:505:44:505:44 | 2 | 1.0 | -| test.c:505:44:505:44 | (unsigned int)... | 1.0 | -| test.c:505:44:505:49 | ... * ... | 10419.0 | -| test.c:505:48:505:49 | ip | 10419.0 | -| test.c:505:54:505:55 | 17 | 1.0 | -| test.c:505:54:505:55 | (unsigned int)... | 1.0 | -| test.c:505:54:505:60 | ... * ... | 10419.0 | -| test.c:505:59:505:60 | ip | 10419.0 | -| test.c:506:15:506:26 | (...) | 20839.0 | -| test.c:506:15:506:31 | ... * ... | 20839.0 | -| test.c:506:16:506:16 | 2 | 1.0 | -| test.c:506:16:506:16 | (unsigned int)... | 1.0 | -| test.c:506:16:506:21 | ... * ... | 20839.0 | -| test.c:506:16:506:25 | ... + ... | 20839.0 | -| test.c:506:20:506:21 | ip | 20839.0 | -| test.c:506:25:506:25 | 1 | 1.0 | -| test.c:506:25:506:25 | (unsigned int)... | 1.0 | -| test.c:506:30:506:31 | 14 | 1.0 | -| test.c:506:30:506:31 | (unsigned int)... | 1.0 | +| test.c:503:11:503:16 | ... * ... | 1302.0 | +| test.c:503:11:503:20 | ... + ... | 1302.0 | +| test.c:503:15:503:16 | ip | 1302.0 | +| test.c:503:20:503:20 | 1 | 1.0 | +| test.c:503:20:503:20 | (unsigned int)... | 1.0 | +| test.c:503:25:503:26 | 14 | 1.0 | +| test.c:503:25:503:26 | (unsigned int)... | 1.0 | +| test.c:503:30:503:80 | (...) | 1695204.0 | +| test.c:503:31:503:32 | 17 | 1.0 | +| test.c:503:31:503:32 | (unsigned int)... | 1.0 | +| test.c:503:31:503:43 | ... * ... | 1302.0 | +| test.c:503:31:503:53 | ... > ... | 1.0 | +| test.c:503:31:503:79 | ... ? ... : ... | 1695204.0 | +| test.c:503:36:503:43 | (...) | 1302.0 | +| test.c:503:37:503:37 | 2 | 1.0 | +| test.c:503:37:503:37 | (unsigned int)... | 1.0 | +| test.c:503:37:503:42 | ... * ... | 1302.0 | +| test.c:503:41:503:42 | ip | 1302.0 | +| test.c:503:47:503:48 | 17 | 1.0 | +| test.c:503:47:503:48 | (unsigned int)... | 1.0 | +| test.c:503:47:503:53 | ... * ... | 1302.0 | +| test.c:503:52:503:53 | ip | 1302.0 | +| test.c:503:57:503:58 | 17 | 1.0 | +| test.c:503:57:503:58 | (unsigned int)... | 1.0 | +| test.c:503:57:503:69 | ... * ... | 1302.0 | +| test.c:503:62:503:69 | (...) | 1302.0 | +| test.c:503:63:503:63 | 2 | 1.0 | +| test.c:503:63:503:63 | (unsigned int)... | 1.0 | +| test.c:503:63:503:68 | ... * ... | 1302.0 | +| test.c:503:67:503:68 | ip | 1302.0 | +| test.c:503:73:503:74 | 17 | 1.0 | +| test.c:503:73:503:74 | (unsigned int)... | 1.0 | +| test.c:503:73:503:79 | ... * ... | 1302.0 | +| test.c:503:78:503:79 | ip | 1302.0 | +| test.c:504:13:504:24 | (...) | 2605.0 | +| test.c:504:13:504:29 | ... * ... | 2605.0 | +| test.c:504:14:504:14 | 2 | 1.0 | +| test.c:504:14:504:14 | (unsigned int)... | 1.0 | +| test.c:504:14:504:19 | ... * ... | 2605.0 | +| test.c:504:14:504:23 | ... + ... | 2605.0 | +| test.c:504:18:504:19 | ip | 2605.0 | +| test.c:504:23:504:23 | 1 | 1.0 | +| test.c:504:23:504:23 | (unsigned int)... | 1.0 | +| test.c:504:28:504:29 | 14 | 1.0 | +| test.c:504:28:504:29 | (unsigned int)... | 1.0 | +| test.c:505:13:505:14 | 14 | 1.0 | +| test.c:505:13:505:14 | (unsigned int)... | 1.0 | +| test.c:505:13:505:25 | ... * ... | 2605.0 | +| test.c:505:13:505:35 | ... > ... | 1.0 | +| test.c:505:13:507:21 | ... ? ... : ... | 6786025.0 | +| test.c:505:18:505:25 | (...) | 2605.0 | +| test.c:505:19:505:19 | 2 | 1.0 | +| test.c:505:19:505:19 | (unsigned int)... | 1.0 | +| test.c:505:19:505:24 | ... * ... | 2605.0 | +| test.c:505:23:505:24 | ip | 2605.0 | +| test.c:505:29:505:30 | 17 | 1.0 | +| test.c:505:29:505:30 | (unsigned int)... | 1.0 | +| test.c:505:29:505:35 | ... * ... | 2605.0 | +| test.c:505:34:505:35 | ip | 2605.0 | +| test.c:506:15:506:16 | 14 | 1.0 | +| test.c:506:15:506:16 | (unsigned int)... | 1.0 | +| test.c:506:15:506:27 | ... * ... | 2605.0 | +| test.c:506:20:506:27 | (...) | 2605.0 | +| test.c:506:21:506:21 | 2 | 1.0 | +| test.c:506:21:506:21 | (unsigned int)... | 1.0 | +| test.c:506:21:506:26 | ... * ... | 2605.0 | +| test.c:506:25:506:26 | ip | 2605.0 | | test.c:507:15:507:16 | 14 | 1.0 | | test.c:507:15:507:16 | (unsigned int)... | 1.0 | -| test.c:507:15:507:27 | ... * ... | 20839.0 | -| test.c:507:15:507:37 | ... > ... | 1.0 | -| test.c:507:15:509:23 | ... ? ... : ... | 4.34263921E8 | -| test.c:507:20:507:27 | (...) | 20839.0 | -| test.c:507:21:507:21 | 2 | 1.0 | -| test.c:507:21:507:21 | (unsigned int)... | 1.0 | -| test.c:507:21:507:26 | ... * ... | 20839.0 | -| test.c:507:25:507:26 | ip | 20839.0 | -| test.c:507:31:507:32 | 17 | 1.0 | -| test.c:507:31:507:32 | (unsigned int)... | 1.0 | -| test.c:507:31:507:37 | ... * ... | 20839.0 | -| test.c:507:36:507:37 | ip | 20839.0 | -| test.c:508:17:508:18 | 14 | 1.0 | -| test.c:508:17:508:18 | (unsigned int)... | 1.0 | -| test.c:508:17:508:29 | ... * ... | 20839.0 | -| test.c:508:22:508:29 | (...) | 20839.0 | -| test.c:508:23:508:23 | 2 | 1.0 | -| test.c:508:23:508:23 | (unsigned int)... | 1.0 | -| test.c:508:23:508:28 | ... * ... | 20839.0 | -| test.c:508:27:508:28 | ip | 20839.0 | -| test.c:509:17:509:18 | 14 | 1.0 | -| test.c:509:17:509:18 | (unsigned int)... | 1.0 | -| test.c:509:17:509:23 | ... * ... | 20839.0 | -| test.c:509:22:509:23 | ip | 20839.0 | -| test.c:510:9:510:9 | 2 | 1.0 | -| test.c:510:9:510:9 | (unsigned int)... | 1.0 | -| test.c:510:9:510:14 | ... * ... | 62517.0 | -| test.c:510:9:510:19 | ... * ... | 62517.0 | -| test.c:510:9:510:39 | ... + ... | 3.908375289E9 | -| test.c:510:13:510:14 | ip | 62517.0 | -| test.c:510:18:510:19 | 14 | 1.0 | -| test.c:510:18:510:19 | (unsigned int)... | 1.0 | -| test.c:510:23:510:34 | (...) | 62517.0 | -| test.c:510:23:510:39 | ... * ... | 62517.0 | -| test.c:510:24:510:24 | 2 | 1.0 | -| test.c:510:24:510:24 | (unsigned int)... | 1.0 | -| test.c:510:24:510:29 | ... * ... | 62517.0 | -| test.c:510:24:510:33 | ... + ... | 62517.0 | -| test.c:510:28:510:29 | ip | 62517.0 | -| test.c:510:33:510:33 | 1 | 1.0 | -| test.c:510:33:510:33 | (unsigned int)... | 1.0 | -| test.c:510:38:510:39 | 17 | 1.0 | -| test.c:510:38:510:39 | (unsigned int)... | 1.0 | -| test.c:511:13:511:13 | 4 | 1.0 | -| test.c:511:13:511:13 | (unsigned int)... | 1.0 | -| test.c:511:13:511:30 | ... * ... | 62517.0 | -| test.c:511:13:512:30 | ... + ... | 3.908375289E9 | -| test.c:511:13:513:30 | ... + ... | 2.44339897942413E14 | -| test.c:511:13:519:26 | ... + ... | 4.7762734556795386E29 | -| test.c:511:17:511:30 | (...) | 62517.0 | -| test.c:511:18:511:19 | ip | 62517.0 | -| test.c:511:18:511:24 | ... * ... | 62517.0 | -| test.c:511:18:511:29 | ... + ... | 62517.0 | -| test.c:511:23:511:24 | 14 | 1.0 | -| test.c:511:23:511:24 | (unsigned int)... | 1.0 | -| test.c:511:28:511:29 | 32 | 1.0 | -| test.c:511:28:511:29 | (unsigned int)... | 1.0 | -| test.c:512:13:512:30 | (...) | 62517.0 | -| test.c:512:14:512:14 | 2 | 1.0 | -| test.c:512:14:512:14 | (unsigned int)... | 1.0 | -| test.c:512:14:512:19 | ... * ... | 62517.0 | -| test.c:512:14:512:24 | ... * ... | 62517.0 | -| test.c:512:14:512:29 | ... + ... | 62517.0 | -| test.c:512:18:512:19 | ip | 62517.0 | -| test.c:512:23:512:24 | 14 | 1.0 | -| test.c:512:23:512:24 | (unsigned int)... | 1.0 | -| test.c:512:28:512:29 | 32 | 1.0 | -| test.c:512:28:512:29 | (unsigned int)... | 1.0 | -| test.c:513:13:513:13 | 2 | 1.0 | -| test.c:513:13:513:13 | (unsigned int)... | 1.0 | -| test.c:513:13:513:30 | ... * ... | 62517.0 | -| test.c:513:17:513:30 | (...) | 62517.0 | -| test.c:513:18:513:19 | ip | 62517.0 | -| test.c:513:18:513:24 | ... * ... | 62517.0 | -| test.c:513:18:513:29 | ... + ... | 62517.0 | -| test.c:513:23:513:24 | 14 | 1.0 | -| test.c:513:23:513:24 | (unsigned int)... | 1.0 | -| test.c:513:28:513:29 | 64 | 1.0 | -| test.c:513:28:513:29 | (unsigned int)... | 1.0 | -| test.c:514:13:519:26 | (...) | 1.954766084417875E15 | -| test.c:514:14:514:25 | (...) | 62517.0 | -| test.c:514:14:514:30 | ... * ... | 62517.0 | -| test.c:514:14:515:63 | ... > ... | 1.0 | -| test.c:514:14:519:25 | ... ? ... : ... | 1.954766084417875E15 | -| test.c:514:15:514:15 | 2 | 1.0 | -| test.c:514:15:514:15 | (unsigned int)... | 1.0 | -| test.c:514:15:514:20 | ... * ... | 62517.0 | -| test.c:514:15:514:24 | ... + ... | 62517.0 | -| test.c:514:19:514:20 | ip | 62517.0 | -| test.c:514:24:514:24 | 1 | 1.0 | -| test.c:514:24:514:24 | (unsigned int)... | 1.0 | -| test.c:514:29:514:30 | 14 | 1.0 | -| test.c:514:29:514:30 | (unsigned int)... | 1.0 | -| test.c:515:13:515:63 | (...) | 3.908375289E9 | -| test.c:515:14:515:15 | 14 | 1.0 | -| test.c:515:14:515:15 | (unsigned int)... | 1.0 | -| test.c:515:14:515:26 | ... * ... | 62517.0 | -| test.c:515:14:515:36 | ... > ... | 1.0 | -| test.c:515:14:515:62 | ... ? ... : ... | 3.908375289E9 | -| test.c:515:19:515:26 | (...) | 62517.0 | -| test.c:515:20:515:20 | 2 | 1.0 | -| test.c:515:20:515:20 | (unsigned int)... | 1.0 | -| test.c:515:20:515:25 | ... * ... | 62517.0 | -| test.c:515:24:515:25 | ip | 62517.0 | -| test.c:515:30:515:31 | 17 | 1.0 | -| test.c:515:30:515:31 | (unsigned int)... | 1.0 | -| test.c:515:30:515:36 | ... * ... | 62517.0 | -| test.c:515:35:515:36 | ip | 62517.0 | -| test.c:515:40:515:41 | 17 | 1.0 | -| test.c:515:40:515:41 | (unsigned int)... | 1.0 | -| test.c:515:40:515:52 | ... * ... | 62517.0 | -| test.c:515:45:515:52 | (...) | 62517.0 | -| test.c:515:46:515:46 | 2 | 1.0 | -| test.c:515:46:515:46 | (unsigned int)... | 1.0 | -| test.c:515:46:515:51 | ... * ... | 62517.0 | -| test.c:515:50:515:51 | ip | 62517.0 | -| test.c:515:56:515:57 | 17 | 1.0 | -| test.c:515:56:515:57 | (unsigned int)... | 1.0 | -| test.c:515:56:515:62 | ... * ... | 62517.0 | -| test.c:515:61:515:62 | ip | 62517.0 | -| test.c:516:17:516:28 | (...) | 125035.0 | -| test.c:516:17:516:33 | ... * ... | 125035.0 | +| test.c:507:15:507:21 | ... * ... | 2605.0 | +| test.c:507:20:507:21 | ip | 2605.0 | +| test.c:508:9:508:10 | 14 | 1.0 | +| test.c:508:9:508:10 | (unsigned int)... | 1.0 | +| test.c:508:9:508:15 | ... * ... | 1302.0 | +| test.c:508:9:508:31 | ... > ... | 1.0 | +| test.c:508:9:510:23 | ... ? ... : ... | 1695204.0 | +| test.c:508:14:508:15 | ip | 1302.0 | +| test.c:508:19:508:26 | (...) | 1302.0 | +| test.c:508:19:508:31 | ... * ... | 1302.0 | +| test.c:508:20:508:21 | ip | 1302.0 | +| test.c:508:20:508:25 | ... + ... | 1302.0 | +| test.c:508:25:508:25 | 1 | 1.0 | +| test.c:508:25:508:25 | (unsigned int)... | 1.0 | +| test.c:508:30:508:31 | 17 | 1.0 | +| test.c:508:30:508:31 | (unsigned int)... | 1.0 | +| test.c:509:11:509:12 | 14 | 1.0 | +| test.c:509:11:509:12 | (unsigned int)... | 1.0 | +| test.c:509:11:509:17 | ... * ... | 1302.0 | +| test.c:509:16:509:17 | ip | 1302.0 | +| test.c:510:11:510:18 | (...) | 1302.0 | +| test.c:510:11:510:23 | ... * ... | 1302.0 | +| test.c:510:12:510:13 | ip | 1302.0 | +| test.c:510:12:510:17 | ... + ... | 1302.0 | +| test.c:510:17:510:17 | 1 | 1.0 | +| test.c:510:17:510:17 | (unsigned int)... | 1.0 | +| test.c:510:22:510:23 | 14 | 1.0 | +| test.c:510:22:510:23 | (unsigned int)... | 1.0 | +| test.c:511:9:511:9 | 2 | 1.0 | +| test.c:511:9:511:9 | (unsigned int)... | 1.0 | +| test.c:511:9:511:26 | ... * ... | 10419.0 | +| test.c:511:9:531:44 | ... + ... | 1.9449636104972528E43 | +| test.c:511:13:511:26 | (...) | 10419.0 | +| test.c:511:14:511:15 | ip | 10419.0 | +| test.c:511:14:511:20 | ... * ... | 10419.0 | +| test.c:511:14:511:25 | ... + ... | 10419.0 | +| test.c:511:19:511:20 | 14 | 1.0 | +| test.c:511:19:511:20 | (unsigned int)... | 1.0 | +| test.c:511:24:511:25 | 32 | 1.0 | +| test.c:511:24:511:25 | (unsigned int)... | 1.0 | +| test.c:512:9:531:44 | (...) | 1.8667469147684545E39 | +| test.c:512:10:512:10 | 4 | 1.0 | +| test.c:512:10:512:10 | (unsigned int)... | 1.0 | +| test.c:512:10:512:27 | ... * ... | 10419.0 | +| test.c:512:10:513:28 | ... + ... | 1.08555561E8 | +| test.c:512:10:514:28 | ... + ... | 1.131040390059E12 | +| test.c:512:10:520:24 | ... + ... | 1.0235492350954187E25 | +| test.c:512:10:521:39 | ... > ... | 1.0 | +| test.c:512:10:531:43 | ... ? ... : ... | 1.8667469147684545E39 | +| test.c:512:14:512:27 | (...) | 10419.0 | +| test.c:512:15:512:16 | ip | 10419.0 | +| test.c:512:15:512:21 | ... * ... | 10419.0 | +| test.c:512:15:512:26 | ... + ... | 10419.0 | +| test.c:512:20:512:21 | 14 | 1.0 | +| test.c:512:20:512:21 | (unsigned int)... | 1.0 | +| test.c:512:25:512:26 | 32 | 1.0 | +| test.c:512:25:512:26 | (unsigned int)... | 1.0 | +| test.c:513:11:513:28 | (...) | 10419.0 | +| test.c:513:12:513:12 | 2 | 1.0 | +| test.c:513:12:513:12 | (unsigned int)... | 1.0 | +| test.c:513:12:513:17 | ... * ... | 10419.0 | +| test.c:513:12:513:22 | ... * ... | 10419.0 | +| test.c:513:12:513:27 | ... + ... | 10419.0 | +| test.c:513:16:513:17 | ip | 10419.0 | +| test.c:513:21:513:22 | 14 | 1.0 | +| test.c:513:21:513:22 | (unsigned int)... | 1.0 | +| test.c:513:26:513:27 | 32 | 1.0 | +| test.c:513:26:513:27 | (unsigned int)... | 1.0 | +| test.c:514:11:514:11 | 2 | 1.0 | +| test.c:514:11:514:11 | (unsigned int)... | 1.0 | +| test.c:514:11:514:28 | ... * ... | 10419.0 | +| test.c:514:15:514:28 | (...) | 10419.0 | +| test.c:514:16:514:17 | ip | 10419.0 | +| test.c:514:16:514:22 | ... * ... | 10419.0 | +| test.c:514:16:514:27 | ... + ... | 10419.0 | +| test.c:514:21:514:22 | 14 | 1.0 | +| test.c:514:21:514:22 | (unsigned int)... | 1.0 | +| test.c:514:26:514:27 | 64 | 1.0 | +| test.c:514:26:514:27 | (unsigned int)... | 1.0 | +| test.c:515:11:520:24 | (...) | 9.049625849719E12 | +| test.c:515:12:515:23 | (...) | 10419.0 | +| test.c:515:12:515:28 | ... * ... | 10419.0 | +| test.c:515:12:516:61 | ... > ... | 1.0 | +| test.c:515:12:520:23 | ... ? ... : ... | 9.049625849719E12 | +| test.c:515:13:515:13 | 2 | 1.0 | +| test.c:515:13:515:13 | (unsigned int)... | 1.0 | +| test.c:515:13:515:18 | ... * ... | 10419.0 | +| test.c:515:13:515:22 | ... + ... | 10419.0 | +| test.c:515:17:515:18 | ip | 10419.0 | +| test.c:515:22:515:22 | 1 | 1.0 | +| test.c:515:22:515:22 | (unsigned int)... | 1.0 | +| test.c:515:27:515:28 | 14 | 1.0 | +| test.c:515:27:515:28 | (unsigned int)... | 1.0 | +| test.c:516:11:516:61 | (...) | 1.08555561E8 | +| test.c:516:12:516:13 | 14 | 1.0 | +| test.c:516:12:516:13 | (unsigned int)... | 1.0 | +| test.c:516:12:516:24 | ... * ... | 10419.0 | +| test.c:516:12:516:34 | ... > ... | 1.0 | +| test.c:516:12:516:60 | ... ? ... : ... | 1.08555561E8 | +| test.c:516:17:516:24 | (...) | 10419.0 | | test.c:516:18:516:18 | 2 | 1.0 | | test.c:516:18:516:18 | (unsigned int)... | 1.0 | -| test.c:516:18:516:23 | ... * ... | 125035.0 | -| test.c:516:18:516:27 | ... + ... | 125035.0 | -| test.c:516:22:516:23 | ip | 125035.0 | -| test.c:516:27:516:27 | 1 | 1.0 | -| test.c:516:27:516:27 | (unsigned int)... | 1.0 | -| test.c:516:32:516:33 | 14 | 1.0 | -| test.c:516:32:516:33 | (unsigned int)... | 1.0 | -| test.c:517:17:517:18 | 14 | 1.0 | -| test.c:517:17:517:18 | (unsigned int)... | 1.0 | -| test.c:517:17:517:29 | ... * ... | 125035.0 | -| test.c:517:17:517:39 | ... > ... | 1.0 | -| test.c:517:17:519:25 | ... ? ... : ... | 1.5633751225E10 | -| test.c:517:22:517:29 | (...) | 125035.0 | -| test.c:517:23:517:23 | 2 | 1.0 | -| test.c:517:23:517:23 | (unsigned int)... | 1.0 | -| test.c:517:23:517:28 | ... * ... | 125035.0 | -| test.c:517:27:517:28 | ip | 125035.0 | -| test.c:517:33:517:34 | 17 | 1.0 | -| test.c:517:33:517:34 | (unsigned int)... | 1.0 | -| test.c:517:33:517:39 | ... * ... | 125035.0 | -| test.c:517:38:517:39 | ip | 125035.0 | -| test.c:518:19:518:20 | 14 | 1.0 | -| test.c:518:19:518:20 | (unsigned int)... | 1.0 | -| test.c:518:19:518:31 | ... * ... | 125035.0 | -| test.c:518:24:518:31 | (...) | 125035.0 | -| test.c:518:25:518:25 | 2 | 1.0 | -| test.c:518:25:518:25 | (unsigned int)... | 1.0 | -| test.c:518:25:518:30 | ... * ... | 125035.0 | -| test.c:518:29:518:30 | ip | 125035.0 | -| test.c:519:19:519:20 | 14 | 1.0 | -| test.c:519:19:519:20 | (unsigned int)... | 1.0 | -| test.c:519:19:519:25 | ... * ... | 125035.0 | -| test.c:519:24:519:25 | ip | 125035.0 | -| test.c:520:13:520:13 | 2 | 1.0 | -| test.c:520:13:520:13 | (unsigned int)... | 1.0 | -| test.c:520:13:520:18 | ... * ... | 62517.0 | -| test.c:520:13:520:23 | ... * ... | 62517.0 | -| test.c:520:13:520:43 | ... + ... | 3.908375289E9 | -| test.c:520:17:520:18 | ip | 62517.0 | -| test.c:520:22:520:23 | 14 | 1.0 | -| test.c:520:22:520:23 | (unsigned int)... | 1.0 | -| test.c:520:27:520:38 | (...) | 62517.0 | -| test.c:520:27:520:43 | ... * ... | 62517.0 | -| test.c:520:28:520:28 | 2 | 1.0 | -| test.c:520:28:520:28 | (unsigned int)... | 1.0 | -| test.c:520:28:520:33 | ... * ... | 62517.0 | -| test.c:520:28:520:37 | ... + ... | 62517.0 | -| test.c:520:32:520:33 | ip | 62517.0 | -| test.c:520:37:520:37 | 1 | 1.0 | -| test.c:520:37:520:37 | (unsigned int)... | 1.0 | -| test.c:520:42:520:43 | 17 | 1.0 | -| test.c:520:42:520:43 | (unsigned int)... | 1.0 | -| test.c:521:9:521:9 | 4 | 1.0 | +| test.c:516:18:516:23 | ... * ... | 10419.0 | +| test.c:516:22:516:23 | ip | 10419.0 | +| test.c:516:28:516:29 | 17 | 1.0 | +| test.c:516:28:516:29 | (unsigned int)... | 1.0 | +| test.c:516:28:516:34 | ... * ... | 10419.0 | +| test.c:516:33:516:34 | ip | 10419.0 | +| test.c:516:38:516:39 | 17 | 1.0 | +| test.c:516:38:516:39 | (unsigned int)... | 1.0 | +| test.c:516:38:516:50 | ... * ... | 10419.0 | +| test.c:516:43:516:50 | (...) | 10419.0 | +| test.c:516:44:516:44 | 2 | 1.0 | +| test.c:516:44:516:44 | (unsigned int)... | 1.0 | +| test.c:516:44:516:49 | ... * ... | 10419.0 | +| test.c:516:48:516:49 | ip | 10419.0 | +| test.c:516:54:516:55 | 17 | 1.0 | +| test.c:516:54:516:55 | (unsigned int)... | 1.0 | +| test.c:516:54:516:60 | ... * ... | 10419.0 | +| test.c:516:59:516:60 | ip | 10419.0 | +| test.c:517:15:517:26 | (...) | 20839.0 | +| test.c:517:15:517:31 | ... * ... | 20839.0 | +| test.c:517:16:517:16 | 2 | 1.0 | +| test.c:517:16:517:16 | (unsigned int)... | 1.0 | +| test.c:517:16:517:21 | ... * ... | 20839.0 | +| test.c:517:16:517:25 | ... + ... | 20839.0 | +| test.c:517:20:517:21 | ip | 20839.0 | +| test.c:517:25:517:25 | 1 | 1.0 | +| test.c:517:25:517:25 | (unsigned int)... | 1.0 | +| test.c:517:30:517:31 | 14 | 1.0 | +| test.c:517:30:517:31 | (unsigned int)... | 1.0 | +| test.c:518:15:518:16 | 14 | 1.0 | +| test.c:518:15:518:16 | (unsigned int)... | 1.0 | +| test.c:518:15:518:27 | ... * ... | 20839.0 | +| test.c:518:15:518:37 | ... > ... | 1.0 | +| test.c:518:15:520:23 | ... ? ... : ... | 4.34263921E8 | +| test.c:518:20:518:27 | (...) | 20839.0 | +| test.c:518:21:518:21 | 2 | 1.0 | +| test.c:518:21:518:21 | (unsigned int)... | 1.0 | +| test.c:518:21:518:26 | ... * ... | 20839.0 | +| test.c:518:25:518:26 | ip | 20839.0 | +| test.c:518:31:518:32 | 17 | 1.0 | +| test.c:518:31:518:32 | (unsigned int)... | 1.0 | +| test.c:518:31:518:37 | ... * ... | 20839.0 | +| test.c:518:36:518:37 | ip | 20839.0 | +| test.c:519:17:519:18 | 14 | 1.0 | +| test.c:519:17:519:18 | (unsigned int)... | 1.0 | +| test.c:519:17:519:29 | ... * ... | 20839.0 | +| test.c:519:22:519:29 | (...) | 20839.0 | +| test.c:519:23:519:23 | 2 | 1.0 | +| test.c:519:23:519:23 | (unsigned int)... | 1.0 | +| test.c:519:23:519:28 | ... * ... | 20839.0 | +| test.c:519:27:519:28 | ip | 20839.0 | +| test.c:520:17:520:18 | 14 | 1.0 | +| test.c:520:17:520:18 | (unsigned int)... | 1.0 | +| test.c:520:17:520:23 | ... * ... | 20839.0 | +| test.c:520:22:520:23 | ip | 20839.0 | +| test.c:521:9:521:9 | 2 | 1.0 | | test.c:521:9:521:9 | (unsigned int)... | 1.0 | -| test.c:521:9:521:26 | ... * ... | 10419.0 | -| test.c:521:9:522:30 | ... + ... | 1.08555561E8 | -| test.c:521:9:523:30 | ... + ... | 1.131040390059E12 | -| test.c:521:9:529:26 | ... + ... | 1.0235492350954187E25 | -| test.c:521:9:530:61 | ... > ... | 1.0 | -| test.c:521:9:542:25 | ... ? ... : ... | 4.778814771623795E41 | -| test.c:521:13:521:26 | (...) | 10419.0 | -| test.c:521:14:521:15 | ip | 10419.0 | -| test.c:521:14:521:20 | ... * ... | 10419.0 | -| test.c:521:14:521:25 | ... + ... | 10419.0 | -| test.c:521:19:521:20 | 14 | 1.0 | -| test.c:521:19:521:20 | (unsigned int)... | 1.0 | -| test.c:521:24:521:25 | 32 | 1.0 | -| test.c:521:24:521:25 | (unsigned int)... | 1.0 | -| test.c:522:13:522:30 | (...) | 10419.0 | -| test.c:522:14:522:14 | 2 | 1.0 | -| test.c:522:14:522:14 | (unsigned int)... | 1.0 | -| test.c:522:14:522:19 | ... * ... | 10419.0 | -| test.c:522:14:522:24 | ... * ... | 10419.0 | -| test.c:522:14:522:29 | ... + ... | 10419.0 | -| test.c:522:18:522:19 | ip | 10419.0 | +| test.c:521:9:521:14 | ... * ... | 62517.0 | +| test.c:521:9:521:19 | ... * ... | 62517.0 | +| test.c:521:9:521:39 | ... + ... | 3.908375289E9 | +| test.c:521:13:521:14 | ip | 62517.0 | +| test.c:521:18:521:19 | 14 | 1.0 | +| test.c:521:18:521:19 | (unsigned int)... | 1.0 | +| test.c:521:23:521:34 | (...) | 62517.0 | +| test.c:521:23:521:39 | ... * ... | 62517.0 | +| test.c:521:24:521:24 | 2 | 1.0 | +| test.c:521:24:521:24 | (unsigned int)... | 1.0 | +| test.c:521:24:521:29 | ... * ... | 62517.0 | +| test.c:521:24:521:33 | ... + ... | 62517.0 | +| test.c:521:28:521:29 | ip | 62517.0 | +| test.c:521:33:521:33 | 1 | 1.0 | +| test.c:521:33:521:33 | (unsigned int)... | 1.0 | +| test.c:521:38:521:39 | 17 | 1.0 | +| test.c:521:38:521:39 | (unsigned int)... | 1.0 | +| test.c:522:13:522:13 | 4 | 1.0 | +| test.c:522:13:522:13 | (unsigned int)... | 1.0 | +| test.c:522:13:522:30 | ... * ... | 62517.0 | +| test.c:522:13:523:30 | ... + ... | 3.908375289E9 | +| test.c:522:13:524:30 | ... + ... | 2.44339897942413E14 | +| test.c:522:13:530:26 | ... + ... | 4.7762734556795386E29 | +| test.c:522:17:522:30 | (...) | 62517.0 | +| test.c:522:18:522:19 | ip | 62517.0 | +| test.c:522:18:522:24 | ... * ... | 62517.0 | +| test.c:522:18:522:29 | ... + ... | 62517.0 | | test.c:522:23:522:24 | 14 | 1.0 | | test.c:522:23:522:24 | (unsigned int)... | 1.0 | | test.c:522:28:522:29 | 32 | 1.0 | | test.c:522:28:522:29 | (unsigned int)... | 1.0 | -| test.c:523:13:523:13 | 2 | 1.0 | -| test.c:523:13:523:13 | (unsigned int)... | 1.0 | -| test.c:523:13:523:30 | ... * ... | 10419.0 | -| test.c:523:17:523:30 | (...) | 10419.0 | -| test.c:523:18:523:19 | ip | 10419.0 | -| test.c:523:18:523:24 | ... * ... | 10419.0 | -| test.c:523:18:523:29 | ... + ... | 10419.0 | +| test.c:523:13:523:30 | (...) | 62517.0 | +| test.c:523:14:523:14 | 2 | 1.0 | +| test.c:523:14:523:14 | (unsigned int)... | 1.0 | +| test.c:523:14:523:19 | ... * ... | 62517.0 | +| test.c:523:14:523:24 | ... * ... | 62517.0 | +| test.c:523:14:523:29 | ... + ... | 62517.0 | +| test.c:523:18:523:19 | ip | 62517.0 | | test.c:523:23:523:24 | 14 | 1.0 | | test.c:523:23:523:24 | (unsigned int)... | 1.0 | -| test.c:523:28:523:29 | 64 | 1.0 | +| test.c:523:28:523:29 | 32 | 1.0 | | test.c:523:28:523:29 | (unsigned int)... | 1.0 | -| test.c:524:13:529:26 | (...) | 9.049625849719E12 | -| test.c:524:14:524:25 | (...) | 10419.0 | -| test.c:524:14:524:30 | ... * ... | 10419.0 | -| test.c:524:14:525:63 | ... > ... | 1.0 | -| test.c:524:14:529:25 | ... ? ... : ... | 9.049625849719E12 | -| test.c:524:15:524:15 | 2 | 1.0 | -| test.c:524:15:524:15 | (unsigned int)... | 1.0 | -| test.c:524:15:524:20 | ... * ... | 10419.0 | -| test.c:524:15:524:24 | ... + ... | 10419.0 | -| test.c:524:19:524:20 | ip | 10419.0 | -| test.c:524:24:524:24 | 1 | 1.0 | -| test.c:524:24:524:24 | (unsigned int)... | 1.0 | -| test.c:524:29:524:30 | 14 | 1.0 | -| test.c:524:29:524:30 | (unsigned int)... | 1.0 | -| test.c:525:13:525:63 | (...) | 1.08555561E8 | -| test.c:525:14:525:15 | 14 | 1.0 | -| test.c:525:14:525:15 | (unsigned int)... | 1.0 | -| test.c:525:14:525:26 | ... * ... | 10419.0 | -| test.c:525:14:525:36 | ... > ... | 1.0 | -| test.c:525:14:525:62 | ... ? ... : ... | 1.08555561E8 | -| test.c:525:19:525:26 | (...) | 10419.0 | -| test.c:525:20:525:20 | 2 | 1.0 | -| test.c:525:20:525:20 | (unsigned int)... | 1.0 | -| test.c:525:20:525:25 | ... * ... | 10419.0 | -| test.c:525:24:525:25 | ip | 10419.0 | -| test.c:525:30:525:31 | 17 | 1.0 | -| test.c:525:30:525:31 | (unsigned int)... | 1.0 | -| test.c:525:30:525:36 | ... * ... | 10419.0 | -| test.c:525:35:525:36 | ip | 10419.0 | -| test.c:525:40:525:41 | 17 | 1.0 | -| test.c:525:40:525:41 | (unsigned int)... | 1.0 | -| test.c:525:40:525:52 | ... * ... | 10419.0 | -| test.c:525:45:525:52 | (...) | 10419.0 | -| test.c:525:46:525:46 | 2 | 1.0 | -| test.c:525:46:525:46 | (unsigned int)... | 1.0 | -| test.c:525:46:525:51 | ... * ... | 10419.0 | -| test.c:525:50:525:51 | ip | 10419.0 | -| test.c:525:56:525:57 | 17 | 1.0 | -| test.c:525:56:525:57 | (unsigned int)... | 1.0 | -| test.c:525:56:525:62 | ... * ... | 10419.0 | -| test.c:525:61:525:62 | ip | 10419.0 | -| test.c:526:17:526:28 | (...) | 20839.0 | -| test.c:526:17:526:33 | ... * ... | 20839.0 | -| test.c:526:18:526:18 | 2 | 1.0 | -| test.c:526:18:526:18 | (unsigned int)... | 1.0 | -| test.c:526:18:526:23 | ... * ... | 20839.0 | -| test.c:526:18:526:27 | ... + ... | 20839.0 | -| test.c:526:22:526:23 | ip | 20839.0 | -| test.c:526:27:526:27 | 1 | 1.0 | -| test.c:526:27:526:27 | (unsigned int)... | 1.0 | -| test.c:526:32:526:33 | 14 | 1.0 | -| test.c:526:32:526:33 | (unsigned int)... | 1.0 | -| test.c:527:17:527:18 | 14 | 1.0 | -| test.c:527:17:527:18 | (unsigned int)... | 1.0 | -| test.c:527:17:527:29 | ... * ... | 20839.0 | -| test.c:527:17:527:39 | ... > ... | 1.0 | -| test.c:527:17:529:25 | ... ? ... : ... | 4.34263921E8 | -| test.c:527:22:527:29 | (...) | 20839.0 | -| test.c:527:23:527:23 | 2 | 1.0 | -| test.c:527:23:527:23 | (unsigned int)... | 1.0 | -| test.c:527:23:527:28 | ... * ... | 20839.0 | -| test.c:527:27:527:28 | ip | 20839.0 | -| test.c:527:33:527:34 | 17 | 1.0 | -| test.c:527:33:527:34 | (unsigned int)... | 1.0 | -| test.c:527:33:527:39 | ... * ... | 20839.0 | -| test.c:527:38:527:39 | ip | 20839.0 | -| test.c:528:19:528:20 | 14 | 1.0 | -| test.c:528:19:528:20 | (unsigned int)... | 1.0 | -| test.c:528:19:528:31 | ... * ... | 20839.0 | -| test.c:528:24:528:31 | (...) | 20839.0 | -| test.c:528:25:528:25 | 2 | 1.0 | -| test.c:528:25:528:25 | (unsigned int)... | 1.0 | -| test.c:528:25:528:30 | ... * ... | 20839.0 | -| test.c:528:29:528:30 | ip | 20839.0 | +| test.c:524:13:524:13 | 2 | 1.0 | +| test.c:524:13:524:13 | (unsigned int)... | 1.0 | +| test.c:524:13:524:30 | ... * ... | 62517.0 | +| test.c:524:17:524:30 | (...) | 62517.0 | +| test.c:524:18:524:19 | ip | 62517.0 | +| test.c:524:18:524:24 | ... * ... | 62517.0 | +| test.c:524:18:524:29 | ... + ... | 62517.0 | +| test.c:524:23:524:24 | 14 | 1.0 | +| test.c:524:23:524:24 | (unsigned int)... | 1.0 | +| test.c:524:28:524:29 | 64 | 1.0 | +| test.c:524:28:524:29 | (unsigned int)... | 1.0 | +| test.c:525:13:530:26 | (...) | 1.954766084417875E15 | +| test.c:525:14:525:25 | (...) | 62517.0 | +| test.c:525:14:525:30 | ... * ... | 62517.0 | +| test.c:525:14:526:63 | ... > ... | 1.0 | +| test.c:525:14:530:25 | ... ? ... : ... | 1.954766084417875E15 | +| test.c:525:15:525:15 | 2 | 1.0 | +| test.c:525:15:525:15 | (unsigned int)... | 1.0 | +| test.c:525:15:525:20 | ... * ... | 62517.0 | +| test.c:525:15:525:24 | ... + ... | 62517.0 | +| test.c:525:19:525:20 | ip | 62517.0 | +| test.c:525:24:525:24 | 1 | 1.0 | +| test.c:525:24:525:24 | (unsigned int)... | 1.0 | +| test.c:525:29:525:30 | 14 | 1.0 | +| test.c:525:29:525:30 | (unsigned int)... | 1.0 | +| test.c:526:13:526:63 | (...) | 3.908375289E9 | +| test.c:526:14:526:15 | 14 | 1.0 | +| test.c:526:14:526:15 | (unsigned int)... | 1.0 | +| test.c:526:14:526:26 | ... * ... | 62517.0 | +| test.c:526:14:526:36 | ... > ... | 1.0 | +| test.c:526:14:526:62 | ... ? ... : ... | 3.908375289E9 | +| test.c:526:19:526:26 | (...) | 62517.0 | +| test.c:526:20:526:20 | 2 | 1.0 | +| test.c:526:20:526:20 | (unsigned int)... | 1.0 | +| test.c:526:20:526:25 | ... * ... | 62517.0 | +| test.c:526:24:526:25 | ip | 62517.0 | +| test.c:526:30:526:31 | 17 | 1.0 | +| test.c:526:30:526:31 | (unsigned int)... | 1.0 | +| test.c:526:30:526:36 | ... * ... | 62517.0 | +| test.c:526:35:526:36 | ip | 62517.0 | +| test.c:526:40:526:41 | 17 | 1.0 | +| test.c:526:40:526:41 | (unsigned int)... | 1.0 | +| test.c:526:40:526:52 | ... * ... | 62517.0 | +| test.c:526:45:526:52 | (...) | 62517.0 | +| test.c:526:46:526:46 | 2 | 1.0 | +| test.c:526:46:526:46 | (unsigned int)... | 1.0 | +| test.c:526:46:526:51 | ... * ... | 62517.0 | +| test.c:526:50:526:51 | ip | 62517.0 | +| test.c:526:56:526:57 | 17 | 1.0 | +| test.c:526:56:526:57 | (unsigned int)... | 1.0 | +| test.c:526:56:526:62 | ... * ... | 62517.0 | +| test.c:526:61:526:62 | ip | 62517.0 | +| test.c:527:17:527:28 | (...) | 125035.0 | +| test.c:527:17:527:33 | ... * ... | 125035.0 | +| test.c:527:18:527:18 | 2 | 1.0 | +| test.c:527:18:527:18 | (unsigned int)... | 1.0 | +| test.c:527:18:527:23 | ... * ... | 125035.0 | +| test.c:527:18:527:27 | ... + ... | 125035.0 | +| test.c:527:22:527:23 | ip | 125035.0 | +| test.c:527:27:527:27 | 1 | 1.0 | +| test.c:527:27:527:27 | (unsigned int)... | 1.0 | +| test.c:527:32:527:33 | 14 | 1.0 | +| test.c:527:32:527:33 | (unsigned int)... | 1.0 | +| test.c:528:17:528:18 | 14 | 1.0 | +| test.c:528:17:528:18 | (unsigned int)... | 1.0 | +| test.c:528:17:528:29 | ... * ... | 125035.0 | +| test.c:528:17:528:39 | ... > ... | 1.0 | +| test.c:528:17:530:25 | ... ? ... : ... | 1.5633751225E10 | +| test.c:528:22:528:29 | (...) | 125035.0 | +| test.c:528:23:528:23 | 2 | 1.0 | +| test.c:528:23:528:23 | (unsigned int)... | 1.0 | +| test.c:528:23:528:28 | ... * ... | 125035.0 | +| test.c:528:27:528:28 | ip | 125035.0 | +| test.c:528:33:528:34 | 17 | 1.0 | +| test.c:528:33:528:34 | (unsigned int)... | 1.0 | +| test.c:528:33:528:39 | ... * ... | 125035.0 | +| test.c:528:38:528:39 | ip | 125035.0 | | test.c:529:19:529:20 | 14 | 1.0 | | test.c:529:19:529:20 | (unsigned int)... | 1.0 | -| test.c:529:19:529:25 | ... * ... | 20839.0 | -| test.c:529:24:529:25 | ip | 20839.0 | -| test.c:530:11:530:61 | (...) | 3.908375289E9 | -| test.c:530:12:530:13 | 14 | 1.0 | -| test.c:530:12:530:13 | (unsigned int)... | 1.0 | -| test.c:530:12:530:18 | ... * ... | 62517.0 | -| test.c:530:12:530:34 | ... > ... | 1.0 | -| test.c:530:12:530:60 | ... ? ... : ... | 3.908375289E9 | -| test.c:530:17:530:18 | ip | 62517.0 | -| test.c:530:22:530:29 | (...) | 62517.0 | -| test.c:530:22:530:34 | ... * ... | 62517.0 | -| test.c:530:23:530:24 | ip | 62517.0 | -| test.c:530:23:530:28 | ... + ... | 62517.0 | -| test.c:530:28:530:28 | 1 | 1.0 | -| test.c:530:28:530:28 | (unsigned int)... | 1.0 | -| test.c:530:33:530:34 | 17 | 1.0 | -| test.c:530:33:530:34 | (unsigned int)... | 1.0 | -| test.c:530:38:530:39 | 17 | 1.0 | -| test.c:530:38:530:39 | (unsigned int)... | 1.0 | -| test.c:530:38:530:44 | ... * ... | 62517.0 | -| test.c:530:43:530:44 | ip | 62517.0 | -| test.c:530:48:530:55 | (...) | 62517.0 | -| test.c:530:48:530:60 | ... * ... | 62517.0 | -| test.c:530:49:530:50 | ip | 62517.0 | -| test.c:530:49:530:54 | ... + ... | 62517.0 | -| test.c:530:54:530:54 | 1 | 1.0 | -| test.c:530:54:530:54 | (unsigned int)... | 1.0 | -| test.c:530:59:530:60 | 17 | 1.0 | -| test.c:530:59:530:60 | (unsigned int)... | 1.0 | -| test.c:531:11:531:11 | 4 | 1.0 | -| test.c:531:11:531:11 | (unsigned int)... | 1.0 | -| test.c:531:11:531:28 | ... * ... | 125034.0 | -| test.c:531:11:532:28 | ... + ... | 1.5633501156E10 | -| test.c:531:11:533:28 | ... + ... | 1.954719183539304E15 | -| test.c:531:11:539:24 | ... + ... | 3.056778340269433E31 | -| test.c:531:15:531:28 | (...) | 125034.0 | -| test.c:531:16:531:17 | ip | 125034.0 | -| test.c:531:16:531:22 | ... * ... | 125034.0 | -| test.c:531:16:531:27 | ... + ... | 125034.0 | -| test.c:531:21:531:22 | 14 | 1.0 | -| test.c:531:21:531:22 | (unsigned int)... | 1.0 | -| test.c:531:26:531:27 | 32 | 1.0 | -| test.c:531:26:531:27 | (unsigned int)... | 1.0 | -| test.c:532:11:532:28 | (...) | 125034.0 | -| test.c:532:12:532:12 | 2 | 1.0 | -| test.c:532:12:532:12 | (unsigned int)... | 1.0 | -| test.c:532:12:532:17 | ... * ... | 125034.0 | -| test.c:532:12:532:22 | ... * ... | 125034.0 | -| test.c:532:12:532:27 | ... + ... | 125034.0 | -| test.c:532:16:532:17 | ip | 125034.0 | -| test.c:532:21:532:22 | 14 | 1.0 | -| test.c:532:21:532:22 | (unsigned int)... | 1.0 | -| test.c:532:26:532:27 | 32 | 1.0 | -| test.c:532:26:532:27 | (unsigned int)... | 1.0 | -| test.c:533:11:533:11 | 2 | 1.0 | -| test.c:533:11:533:11 | (unsigned int)... | 1.0 | -| test.c:533:11:533:28 | ... * ... | 125034.0 | -| test.c:533:15:533:28 | (...) | 125034.0 | -| test.c:533:16:533:17 | ip | 125034.0 | -| test.c:533:16:533:22 | ... * ... | 125034.0 | -| test.c:533:16:533:27 | ... + ... | 125034.0 | -| test.c:533:21:533:22 | 14 | 1.0 | -| test.c:533:21:533:22 | (unsigned int)... | 1.0 | -| test.c:533:26:533:27 | 64 | 1.0 | -| test.c:533:26:533:27 | (unsigned int)... | 1.0 | -| test.c:534:11:539:24 | (...) | 1.5637941071078508E16 | -| test.c:534:12:534:23 | (...) | 125034.0 | -| test.c:534:12:534:28 | ... * ... | 125034.0 | -| test.c:534:12:535:61 | ... > ... | 1.0 | -| test.c:534:12:539:23 | ... ? ... : ... | 1.5637941071078508E16 | +| test.c:529:19:529:31 | ... * ... | 125035.0 | +| test.c:529:24:529:31 | (...) | 125035.0 | +| test.c:529:25:529:25 | 2 | 1.0 | +| test.c:529:25:529:25 | (unsigned int)... | 1.0 | +| test.c:529:25:529:30 | ... * ... | 125035.0 | +| test.c:529:29:529:30 | ip | 125035.0 | +| test.c:530:19:530:20 | 14 | 1.0 | +| test.c:530:19:530:20 | (unsigned int)... | 1.0 | +| test.c:530:19:530:25 | ... * ... | 125035.0 | +| test.c:530:24:530:25 | ip | 125035.0 | +| test.c:531:13:531:13 | 2 | 1.0 | +| test.c:531:13:531:13 | (unsigned int)... | 1.0 | +| test.c:531:13:531:18 | ... * ... | 62517.0 | +| test.c:531:13:531:23 | ... * ... | 62517.0 | +| test.c:531:13:531:43 | ... + ... | 3.908375289E9 | +| test.c:531:17:531:18 | ip | 62517.0 | +| test.c:531:22:531:23 | 14 | 1.0 | +| test.c:531:22:531:23 | (unsigned int)... | 1.0 | +| test.c:531:27:531:38 | (...) | 62517.0 | +| test.c:531:27:531:43 | ... * ... | 62517.0 | +| test.c:531:28:531:28 | 2 | 1.0 | +| test.c:531:28:531:28 | (unsigned int)... | 1.0 | +| test.c:531:28:531:33 | ... * ... | 62517.0 | +| test.c:531:28:531:37 | ... + ... | 62517.0 | +| test.c:531:32:531:33 | ip | 62517.0 | +| test.c:531:37:531:37 | 1 | 1.0 | +| test.c:531:37:531:37 | (unsigned int)... | 1.0 | +| test.c:531:42:531:43 | 17 | 1.0 | +| test.c:531:42:531:43 | (unsigned int)... | 1.0 | +| test.c:532:9:532:9 | 4 | 1.0 | +| test.c:532:9:532:9 | (unsigned int)... | 1.0 | +| test.c:532:9:532:26 | ... * ... | 10419.0 | +| test.c:532:9:533:30 | ... + ... | 1.08555561E8 | +| test.c:532:9:534:30 | ... + ... | 1.131040390059E12 | +| test.c:532:9:540:26 | ... + ... | 1.0235492350954187E25 | +| test.c:532:9:541:61 | ... > ... | 1.0 | +| test.c:532:9:553:25 | ... ? ... : ... | 4.778814771623795E41 | +| test.c:532:13:532:26 | (...) | 10419.0 | +| test.c:532:14:532:15 | ip | 10419.0 | +| test.c:532:14:532:20 | ... * ... | 10419.0 | +| test.c:532:14:532:25 | ... + ... | 10419.0 | +| test.c:532:19:532:20 | 14 | 1.0 | +| test.c:532:19:532:20 | (unsigned int)... | 1.0 | +| test.c:532:24:532:25 | 32 | 1.0 | +| test.c:532:24:532:25 | (unsigned int)... | 1.0 | +| test.c:533:13:533:30 | (...) | 10419.0 | +| test.c:533:14:533:14 | 2 | 1.0 | +| test.c:533:14:533:14 | (unsigned int)... | 1.0 | +| test.c:533:14:533:19 | ... * ... | 10419.0 | +| test.c:533:14:533:24 | ... * ... | 10419.0 | +| test.c:533:14:533:29 | ... + ... | 10419.0 | +| test.c:533:18:533:19 | ip | 10419.0 | +| test.c:533:23:533:24 | 14 | 1.0 | +| test.c:533:23:533:24 | (unsigned int)... | 1.0 | +| test.c:533:28:533:29 | 32 | 1.0 | +| test.c:533:28:533:29 | (unsigned int)... | 1.0 | | test.c:534:13:534:13 | 2 | 1.0 | | test.c:534:13:534:13 | (unsigned int)... | 1.0 | -| test.c:534:13:534:18 | ... * ... | 125034.0 | -| test.c:534:13:534:22 | ... + ... | 125034.0 | -| test.c:534:17:534:18 | ip | 125034.0 | -| test.c:534:22:534:22 | 1 | 1.0 | -| test.c:534:22:534:22 | (unsigned int)... | 1.0 | -| test.c:534:27:534:28 | 14 | 1.0 | -| test.c:534:27:534:28 | (unsigned int)... | 1.0 | -| test.c:535:11:535:61 | (...) | 1.5633501156E10 | -| test.c:535:12:535:13 | 14 | 1.0 | -| test.c:535:12:535:13 | (unsigned int)... | 1.0 | -| test.c:535:12:535:24 | ... * ... | 125034.0 | -| test.c:535:12:535:34 | ... > ... | 1.0 | -| test.c:535:12:535:60 | ... ? ... : ... | 1.5633501156E10 | -| test.c:535:17:535:24 | (...) | 125034.0 | -| test.c:535:18:535:18 | 2 | 1.0 | -| test.c:535:18:535:18 | (unsigned int)... | 1.0 | -| test.c:535:18:535:23 | ... * ... | 125034.0 | -| test.c:535:22:535:23 | ip | 125034.0 | -| test.c:535:28:535:29 | 17 | 1.0 | -| test.c:535:28:535:29 | (unsigned int)... | 1.0 | -| test.c:535:28:535:34 | ... * ... | 125034.0 | -| test.c:535:33:535:34 | ip | 125034.0 | -| test.c:535:38:535:39 | 17 | 1.0 | -| test.c:535:38:535:39 | (unsigned int)... | 1.0 | -| test.c:535:38:535:50 | ... * ... | 125034.0 | -| test.c:535:43:535:50 | (...) | 125034.0 | -| test.c:535:44:535:44 | 2 | 1.0 | -| test.c:535:44:535:44 | (unsigned int)... | 1.0 | -| test.c:535:44:535:49 | ... * ... | 125034.0 | -| test.c:535:48:535:49 | ip | 125034.0 | -| test.c:535:54:535:55 | 17 | 1.0 | -| test.c:535:54:535:55 | (unsigned int)... | 1.0 | -| test.c:535:54:535:60 | ... * ... | 125034.0 | -| test.c:535:59:535:60 | ip | 125034.0 | -| test.c:536:15:536:26 | (...) | 250069.0 | -| test.c:536:15:536:31 | ... * ... | 250069.0 | -| test.c:536:16:536:16 | 2 | 1.0 | -| test.c:536:16:536:16 | (unsigned int)... | 1.0 | -| test.c:536:16:536:21 | ... * ... | 250069.0 | -| test.c:536:16:536:25 | ... + ... | 250069.0 | -| test.c:536:20:536:21 | ip | 250069.0 | -| test.c:536:25:536:25 | 1 | 1.0 | -| test.c:536:25:536:25 | (unsigned int)... | 1.0 | -| test.c:536:30:536:31 | 14 | 1.0 | +| test.c:534:13:534:30 | ... * ... | 10419.0 | +| test.c:534:17:534:30 | (...) | 10419.0 | +| test.c:534:18:534:19 | ip | 10419.0 | +| test.c:534:18:534:24 | ... * ... | 10419.0 | +| test.c:534:18:534:29 | ... + ... | 10419.0 | +| test.c:534:23:534:24 | 14 | 1.0 | +| test.c:534:23:534:24 | (unsigned int)... | 1.0 | +| test.c:534:28:534:29 | 64 | 1.0 | +| test.c:534:28:534:29 | (unsigned int)... | 1.0 | +| test.c:535:13:540:26 | (...) | 9.049625849719E12 | +| test.c:535:14:535:25 | (...) | 10419.0 | +| test.c:535:14:535:30 | ... * ... | 10419.0 | +| test.c:535:14:536:63 | ... > ... | 1.0 | +| test.c:535:14:540:25 | ... ? ... : ... | 9.049625849719E12 | +| test.c:535:15:535:15 | 2 | 1.0 | +| test.c:535:15:535:15 | (unsigned int)... | 1.0 | +| test.c:535:15:535:20 | ... * ... | 10419.0 | +| test.c:535:15:535:24 | ... + ... | 10419.0 | +| test.c:535:19:535:20 | ip | 10419.0 | +| test.c:535:24:535:24 | 1 | 1.0 | +| test.c:535:24:535:24 | (unsigned int)... | 1.0 | +| test.c:535:29:535:30 | 14 | 1.0 | +| test.c:535:29:535:30 | (unsigned int)... | 1.0 | +| test.c:536:13:536:63 | (...) | 1.08555561E8 | +| test.c:536:14:536:15 | 14 | 1.0 | +| test.c:536:14:536:15 | (unsigned int)... | 1.0 | +| test.c:536:14:536:26 | ... * ... | 10419.0 | +| test.c:536:14:536:36 | ... > ... | 1.0 | +| test.c:536:14:536:62 | ... ? ... : ... | 1.08555561E8 | +| test.c:536:19:536:26 | (...) | 10419.0 | +| test.c:536:20:536:20 | 2 | 1.0 | +| test.c:536:20:536:20 | (unsigned int)... | 1.0 | +| test.c:536:20:536:25 | ... * ... | 10419.0 | +| test.c:536:24:536:25 | ip | 10419.0 | +| test.c:536:30:536:31 | 17 | 1.0 | | test.c:536:30:536:31 | (unsigned int)... | 1.0 | -| test.c:537:15:537:16 | 14 | 1.0 | -| test.c:537:15:537:16 | (unsigned int)... | 1.0 | -| test.c:537:15:537:27 | ... * ... | 250069.0 | -| test.c:537:15:537:37 | ... > ... | 1.0 | -| test.c:537:15:539:23 | ... ? ... : ... | 6.2534504761E10 | -| test.c:537:20:537:27 | (...) | 250069.0 | -| test.c:537:21:537:21 | 2 | 1.0 | -| test.c:537:21:537:21 | (unsigned int)... | 1.0 | -| test.c:537:21:537:26 | ... * ... | 250069.0 | -| test.c:537:25:537:26 | ip | 250069.0 | -| test.c:537:31:537:32 | 17 | 1.0 | -| test.c:537:31:537:32 | (unsigned int)... | 1.0 | -| test.c:537:31:537:37 | ... * ... | 250069.0 | -| test.c:537:36:537:37 | ip | 250069.0 | +| test.c:536:30:536:36 | ... * ... | 10419.0 | +| test.c:536:35:536:36 | ip | 10419.0 | +| test.c:536:40:536:41 | 17 | 1.0 | +| test.c:536:40:536:41 | (unsigned int)... | 1.0 | +| test.c:536:40:536:52 | ... * ... | 10419.0 | +| test.c:536:45:536:52 | (...) | 10419.0 | +| test.c:536:46:536:46 | 2 | 1.0 | +| test.c:536:46:536:46 | (unsigned int)... | 1.0 | +| test.c:536:46:536:51 | ... * ... | 10419.0 | +| test.c:536:50:536:51 | ip | 10419.0 | +| test.c:536:56:536:57 | 17 | 1.0 | +| test.c:536:56:536:57 | (unsigned int)... | 1.0 | +| test.c:536:56:536:62 | ... * ... | 10419.0 | +| test.c:536:61:536:62 | ip | 10419.0 | +| test.c:537:17:537:28 | (...) | 20839.0 | +| test.c:537:17:537:33 | ... * ... | 20839.0 | +| test.c:537:18:537:18 | 2 | 1.0 | +| test.c:537:18:537:18 | (unsigned int)... | 1.0 | +| test.c:537:18:537:23 | ... * ... | 20839.0 | +| test.c:537:18:537:27 | ... + ... | 20839.0 | +| test.c:537:22:537:23 | ip | 20839.0 | +| test.c:537:27:537:27 | 1 | 1.0 | +| test.c:537:27:537:27 | (unsigned int)... | 1.0 | +| test.c:537:32:537:33 | 14 | 1.0 | +| test.c:537:32:537:33 | (unsigned int)... | 1.0 | | test.c:538:17:538:18 | 14 | 1.0 | | test.c:538:17:538:18 | (unsigned int)... | 1.0 | -| test.c:538:17:538:29 | ... * ... | 250069.0 | -| test.c:538:22:538:29 | (...) | 250069.0 | +| test.c:538:17:538:29 | ... * ... | 20839.0 | +| test.c:538:17:538:39 | ... > ... | 1.0 | +| test.c:538:17:540:25 | ... ? ... : ... | 4.34263921E8 | +| test.c:538:22:538:29 | (...) | 20839.0 | | test.c:538:23:538:23 | 2 | 1.0 | | test.c:538:23:538:23 | (unsigned int)... | 1.0 | -| test.c:538:23:538:28 | ... * ... | 250069.0 | -| test.c:538:27:538:28 | ip | 250069.0 | -| test.c:539:17:539:18 | 14 | 1.0 | -| test.c:539:17:539:18 | (unsigned int)... | 1.0 | -| test.c:539:17:539:23 | ... * ... | 250069.0 | -| test.c:539:22:539:23 | ip | 250069.0 | -| test.c:540:11:540:12 | 14 | 1.0 | -| test.c:540:11:540:12 | (unsigned int)... | 1.0 | -| test.c:540:11:540:17 | ... * ... | 125034.0 | -| test.c:540:11:540:33 | ... > ... | 1.0 | -| test.c:540:11:542:25 | ... ? ... : ... | 1.5633501156E10 | -| test.c:540:16:540:17 | ip | 125034.0 | -| test.c:540:21:540:28 | (...) | 125034.0 | -| test.c:540:21:540:33 | ... * ... | 125034.0 | -| test.c:540:22:540:23 | ip | 125034.0 | -| test.c:540:22:540:27 | ... + ... | 125034.0 | -| test.c:540:27:540:27 | 1 | 1.0 | -| test.c:540:27:540:27 | (unsigned int)... | 1.0 | -| test.c:540:32:540:33 | 17 | 1.0 | -| test.c:540:32:540:33 | (unsigned int)... | 1.0 | -| test.c:541:13:541:14 | 14 | 1.0 | -| test.c:541:13:541:14 | (unsigned int)... | 1.0 | -| test.c:541:13:541:19 | ... * ... | 125034.0 | -| test.c:541:18:541:19 | ip | 125034.0 | -| test.c:542:13:542:20 | (...) | 125034.0 | -| test.c:542:13:542:25 | ... * ... | 125034.0 | -| test.c:542:14:542:15 | ip | 125034.0 | -| test.c:542:14:542:19 | ... + ... | 125034.0 | -| test.c:542:19:542:19 | 1 | 1.0 | -| test.c:542:19:542:19 | (unsigned int)... | 1.0 | -| test.c:542:24:542:25 | 14 | 1.0 | -| test.c:542:24:542:25 | (unsigned int)... | 1.0 | -| test.c:543:9:543:10 | 14 | 1.0 | -| test.c:543:9:543:10 | (unsigned int)... | 1.0 | -| test.c:543:9:543:15 | ... * ... | 1437897.0 | -| test.c:543:9:543:59 | ... > ... | 1.0 | -| test.c:543:9:545:51 | ... ? ... : ... | 2.9729207539701335E18 | -| test.c:543:14:543:15 | ip | 1437897.0 | -| test.c:543:19:543:30 | (...) | 1437897.0 | -| test.c:543:19:543:35 | ... * ... | 1437897.0 | -| test.c:543:19:543:59 | ... + ... | 2.067547782609E12 | -| test.c:543:20:543:20 | 2 | 1.0 | -| test.c:543:20:543:20 | (unsigned int)... | 1.0 | -| test.c:543:20:543:25 | ... * ... | 1437897.0 | -| test.c:543:20:543:29 | ... + ... | 1437897.0 | -| test.c:543:24:543:25 | ip | 1437897.0 | -| test.c:543:29:543:29 | 1 | 1.0 | -| test.c:543:29:543:29 | (unsigned int)... | 1.0 | -| test.c:543:34:543:35 | 17 | 1.0 | -| test.c:543:34:543:35 | (unsigned int)... | 1.0 | -| test.c:543:39:543:54 | (...) | 1437897.0 | -| test.c:543:39:543:59 | ... * ... | 1437897.0 | -| test.c:543:40:543:40 | 2 | 1.0 | -| test.c:543:40:543:40 | (unsigned int)... | 1.0 | -| test.c:543:40:543:45 | ... * ... | 1437897.0 | -| test.c:543:40:543:49 | ... + ... | 1437897.0 | -| test.c:543:40:543:53 | ... + ... | 1437897.0 | -| test.c:543:44:543:45 | ip | 1437897.0 | -| test.c:543:49:543:49 | 1 | 1.0 | -| test.c:543:49:543:49 | (unsigned int)... | 1.0 | -| test.c:543:53:543:53 | 1 | 1.0 | -| test.c:543:53:543:53 | (unsigned int)... | 1.0 | -| test.c:543:58:543:59 | 17 | 1.0 | -| test.c:543:58:543:59 | (unsigned int)... | 1.0 | -| test.c:544:11:544:12 | 14 | 1.0 | -| test.c:544:11:544:12 | (unsigned int)... | 1.0 | -| test.c:544:11:544:17 | ... * ... | 1437897.0 | -| test.c:544:16:544:17 | ip | 1437897.0 | -| test.c:545:11:545:22 | (...) | 1437897.0 | -| test.c:545:11:545:27 | ... * ... | 1437897.0 | -| test.c:545:11:545:51 | ... + ... | 2.067547782609E12 | -| test.c:545:12:545:12 | 2 | 1.0 | -| test.c:545:12:545:12 | (unsigned int)... | 1.0 | -| test.c:545:12:545:17 | ... * ... | 1437897.0 | -| test.c:545:12:545:21 | ... + ... | 1437897.0 | -| test.c:545:16:545:17 | ip | 1437897.0 | -| test.c:545:21:545:21 | 1 | 1.0 | -| test.c:545:21:545:21 | (unsigned int)... | 1.0 | -| test.c:545:26:545:27 | 14 | 1.0 | -| test.c:545:26:545:27 | (unsigned int)... | 1.0 | -| test.c:545:31:545:46 | (...) | 1437897.0 | -| test.c:545:31:545:51 | ... * ... | 1437897.0 | -| test.c:545:32:545:32 | 2 | 1.0 | -| test.c:545:32:545:32 | (unsigned int)... | 1.0 | -| test.c:545:32:545:37 | ... * ... | 1437897.0 | -| test.c:545:32:545:41 | ... + ... | 1437897.0 | -| test.c:545:32:545:45 | ... + ... | 1437897.0 | -| test.c:545:36:545:37 | ip | 1437897.0 | -| test.c:545:41:545:41 | 1 | 1.0 | -| test.c:545:41:545:41 | (unsigned int)... | 1.0 | -| test.c:545:45:545:45 | 1 | 1.0 | -| test.c:545:45:545:45 | (unsigned int)... | 1.0 | -| test.c:545:50:545:51 | 17 | 1.0 | -| test.c:545:50:545:51 | (unsigned int)... | 1.0 | -| test.c:546:9:546:9 | 2 | 1.0 | -| test.c:546:9:546:9 | (unsigned int)... | 1.0 | -| test.c:546:9:546:26 | ... * ... | 1437897.0 | -| test.c:546:9:566:48 | ... + ... | 3.5306223994138077E62 | -| test.c:546:9:588:30 | ... > ... | 1.0 | -| test.c:546:9:631:27 | ... ? ... : ... | 4.3658022750663434E182 | -| test.c:546:13:546:26 | (...) | 1437897.0 | -| test.c:546:14:546:15 | ip | 1437897.0 | -| test.c:546:14:546:20 | ... * ... | 1437897.0 | -| test.c:546:14:546:25 | ... + ... | 1437897.0 | -| test.c:546:19:546:20 | 14 | 1.0 | -| test.c:546:19:546:20 | (unsigned int)... | 1.0 | -| test.c:546:24:546:25 | 32 | 1.0 | -| test.c:546:24:546:25 | (unsigned int)... | 1.0 | -| test.c:547:13:566:48 | (...) | 2.4554070280512497E56 | -| test.c:547:14:547:14 | 4 | 1.0 | -| test.c:547:14:547:14 | (unsigned int)... | 1.0 | -| test.c:547:14:547:31 | ... * ... | 1437897.0 | -| test.c:547:14:548:32 | ... + ... | 2.067547782609E12 | -| test.c:547:14:549:32 | ... + ... | 2.9729207539701335E18 | -| test.c:547:14:555:28 | ... + ... | 7.070613623498497E37 | -| test.c:547:14:556:43 | ... > ... | 1.0 | -| test.c:547:14:566:47 | ... ? ... : ... | 2.4554070280512497E56 | -| test.c:547:18:547:31 | (...) | 1437897.0 | -| test.c:547:19:547:20 | ip | 1437897.0 | -| test.c:547:19:547:25 | ... * ... | 1437897.0 | -| test.c:547:19:547:30 | ... + ... | 1437897.0 | -| test.c:547:24:547:25 | 14 | 1.0 | -| test.c:547:24:547:25 | (unsigned int)... | 1.0 | -| test.c:547:29:547:30 | 32 | 1.0 | -| test.c:547:29:547:30 | (unsigned int)... | 1.0 | -| test.c:548:15:548:32 | (...) | 1437897.0 | -| test.c:548:16:548:16 | 2 | 1.0 | -| test.c:548:16:548:16 | (unsigned int)... | 1.0 | -| test.c:548:16:548:21 | ... * ... | 1437897.0 | -| test.c:548:16:548:26 | ... * ... | 1437897.0 | -| test.c:548:16:548:31 | ... + ... | 1437897.0 | -| test.c:548:20:548:21 | ip | 1437897.0 | -| test.c:548:25:548:26 | 14 | 1.0 | -| test.c:548:25:548:26 | (unsigned int)... | 1.0 | -| test.c:548:30:548:31 | 32 | 1.0 | -| test.c:548:30:548:31 | (unsigned int)... | 1.0 | -| test.c:549:15:549:15 | 2 | 1.0 | -| test.c:549:15:549:15 | (unsigned int)... | 1.0 | -| test.c:549:15:549:32 | ... * ... | 1437897.0 | -| test.c:549:19:549:32 | (...) | 1437897.0 | -| test.c:549:20:549:21 | ip | 1437897.0 | -| test.c:549:20:549:26 | ... * ... | 1437897.0 | -| test.c:549:20:549:31 | ... + ... | 1437897.0 | -| test.c:549:25:549:26 | 14 | 1.0 | -| test.c:549:25:549:26 | (unsigned int)... | 1.0 | -| test.c:549:30:549:31 | 64 | 1.0 | -| test.c:549:30:549:31 | (unsigned int)... | 1.0 | -| test.c:550:15:555:28 | (...) | 2.3783390842343084E19 | -| test.c:550:16:550:27 | (...) | 1437897.0 | -| test.c:550:16:550:32 | ... * ... | 1437897.0 | -| test.c:550:16:551:65 | ... > ... | 1.0 | -| test.c:550:16:555:27 | ... ? ... : ... | 2.3783390842343084E19 | -| test.c:550:17:550:17 | 2 | 1.0 | -| test.c:550:17:550:17 | (unsigned int)... | 1.0 | -| test.c:550:17:550:22 | ... * ... | 1437897.0 | -| test.c:550:17:550:26 | ... + ... | 1437897.0 | -| test.c:550:21:550:22 | ip | 1437897.0 | -| test.c:550:26:550:26 | 1 | 1.0 | -| test.c:550:26:550:26 | (unsigned int)... | 1.0 | -| test.c:550:31:550:32 | 14 | 1.0 | -| test.c:550:31:550:32 | (unsigned int)... | 1.0 | -| test.c:551:15:551:65 | (...) | 2.067547782609E12 | -| test.c:551:16:551:17 | 14 | 1.0 | -| test.c:551:16:551:17 | (unsigned int)... | 1.0 | -| test.c:551:16:551:28 | ... * ... | 1437897.0 | -| test.c:551:16:551:38 | ... > ... | 1.0 | -| test.c:551:16:551:64 | ... ? ... : ... | 2.067547782609E12 | -| test.c:551:21:551:28 | (...) | 1437897.0 | -| test.c:551:22:551:22 | 2 | 1.0 | -| test.c:551:22:551:22 | (unsigned int)... | 1.0 | -| test.c:551:22:551:27 | ... * ... | 1437897.0 | -| test.c:551:26:551:27 | ip | 1437897.0 | +| test.c:538:23:538:28 | ... * ... | 20839.0 | +| test.c:538:27:538:28 | ip | 20839.0 | +| test.c:538:33:538:34 | 17 | 1.0 | +| test.c:538:33:538:34 | (unsigned int)... | 1.0 | +| test.c:538:33:538:39 | ... * ... | 20839.0 | +| test.c:538:38:538:39 | ip | 20839.0 | +| test.c:539:19:539:20 | 14 | 1.0 | +| test.c:539:19:539:20 | (unsigned int)... | 1.0 | +| test.c:539:19:539:31 | ... * ... | 20839.0 | +| test.c:539:24:539:31 | (...) | 20839.0 | +| test.c:539:25:539:25 | 2 | 1.0 | +| test.c:539:25:539:25 | (unsigned int)... | 1.0 | +| test.c:539:25:539:30 | ... * ... | 20839.0 | +| test.c:539:29:539:30 | ip | 20839.0 | +| test.c:540:19:540:20 | 14 | 1.0 | +| test.c:540:19:540:20 | (unsigned int)... | 1.0 | +| test.c:540:19:540:25 | ... * ... | 20839.0 | +| test.c:540:24:540:25 | ip | 20839.0 | +| test.c:541:11:541:61 | (...) | 3.908375289E9 | +| test.c:541:12:541:13 | 14 | 1.0 | +| test.c:541:12:541:13 | (unsigned int)... | 1.0 | +| test.c:541:12:541:18 | ... * ... | 62517.0 | +| test.c:541:12:541:34 | ... > ... | 1.0 | +| test.c:541:12:541:60 | ... ? ... : ... | 3.908375289E9 | +| test.c:541:17:541:18 | ip | 62517.0 | +| test.c:541:22:541:29 | (...) | 62517.0 | +| test.c:541:22:541:34 | ... * ... | 62517.0 | +| test.c:541:23:541:24 | ip | 62517.0 | +| test.c:541:23:541:28 | ... + ... | 62517.0 | +| test.c:541:28:541:28 | 1 | 1.0 | +| test.c:541:28:541:28 | (unsigned int)... | 1.0 | +| test.c:541:33:541:34 | 17 | 1.0 | +| test.c:541:33:541:34 | (unsigned int)... | 1.0 | +| test.c:541:38:541:39 | 17 | 1.0 | +| test.c:541:38:541:39 | (unsigned int)... | 1.0 | +| test.c:541:38:541:44 | ... * ... | 62517.0 | +| test.c:541:43:541:44 | ip | 62517.0 | +| test.c:541:48:541:55 | (...) | 62517.0 | +| test.c:541:48:541:60 | ... * ... | 62517.0 | +| test.c:541:49:541:50 | ip | 62517.0 | +| test.c:541:49:541:54 | ... + ... | 62517.0 | +| test.c:541:54:541:54 | 1 | 1.0 | +| test.c:541:54:541:54 | (unsigned int)... | 1.0 | +| test.c:541:59:541:60 | 17 | 1.0 | +| test.c:541:59:541:60 | (unsigned int)... | 1.0 | +| test.c:542:11:542:11 | 4 | 1.0 | +| test.c:542:11:542:11 | (unsigned int)... | 1.0 | +| test.c:542:11:542:28 | ... * ... | 125034.0 | +| test.c:542:11:543:28 | ... + ... | 1.5633501156E10 | +| test.c:542:11:544:28 | ... + ... | 1.954719183539304E15 | +| test.c:542:11:550:24 | ... + ... | 3.056778340269433E31 | +| test.c:542:15:542:28 | (...) | 125034.0 | +| test.c:542:16:542:17 | ip | 125034.0 | +| test.c:542:16:542:22 | ... * ... | 125034.0 | +| test.c:542:16:542:27 | ... + ... | 125034.0 | +| test.c:542:21:542:22 | 14 | 1.0 | +| test.c:542:21:542:22 | (unsigned int)... | 1.0 | +| test.c:542:26:542:27 | 32 | 1.0 | +| test.c:542:26:542:27 | (unsigned int)... | 1.0 | +| test.c:543:11:543:28 | (...) | 125034.0 | +| test.c:543:12:543:12 | 2 | 1.0 | +| test.c:543:12:543:12 | (unsigned int)... | 1.0 | +| test.c:543:12:543:17 | ... * ... | 125034.0 | +| test.c:543:12:543:22 | ... * ... | 125034.0 | +| test.c:543:12:543:27 | ... + ... | 125034.0 | +| test.c:543:16:543:17 | ip | 125034.0 | +| test.c:543:21:543:22 | 14 | 1.0 | +| test.c:543:21:543:22 | (unsigned int)... | 1.0 | +| test.c:543:26:543:27 | 32 | 1.0 | +| test.c:543:26:543:27 | (unsigned int)... | 1.0 | +| test.c:544:11:544:11 | 2 | 1.0 | +| test.c:544:11:544:11 | (unsigned int)... | 1.0 | +| test.c:544:11:544:28 | ... * ... | 125034.0 | +| test.c:544:15:544:28 | (...) | 125034.0 | +| test.c:544:16:544:17 | ip | 125034.0 | +| test.c:544:16:544:22 | ... * ... | 125034.0 | +| test.c:544:16:544:27 | ... + ... | 125034.0 | +| test.c:544:21:544:22 | 14 | 1.0 | +| test.c:544:21:544:22 | (unsigned int)... | 1.0 | +| test.c:544:26:544:27 | 64 | 1.0 | +| test.c:544:26:544:27 | (unsigned int)... | 1.0 | +| test.c:545:11:550:24 | (...) | 1.5637941071078508E16 | +| test.c:545:12:545:23 | (...) | 125034.0 | +| test.c:545:12:545:28 | ... * ... | 125034.0 | +| test.c:545:12:546:61 | ... > ... | 1.0 | +| test.c:545:12:550:23 | ... ? ... : ... | 1.5637941071078508E16 | +| test.c:545:13:545:13 | 2 | 1.0 | +| test.c:545:13:545:13 | (unsigned int)... | 1.0 | +| test.c:545:13:545:18 | ... * ... | 125034.0 | +| test.c:545:13:545:22 | ... + ... | 125034.0 | +| test.c:545:17:545:18 | ip | 125034.0 | +| test.c:545:22:545:22 | 1 | 1.0 | +| test.c:545:22:545:22 | (unsigned int)... | 1.0 | +| test.c:545:27:545:28 | 14 | 1.0 | +| test.c:545:27:545:28 | (unsigned int)... | 1.0 | +| test.c:546:11:546:61 | (...) | 1.5633501156E10 | +| test.c:546:12:546:13 | 14 | 1.0 | +| test.c:546:12:546:13 | (unsigned int)... | 1.0 | +| test.c:546:12:546:24 | ... * ... | 125034.0 | +| test.c:546:12:546:34 | ... > ... | 1.0 | +| test.c:546:12:546:60 | ... ? ... : ... | 1.5633501156E10 | +| test.c:546:17:546:24 | (...) | 125034.0 | +| test.c:546:18:546:18 | 2 | 1.0 | +| test.c:546:18:546:18 | (unsigned int)... | 1.0 | +| test.c:546:18:546:23 | ... * ... | 125034.0 | +| test.c:546:22:546:23 | ip | 125034.0 | +| test.c:546:28:546:29 | 17 | 1.0 | +| test.c:546:28:546:29 | (unsigned int)... | 1.0 | +| test.c:546:28:546:34 | ... * ... | 125034.0 | +| test.c:546:33:546:34 | ip | 125034.0 | +| test.c:546:38:546:39 | 17 | 1.0 | +| test.c:546:38:546:39 | (unsigned int)... | 1.0 | +| test.c:546:38:546:50 | ... * ... | 125034.0 | +| test.c:546:43:546:50 | (...) | 125034.0 | +| test.c:546:44:546:44 | 2 | 1.0 | +| test.c:546:44:546:44 | (unsigned int)... | 1.0 | +| test.c:546:44:546:49 | ... * ... | 125034.0 | +| test.c:546:48:546:49 | ip | 125034.0 | +| test.c:546:54:546:55 | 17 | 1.0 | +| test.c:546:54:546:55 | (unsigned int)... | 1.0 | +| test.c:546:54:546:60 | ... * ... | 125034.0 | +| test.c:546:59:546:60 | ip | 125034.0 | +| test.c:547:15:547:26 | (...) | 250069.0 | +| test.c:547:15:547:31 | ... * ... | 250069.0 | +| test.c:547:16:547:16 | 2 | 1.0 | +| test.c:547:16:547:16 | (unsigned int)... | 1.0 | +| test.c:547:16:547:21 | ... * ... | 250069.0 | +| test.c:547:16:547:25 | ... + ... | 250069.0 | +| test.c:547:20:547:21 | ip | 250069.0 | +| test.c:547:25:547:25 | 1 | 1.0 | +| test.c:547:25:547:25 | (unsigned int)... | 1.0 | +| test.c:547:30:547:31 | 14 | 1.0 | +| test.c:547:30:547:31 | (unsigned int)... | 1.0 | +| test.c:548:15:548:16 | 14 | 1.0 | +| test.c:548:15:548:16 | (unsigned int)... | 1.0 | +| test.c:548:15:548:27 | ... * ... | 250069.0 | +| test.c:548:15:548:37 | ... > ... | 1.0 | +| test.c:548:15:550:23 | ... ? ... : ... | 6.2534504761E10 | +| test.c:548:20:548:27 | (...) | 250069.0 | +| test.c:548:21:548:21 | 2 | 1.0 | +| test.c:548:21:548:21 | (unsigned int)... | 1.0 | +| test.c:548:21:548:26 | ... * ... | 250069.0 | +| test.c:548:25:548:26 | ip | 250069.0 | +| test.c:548:31:548:32 | 17 | 1.0 | +| test.c:548:31:548:32 | (unsigned int)... | 1.0 | +| test.c:548:31:548:37 | ... * ... | 250069.0 | +| test.c:548:36:548:37 | ip | 250069.0 | +| test.c:549:17:549:18 | 14 | 1.0 | +| test.c:549:17:549:18 | (unsigned int)... | 1.0 | +| test.c:549:17:549:29 | ... * ... | 250069.0 | +| test.c:549:22:549:29 | (...) | 250069.0 | +| test.c:549:23:549:23 | 2 | 1.0 | +| test.c:549:23:549:23 | (unsigned int)... | 1.0 | +| test.c:549:23:549:28 | ... * ... | 250069.0 | +| test.c:549:27:549:28 | ip | 250069.0 | +| test.c:550:17:550:18 | 14 | 1.0 | +| test.c:550:17:550:18 | (unsigned int)... | 1.0 | +| test.c:550:17:550:23 | ... * ... | 250069.0 | +| test.c:550:22:550:23 | ip | 250069.0 | +| test.c:551:11:551:12 | 14 | 1.0 | +| test.c:551:11:551:12 | (unsigned int)... | 1.0 | +| test.c:551:11:551:17 | ... * ... | 125034.0 | +| test.c:551:11:551:33 | ... > ... | 1.0 | +| test.c:551:11:553:25 | ... ? ... : ... | 1.5633501156E10 | +| test.c:551:16:551:17 | ip | 125034.0 | +| test.c:551:21:551:28 | (...) | 125034.0 | +| test.c:551:21:551:33 | ... * ... | 125034.0 | +| test.c:551:22:551:23 | ip | 125034.0 | +| test.c:551:22:551:27 | ... + ... | 125034.0 | +| test.c:551:27:551:27 | 1 | 1.0 | +| test.c:551:27:551:27 | (unsigned int)... | 1.0 | | test.c:551:32:551:33 | 17 | 1.0 | | test.c:551:32:551:33 | (unsigned int)... | 1.0 | -| test.c:551:32:551:38 | ... * ... | 1437897.0 | -| test.c:551:37:551:38 | ip | 1437897.0 | -| test.c:551:42:551:43 | 17 | 1.0 | -| test.c:551:42:551:43 | (unsigned int)... | 1.0 | -| test.c:551:42:551:54 | ... * ... | 1437897.0 | -| test.c:551:47:551:54 | (...) | 1437897.0 | -| test.c:551:48:551:48 | 2 | 1.0 | -| test.c:551:48:551:48 | (unsigned int)... | 1.0 | -| test.c:551:48:551:53 | ... * ... | 1437897.0 | -| test.c:551:52:551:53 | ip | 1437897.0 | -| test.c:551:58:551:59 | 17 | 1.0 | -| test.c:551:58:551:59 | (unsigned int)... | 1.0 | -| test.c:551:58:551:64 | ... * ... | 1437897.0 | -| test.c:551:63:551:64 | ip | 1437897.0 | -| test.c:552:19:552:30 | (...) | 2875795.0 | -| test.c:552:19:552:35 | ... * ... | 2875795.0 | -| test.c:552:20:552:20 | 2 | 1.0 | -| test.c:552:20:552:20 | (unsigned int)... | 1.0 | -| test.c:552:20:552:25 | ... * ... | 2875795.0 | -| test.c:552:20:552:29 | ... + ... | 2875795.0 | -| test.c:552:24:552:25 | ip | 2875795.0 | -| test.c:552:29:552:29 | 1 | 1.0 | -| test.c:552:29:552:29 | (unsigned int)... | 1.0 | -| test.c:552:34:552:35 | 14 | 1.0 | -| test.c:552:34:552:35 | (unsigned int)... | 1.0 | -| test.c:553:19:553:20 | 14 | 1.0 | -| test.c:553:19:553:20 | (unsigned int)... | 1.0 | -| test.c:553:19:553:31 | ... * ... | 2875795.0 | -| test.c:553:19:553:41 | ... > ... | 1.0 | -| test.c:553:19:555:27 | ... ? ... : ... | 8.270196882025E12 | -| test.c:553:24:553:31 | (...) | 2875795.0 | -| test.c:553:25:553:25 | 2 | 1.0 | -| test.c:553:25:553:25 | (unsigned int)... | 1.0 | -| test.c:553:25:553:30 | ... * ... | 2875795.0 | -| test.c:553:29:553:30 | ip | 2875795.0 | -| test.c:553:35:553:36 | 17 | 1.0 | -| test.c:553:35:553:36 | (unsigned int)... | 1.0 | -| test.c:553:35:553:41 | ... * ... | 2875795.0 | -| test.c:553:40:553:41 | ip | 2875795.0 | -| test.c:554:21:554:22 | 14 | 1.0 | -| test.c:554:21:554:22 | (unsigned int)... | 1.0 | -| test.c:554:21:554:33 | ... * ... | 2875795.0 | -| test.c:554:26:554:33 | (...) | 2875795.0 | -| test.c:554:27:554:27 | 2 | 1.0 | -| test.c:554:27:554:27 | (unsigned int)... | 1.0 | -| test.c:554:27:554:32 | ... * ... | 2875795.0 | -| test.c:554:31:554:32 | ip | 2875795.0 | -| test.c:555:21:555:22 | 14 | 1.0 | -| test.c:555:21:555:22 | (unsigned int)... | 1.0 | -| test.c:555:21:555:27 | ... * ... | 2875795.0 | -| test.c:555:26:555:27 | ip | 2875795.0 | -| test.c:556:13:556:13 | 2 | 1.0 | -| test.c:556:13:556:13 | (unsigned int)... | 1.0 | -| test.c:556:13:556:18 | ... * ... | 8627385.0 | -| test.c:556:13:556:23 | ... * ... | 8627385.0 | -| test.c:556:13:556:43 | ... + ... | 7.4431771938225E13 | -| test.c:556:17:556:18 | ip | 8627385.0 | -| test.c:556:22:556:23 | 14 | 1.0 | -| test.c:556:22:556:23 | (unsigned int)... | 1.0 | -| test.c:556:27:556:38 | (...) | 8627385.0 | -| test.c:556:27:556:43 | ... * ... | 8627385.0 | -| test.c:556:28:556:28 | 2 | 1.0 | -| test.c:556:28:556:28 | (unsigned int)... | 1.0 | -| test.c:556:28:556:33 | ... * ... | 8627385.0 | -| test.c:556:28:556:37 | ... + ... | 8627385.0 | -| test.c:556:32:556:33 | ip | 8627385.0 | -| test.c:556:37:556:37 | 1 | 1.0 | -| test.c:556:37:556:37 | (unsigned int)... | 1.0 | -| test.c:556:42:556:43 | 17 | 1.0 | -| test.c:556:42:556:43 | (unsigned int)... | 1.0 | -| test.c:557:17:557:17 | 4 | 1.0 | -| test.c:557:17:557:17 | (unsigned int)... | 1.0 | -| test.c:557:17:557:34 | ... * ... | 8627385.0 | -| test.c:557:17:558:34 | ... + ... | 7.4431771938225E13 | -| test.c:557:17:559:34 | ... + ... | 6.421515527432633E20 | -| test.c:557:17:565:30 | ... + ... | 3.298869507082441E42 | -| test.c:557:21:557:34 | (...) | 8627385.0 | -| test.c:557:22:557:23 | ip | 8627385.0 | -| test.c:557:22:557:28 | ... * ... | 8627385.0 | -| test.c:557:22:557:33 | ... + ... | 8627385.0 | -| test.c:557:27:557:28 | 14 | 1.0 | -| test.c:557:27:557:28 | (unsigned int)... | 1.0 | -| test.c:557:32:557:33 | 32 | 1.0 | -| test.c:557:32:557:33 | (unsigned int)... | 1.0 | -| test.c:558:17:558:34 | (...) | 8627385.0 | -| test.c:558:18:558:18 | 2 | 1.0 | -| test.c:558:18:558:18 | (unsigned int)... | 1.0 | -| test.c:558:18:558:23 | ... * ... | 8627385.0 | -| test.c:558:18:558:28 | ... * ... | 8627385.0 | -| test.c:558:18:558:33 | ... + ... | 8627385.0 | -| test.c:558:22:558:23 | ip | 8627385.0 | -| test.c:558:27:558:28 | 14 | 1.0 | -| test.c:558:27:558:28 | (unsigned int)... | 1.0 | -| test.c:558:32:558:33 | 32 | 1.0 | -| test.c:558:32:558:33 | (unsigned int)... | 1.0 | -| test.c:559:17:559:17 | 2 | 1.0 | -| test.c:559:17:559:17 | (unsigned int)... | 1.0 | -| test.c:559:17:559:34 | ... * ... | 8627385.0 | -| test.c:559:21:559:34 | (...) | 8627385.0 | -| test.c:559:22:559:23 | ip | 8627385.0 | -| test.c:559:22:559:28 | ... * ... | 8627385.0 | -| test.c:559:22:559:33 | ... + ... | 8627385.0 | -| test.c:559:27:559:28 | 14 | 1.0 | -| test.c:559:27:559:28 | (unsigned int)... | 1.0 | -| test.c:559:32:559:33 | 64 | 1.0 | -| test.c:559:32:559:33 | (unsigned int)... | 1.0 | -| test.c:560:17:565:30 | (...) | 5.137213315127421E21 | -| test.c:560:18:560:29 | (...) | 8627385.0 | -| test.c:560:18:560:34 | ... * ... | 8627385.0 | -| test.c:560:18:561:67 | ... > ... | 1.0 | -| test.c:560:18:565:29 | ... ? ... : ... | 5.137213315127421E21 | -| test.c:560:19:560:19 | 2 | 1.0 | -| test.c:560:19:560:19 | (unsigned int)... | 1.0 | -| test.c:560:19:560:24 | ... * ... | 8627385.0 | -| test.c:560:19:560:28 | ... + ... | 8627385.0 | -| test.c:560:23:560:24 | ip | 8627385.0 | -| test.c:560:28:560:28 | 1 | 1.0 | -| test.c:560:28:560:28 | (unsigned int)... | 1.0 | -| test.c:560:33:560:34 | 14 | 1.0 | -| test.c:560:33:560:34 | (unsigned int)... | 1.0 | -| test.c:561:17:561:67 | (...) | 7.4431771938225E13 | -| test.c:561:18:561:19 | 14 | 1.0 | -| test.c:561:18:561:19 | (unsigned int)... | 1.0 | -| test.c:561:18:561:30 | ... * ... | 8627385.0 | -| test.c:561:18:561:40 | ... > ... | 1.0 | -| test.c:561:18:561:66 | ... ? ... : ... | 7.4431771938225E13 | -| test.c:561:23:561:30 | (...) | 8627385.0 | -| test.c:561:24:561:24 | 2 | 1.0 | -| test.c:561:24:561:24 | (unsigned int)... | 1.0 | -| test.c:561:24:561:29 | ... * ... | 8627385.0 | -| test.c:561:28:561:29 | ip | 8627385.0 | -| test.c:561:34:561:35 | 17 | 1.0 | -| test.c:561:34:561:35 | (unsigned int)... | 1.0 | -| test.c:561:34:561:40 | ... * ... | 8627385.0 | -| test.c:561:39:561:40 | ip | 8627385.0 | -| test.c:561:44:561:45 | 17 | 1.0 | -| test.c:561:44:561:45 | (unsigned int)... | 1.0 | -| test.c:561:44:561:56 | ... * ... | 8627385.0 | -| test.c:561:49:561:56 | (...) | 8627385.0 | -| test.c:561:50:561:50 | 2 | 1.0 | -| test.c:561:50:561:50 | (unsigned int)... | 1.0 | -| test.c:561:50:561:55 | ... * ... | 8627385.0 | -| test.c:561:54:561:55 | ip | 8627385.0 | -| test.c:561:60:561:61 | 17 | 1.0 | -| test.c:561:60:561:61 | (unsigned int)... | 1.0 | -| test.c:561:60:561:66 | ... * ... | 8627385.0 | -| test.c:561:65:561:66 | ip | 8627385.0 | -| test.c:562:21:562:32 | (...) | 1.7254771E7 | -| test.c:562:21:562:37 | ... * ... | 1.7254771E7 | +| test.c:552:13:552:14 | 14 | 1.0 | +| test.c:552:13:552:14 | (unsigned int)... | 1.0 | +| test.c:552:13:552:19 | ... * ... | 125034.0 | +| test.c:552:18:552:19 | ip | 125034.0 | +| test.c:553:13:553:20 | (...) | 125034.0 | +| test.c:553:13:553:25 | ... * ... | 125034.0 | +| test.c:553:14:553:15 | ip | 125034.0 | +| test.c:553:14:553:19 | ... + ... | 125034.0 | +| test.c:553:19:553:19 | 1 | 1.0 | +| test.c:553:19:553:19 | (unsigned int)... | 1.0 | +| test.c:553:24:553:25 | 14 | 1.0 | +| test.c:553:24:553:25 | (unsigned int)... | 1.0 | +| test.c:554:9:554:10 | 14 | 1.0 | +| test.c:554:9:554:10 | (unsigned int)... | 1.0 | +| test.c:554:9:554:15 | ... * ... | 1437897.0 | +| test.c:554:9:554:59 | ... > ... | 1.0 | +| test.c:554:9:556:51 | ... ? ... : ... | 2.9729207539701335E18 | +| test.c:554:14:554:15 | ip | 1437897.0 | +| test.c:554:19:554:30 | (...) | 1437897.0 | +| test.c:554:19:554:35 | ... * ... | 1437897.0 | +| test.c:554:19:554:59 | ... + ... | 2.067547782609E12 | +| test.c:554:20:554:20 | 2 | 1.0 | +| test.c:554:20:554:20 | (unsigned int)... | 1.0 | +| test.c:554:20:554:25 | ... * ... | 1437897.0 | +| test.c:554:20:554:29 | ... + ... | 1437897.0 | +| test.c:554:24:554:25 | ip | 1437897.0 | +| test.c:554:29:554:29 | 1 | 1.0 | +| test.c:554:29:554:29 | (unsigned int)... | 1.0 | +| test.c:554:34:554:35 | 17 | 1.0 | +| test.c:554:34:554:35 | (unsigned int)... | 1.0 | +| test.c:554:39:554:54 | (...) | 1437897.0 | +| test.c:554:39:554:59 | ... * ... | 1437897.0 | +| test.c:554:40:554:40 | 2 | 1.0 | +| test.c:554:40:554:40 | (unsigned int)... | 1.0 | +| test.c:554:40:554:45 | ... * ... | 1437897.0 | +| test.c:554:40:554:49 | ... + ... | 1437897.0 | +| test.c:554:40:554:53 | ... + ... | 1437897.0 | +| test.c:554:44:554:45 | ip | 1437897.0 | +| test.c:554:49:554:49 | 1 | 1.0 | +| test.c:554:49:554:49 | (unsigned int)... | 1.0 | +| test.c:554:53:554:53 | 1 | 1.0 | +| test.c:554:53:554:53 | (unsigned int)... | 1.0 | +| test.c:554:58:554:59 | 17 | 1.0 | +| test.c:554:58:554:59 | (unsigned int)... | 1.0 | +| test.c:555:11:555:12 | 14 | 1.0 | +| test.c:555:11:555:12 | (unsigned int)... | 1.0 | +| test.c:555:11:555:17 | ... * ... | 1437897.0 | +| test.c:555:16:555:17 | ip | 1437897.0 | +| test.c:556:11:556:22 | (...) | 1437897.0 | +| test.c:556:11:556:27 | ... * ... | 1437897.0 | +| test.c:556:11:556:51 | ... + ... | 2.067547782609E12 | +| test.c:556:12:556:12 | 2 | 1.0 | +| test.c:556:12:556:12 | (unsigned int)... | 1.0 | +| test.c:556:12:556:17 | ... * ... | 1437897.0 | +| test.c:556:12:556:21 | ... + ... | 1437897.0 | +| test.c:556:16:556:17 | ip | 1437897.0 | +| test.c:556:21:556:21 | 1 | 1.0 | +| test.c:556:21:556:21 | (unsigned int)... | 1.0 | +| test.c:556:26:556:27 | 14 | 1.0 | +| test.c:556:26:556:27 | (unsigned int)... | 1.0 | +| test.c:556:31:556:46 | (...) | 1437897.0 | +| test.c:556:31:556:51 | ... * ... | 1437897.0 | +| test.c:556:32:556:32 | 2 | 1.0 | +| test.c:556:32:556:32 | (unsigned int)... | 1.0 | +| test.c:556:32:556:37 | ... * ... | 1437897.0 | +| test.c:556:32:556:41 | ... + ... | 1437897.0 | +| test.c:556:32:556:45 | ... + ... | 1437897.0 | +| test.c:556:36:556:37 | ip | 1437897.0 | +| test.c:556:41:556:41 | 1 | 1.0 | +| test.c:556:41:556:41 | (unsigned int)... | 1.0 | +| test.c:556:45:556:45 | 1 | 1.0 | +| test.c:556:45:556:45 | (unsigned int)... | 1.0 | +| test.c:556:50:556:51 | 17 | 1.0 | +| test.c:556:50:556:51 | (unsigned int)... | 1.0 | +| test.c:557:9:557:9 | 2 | 1.0 | +| test.c:557:9:557:9 | (unsigned int)... | 1.0 | +| test.c:557:9:557:26 | ... * ... | 1437897.0 | +| test.c:557:9:577:48 | ... + ... | 3.5306223994138077E62 | +| test.c:557:9:599:30 | ... > ... | 1.0 | +| test.c:557:9:642:27 | ... ? ... : ... | 4.3658022750663434E182 | +| test.c:557:13:557:26 | (...) | 1437897.0 | +| test.c:557:14:557:15 | ip | 1437897.0 | +| test.c:557:14:557:20 | ... * ... | 1437897.0 | +| test.c:557:14:557:25 | ... + ... | 1437897.0 | +| test.c:557:19:557:20 | 14 | 1.0 | +| test.c:557:19:557:20 | (unsigned int)... | 1.0 | +| test.c:557:24:557:25 | 32 | 1.0 | +| test.c:557:24:557:25 | (unsigned int)... | 1.0 | +| test.c:558:13:577:48 | (...) | 2.4554070280512497E56 | +| test.c:558:14:558:14 | 4 | 1.0 | +| test.c:558:14:558:14 | (unsigned int)... | 1.0 | +| test.c:558:14:558:31 | ... * ... | 1437897.0 | +| test.c:558:14:559:32 | ... + ... | 2.067547782609E12 | +| test.c:558:14:560:32 | ... + ... | 2.9729207539701335E18 | +| test.c:558:14:566:28 | ... + ... | 7.070613623498497E37 | +| test.c:558:14:567:43 | ... > ... | 1.0 | +| test.c:558:14:577:47 | ... ? ... : ... | 2.4554070280512497E56 | +| test.c:558:18:558:31 | (...) | 1437897.0 | +| test.c:558:19:558:20 | ip | 1437897.0 | +| test.c:558:19:558:25 | ... * ... | 1437897.0 | +| test.c:558:19:558:30 | ... + ... | 1437897.0 | +| test.c:558:24:558:25 | 14 | 1.0 | +| test.c:558:24:558:25 | (unsigned int)... | 1.0 | +| test.c:558:29:558:30 | 32 | 1.0 | +| test.c:558:29:558:30 | (unsigned int)... | 1.0 | +| test.c:559:15:559:32 | (...) | 1437897.0 | +| test.c:559:16:559:16 | 2 | 1.0 | +| test.c:559:16:559:16 | (unsigned int)... | 1.0 | +| test.c:559:16:559:21 | ... * ... | 1437897.0 | +| test.c:559:16:559:26 | ... * ... | 1437897.0 | +| test.c:559:16:559:31 | ... + ... | 1437897.0 | +| test.c:559:20:559:21 | ip | 1437897.0 | +| test.c:559:25:559:26 | 14 | 1.0 | +| test.c:559:25:559:26 | (unsigned int)... | 1.0 | +| test.c:559:30:559:31 | 32 | 1.0 | +| test.c:559:30:559:31 | (unsigned int)... | 1.0 | +| test.c:560:15:560:15 | 2 | 1.0 | +| test.c:560:15:560:15 | (unsigned int)... | 1.0 | +| test.c:560:15:560:32 | ... * ... | 1437897.0 | +| test.c:560:19:560:32 | (...) | 1437897.0 | +| test.c:560:20:560:21 | ip | 1437897.0 | +| test.c:560:20:560:26 | ... * ... | 1437897.0 | +| test.c:560:20:560:31 | ... + ... | 1437897.0 | +| test.c:560:25:560:26 | 14 | 1.0 | +| test.c:560:25:560:26 | (unsigned int)... | 1.0 | +| test.c:560:30:560:31 | 64 | 1.0 | +| test.c:560:30:560:31 | (unsigned int)... | 1.0 | +| test.c:561:15:566:28 | (...) | 2.3783390842343084E19 | +| test.c:561:16:561:27 | (...) | 1437897.0 | +| test.c:561:16:561:32 | ... * ... | 1437897.0 | +| test.c:561:16:562:65 | ... > ... | 1.0 | +| test.c:561:16:566:27 | ... ? ... : ... | 2.3783390842343084E19 | +| test.c:561:17:561:17 | 2 | 1.0 | +| test.c:561:17:561:17 | (unsigned int)... | 1.0 | +| test.c:561:17:561:22 | ... * ... | 1437897.0 | +| test.c:561:17:561:26 | ... + ... | 1437897.0 | +| test.c:561:21:561:22 | ip | 1437897.0 | +| test.c:561:26:561:26 | 1 | 1.0 | +| test.c:561:26:561:26 | (unsigned int)... | 1.0 | +| test.c:561:31:561:32 | 14 | 1.0 | +| test.c:561:31:561:32 | (unsigned int)... | 1.0 | +| test.c:562:15:562:65 | (...) | 2.067547782609E12 | +| test.c:562:16:562:17 | 14 | 1.0 | +| test.c:562:16:562:17 | (unsigned int)... | 1.0 | +| test.c:562:16:562:28 | ... * ... | 1437897.0 | +| test.c:562:16:562:38 | ... > ... | 1.0 | +| test.c:562:16:562:64 | ... ? ... : ... | 2.067547782609E12 | +| test.c:562:21:562:28 | (...) | 1437897.0 | | test.c:562:22:562:22 | 2 | 1.0 | | test.c:562:22:562:22 | (unsigned int)... | 1.0 | -| test.c:562:22:562:27 | ... * ... | 1.7254771E7 | -| test.c:562:22:562:31 | ... + ... | 1.7254771E7 | -| test.c:562:26:562:27 | ip | 1.7254771E7 | -| test.c:562:31:562:31 | 1 | 1.0 | -| test.c:562:31:562:31 | (unsigned int)... | 1.0 | -| test.c:562:36:562:37 | 14 | 1.0 | -| test.c:562:36:562:37 | (unsigned int)... | 1.0 | -| test.c:563:21:563:22 | 14 | 1.0 | -| test.c:563:21:563:22 | (unsigned int)... | 1.0 | -| test.c:563:21:563:33 | ... * ... | 1.7254771E7 | -| test.c:563:21:563:43 | ... > ... | 1.0 | -| test.c:563:21:565:29 | ... ? ... : ... | 2.97727122262441E14 | -| test.c:563:26:563:33 | (...) | 1.7254771E7 | -| test.c:563:27:563:27 | 2 | 1.0 | -| test.c:563:27:563:27 | (unsigned int)... | 1.0 | -| test.c:563:27:563:32 | ... * ... | 1.7254771E7 | -| test.c:563:31:563:32 | ip | 1.7254771E7 | -| test.c:563:37:563:38 | 17 | 1.0 | -| test.c:563:37:563:38 | (unsigned int)... | 1.0 | -| test.c:563:37:563:43 | ... * ... | 1.7254771E7 | -| test.c:563:42:563:43 | ip | 1.7254771E7 | -| test.c:564:23:564:24 | 14 | 1.0 | -| test.c:564:23:564:24 | (unsigned int)... | 1.0 | -| test.c:564:23:564:35 | ... * ... | 1.7254771E7 | -| test.c:564:28:564:35 | (...) | 1.7254771E7 | -| test.c:564:29:564:29 | 2 | 1.0 | -| test.c:564:29:564:29 | (unsigned int)... | 1.0 | -| test.c:564:29:564:34 | ... * ... | 1.7254771E7 | -| test.c:564:33:564:34 | ip | 1.7254771E7 | -| test.c:565:23:565:24 | 14 | 1.0 | -| test.c:565:23:565:24 | (unsigned int)... | 1.0 | -| test.c:565:23:565:29 | ... * ... | 1.7254771E7 | -| test.c:565:28:565:29 | ip | 1.7254771E7 | -| test.c:566:17:566:17 | 2 | 1.0 | -| test.c:566:17:566:17 | (unsigned int)... | 1.0 | -| test.c:566:17:566:22 | ... * ... | 8627385.0 | -| test.c:566:17:566:27 | ... * ... | 8627385.0 | -| test.c:566:17:566:47 | ... + ... | 7.4431771938225E13 | -| test.c:566:21:566:22 | ip | 8627385.0 | -| test.c:566:26:566:27 | 14 | 1.0 | -| test.c:566:26:566:27 | (unsigned int)... | 1.0 | -| test.c:566:31:566:42 | (...) | 8627385.0 | -| test.c:566:31:566:47 | ... * ... | 8627385.0 | -| test.c:566:32:566:32 | 2 | 1.0 | -| test.c:566:32:566:32 | (unsigned int)... | 1.0 | -| test.c:566:32:566:37 | ... * ... | 8627385.0 | -| test.c:566:32:566:41 | ... + ... | 8627385.0 | -| test.c:566:36:566:37 | ip | 8627385.0 | -| test.c:566:41:566:41 | 1 | 1.0 | -| test.c:566:41:566:41 | (unsigned int)... | 1.0 | -| test.c:566:46:566:47 | 17 | 1.0 | -| test.c:566:46:566:47 | (unsigned int)... | 1.0 | -| test.c:567:11:588:30 | (...) | 6.08636382738973E71 | -| test.c:567:12:567:12 | 4 | 1.0 | -| test.c:567:12:567:12 | (unsigned int)... | 1.0 | -| test.c:567:12:567:29 | ... * ... | 6.0391698E7 | -| test.c:567:12:568:30 | ... + ... | 3.647157187323204E15 | -| test.c:567:12:569:30 | ... + ... | 2.2025801541535236E23 | -| test.c:567:12:575:26 | ... + ... | 3.881087564774641E47 | -| test.c:567:12:576:61 | ... > ... | 1.0 | -| test.c:567:12:588:29 | ... ? ... : ... | 6.08636382738973E71 | -| test.c:567:16:567:29 | (...) | 6.0391698E7 | -| test.c:567:17:567:18 | ip | 6.0391698E7 | -| test.c:567:17:567:23 | ... * ... | 6.0391698E7 | -| test.c:567:17:567:28 | ... + ... | 6.0391698E7 | +| test.c:562:22:562:27 | ... * ... | 1437897.0 | +| test.c:562:26:562:27 | ip | 1437897.0 | +| test.c:562:32:562:33 | 17 | 1.0 | +| test.c:562:32:562:33 | (unsigned int)... | 1.0 | +| test.c:562:32:562:38 | ... * ... | 1437897.0 | +| test.c:562:37:562:38 | ip | 1437897.0 | +| test.c:562:42:562:43 | 17 | 1.0 | +| test.c:562:42:562:43 | (unsigned int)... | 1.0 | +| test.c:562:42:562:54 | ... * ... | 1437897.0 | +| test.c:562:47:562:54 | (...) | 1437897.0 | +| test.c:562:48:562:48 | 2 | 1.0 | +| test.c:562:48:562:48 | (unsigned int)... | 1.0 | +| test.c:562:48:562:53 | ... * ... | 1437897.0 | +| test.c:562:52:562:53 | ip | 1437897.0 | +| test.c:562:58:562:59 | 17 | 1.0 | +| test.c:562:58:562:59 | (unsigned int)... | 1.0 | +| test.c:562:58:562:64 | ... * ... | 1437897.0 | +| test.c:562:63:562:64 | ip | 1437897.0 | +| test.c:563:19:563:30 | (...) | 2875795.0 | +| test.c:563:19:563:35 | ... * ... | 2875795.0 | +| test.c:563:20:563:20 | 2 | 1.0 | +| test.c:563:20:563:20 | (unsigned int)... | 1.0 | +| test.c:563:20:563:25 | ... * ... | 2875795.0 | +| test.c:563:20:563:29 | ... + ... | 2875795.0 | +| test.c:563:24:563:25 | ip | 2875795.0 | +| test.c:563:29:563:29 | 1 | 1.0 | +| test.c:563:29:563:29 | (unsigned int)... | 1.0 | +| test.c:563:34:563:35 | 14 | 1.0 | +| test.c:563:34:563:35 | (unsigned int)... | 1.0 | +| test.c:564:19:564:20 | 14 | 1.0 | +| test.c:564:19:564:20 | (unsigned int)... | 1.0 | +| test.c:564:19:564:31 | ... * ... | 2875795.0 | +| test.c:564:19:564:41 | ... > ... | 1.0 | +| test.c:564:19:566:27 | ... ? ... : ... | 8.270196882025E12 | +| test.c:564:24:564:31 | (...) | 2875795.0 | +| test.c:564:25:564:25 | 2 | 1.0 | +| test.c:564:25:564:25 | (unsigned int)... | 1.0 | +| test.c:564:25:564:30 | ... * ... | 2875795.0 | +| test.c:564:29:564:30 | ip | 2875795.0 | +| test.c:564:35:564:36 | 17 | 1.0 | +| test.c:564:35:564:36 | (unsigned int)... | 1.0 | +| test.c:564:35:564:41 | ... * ... | 2875795.0 | +| test.c:564:40:564:41 | ip | 2875795.0 | +| test.c:565:21:565:22 | 14 | 1.0 | +| test.c:565:21:565:22 | (unsigned int)... | 1.0 | +| test.c:565:21:565:33 | ... * ... | 2875795.0 | +| test.c:565:26:565:33 | (...) | 2875795.0 | +| test.c:565:27:565:27 | 2 | 1.0 | +| test.c:565:27:565:27 | (unsigned int)... | 1.0 | +| test.c:565:27:565:32 | ... * ... | 2875795.0 | +| test.c:565:31:565:32 | ip | 2875795.0 | +| test.c:566:21:566:22 | 14 | 1.0 | +| test.c:566:21:566:22 | (unsigned int)... | 1.0 | +| test.c:566:21:566:27 | ... * ... | 2875795.0 | +| test.c:566:26:566:27 | ip | 2875795.0 | +| test.c:567:13:567:13 | 2 | 1.0 | +| test.c:567:13:567:13 | (unsigned int)... | 1.0 | +| test.c:567:13:567:18 | ... * ... | 8627385.0 | +| test.c:567:13:567:23 | ... * ... | 8627385.0 | +| test.c:567:13:567:43 | ... + ... | 7.4431771938225E13 | +| test.c:567:17:567:18 | ip | 8627385.0 | | test.c:567:22:567:23 | 14 | 1.0 | | test.c:567:22:567:23 | (unsigned int)... | 1.0 | -| test.c:567:27:567:28 | 32 | 1.0 | -| test.c:567:27:567:28 | (unsigned int)... | 1.0 | -| test.c:568:13:568:30 | (...) | 6.0391698E7 | -| test.c:568:14:568:14 | 2 | 1.0 | -| test.c:568:14:568:14 | (unsigned int)... | 1.0 | -| test.c:568:14:568:19 | ... * ... | 6.0391698E7 | -| test.c:568:14:568:24 | ... * ... | 6.0391698E7 | -| test.c:568:14:568:29 | ... + ... | 6.0391698E7 | -| test.c:568:18:568:19 | ip | 6.0391698E7 | -| test.c:568:23:568:24 | 14 | 1.0 | -| test.c:568:23:568:24 | (unsigned int)... | 1.0 | -| test.c:568:28:568:29 | 32 | 1.0 | -| test.c:568:28:568:29 | (unsigned int)... | 1.0 | -| test.c:569:13:569:13 | 2 | 1.0 | -| test.c:569:13:569:13 | (unsigned int)... | 1.0 | -| test.c:569:13:569:30 | ... * ... | 6.0391698E7 | -| test.c:569:17:569:30 | (...) | 6.0391698E7 | -| test.c:569:18:569:19 | ip | 6.0391698E7 | -| test.c:569:18:569:24 | ... * ... | 6.0391698E7 | -| test.c:569:18:569:29 | ... + ... | 6.0391698E7 | -| test.c:569:23:569:24 | 14 | 1.0 | -| test.c:569:23:569:24 | (unsigned int)... | 1.0 | -| test.c:569:28:569:29 | 64 | 1.0 | -| test.c:569:28:569:29 | (unsigned int)... | 1.0 | -| test.c:570:13:575:26 | (...) | 1.7620641670887053E24 | -| test.c:570:14:570:25 | (...) | 6.0391698E7 | -| test.c:570:14:570:30 | ... * ... | 6.0391698E7 | -| test.c:570:14:571:63 | ... > ... | 1.0 | -| test.c:570:14:575:25 | ... ? ... : ... | 1.7620641670887053E24 | -| test.c:570:15:570:15 | 2 | 1.0 | -| test.c:570:15:570:15 | (unsigned int)... | 1.0 | -| test.c:570:15:570:20 | ... * ... | 6.0391698E7 | -| test.c:570:15:570:24 | ... + ... | 6.0391698E7 | -| test.c:570:19:570:20 | ip | 6.0391698E7 | -| test.c:570:24:570:24 | 1 | 1.0 | -| test.c:570:24:570:24 | (unsigned int)... | 1.0 | -| test.c:570:29:570:30 | 14 | 1.0 | -| test.c:570:29:570:30 | (unsigned int)... | 1.0 | -| test.c:571:13:571:63 | (...) | 3.647157187323204E15 | -| test.c:571:14:571:15 | 14 | 1.0 | -| test.c:571:14:571:15 | (unsigned int)... | 1.0 | -| test.c:571:14:571:26 | ... * ... | 6.0391698E7 | -| test.c:571:14:571:36 | ... > ... | 1.0 | -| test.c:571:14:571:62 | ... ? ... : ... | 3.647157187323204E15 | -| test.c:571:19:571:26 | (...) | 6.0391698E7 | -| test.c:571:20:571:20 | 2 | 1.0 | -| test.c:571:20:571:20 | (unsigned int)... | 1.0 | -| test.c:571:20:571:25 | ... * ... | 6.0391698E7 | -| test.c:571:24:571:25 | ip | 6.0391698E7 | -| test.c:571:30:571:31 | 17 | 1.0 | -| test.c:571:30:571:31 | (unsigned int)... | 1.0 | -| test.c:571:30:571:36 | ... * ... | 6.0391698E7 | -| test.c:571:35:571:36 | ip | 6.0391698E7 | -| test.c:571:40:571:41 | 17 | 1.0 | -| test.c:571:40:571:41 | (unsigned int)... | 1.0 | -| test.c:571:40:571:52 | ... * ... | 6.0391698E7 | -| test.c:571:45:571:52 | (...) | 6.0391698E7 | -| test.c:571:46:571:46 | 2 | 1.0 | -| test.c:571:46:571:46 | (unsigned int)... | 1.0 | -| test.c:571:46:571:51 | ... * ... | 6.0391698E7 | -| test.c:571:50:571:51 | ip | 6.0391698E7 | -| test.c:571:56:571:57 | 17 | 1.0 | -| test.c:571:56:571:57 | (unsigned int)... | 1.0 | -| test.c:571:56:571:62 | ... * ... | 6.0391698E7 | -| test.c:571:61:571:62 | ip | 6.0391698E7 | -| test.c:572:17:572:28 | (...) | 1.20783397E8 | -| test.c:572:17:572:33 | ... * ... | 1.20783397E8 | -| test.c:572:18:572:18 | 2 | 1.0 | -| test.c:572:18:572:18 | (unsigned int)... | 1.0 | -| test.c:572:18:572:23 | ... * ... | 1.20783397E8 | -| test.c:572:18:572:27 | ... + ... | 1.20783397E8 | -| test.c:572:22:572:23 | ip | 1.20783397E8 | -| test.c:572:27:572:27 | 1 | 1.0 | -| test.c:572:27:572:27 | (unsigned int)... | 1.0 | -| test.c:572:32:572:33 | 14 | 1.0 | -| test.c:572:32:572:33 | (unsigned int)... | 1.0 | -| test.c:573:17:573:18 | 14 | 1.0 | -| test.c:573:17:573:18 | (unsigned int)... | 1.0 | -| test.c:573:17:573:29 | ... * ... | 1.20783397E8 | -| test.c:573:17:573:39 | ... > ... | 1.0 | -| test.c:573:17:575:25 | ... ? ... : ... | 1.4588628990859608E16 | -| test.c:573:22:573:29 | (...) | 1.20783397E8 | -| test.c:573:23:573:23 | 2 | 1.0 | -| test.c:573:23:573:23 | (unsigned int)... | 1.0 | -| test.c:573:23:573:28 | ... * ... | 1.20783397E8 | -| test.c:573:27:573:28 | ip | 1.20783397E8 | -| test.c:573:33:573:34 | 17 | 1.0 | -| test.c:573:33:573:34 | (unsigned int)... | 1.0 | -| test.c:573:33:573:39 | ... * ... | 1.20783397E8 | -| test.c:573:38:573:39 | ip | 1.20783397E8 | -| test.c:574:19:574:20 | 14 | 1.0 | -| test.c:574:19:574:20 | (unsigned int)... | 1.0 | -| test.c:574:19:574:31 | ... * ... | 1.20783397E8 | -| test.c:574:24:574:31 | (...) | 1.20783397E8 | -| test.c:574:25:574:25 | 2 | 1.0 | -| test.c:574:25:574:25 | (unsigned int)... | 1.0 | -| test.c:574:25:574:30 | ... * ... | 1.20783397E8 | -| test.c:574:29:574:30 | ip | 1.20783397E8 | -| test.c:575:19:575:20 | 14 | 1.0 | -| test.c:575:19:575:20 | (unsigned int)... | 1.0 | -| test.c:575:19:575:25 | ... * ... | 1.20783397E8 | -| test.c:575:24:575:25 | ip | 1.20783397E8 | -| test.c:576:11:576:61 | (...) | 1.3129766091773648E17 | -| test.c:576:12:576:13 | 14 | 1.0 | -| test.c:576:12:576:13 | (unsigned int)... | 1.0 | -| test.c:576:12:576:18 | ... * ... | 3.62350191E8 | -| test.c:576:12:576:34 | ... > ... | 1.0 | -| test.c:576:12:576:60 | ... ? ... : ... | 1.3129766091773648E17 | -| test.c:576:17:576:18 | ip | 3.62350191E8 | -| test.c:576:22:576:29 | (...) | 3.62350191E8 | -| test.c:576:22:576:34 | ... * ... | 3.62350191E8 | -| test.c:576:23:576:24 | ip | 3.62350191E8 | -| test.c:576:23:576:28 | ... + ... | 3.62350191E8 | -| test.c:576:28:576:28 | 1 | 1.0 | -| test.c:576:28:576:28 | (unsigned int)... | 1.0 | -| test.c:576:33:576:34 | 17 | 1.0 | -| test.c:576:33:576:34 | (unsigned int)... | 1.0 | -| test.c:576:38:576:39 | 17 | 1.0 | -| test.c:576:38:576:39 | (unsigned int)... | 1.0 | -| test.c:576:38:576:44 | ... * ... | 3.62350191E8 | -| test.c:576:43:576:44 | ip | 3.62350191E8 | -| test.c:576:48:576:55 | (...) | 3.62350191E8 | -| test.c:576:48:576:60 | ... * ... | 3.62350191E8 | -| test.c:576:49:576:50 | ip | 3.62350191E8 | -| test.c:576:49:576:54 | ... + ... | 3.62350191E8 | -| test.c:576:54:576:54 | 1 | 1.0 | -| test.c:576:54:576:54 | (unsigned int)... | 1.0 | -| test.c:576:59:576:60 | 17 | 1.0 | -| test.c:576:59:576:60 | (unsigned int)... | 1.0 | -| test.c:577:15:577:15 | 4 | 1.0 | -| test.c:577:15:577:15 | (unsigned int)... | 1.0 | -| test.c:577:15:577:32 | ... * ... | 7.24700382E8 | -| test.c:577:15:578:32 | ... + ... | 5.251906436709459E17 | -| test.c:577:15:579:32 | ... + ... | 3.806058600911604E26 | -| test.c:577:15:585:28 | ... + ... | 1.1588865682845433E54 | -| test.c:577:19:577:32 | (...) | 7.24700382E8 | -| test.c:577:20:577:21 | ip | 7.24700382E8 | -| test.c:577:20:577:26 | ... * ... | 7.24700382E8 | -| test.c:577:20:577:31 | ... + ... | 7.24700382E8 | -| test.c:577:25:577:26 | 14 | 1.0 | -| test.c:577:25:577:26 | (unsigned int)... | 1.0 | -| test.c:577:30:577:31 | 32 | 1.0 | -| test.c:577:30:577:31 | (unsigned int)... | 1.0 | -| test.c:578:15:578:32 | (...) | 7.24700382E8 | -| test.c:578:16:578:16 | 2 | 1.0 | -| test.c:578:16:578:16 | (unsigned int)... | 1.0 | -| test.c:578:16:578:21 | ... * ... | 7.24700382E8 | -| test.c:578:16:578:26 | ... * ... | 7.24700382E8 | -| test.c:578:16:578:31 | ... + ... | 7.24700382E8 | -| test.c:578:20:578:21 | ip | 7.24700382E8 | -| test.c:578:25:578:26 | 14 | 1.0 | -| test.c:578:25:578:26 | (unsigned int)... | 1.0 | -| test.c:578:30:578:31 | 32 | 1.0 | -| test.c:578:30:578:31 | (unsigned int)... | 1.0 | -| test.c:579:15:579:15 | 2 | 1.0 | -| test.c:579:15:579:15 | (unsigned int)... | 1.0 | -| test.c:579:15:579:32 | ... * ... | 7.24700382E8 | -| test.c:579:19:579:32 | (...) | 7.24700382E8 | -| test.c:579:20:579:21 | ip | 7.24700382E8 | -| test.c:579:20:579:26 | ... * ... | 7.24700382E8 | -| test.c:579:20:579:31 | ... + ... | 7.24700382E8 | -| test.c:579:25:579:26 | 14 | 1.0 | -| test.c:579:25:579:26 | (unsigned int)... | 1.0 | -| test.c:579:30:579:31 | 64 | 1.0 | -| test.c:579:30:579:31 | (unsigned int)... | 1.0 | -| test.c:580:15:585:28 | (...) | 3.044846887031571E27 | -| test.c:580:16:580:27 | (...) | 7.24700382E8 | -| test.c:580:16:580:32 | ... * ... | 7.24700382E8 | -| test.c:580:16:581:65 | ... > ... | 1.0 | -| test.c:580:16:585:27 | ... ? ... : ... | 3.044846887031571E27 | -| test.c:580:17:580:17 | 2 | 1.0 | -| test.c:580:17:580:17 | (unsigned int)... | 1.0 | -| test.c:580:17:580:22 | ... * ... | 7.24700382E8 | -| test.c:580:17:580:26 | ... + ... | 7.24700382E8 | -| test.c:580:21:580:22 | ip | 7.24700382E8 | -| test.c:580:26:580:26 | 1 | 1.0 | -| test.c:580:26:580:26 | (unsigned int)... | 1.0 | -| test.c:580:31:580:32 | 14 | 1.0 | -| test.c:580:31:580:32 | (unsigned int)... | 1.0 | -| test.c:581:15:581:65 | (...) | 5.251906436709459E17 | -| test.c:581:16:581:17 | 14 | 1.0 | -| test.c:581:16:581:17 | (unsigned int)... | 1.0 | -| test.c:581:16:581:28 | ... * ... | 7.24700382E8 | -| test.c:581:16:581:38 | ... > ... | 1.0 | -| test.c:581:16:581:64 | ... ? ... : ... | 5.251906436709459E17 | -| test.c:581:21:581:28 | (...) | 7.24700382E8 | -| test.c:581:22:581:22 | 2 | 1.0 | -| test.c:581:22:581:22 | (unsigned int)... | 1.0 | -| test.c:581:22:581:27 | ... * ... | 7.24700382E8 | -| test.c:581:26:581:27 | ip | 7.24700382E8 | -| test.c:581:32:581:33 | 17 | 1.0 | -| test.c:581:32:581:33 | (unsigned int)... | 1.0 | -| test.c:581:32:581:38 | ... * ... | 7.24700382E8 | -| test.c:581:37:581:38 | ip | 7.24700382E8 | -| test.c:581:42:581:43 | 17 | 1.0 | -| test.c:581:42:581:43 | (unsigned int)... | 1.0 | -| test.c:581:42:581:54 | ... * ... | 7.24700382E8 | -| test.c:581:47:581:54 | (...) | 7.24700382E8 | -| test.c:581:48:581:48 | 2 | 1.0 | -| test.c:581:48:581:48 | (unsigned int)... | 1.0 | -| test.c:581:48:581:53 | ... * ... | 7.24700382E8 | -| test.c:581:52:581:53 | ip | 7.24700382E8 | -| test.c:581:58:581:59 | 17 | 1.0 | -| test.c:581:58:581:59 | (unsigned int)... | 1.0 | -| test.c:581:58:581:64 | ... * ... | 7.24700382E8 | -| test.c:581:63:581:64 | ip | 7.24700382E8 | -| test.c:582:19:582:30 | (...) | 1.449400765E9 | -| test.c:582:19:582:35 | ... * ... | 1.449400765E9 | +| test.c:567:27:567:38 | (...) | 8627385.0 | +| test.c:567:27:567:43 | ... * ... | 8627385.0 | +| test.c:567:28:567:28 | 2 | 1.0 | +| test.c:567:28:567:28 | (unsigned int)... | 1.0 | +| test.c:567:28:567:33 | ... * ... | 8627385.0 | +| test.c:567:28:567:37 | ... + ... | 8627385.0 | +| test.c:567:32:567:33 | ip | 8627385.0 | +| test.c:567:37:567:37 | 1 | 1.0 | +| test.c:567:37:567:37 | (unsigned int)... | 1.0 | +| test.c:567:42:567:43 | 17 | 1.0 | +| test.c:567:42:567:43 | (unsigned int)... | 1.0 | +| test.c:568:17:568:17 | 4 | 1.0 | +| test.c:568:17:568:17 | (unsigned int)... | 1.0 | +| test.c:568:17:568:34 | ... * ... | 8627385.0 | +| test.c:568:17:569:34 | ... + ... | 7.4431771938225E13 | +| test.c:568:17:570:34 | ... + ... | 6.421515527432633E20 | +| test.c:568:17:576:30 | ... + ... | 3.298869507082441E42 | +| test.c:568:21:568:34 | (...) | 8627385.0 | +| test.c:568:22:568:23 | ip | 8627385.0 | +| test.c:568:22:568:28 | ... * ... | 8627385.0 | +| test.c:568:22:568:33 | ... + ... | 8627385.0 | +| test.c:568:27:568:28 | 14 | 1.0 | +| test.c:568:27:568:28 | (unsigned int)... | 1.0 | +| test.c:568:32:568:33 | 32 | 1.0 | +| test.c:568:32:568:33 | (unsigned int)... | 1.0 | +| test.c:569:17:569:34 | (...) | 8627385.0 | +| test.c:569:18:569:18 | 2 | 1.0 | +| test.c:569:18:569:18 | (unsigned int)... | 1.0 | +| test.c:569:18:569:23 | ... * ... | 8627385.0 | +| test.c:569:18:569:28 | ... * ... | 8627385.0 | +| test.c:569:18:569:33 | ... + ... | 8627385.0 | +| test.c:569:22:569:23 | ip | 8627385.0 | +| test.c:569:27:569:28 | 14 | 1.0 | +| test.c:569:27:569:28 | (unsigned int)... | 1.0 | +| test.c:569:32:569:33 | 32 | 1.0 | +| test.c:569:32:569:33 | (unsigned int)... | 1.0 | +| test.c:570:17:570:17 | 2 | 1.0 | +| test.c:570:17:570:17 | (unsigned int)... | 1.0 | +| test.c:570:17:570:34 | ... * ... | 8627385.0 | +| test.c:570:21:570:34 | (...) | 8627385.0 | +| test.c:570:22:570:23 | ip | 8627385.0 | +| test.c:570:22:570:28 | ... * ... | 8627385.0 | +| test.c:570:22:570:33 | ... + ... | 8627385.0 | +| test.c:570:27:570:28 | 14 | 1.0 | +| test.c:570:27:570:28 | (unsigned int)... | 1.0 | +| test.c:570:32:570:33 | 64 | 1.0 | +| test.c:570:32:570:33 | (unsigned int)... | 1.0 | +| test.c:571:17:576:30 | (...) | 5.137213315127421E21 | +| test.c:571:18:571:29 | (...) | 8627385.0 | +| test.c:571:18:571:34 | ... * ... | 8627385.0 | +| test.c:571:18:572:67 | ... > ... | 1.0 | +| test.c:571:18:576:29 | ... ? ... : ... | 5.137213315127421E21 | +| test.c:571:19:571:19 | 2 | 1.0 | +| test.c:571:19:571:19 | (unsigned int)... | 1.0 | +| test.c:571:19:571:24 | ... * ... | 8627385.0 | +| test.c:571:19:571:28 | ... + ... | 8627385.0 | +| test.c:571:23:571:24 | ip | 8627385.0 | +| test.c:571:28:571:28 | 1 | 1.0 | +| test.c:571:28:571:28 | (unsigned int)... | 1.0 | +| test.c:571:33:571:34 | 14 | 1.0 | +| test.c:571:33:571:34 | (unsigned int)... | 1.0 | +| test.c:572:17:572:67 | (...) | 7.4431771938225E13 | +| test.c:572:18:572:19 | 14 | 1.0 | +| test.c:572:18:572:19 | (unsigned int)... | 1.0 | +| test.c:572:18:572:30 | ... * ... | 8627385.0 | +| test.c:572:18:572:40 | ... > ... | 1.0 | +| test.c:572:18:572:66 | ... ? ... : ... | 7.4431771938225E13 | +| test.c:572:23:572:30 | (...) | 8627385.0 | +| test.c:572:24:572:24 | 2 | 1.0 | +| test.c:572:24:572:24 | (unsigned int)... | 1.0 | +| test.c:572:24:572:29 | ... * ... | 8627385.0 | +| test.c:572:28:572:29 | ip | 8627385.0 | +| test.c:572:34:572:35 | 17 | 1.0 | +| test.c:572:34:572:35 | (unsigned int)... | 1.0 | +| test.c:572:34:572:40 | ... * ... | 8627385.0 | +| test.c:572:39:572:40 | ip | 8627385.0 | +| test.c:572:44:572:45 | 17 | 1.0 | +| test.c:572:44:572:45 | (unsigned int)... | 1.0 | +| test.c:572:44:572:56 | ... * ... | 8627385.0 | +| test.c:572:49:572:56 | (...) | 8627385.0 | +| test.c:572:50:572:50 | 2 | 1.0 | +| test.c:572:50:572:50 | (unsigned int)... | 1.0 | +| test.c:572:50:572:55 | ... * ... | 8627385.0 | +| test.c:572:54:572:55 | ip | 8627385.0 | +| test.c:572:60:572:61 | 17 | 1.0 | +| test.c:572:60:572:61 | (unsigned int)... | 1.0 | +| test.c:572:60:572:66 | ... * ... | 8627385.0 | +| test.c:572:65:572:66 | ip | 8627385.0 | +| test.c:573:21:573:32 | (...) | 1.7254771E7 | +| test.c:573:21:573:37 | ... * ... | 1.7254771E7 | +| test.c:573:22:573:22 | 2 | 1.0 | +| test.c:573:22:573:22 | (unsigned int)... | 1.0 | +| test.c:573:22:573:27 | ... * ... | 1.7254771E7 | +| test.c:573:22:573:31 | ... + ... | 1.7254771E7 | +| test.c:573:26:573:27 | ip | 1.7254771E7 | +| test.c:573:31:573:31 | 1 | 1.0 | +| test.c:573:31:573:31 | (unsigned int)... | 1.0 | +| test.c:573:36:573:37 | 14 | 1.0 | +| test.c:573:36:573:37 | (unsigned int)... | 1.0 | +| test.c:574:21:574:22 | 14 | 1.0 | +| test.c:574:21:574:22 | (unsigned int)... | 1.0 | +| test.c:574:21:574:33 | ... * ... | 1.7254771E7 | +| test.c:574:21:574:43 | ... > ... | 1.0 | +| test.c:574:21:576:29 | ... ? ... : ... | 2.97727122262441E14 | +| test.c:574:26:574:33 | (...) | 1.7254771E7 | +| test.c:574:27:574:27 | 2 | 1.0 | +| test.c:574:27:574:27 | (unsigned int)... | 1.0 | +| test.c:574:27:574:32 | ... * ... | 1.7254771E7 | +| test.c:574:31:574:32 | ip | 1.7254771E7 | +| test.c:574:37:574:38 | 17 | 1.0 | +| test.c:574:37:574:38 | (unsigned int)... | 1.0 | +| test.c:574:37:574:43 | ... * ... | 1.7254771E7 | +| test.c:574:42:574:43 | ip | 1.7254771E7 | +| test.c:575:23:575:24 | 14 | 1.0 | +| test.c:575:23:575:24 | (unsigned int)... | 1.0 | +| test.c:575:23:575:35 | ... * ... | 1.7254771E7 | +| test.c:575:28:575:35 | (...) | 1.7254771E7 | +| test.c:575:29:575:29 | 2 | 1.0 | +| test.c:575:29:575:29 | (unsigned int)... | 1.0 | +| test.c:575:29:575:34 | ... * ... | 1.7254771E7 | +| test.c:575:33:575:34 | ip | 1.7254771E7 | +| test.c:576:23:576:24 | 14 | 1.0 | +| test.c:576:23:576:24 | (unsigned int)... | 1.0 | +| test.c:576:23:576:29 | ... * ... | 1.7254771E7 | +| test.c:576:28:576:29 | ip | 1.7254771E7 | +| test.c:577:17:577:17 | 2 | 1.0 | +| test.c:577:17:577:17 | (unsigned int)... | 1.0 | +| test.c:577:17:577:22 | ... * ... | 8627385.0 | +| test.c:577:17:577:27 | ... * ... | 8627385.0 | +| test.c:577:17:577:47 | ... + ... | 7.4431771938225E13 | +| test.c:577:21:577:22 | ip | 8627385.0 | +| test.c:577:26:577:27 | 14 | 1.0 | +| test.c:577:26:577:27 | (unsigned int)... | 1.0 | +| test.c:577:31:577:42 | (...) | 8627385.0 | +| test.c:577:31:577:47 | ... * ... | 8627385.0 | +| test.c:577:32:577:32 | 2 | 1.0 | +| test.c:577:32:577:32 | (unsigned int)... | 1.0 | +| test.c:577:32:577:37 | ... * ... | 8627385.0 | +| test.c:577:32:577:41 | ... + ... | 8627385.0 | +| test.c:577:36:577:37 | ip | 8627385.0 | +| test.c:577:41:577:41 | 1 | 1.0 | +| test.c:577:41:577:41 | (unsigned int)... | 1.0 | +| test.c:577:46:577:47 | 17 | 1.0 | +| test.c:577:46:577:47 | (unsigned int)... | 1.0 | +| test.c:578:11:599:30 | (...) | 6.08636382738973E71 | +| test.c:578:12:578:12 | 4 | 1.0 | +| test.c:578:12:578:12 | (unsigned int)... | 1.0 | +| test.c:578:12:578:29 | ... * ... | 6.0391698E7 | +| test.c:578:12:579:30 | ... + ... | 3.647157187323204E15 | +| test.c:578:12:580:30 | ... + ... | 2.2025801541535236E23 | +| test.c:578:12:586:26 | ... + ... | 3.881087564774641E47 | +| test.c:578:12:587:61 | ... > ... | 1.0 | +| test.c:578:12:599:29 | ... ? ... : ... | 6.08636382738973E71 | +| test.c:578:16:578:29 | (...) | 6.0391698E7 | +| test.c:578:17:578:18 | ip | 6.0391698E7 | +| test.c:578:17:578:23 | ... * ... | 6.0391698E7 | +| test.c:578:17:578:28 | ... + ... | 6.0391698E7 | +| test.c:578:22:578:23 | 14 | 1.0 | +| test.c:578:22:578:23 | (unsigned int)... | 1.0 | +| test.c:578:27:578:28 | 32 | 1.0 | +| test.c:578:27:578:28 | (unsigned int)... | 1.0 | +| test.c:579:13:579:30 | (...) | 6.0391698E7 | +| test.c:579:14:579:14 | 2 | 1.0 | +| test.c:579:14:579:14 | (unsigned int)... | 1.0 | +| test.c:579:14:579:19 | ... * ... | 6.0391698E7 | +| test.c:579:14:579:24 | ... * ... | 6.0391698E7 | +| test.c:579:14:579:29 | ... + ... | 6.0391698E7 | +| test.c:579:18:579:19 | ip | 6.0391698E7 | +| test.c:579:23:579:24 | 14 | 1.0 | +| test.c:579:23:579:24 | (unsigned int)... | 1.0 | +| test.c:579:28:579:29 | 32 | 1.0 | +| test.c:579:28:579:29 | (unsigned int)... | 1.0 | +| test.c:580:13:580:13 | 2 | 1.0 | +| test.c:580:13:580:13 | (unsigned int)... | 1.0 | +| test.c:580:13:580:30 | ... * ... | 6.0391698E7 | +| test.c:580:17:580:30 | (...) | 6.0391698E7 | +| test.c:580:18:580:19 | ip | 6.0391698E7 | +| test.c:580:18:580:24 | ... * ... | 6.0391698E7 | +| test.c:580:18:580:29 | ... + ... | 6.0391698E7 | +| test.c:580:23:580:24 | 14 | 1.0 | +| test.c:580:23:580:24 | (unsigned int)... | 1.0 | +| test.c:580:28:580:29 | 64 | 1.0 | +| test.c:580:28:580:29 | (unsigned int)... | 1.0 | +| test.c:581:13:586:26 | (...) | 1.7620641670887053E24 | +| test.c:581:14:581:25 | (...) | 6.0391698E7 | +| test.c:581:14:581:30 | ... * ... | 6.0391698E7 | +| test.c:581:14:582:63 | ... > ... | 1.0 | +| test.c:581:14:586:25 | ... ? ... : ... | 1.7620641670887053E24 | +| test.c:581:15:581:15 | 2 | 1.0 | +| test.c:581:15:581:15 | (unsigned int)... | 1.0 | +| test.c:581:15:581:20 | ... * ... | 6.0391698E7 | +| test.c:581:15:581:24 | ... + ... | 6.0391698E7 | +| test.c:581:19:581:20 | ip | 6.0391698E7 | +| test.c:581:24:581:24 | 1 | 1.0 | +| test.c:581:24:581:24 | (unsigned int)... | 1.0 | +| test.c:581:29:581:30 | 14 | 1.0 | +| test.c:581:29:581:30 | (unsigned int)... | 1.0 | +| test.c:582:13:582:63 | (...) | 3.647157187323204E15 | +| test.c:582:14:582:15 | 14 | 1.0 | +| test.c:582:14:582:15 | (unsigned int)... | 1.0 | +| test.c:582:14:582:26 | ... * ... | 6.0391698E7 | +| test.c:582:14:582:36 | ... > ... | 1.0 | +| test.c:582:14:582:62 | ... ? ... : ... | 3.647157187323204E15 | +| test.c:582:19:582:26 | (...) | 6.0391698E7 | | test.c:582:20:582:20 | 2 | 1.0 | | test.c:582:20:582:20 | (unsigned int)... | 1.0 | -| test.c:582:20:582:25 | ... * ... | 1.449400765E9 | -| test.c:582:20:582:29 | ... + ... | 1.449400765E9 | -| test.c:582:24:582:25 | ip | 1.449400765E9 | -| test.c:582:29:582:29 | 1 | 1.0 | -| test.c:582:29:582:29 | (unsigned int)... | 1.0 | -| test.c:582:34:582:35 | 14 | 1.0 | -| test.c:582:34:582:35 | (unsigned int)... | 1.0 | -| test.c:583:19:583:20 | 14 | 1.0 | -| test.c:583:19:583:20 | (unsigned int)... | 1.0 | -| test.c:583:19:583:31 | ... * ... | 1.449400765E9 | -| test.c:583:19:583:41 | ... > ... | 1.0 | -| test.c:583:19:585:27 | ... ? ... : ... | 2.1007625775825853E18 | -| test.c:583:24:583:31 | (...) | 1.449400765E9 | -| test.c:583:25:583:25 | 2 | 1.0 | -| test.c:583:25:583:25 | (unsigned int)... | 1.0 | -| test.c:583:25:583:30 | ... * ... | 1.449400765E9 | -| test.c:583:29:583:30 | ip | 1.449400765E9 | -| test.c:583:35:583:36 | 17 | 1.0 | -| test.c:583:35:583:36 | (unsigned int)... | 1.0 | -| test.c:583:35:583:41 | ... * ... | 1.449400765E9 | -| test.c:583:40:583:41 | ip | 1.449400765E9 | -| test.c:584:21:584:22 | 14 | 1.0 | -| test.c:584:21:584:22 | (unsigned int)... | 1.0 | -| test.c:584:21:584:33 | ... * ... | 1.449400765E9 | -| test.c:584:26:584:33 | (...) | 1.449400765E9 | -| test.c:584:27:584:27 | 2 | 1.0 | -| test.c:584:27:584:27 | (unsigned int)... | 1.0 | -| test.c:584:27:584:32 | ... * ... | 1.449400765E9 | -| test.c:584:31:584:32 | ip | 1.449400765E9 | -| test.c:585:21:585:22 | 14 | 1.0 | -| test.c:585:21:585:22 | (unsigned int)... | 1.0 | -| test.c:585:21:585:27 | ... * ... | 1.449400765E9 | -| test.c:585:26:585:27 | ip | 1.449400765E9 | -| test.c:586:15:586:16 | 14 | 1.0 | -| test.c:586:15:586:16 | (unsigned int)... | 1.0 | -| test.c:586:15:586:21 | ... * ... | 7.24700382E8 | -| test.c:586:15:586:37 | ... > ... | 1.0 | -| test.c:586:15:588:29 | ... ? ... : ... | 5.251906436709459E17 | -| test.c:586:20:586:21 | ip | 7.24700382E8 | -| test.c:586:25:586:32 | (...) | 7.24700382E8 | -| test.c:586:25:586:37 | ... * ... | 7.24700382E8 | -| test.c:586:26:586:27 | ip | 7.24700382E8 | -| test.c:586:26:586:31 | ... + ... | 7.24700382E8 | -| test.c:586:31:586:31 | 1 | 1.0 | -| test.c:586:31:586:31 | (unsigned int)... | 1.0 | -| test.c:586:36:586:37 | 17 | 1.0 | -| test.c:586:36:586:37 | (unsigned int)... | 1.0 | -| test.c:587:17:587:18 | 14 | 1.0 | -| test.c:587:17:587:18 | (unsigned int)... | 1.0 | -| test.c:587:17:587:23 | ... * ... | 7.24700382E8 | -| test.c:587:22:587:23 | ip | 7.24700382E8 | -| test.c:588:17:588:24 | (...) | 7.24700382E8 | -| test.c:588:17:588:29 | ... * ... | 7.24700382E8 | -| test.c:588:18:588:19 | ip | 7.24700382E8 | -| test.c:588:18:588:23 | ... + ... | 7.24700382E8 | -| test.c:588:23:588:23 | 1 | 1.0 | -| test.c:588:23:588:23 | (unsigned int)... | 1.0 | -| test.c:588:28:588:29 | 14 | 1.0 | -| test.c:588:28:588:29 | (unsigned int)... | 1.0 | -| test.c:589:11:589:11 | 2 | 1.0 | -| test.c:589:11:589:11 | (unsigned int)... | 1.0 | -| test.c:589:11:589:28 | ... * ... | 5.797603059E9 | -| test.c:589:11:609:46 | ... + ... | 9.943431528813442E94 | -| test.c:589:15:589:28 | (...) | 5.797603059E9 | -| test.c:589:16:589:17 | ip | 5.797603059E9 | -| test.c:589:16:589:22 | ... * ... | 5.797603059E9 | -| test.c:589:16:589:27 | ... + ... | 5.797603059E9 | -| test.c:589:21:589:22 | 14 | 1.0 | -| test.c:589:21:589:22 | (unsigned int)... | 1.0 | -| test.c:589:26:589:27 | 32 | 1.0 | -| test.c:589:26:589:27 | (unsigned int)... | 1.0 | -| test.c:590:11:609:46 | (...) | 1.715093535659983E85 | -| test.c:590:12:590:12 | 4 | 1.0 | -| test.c:590:12:590:12 | (unsigned int)... | 1.0 | -| test.c:590:12:590:29 | ... * ... | 5.797603059E9 | -| test.c:590:12:591:30 | ... + ... | 3.361220122972616E19 | -| test.c:590:12:592:30 | ... + ... | 1.9487020066918396E29 | -| test.c:590:12:598:26 | ... + ... | 3.0379516094938436E59 | -| test.c:590:12:599:41 | ... > ... | 1.0 | -| test.c:590:12:609:45 | ... ? ... : ... | 1.715093535659983E85 | -| test.c:590:16:590:29 | (...) | 5.797603059E9 | -| test.c:590:17:590:18 | ip | 5.797603059E9 | -| test.c:590:17:590:23 | ... * ... | 5.797603059E9 | -| test.c:590:17:590:28 | ... + ... | 5.797603059E9 | -| test.c:590:22:590:23 | 14 | 1.0 | -| test.c:590:22:590:23 | (unsigned int)... | 1.0 | -| test.c:590:27:590:28 | 32 | 1.0 | -| test.c:590:27:590:28 | (unsigned int)... | 1.0 | -| test.c:591:13:591:30 | (...) | 5.797603059E9 | -| test.c:591:14:591:14 | 2 | 1.0 | -| test.c:591:14:591:14 | (unsigned int)... | 1.0 | -| test.c:591:14:591:19 | ... * ... | 5.797603059E9 | -| test.c:591:14:591:24 | ... * ... | 5.797603059E9 | -| test.c:591:14:591:29 | ... + ... | 5.797603059E9 | -| test.c:591:18:591:19 | ip | 5.797603059E9 | -| test.c:591:23:591:24 | 14 | 1.0 | -| test.c:591:23:591:24 | (unsigned int)... | 1.0 | -| test.c:591:28:591:29 | 32 | 1.0 | -| test.c:591:28:591:29 | (unsigned int)... | 1.0 | -| test.c:592:13:592:13 | 2 | 1.0 | -| test.c:592:13:592:13 | (unsigned int)... | 1.0 | -| test.c:592:13:592:30 | ... * ... | 5.797603059E9 | -| test.c:592:17:592:30 | (...) | 5.797603059E9 | -| test.c:592:18:592:19 | ip | 5.797603059E9 | -| test.c:592:18:592:24 | ... * ... | 5.797603059E9 | -| test.c:592:18:592:29 | ... + ... | 5.797603059E9 | -| test.c:592:23:592:24 | 14 | 1.0 | -| test.c:592:23:592:24 | (unsigned int)... | 1.0 | -| test.c:592:28:592:29 | 64 | 1.0 | -| test.c:592:28:592:29 | (unsigned int)... | 1.0 | -| test.c:593:13:598:26 | (...) | 1.558961605756818E30 | -| test.c:593:14:593:25 | (...) | 5.797603059E9 | -| test.c:593:14:593:30 | ... * ... | 5.797603059E9 | -| test.c:593:14:594:63 | ... > ... | 1.0 | -| test.c:593:14:598:25 | ... ? ... : ... | 1.558961605756818E30 | -| test.c:593:15:593:15 | 2 | 1.0 | -| test.c:593:15:593:15 | (unsigned int)... | 1.0 | -| test.c:593:15:593:20 | ... * ... | 5.797603059E9 | -| test.c:593:15:593:24 | ... + ... | 5.797603059E9 | -| test.c:593:19:593:20 | ip | 5.797603059E9 | -| test.c:593:24:593:24 | 1 | 1.0 | -| test.c:593:24:593:24 | (unsigned int)... | 1.0 | -| test.c:593:29:593:30 | 14 | 1.0 | -| test.c:593:29:593:30 | (unsigned int)... | 1.0 | -| test.c:594:13:594:63 | (...) | 3.361220122972616E19 | -| test.c:594:14:594:15 | 14 | 1.0 | -| test.c:594:14:594:15 | (unsigned int)... | 1.0 | -| test.c:594:14:594:26 | ... * ... | 5.797603059E9 | -| test.c:594:14:594:36 | ... > ... | 1.0 | -| test.c:594:14:594:62 | ... ? ... : ... | 3.361220122972616E19 | -| test.c:594:19:594:26 | (...) | 5.797603059E9 | -| test.c:594:20:594:20 | 2 | 1.0 | -| test.c:594:20:594:20 | (unsigned int)... | 1.0 | -| test.c:594:20:594:25 | ... * ... | 5.797603059E9 | -| test.c:594:24:594:25 | ip | 5.797603059E9 | -| test.c:594:30:594:31 | 17 | 1.0 | -| test.c:594:30:594:31 | (unsigned int)... | 1.0 | -| test.c:594:30:594:36 | ... * ... | 5.797603059E9 | -| test.c:594:35:594:36 | ip | 5.797603059E9 | -| test.c:594:40:594:41 | 17 | 1.0 | -| test.c:594:40:594:41 | (unsigned int)... | 1.0 | -| test.c:594:40:594:52 | ... * ... | 5.797603059E9 | -| test.c:594:45:594:52 | (...) | 5.797603059E9 | -| test.c:594:46:594:46 | 2 | 1.0 | -| test.c:594:46:594:46 | (unsigned int)... | 1.0 | -| test.c:594:46:594:51 | ... * ... | 5.797603059E9 | -| test.c:594:50:594:51 | ip | 5.797603059E9 | -| test.c:594:56:594:57 | 17 | 1.0 | -| test.c:594:56:594:57 | (unsigned int)... | 1.0 | -| test.c:594:56:594:62 | ... * ... | 5.797603059E9 | -| test.c:594:61:594:62 | ip | 5.797603059E9 | -| test.c:595:17:595:28 | (...) | 1.1595206119E10 | -| test.c:595:17:595:33 | ... * ... | 1.1595206119E10 | -| test.c:595:18:595:18 | 2 | 1.0 | -| test.c:595:18:595:18 | (unsigned int)... | 1.0 | -| test.c:595:18:595:23 | ... * ... | 1.1595206119E10 | -| test.c:595:18:595:27 | ... + ... | 1.1595206119E10 | -| test.c:595:22:595:23 | ip | 1.1595206119E10 | -| test.c:595:27:595:27 | 1 | 1.0 | +| test.c:582:20:582:25 | ... * ... | 6.0391698E7 | +| test.c:582:24:582:25 | ip | 6.0391698E7 | +| test.c:582:30:582:31 | 17 | 1.0 | +| test.c:582:30:582:31 | (unsigned int)... | 1.0 | +| test.c:582:30:582:36 | ... * ... | 6.0391698E7 | +| test.c:582:35:582:36 | ip | 6.0391698E7 | +| test.c:582:40:582:41 | 17 | 1.0 | +| test.c:582:40:582:41 | (unsigned int)... | 1.0 | +| test.c:582:40:582:52 | ... * ... | 6.0391698E7 | +| test.c:582:45:582:52 | (...) | 6.0391698E7 | +| test.c:582:46:582:46 | 2 | 1.0 | +| test.c:582:46:582:46 | (unsigned int)... | 1.0 | +| test.c:582:46:582:51 | ... * ... | 6.0391698E7 | +| test.c:582:50:582:51 | ip | 6.0391698E7 | +| test.c:582:56:582:57 | 17 | 1.0 | +| test.c:582:56:582:57 | (unsigned int)... | 1.0 | +| test.c:582:56:582:62 | ... * ... | 6.0391698E7 | +| test.c:582:61:582:62 | ip | 6.0391698E7 | +| test.c:583:17:583:28 | (...) | 1.20783397E8 | +| test.c:583:17:583:33 | ... * ... | 1.20783397E8 | +| test.c:583:18:583:18 | 2 | 1.0 | +| test.c:583:18:583:18 | (unsigned int)... | 1.0 | +| test.c:583:18:583:23 | ... * ... | 1.20783397E8 | +| test.c:583:18:583:27 | ... + ... | 1.20783397E8 | +| test.c:583:22:583:23 | ip | 1.20783397E8 | +| test.c:583:27:583:27 | 1 | 1.0 | +| test.c:583:27:583:27 | (unsigned int)... | 1.0 | +| test.c:583:32:583:33 | 14 | 1.0 | +| test.c:583:32:583:33 | (unsigned int)... | 1.0 | +| test.c:584:17:584:18 | 14 | 1.0 | +| test.c:584:17:584:18 | (unsigned int)... | 1.0 | +| test.c:584:17:584:29 | ... * ... | 1.20783397E8 | +| test.c:584:17:584:39 | ... > ... | 1.0 | +| test.c:584:17:586:25 | ... ? ... : ... | 1.4588628990859608E16 | +| test.c:584:22:584:29 | (...) | 1.20783397E8 | +| test.c:584:23:584:23 | 2 | 1.0 | +| test.c:584:23:584:23 | (unsigned int)... | 1.0 | +| test.c:584:23:584:28 | ... * ... | 1.20783397E8 | +| test.c:584:27:584:28 | ip | 1.20783397E8 | +| test.c:584:33:584:34 | 17 | 1.0 | +| test.c:584:33:584:34 | (unsigned int)... | 1.0 | +| test.c:584:33:584:39 | ... * ... | 1.20783397E8 | +| test.c:584:38:584:39 | ip | 1.20783397E8 | +| test.c:585:19:585:20 | 14 | 1.0 | +| test.c:585:19:585:20 | (unsigned int)... | 1.0 | +| test.c:585:19:585:31 | ... * ... | 1.20783397E8 | +| test.c:585:24:585:31 | (...) | 1.20783397E8 | +| test.c:585:25:585:25 | 2 | 1.0 | +| test.c:585:25:585:25 | (unsigned int)... | 1.0 | +| test.c:585:25:585:30 | ... * ... | 1.20783397E8 | +| test.c:585:29:585:30 | ip | 1.20783397E8 | +| test.c:586:19:586:20 | 14 | 1.0 | +| test.c:586:19:586:20 | (unsigned int)... | 1.0 | +| test.c:586:19:586:25 | ... * ... | 1.20783397E8 | +| test.c:586:24:586:25 | ip | 1.20783397E8 | +| test.c:587:11:587:61 | (...) | 1.3129766091773648E17 | +| test.c:587:12:587:13 | 14 | 1.0 | +| test.c:587:12:587:13 | (unsigned int)... | 1.0 | +| test.c:587:12:587:18 | ... * ... | 3.62350191E8 | +| test.c:587:12:587:34 | ... > ... | 1.0 | +| test.c:587:12:587:60 | ... ? ... : ... | 1.3129766091773648E17 | +| test.c:587:17:587:18 | ip | 3.62350191E8 | +| test.c:587:22:587:29 | (...) | 3.62350191E8 | +| test.c:587:22:587:34 | ... * ... | 3.62350191E8 | +| test.c:587:23:587:24 | ip | 3.62350191E8 | +| test.c:587:23:587:28 | ... + ... | 3.62350191E8 | +| test.c:587:28:587:28 | 1 | 1.0 | +| test.c:587:28:587:28 | (unsigned int)... | 1.0 | +| test.c:587:33:587:34 | 17 | 1.0 | +| test.c:587:33:587:34 | (unsigned int)... | 1.0 | +| test.c:587:38:587:39 | 17 | 1.0 | +| test.c:587:38:587:39 | (unsigned int)... | 1.0 | +| test.c:587:38:587:44 | ... * ... | 3.62350191E8 | +| test.c:587:43:587:44 | ip | 3.62350191E8 | +| test.c:587:48:587:55 | (...) | 3.62350191E8 | +| test.c:587:48:587:60 | ... * ... | 3.62350191E8 | +| test.c:587:49:587:50 | ip | 3.62350191E8 | +| test.c:587:49:587:54 | ... + ... | 3.62350191E8 | +| test.c:587:54:587:54 | 1 | 1.0 | +| test.c:587:54:587:54 | (unsigned int)... | 1.0 | +| test.c:587:59:587:60 | 17 | 1.0 | +| test.c:587:59:587:60 | (unsigned int)... | 1.0 | +| test.c:588:15:588:15 | 4 | 1.0 | +| test.c:588:15:588:15 | (unsigned int)... | 1.0 | +| test.c:588:15:588:32 | ... * ... | 7.24700382E8 | +| test.c:588:15:589:32 | ... + ... | 5.251906436709459E17 | +| test.c:588:15:590:32 | ... + ... | 3.806058600911604E26 | +| test.c:588:15:596:28 | ... + ... | 1.1588865682845433E54 | +| test.c:588:19:588:32 | (...) | 7.24700382E8 | +| test.c:588:20:588:21 | ip | 7.24700382E8 | +| test.c:588:20:588:26 | ... * ... | 7.24700382E8 | +| test.c:588:20:588:31 | ... + ... | 7.24700382E8 | +| test.c:588:25:588:26 | 14 | 1.0 | +| test.c:588:25:588:26 | (unsigned int)... | 1.0 | +| test.c:588:30:588:31 | 32 | 1.0 | +| test.c:588:30:588:31 | (unsigned int)... | 1.0 | +| test.c:589:15:589:32 | (...) | 7.24700382E8 | +| test.c:589:16:589:16 | 2 | 1.0 | +| test.c:589:16:589:16 | (unsigned int)... | 1.0 | +| test.c:589:16:589:21 | ... * ... | 7.24700382E8 | +| test.c:589:16:589:26 | ... * ... | 7.24700382E8 | +| test.c:589:16:589:31 | ... + ... | 7.24700382E8 | +| test.c:589:20:589:21 | ip | 7.24700382E8 | +| test.c:589:25:589:26 | 14 | 1.0 | +| test.c:589:25:589:26 | (unsigned int)... | 1.0 | +| test.c:589:30:589:31 | 32 | 1.0 | +| test.c:589:30:589:31 | (unsigned int)... | 1.0 | +| test.c:590:15:590:15 | 2 | 1.0 | +| test.c:590:15:590:15 | (unsigned int)... | 1.0 | +| test.c:590:15:590:32 | ... * ... | 7.24700382E8 | +| test.c:590:19:590:32 | (...) | 7.24700382E8 | +| test.c:590:20:590:21 | ip | 7.24700382E8 | +| test.c:590:20:590:26 | ... * ... | 7.24700382E8 | +| test.c:590:20:590:31 | ... + ... | 7.24700382E8 | +| test.c:590:25:590:26 | 14 | 1.0 | +| test.c:590:25:590:26 | (unsigned int)... | 1.0 | +| test.c:590:30:590:31 | 64 | 1.0 | +| test.c:590:30:590:31 | (unsigned int)... | 1.0 | +| test.c:591:15:596:28 | (...) | 3.044846887031571E27 | +| test.c:591:16:591:27 | (...) | 7.24700382E8 | +| test.c:591:16:591:32 | ... * ... | 7.24700382E8 | +| test.c:591:16:592:65 | ... > ... | 1.0 | +| test.c:591:16:596:27 | ... ? ... : ... | 3.044846887031571E27 | +| test.c:591:17:591:17 | 2 | 1.0 | +| test.c:591:17:591:17 | (unsigned int)... | 1.0 | +| test.c:591:17:591:22 | ... * ... | 7.24700382E8 | +| test.c:591:17:591:26 | ... + ... | 7.24700382E8 | +| test.c:591:21:591:22 | ip | 7.24700382E8 | +| test.c:591:26:591:26 | 1 | 1.0 | +| test.c:591:26:591:26 | (unsigned int)... | 1.0 | +| test.c:591:31:591:32 | 14 | 1.0 | +| test.c:591:31:591:32 | (unsigned int)... | 1.0 | +| test.c:592:15:592:65 | (...) | 5.251906436709459E17 | +| test.c:592:16:592:17 | 14 | 1.0 | +| test.c:592:16:592:17 | (unsigned int)... | 1.0 | +| test.c:592:16:592:28 | ... * ... | 7.24700382E8 | +| test.c:592:16:592:38 | ... > ... | 1.0 | +| test.c:592:16:592:64 | ... ? ... : ... | 5.251906436709459E17 | +| test.c:592:21:592:28 | (...) | 7.24700382E8 | +| test.c:592:22:592:22 | 2 | 1.0 | +| test.c:592:22:592:22 | (unsigned int)... | 1.0 | +| test.c:592:22:592:27 | ... * ... | 7.24700382E8 | +| test.c:592:26:592:27 | ip | 7.24700382E8 | +| test.c:592:32:592:33 | 17 | 1.0 | +| test.c:592:32:592:33 | (unsigned int)... | 1.0 | +| test.c:592:32:592:38 | ... * ... | 7.24700382E8 | +| test.c:592:37:592:38 | ip | 7.24700382E8 | +| test.c:592:42:592:43 | 17 | 1.0 | +| test.c:592:42:592:43 | (unsigned int)... | 1.0 | +| test.c:592:42:592:54 | ... * ... | 7.24700382E8 | +| test.c:592:47:592:54 | (...) | 7.24700382E8 | +| test.c:592:48:592:48 | 2 | 1.0 | +| test.c:592:48:592:48 | (unsigned int)... | 1.0 | +| test.c:592:48:592:53 | ... * ... | 7.24700382E8 | +| test.c:592:52:592:53 | ip | 7.24700382E8 | +| test.c:592:58:592:59 | 17 | 1.0 | +| test.c:592:58:592:59 | (unsigned int)... | 1.0 | +| test.c:592:58:592:64 | ... * ... | 7.24700382E8 | +| test.c:592:63:592:64 | ip | 7.24700382E8 | +| test.c:593:19:593:30 | (...) | 1.449400765E9 | +| test.c:593:19:593:35 | ... * ... | 1.449400765E9 | +| test.c:593:20:593:20 | 2 | 1.0 | +| test.c:593:20:593:20 | (unsigned int)... | 1.0 | +| test.c:593:20:593:25 | ... * ... | 1.449400765E9 | +| test.c:593:20:593:29 | ... + ... | 1.449400765E9 | +| test.c:593:24:593:25 | ip | 1.449400765E9 | +| test.c:593:29:593:29 | 1 | 1.0 | +| test.c:593:29:593:29 | (unsigned int)... | 1.0 | +| test.c:593:34:593:35 | 14 | 1.0 | +| test.c:593:34:593:35 | (unsigned int)... | 1.0 | +| test.c:594:19:594:20 | 14 | 1.0 | +| test.c:594:19:594:20 | (unsigned int)... | 1.0 | +| test.c:594:19:594:31 | ... * ... | 1.449400765E9 | +| test.c:594:19:594:41 | ... > ... | 1.0 | +| test.c:594:19:596:27 | ... ? ... : ... | 2.1007625775825853E18 | +| test.c:594:24:594:31 | (...) | 1.449400765E9 | +| test.c:594:25:594:25 | 2 | 1.0 | +| test.c:594:25:594:25 | (unsigned int)... | 1.0 | +| test.c:594:25:594:30 | ... * ... | 1.449400765E9 | +| test.c:594:29:594:30 | ip | 1.449400765E9 | +| test.c:594:35:594:36 | 17 | 1.0 | +| test.c:594:35:594:36 | (unsigned int)... | 1.0 | +| test.c:594:35:594:41 | ... * ... | 1.449400765E9 | +| test.c:594:40:594:41 | ip | 1.449400765E9 | +| test.c:595:21:595:22 | 14 | 1.0 | +| test.c:595:21:595:22 | (unsigned int)... | 1.0 | +| test.c:595:21:595:33 | ... * ... | 1.449400765E9 | +| test.c:595:26:595:33 | (...) | 1.449400765E9 | +| test.c:595:27:595:27 | 2 | 1.0 | | test.c:595:27:595:27 | (unsigned int)... | 1.0 | -| test.c:595:32:595:33 | 14 | 1.0 | -| test.c:595:32:595:33 | (unsigned int)... | 1.0 | -| test.c:596:17:596:18 | 14 | 1.0 | -| test.c:596:17:596:18 | (unsigned int)... | 1.0 | -| test.c:596:17:596:29 | ... * ... | 1.1595206119E10 | -| test.c:596:17:596:39 | ... > ... | 1.0 | -| test.c:596:17:598:25 | ... ? ... : ... | 1.3444880494209504E20 | -| test.c:596:22:596:29 | (...) | 1.1595206119E10 | -| test.c:596:23:596:23 | 2 | 1.0 | -| test.c:596:23:596:23 | (unsigned int)... | 1.0 | -| test.c:596:23:596:28 | ... * ... | 1.1595206119E10 | -| test.c:596:27:596:28 | ip | 1.1595206119E10 | -| test.c:596:33:596:34 | 17 | 1.0 | -| test.c:596:33:596:34 | (unsigned int)... | 1.0 | -| test.c:596:33:596:39 | ... * ... | 1.1595206119E10 | -| test.c:596:38:596:39 | ip | 1.1595206119E10 | -| test.c:597:19:597:20 | 14 | 1.0 | -| test.c:597:19:597:20 | (unsigned int)... | 1.0 | -| test.c:597:19:597:31 | ... * ... | 1.1595206119E10 | -| test.c:597:24:597:31 | (...) | 1.1595206119E10 | -| test.c:597:25:597:25 | 2 | 1.0 | -| test.c:597:25:597:25 | (unsigned int)... | 1.0 | -| test.c:597:25:597:30 | ... * ... | 1.1595206119E10 | -| test.c:597:29:597:30 | ip | 1.1595206119E10 | -| test.c:598:19:598:20 | 14 | 1.0 | -| test.c:598:19:598:20 | (unsigned int)... | 1.0 | -| test.c:598:19:598:25 | ... * ... | 1.1595206119E10 | -| test.c:598:24:598:25 | ip | 1.1595206119E10 | -| test.c:599:11:599:11 | 2 | 1.0 | -| test.c:599:11:599:11 | (unsigned int)... | 1.0 | -| test.c:599:11:599:16 | ... * ... | 3.4785618357E10 | -| test.c:599:11:599:21 | ... * ... | 3.4785618357E10 | -| test.c:599:11:599:41 | ... + ... | 1.2100392444788552E21 | -| test.c:599:15:599:16 | ip | 3.4785618357E10 | -| test.c:599:20:599:21 | 14 | 1.0 | -| test.c:599:20:599:21 | (unsigned int)... | 1.0 | -| test.c:599:25:599:36 | (...) | 3.4785618357E10 | -| test.c:599:25:599:41 | ... * ... | 3.4785618357E10 | -| test.c:599:26:599:26 | 2 | 1.0 | -| test.c:599:26:599:26 | (unsigned int)... | 1.0 | -| test.c:599:26:599:31 | ... * ... | 3.4785618357E10 | -| test.c:599:26:599:35 | ... + ... | 3.4785618357E10 | -| test.c:599:30:599:31 | ip | 3.4785618357E10 | -| test.c:599:35:599:35 | 1 | 1.0 | -| test.c:599:35:599:35 | (unsigned int)... | 1.0 | -| test.c:599:40:599:41 | 17 | 1.0 | -| test.c:599:40:599:41 | (unsigned int)... | 1.0 | -| test.c:600:15:600:15 | 4 | 1.0 | -| test.c:600:15:600:15 | (unsigned int)... | 1.0 | -| test.c:600:15:600:32 | ... * ... | 3.4785618357E10 | -| test.c:600:15:601:32 | ... + ... | 1.2100392444788552E21 | -| test.c:600:15:602:32 | ... + ... | 4.209196335543408E31 | -| test.c:600:15:608:28 | ... + ... | 1.417386703353284E64 | -| test.c:600:19:600:32 | (...) | 3.4785618357E10 | -| test.c:600:20:600:21 | ip | 3.4785618357E10 | -| test.c:600:20:600:26 | ... * ... | 3.4785618357E10 | -| test.c:600:20:600:31 | ... + ... | 3.4785618357E10 | -| test.c:600:25:600:26 | 14 | 1.0 | -| test.c:600:25:600:26 | (unsigned int)... | 1.0 | -| test.c:600:30:600:31 | 32 | 1.0 | -| test.c:600:30:600:31 | (unsigned int)... | 1.0 | -| test.c:601:15:601:32 | (...) | 3.4785618357E10 | -| test.c:601:16:601:16 | 2 | 1.0 | -| test.c:601:16:601:16 | (unsigned int)... | 1.0 | -| test.c:601:16:601:21 | ... * ... | 3.4785618357E10 | -| test.c:601:16:601:26 | ... * ... | 3.4785618357E10 | -| test.c:601:16:601:31 | ... + ... | 3.4785618357E10 | -| test.c:601:20:601:21 | ip | 3.4785618357E10 | -| test.c:601:25:601:26 | 14 | 1.0 | -| test.c:601:25:601:26 | (unsigned int)... | 1.0 | -| test.c:601:30:601:31 | 32 | 1.0 | -| test.c:601:30:601:31 | (unsigned int)... | 1.0 | -| test.c:602:15:602:15 | 2 | 1.0 | -| test.c:602:15:602:15 | (unsigned int)... | 1.0 | -| test.c:602:15:602:32 | ... * ... | 3.4785618357E10 | -| test.c:602:19:602:32 | (...) | 3.4785618357E10 | -| test.c:602:20:602:21 | ip | 3.4785618357E10 | -| test.c:602:20:602:26 | ... * ... | 3.4785618357E10 | -| test.c:602:20:602:31 | ... + ... | 3.4785618357E10 | -| test.c:602:25:602:26 | 14 | 1.0 | -| test.c:602:25:602:26 | (unsigned int)... | 1.0 | -| test.c:602:30:602:31 | 64 | 1.0 | -| test.c:602:30:602:31 | (unsigned int)... | 1.0 | -| test.c:603:15:608:28 | (...) | 3.367357068579931E32 | -| test.c:603:16:603:27 | (...) | 3.4785618357E10 | -| test.c:603:16:603:32 | ... * ... | 3.4785618357E10 | -| test.c:603:16:604:65 | ... > ... | 1.0 | -| test.c:603:16:608:27 | ... ? ... : ... | 3.367357068579931E32 | -| test.c:603:17:603:17 | 2 | 1.0 | -| test.c:603:17:603:17 | (unsigned int)... | 1.0 | -| test.c:603:17:603:22 | ... * ... | 3.4785618357E10 | -| test.c:603:17:603:26 | ... + ... | 3.4785618357E10 | -| test.c:603:21:603:22 | ip | 3.4785618357E10 | -| test.c:603:26:603:26 | 1 | 1.0 | -| test.c:603:26:603:26 | (unsigned int)... | 1.0 | -| test.c:603:31:603:32 | 14 | 1.0 | -| test.c:603:31:603:32 | (unsigned int)... | 1.0 | -| test.c:604:15:604:65 | (...) | 1.2100392444788552E21 | -| test.c:604:16:604:17 | 14 | 1.0 | -| test.c:604:16:604:17 | (unsigned int)... | 1.0 | -| test.c:604:16:604:28 | ... * ... | 3.4785618357E10 | -| test.c:604:16:604:38 | ... > ... | 1.0 | -| test.c:604:16:604:64 | ... ? ... : ... | 1.2100392444788552E21 | -| test.c:604:21:604:28 | (...) | 3.4785618357E10 | -| test.c:604:22:604:22 | 2 | 1.0 | -| test.c:604:22:604:22 | (unsigned int)... | 1.0 | -| test.c:604:22:604:27 | ... * ... | 3.4785618357E10 | -| test.c:604:26:604:27 | ip | 3.4785618357E10 | -| test.c:604:32:604:33 | 17 | 1.0 | -| test.c:604:32:604:33 | (unsigned int)... | 1.0 | -| test.c:604:32:604:38 | ... * ... | 3.4785618357E10 | -| test.c:604:37:604:38 | ip | 3.4785618357E10 | -| test.c:604:42:604:43 | 17 | 1.0 | -| test.c:604:42:604:43 | (unsigned int)... | 1.0 | -| test.c:604:42:604:54 | ... * ... | 3.4785618357E10 | -| test.c:604:47:604:54 | (...) | 3.4785618357E10 | -| test.c:604:48:604:48 | 2 | 1.0 | -| test.c:604:48:604:48 | (unsigned int)... | 1.0 | -| test.c:604:48:604:53 | ... * ... | 3.4785618357E10 | -| test.c:604:52:604:53 | ip | 3.4785618357E10 | -| test.c:604:58:604:59 | 17 | 1.0 | -| test.c:604:58:604:59 | (unsigned int)... | 1.0 | -| test.c:604:58:604:64 | ... * ... | 3.4785618357E10 | -| test.c:604:63:604:64 | ip | 3.4785618357E10 | -| test.c:605:19:605:30 | (...) | 6.9571236715E10 | -| test.c:605:19:605:35 | ... * ... | 6.9571236715E10 | +| test.c:595:27:595:32 | ... * ... | 1.449400765E9 | +| test.c:595:31:595:32 | ip | 1.449400765E9 | +| test.c:596:21:596:22 | 14 | 1.0 | +| test.c:596:21:596:22 | (unsigned int)... | 1.0 | +| test.c:596:21:596:27 | ... * ... | 1.449400765E9 | +| test.c:596:26:596:27 | ip | 1.449400765E9 | +| test.c:597:15:597:16 | 14 | 1.0 | +| test.c:597:15:597:16 | (unsigned int)... | 1.0 | +| test.c:597:15:597:21 | ... * ... | 7.24700382E8 | +| test.c:597:15:597:37 | ... > ... | 1.0 | +| test.c:597:15:599:29 | ... ? ... : ... | 5.251906436709459E17 | +| test.c:597:20:597:21 | ip | 7.24700382E8 | +| test.c:597:25:597:32 | (...) | 7.24700382E8 | +| test.c:597:25:597:37 | ... * ... | 7.24700382E8 | +| test.c:597:26:597:27 | ip | 7.24700382E8 | +| test.c:597:26:597:31 | ... + ... | 7.24700382E8 | +| test.c:597:31:597:31 | 1 | 1.0 | +| test.c:597:31:597:31 | (unsigned int)... | 1.0 | +| test.c:597:36:597:37 | 17 | 1.0 | +| test.c:597:36:597:37 | (unsigned int)... | 1.0 | +| test.c:598:17:598:18 | 14 | 1.0 | +| test.c:598:17:598:18 | (unsigned int)... | 1.0 | +| test.c:598:17:598:23 | ... * ... | 7.24700382E8 | +| test.c:598:22:598:23 | ip | 7.24700382E8 | +| test.c:599:17:599:24 | (...) | 7.24700382E8 | +| test.c:599:17:599:29 | ... * ... | 7.24700382E8 | +| test.c:599:18:599:19 | ip | 7.24700382E8 | +| test.c:599:18:599:23 | ... + ... | 7.24700382E8 | +| test.c:599:23:599:23 | 1 | 1.0 | +| test.c:599:23:599:23 | (unsigned int)... | 1.0 | +| test.c:599:28:599:29 | 14 | 1.0 | +| test.c:599:28:599:29 | (unsigned int)... | 1.0 | +| test.c:600:11:600:11 | 2 | 1.0 | +| test.c:600:11:600:11 | (unsigned int)... | 1.0 | +| test.c:600:11:600:28 | ... * ... | 5.797603059E9 | +| test.c:600:11:620:46 | ... + ... | 9.943431528813442E94 | +| test.c:600:15:600:28 | (...) | 5.797603059E9 | +| test.c:600:16:600:17 | ip | 5.797603059E9 | +| test.c:600:16:600:22 | ... * ... | 5.797603059E9 | +| test.c:600:16:600:27 | ... + ... | 5.797603059E9 | +| test.c:600:21:600:22 | 14 | 1.0 | +| test.c:600:21:600:22 | (unsigned int)... | 1.0 | +| test.c:600:26:600:27 | 32 | 1.0 | +| test.c:600:26:600:27 | (unsigned int)... | 1.0 | +| test.c:601:11:620:46 | (...) | 1.715093535659983E85 | +| test.c:601:12:601:12 | 4 | 1.0 | +| test.c:601:12:601:12 | (unsigned int)... | 1.0 | +| test.c:601:12:601:29 | ... * ... | 5.797603059E9 | +| test.c:601:12:602:30 | ... + ... | 3.361220122972616E19 | +| test.c:601:12:603:30 | ... + ... | 1.9487020066918396E29 | +| test.c:601:12:609:26 | ... + ... | 3.0379516094938436E59 | +| test.c:601:12:610:41 | ... > ... | 1.0 | +| test.c:601:12:620:45 | ... ? ... : ... | 1.715093535659983E85 | +| test.c:601:16:601:29 | (...) | 5.797603059E9 | +| test.c:601:17:601:18 | ip | 5.797603059E9 | +| test.c:601:17:601:23 | ... * ... | 5.797603059E9 | +| test.c:601:17:601:28 | ... + ... | 5.797603059E9 | +| test.c:601:22:601:23 | 14 | 1.0 | +| test.c:601:22:601:23 | (unsigned int)... | 1.0 | +| test.c:601:27:601:28 | 32 | 1.0 | +| test.c:601:27:601:28 | (unsigned int)... | 1.0 | +| test.c:602:13:602:30 | (...) | 5.797603059E9 | +| test.c:602:14:602:14 | 2 | 1.0 | +| test.c:602:14:602:14 | (unsigned int)... | 1.0 | +| test.c:602:14:602:19 | ... * ... | 5.797603059E9 | +| test.c:602:14:602:24 | ... * ... | 5.797603059E9 | +| test.c:602:14:602:29 | ... + ... | 5.797603059E9 | +| test.c:602:18:602:19 | ip | 5.797603059E9 | +| test.c:602:23:602:24 | 14 | 1.0 | +| test.c:602:23:602:24 | (unsigned int)... | 1.0 | +| test.c:602:28:602:29 | 32 | 1.0 | +| test.c:602:28:602:29 | (unsigned int)... | 1.0 | +| test.c:603:13:603:13 | 2 | 1.0 | +| test.c:603:13:603:13 | (unsigned int)... | 1.0 | +| test.c:603:13:603:30 | ... * ... | 5.797603059E9 | +| test.c:603:17:603:30 | (...) | 5.797603059E9 | +| test.c:603:18:603:19 | ip | 5.797603059E9 | +| test.c:603:18:603:24 | ... * ... | 5.797603059E9 | +| test.c:603:18:603:29 | ... + ... | 5.797603059E9 | +| test.c:603:23:603:24 | 14 | 1.0 | +| test.c:603:23:603:24 | (unsigned int)... | 1.0 | +| test.c:603:28:603:29 | 64 | 1.0 | +| test.c:603:28:603:29 | (unsigned int)... | 1.0 | +| test.c:604:13:609:26 | (...) | 1.558961605756818E30 | +| test.c:604:14:604:25 | (...) | 5.797603059E9 | +| test.c:604:14:604:30 | ... * ... | 5.797603059E9 | +| test.c:604:14:605:63 | ... > ... | 1.0 | +| test.c:604:14:609:25 | ... ? ... : ... | 1.558961605756818E30 | +| test.c:604:15:604:15 | 2 | 1.0 | +| test.c:604:15:604:15 | (unsigned int)... | 1.0 | +| test.c:604:15:604:20 | ... * ... | 5.797603059E9 | +| test.c:604:15:604:24 | ... + ... | 5.797603059E9 | +| test.c:604:19:604:20 | ip | 5.797603059E9 | +| test.c:604:24:604:24 | 1 | 1.0 | +| test.c:604:24:604:24 | (unsigned int)... | 1.0 | +| test.c:604:29:604:30 | 14 | 1.0 | +| test.c:604:29:604:30 | (unsigned int)... | 1.0 | +| test.c:605:13:605:63 | (...) | 3.361220122972616E19 | +| test.c:605:14:605:15 | 14 | 1.0 | +| test.c:605:14:605:15 | (unsigned int)... | 1.0 | +| test.c:605:14:605:26 | ... * ... | 5.797603059E9 | +| test.c:605:14:605:36 | ... > ... | 1.0 | +| test.c:605:14:605:62 | ... ? ... : ... | 3.361220122972616E19 | +| test.c:605:19:605:26 | (...) | 5.797603059E9 | | test.c:605:20:605:20 | 2 | 1.0 | | test.c:605:20:605:20 | (unsigned int)... | 1.0 | -| test.c:605:20:605:25 | ... * ... | 6.9571236715E10 | -| test.c:605:20:605:29 | ... + ... | 6.9571236715E10 | -| test.c:605:24:605:25 | ip | 6.9571236715E10 | -| test.c:605:29:605:29 | 1 | 1.0 | -| test.c:605:29:605:29 | (unsigned int)... | 1.0 | -| test.c:605:34:605:35 | 14 | 1.0 | -| test.c:605:34:605:35 | (unsigned int)... | 1.0 | -| test.c:606:19:606:20 | 14 | 1.0 | -| test.c:606:19:606:20 | (unsigned int)... | 1.0 | -| test.c:606:19:606:31 | ... * ... | 6.9571236715E10 | -| test.c:606:19:606:41 | ... > ... | 1.0 | -| test.c:606:19:608:27 | ... ? ... : ... | 4.840156978054564E21 | -| test.c:606:24:606:31 | (...) | 6.9571236715E10 | -| test.c:606:25:606:25 | 2 | 1.0 | -| test.c:606:25:606:25 | (unsigned int)... | 1.0 | -| test.c:606:25:606:30 | ... * ... | 6.9571236715E10 | -| test.c:606:29:606:30 | ip | 6.9571236715E10 | -| test.c:606:35:606:36 | 17 | 1.0 | -| test.c:606:35:606:36 | (unsigned int)... | 1.0 | -| test.c:606:35:606:41 | ... * ... | 6.9571236715E10 | -| test.c:606:40:606:41 | ip | 6.9571236715E10 | -| test.c:607:21:607:22 | 14 | 1.0 | -| test.c:607:21:607:22 | (unsigned int)... | 1.0 | -| test.c:607:21:607:33 | ... * ... | 6.9571236715E10 | -| test.c:607:26:607:33 | (...) | 6.9571236715E10 | -| test.c:607:27:607:27 | 2 | 1.0 | -| test.c:607:27:607:27 | (unsigned int)... | 1.0 | -| test.c:607:27:607:32 | ... * ... | 6.9571236715E10 | -| test.c:607:31:607:32 | ip | 6.9571236715E10 | -| test.c:608:21:608:22 | 14 | 1.0 | -| test.c:608:21:608:22 | (unsigned int)... | 1.0 | -| test.c:608:21:608:27 | ... * ... | 6.9571236715E10 | -| test.c:608:26:608:27 | ip | 6.9571236715E10 | -| test.c:609:15:609:15 | 2 | 1.0 | -| test.c:609:15:609:15 | (unsigned int)... | 1.0 | -| test.c:609:15:609:20 | ... * ... | 3.4785618357E10 | -| test.c:609:15:609:25 | ... * ... | 3.4785618357E10 | -| test.c:609:15:609:45 | ... + ... | 1.2100392444788552E21 | -| test.c:609:19:609:20 | ip | 3.4785618357E10 | -| test.c:609:24:609:25 | 14 | 1.0 | -| test.c:609:24:609:25 | (unsigned int)... | 1.0 | -| test.c:609:29:609:40 | (...) | 3.4785618357E10 | -| test.c:609:29:609:45 | ... * ... | 3.4785618357E10 | -| test.c:609:30:609:30 | 2 | 1.0 | -| test.c:609:30:609:30 | (unsigned int)... | 1.0 | -| test.c:609:30:609:35 | ... * ... | 3.4785618357E10 | -| test.c:609:30:609:39 | ... + ... | 3.4785618357E10 | -| test.c:609:34:609:35 | ip | 3.4785618357E10 | -| test.c:609:39:609:39 | 1 | 1.0 | -| test.c:609:39:609:39 | (unsigned int)... | 1.0 | -| test.c:609:44:609:45 | 17 | 1.0 | -| test.c:609:44:609:45 | (unsigned int)... | 1.0 | -| test.c:610:11:610:11 | 4 | 1.0 | +| test.c:605:20:605:25 | ... * ... | 5.797603059E9 | +| test.c:605:24:605:25 | ip | 5.797603059E9 | +| test.c:605:30:605:31 | 17 | 1.0 | +| test.c:605:30:605:31 | (unsigned int)... | 1.0 | +| test.c:605:30:605:36 | ... * ... | 5.797603059E9 | +| test.c:605:35:605:36 | ip | 5.797603059E9 | +| test.c:605:40:605:41 | 17 | 1.0 | +| test.c:605:40:605:41 | (unsigned int)... | 1.0 | +| test.c:605:40:605:52 | ... * ... | 5.797603059E9 | +| test.c:605:45:605:52 | (...) | 5.797603059E9 | +| test.c:605:46:605:46 | 2 | 1.0 | +| test.c:605:46:605:46 | (unsigned int)... | 1.0 | +| test.c:605:46:605:51 | ... * ... | 5.797603059E9 | +| test.c:605:50:605:51 | ip | 5.797603059E9 | +| test.c:605:56:605:57 | 17 | 1.0 | +| test.c:605:56:605:57 | (unsigned int)... | 1.0 | +| test.c:605:56:605:62 | ... * ... | 5.797603059E9 | +| test.c:605:61:605:62 | ip | 5.797603059E9 | +| test.c:606:17:606:28 | (...) | 1.1595206119E10 | +| test.c:606:17:606:33 | ... * ... | 1.1595206119E10 | +| test.c:606:18:606:18 | 2 | 1.0 | +| test.c:606:18:606:18 | (unsigned int)... | 1.0 | +| test.c:606:18:606:23 | ... * ... | 1.1595206119E10 | +| test.c:606:18:606:27 | ... + ... | 1.1595206119E10 | +| test.c:606:22:606:23 | ip | 1.1595206119E10 | +| test.c:606:27:606:27 | 1 | 1.0 | +| test.c:606:27:606:27 | (unsigned int)... | 1.0 | +| test.c:606:32:606:33 | 14 | 1.0 | +| test.c:606:32:606:33 | (unsigned int)... | 1.0 | +| test.c:607:17:607:18 | 14 | 1.0 | +| test.c:607:17:607:18 | (unsigned int)... | 1.0 | +| test.c:607:17:607:29 | ... * ... | 1.1595206119E10 | +| test.c:607:17:607:39 | ... > ... | 1.0 | +| test.c:607:17:609:25 | ... ? ... : ... | 1.3444880494209504E20 | +| test.c:607:22:607:29 | (...) | 1.1595206119E10 | +| test.c:607:23:607:23 | 2 | 1.0 | +| test.c:607:23:607:23 | (unsigned int)... | 1.0 | +| test.c:607:23:607:28 | ... * ... | 1.1595206119E10 | +| test.c:607:27:607:28 | ip | 1.1595206119E10 | +| test.c:607:33:607:34 | 17 | 1.0 | +| test.c:607:33:607:34 | (unsigned int)... | 1.0 | +| test.c:607:33:607:39 | ... * ... | 1.1595206119E10 | +| test.c:607:38:607:39 | ip | 1.1595206119E10 | +| test.c:608:19:608:20 | 14 | 1.0 | +| test.c:608:19:608:20 | (unsigned int)... | 1.0 | +| test.c:608:19:608:31 | ... * ... | 1.1595206119E10 | +| test.c:608:24:608:31 | (...) | 1.1595206119E10 | +| test.c:608:25:608:25 | 2 | 1.0 | +| test.c:608:25:608:25 | (unsigned int)... | 1.0 | +| test.c:608:25:608:30 | ... * ... | 1.1595206119E10 | +| test.c:608:29:608:30 | ip | 1.1595206119E10 | +| test.c:609:19:609:20 | 14 | 1.0 | +| test.c:609:19:609:20 | (unsigned int)... | 1.0 | +| test.c:609:19:609:25 | ... * ... | 1.1595206119E10 | +| test.c:609:24:609:25 | ip | 1.1595206119E10 | +| test.c:610:11:610:11 | 2 | 1.0 | | test.c:610:11:610:11 | (unsigned int)... | 1.0 | -| test.c:610:11:610:28 | ... * ... | 5.797603059E9 | -| test.c:610:11:611:32 | ... + ... | 3.361220122972616E19 | -| test.c:610:11:612:32 | ... + ... | 1.9487020066918396E29 | -| test.c:610:11:618:28 | ... + ... | 3.0379516094938436E59 | -| test.c:610:11:619:63 | ... > ... | 1.0 | -| test.c:610:11:631:27 | ... ? ... : ... | 4.390639451194891E87 | -| test.c:610:15:610:28 | (...) | 5.797603059E9 | -| test.c:610:16:610:17 | ip | 5.797603059E9 | -| test.c:610:16:610:22 | ... * ... | 5.797603059E9 | -| test.c:610:16:610:27 | ... + ... | 5.797603059E9 | -| test.c:610:21:610:22 | 14 | 1.0 | -| test.c:610:21:610:22 | (unsigned int)... | 1.0 | -| test.c:610:26:610:27 | 32 | 1.0 | -| test.c:610:26:610:27 | (unsigned int)... | 1.0 | -| test.c:611:15:611:32 | (...) | 5.797603059E9 | -| test.c:611:16:611:16 | 2 | 1.0 | -| test.c:611:16:611:16 | (unsigned int)... | 1.0 | -| test.c:611:16:611:21 | ... * ... | 5.797603059E9 | -| test.c:611:16:611:26 | ... * ... | 5.797603059E9 | -| test.c:611:16:611:31 | ... + ... | 5.797603059E9 | -| test.c:611:20:611:21 | ip | 5.797603059E9 | +| test.c:610:11:610:16 | ... * ... | 3.4785618357E10 | +| test.c:610:11:610:21 | ... * ... | 3.4785618357E10 | +| test.c:610:11:610:41 | ... + ... | 1.2100392444788552E21 | +| test.c:610:15:610:16 | ip | 3.4785618357E10 | +| test.c:610:20:610:21 | 14 | 1.0 | +| test.c:610:20:610:21 | (unsigned int)... | 1.0 | +| test.c:610:25:610:36 | (...) | 3.4785618357E10 | +| test.c:610:25:610:41 | ... * ... | 3.4785618357E10 | +| test.c:610:26:610:26 | 2 | 1.0 | +| test.c:610:26:610:26 | (unsigned int)... | 1.0 | +| test.c:610:26:610:31 | ... * ... | 3.4785618357E10 | +| test.c:610:26:610:35 | ... + ... | 3.4785618357E10 | +| test.c:610:30:610:31 | ip | 3.4785618357E10 | +| test.c:610:35:610:35 | 1 | 1.0 | +| test.c:610:35:610:35 | (unsigned int)... | 1.0 | +| test.c:610:40:610:41 | 17 | 1.0 | +| test.c:610:40:610:41 | (unsigned int)... | 1.0 | +| test.c:611:15:611:15 | 4 | 1.0 | +| test.c:611:15:611:15 | (unsigned int)... | 1.0 | +| test.c:611:15:611:32 | ... * ... | 3.4785618357E10 | +| test.c:611:15:612:32 | ... + ... | 1.2100392444788552E21 | +| test.c:611:15:613:32 | ... + ... | 4.209196335543408E31 | +| test.c:611:15:619:28 | ... + ... | 1.417386703353284E64 | +| test.c:611:19:611:32 | (...) | 3.4785618357E10 | +| test.c:611:20:611:21 | ip | 3.4785618357E10 | +| test.c:611:20:611:26 | ... * ... | 3.4785618357E10 | +| test.c:611:20:611:31 | ... + ... | 3.4785618357E10 | | test.c:611:25:611:26 | 14 | 1.0 | | test.c:611:25:611:26 | (unsigned int)... | 1.0 | | test.c:611:30:611:31 | 32 | 1.0 | | test.c:611:30:611:31 | (unsigned int)... | 1.0 | -| test.c:612:15:612:15 | 2 | 1.0 | -| test.c:612:15:612:15 | (unsigned int)... | 1.0 | -| test.c:612:15:612:32 | ... * ... | 5.797603059E9 | -| test.c:612:19:612:32 | (...) | 5.797603059E9 | -| test.c:612:20:612:21 | ip | 5.797603059E9 | -| test.c:612:20:612:26 | ... * ... | 5.797603059E9 | -| test.c:612:20:612:31 | ... + ... | 5.797603059E9 | +| test.c:612:15:612:32 | (...) | 3.4785618357E10 | +| test.c:612:16:612:16 | 2 | 1.0 | +| test.c:612:16:612:16 | (unsigned int)... | 1.0 | +| test.c:612:16:612:21 | ... * ... | 3.4785618357E10 | +| test.c:612:16:612:26 | ... * ... | 3.4785618357E10 | +| test.c:612:16:612:31 | ... + ... | 3.4785618357E10 | +| test.c:612:20:612:21 | ip | 3.4785618357E10 | | test.c:612:25:612:26 | 14 | 1.0 | | test.c:612:25:612:26 | (unsigned int)... | 1.0 | -| test.c:612:30:612:31 | 64 | 1.0 | +| test.c:612:30:612:31 | 32 | 1.0 | | test.c:612:30:612:31 | (unsigned int)... | 1.0 | -| test.c:613:15:618:28 | (...) | 1.558961605756818E30 | -| test.c:613:16:613:27 | (...) | 5.797603059E9 | -| test.c:613:16:613:32 | ... * ... | 5.797603059E9 | -| test.c:613:16:614:65 | ... > ... | 1.0 | -| test.c:613:16:618:27 | ... ? ... : ... | 1.558961605756818E30 | -| test.c:613:17:613:17 | 2 | 1.0 | -| test.c:613:17:613:17 | (unsigned int)... | 1.0 | -| test.c:613:17:613:22 | ... * ... | 5.797603059E9 | -| test.c:613:17:613:26 | ... + ... | 5.797603059E9 | -| test.c:613:21:613:22 | ip | 5.797603059E9 | -| test.c:613:26:613:26 | 1 | 1.0 | -| test.c:613:26:613:26 | (unsigned int)... | 1.0 | -| test.c:613:31:613:32 | 14 | 1.0 | -| test.c:613:31:613:32 | (unsigned int)... | 1.0 | -| test.c:614:15:614:65 | (...) | 3.361220122972616E19 | -| test.c:614:16:614:17 | 14 | 1.0 | -| test.c:614:16:614:17 | (unsigned int)... | 1.0 | -| test.c:614:16:614:28 | ... * ... | 5.797603059E9 | -| test.c:614:16:614:38 | ... > ... | 1.0 | -| test.c:614:16:614:64 | ... ? ... : ... | 3.361220122972616E19 | -| test.c:614:21:614:28 | (...) | 5.797603059E9 | -| test.c:614:22:614:22 | 2 | 1.0 | -| test.c:614:22:614:22 | (unsigned int)... | 1.0 | -| test.c:614:22:614:27 | ... * ... | 5.797603059E9 | -| test.c:614:26:614:27 | ip | 5.797603059E9 | -| test.c:614:32:614:33 | 17 | 1.0 | -| test.c:614:32:614:33 | (unsigned int)... | 1.0 | -| test.c:614:32:614:38 | ... * ... | 5.797603059E9 | -| test.c:614:37:614:38 | ip | 5.797603059E9 | -| test.c:614:42:614:43 | 17 | 1.0 | -| test.c:614:42:614:43 | (unsigned int)... | 1.0 | -| test.c:614:42:614:54 | ... * ... | 5.797603059E9 | -| test.c:614:47:614:54 | (...) | 5.797603059E9 | -| test.c:614:48:614:48 | 2 | 1.0 | -| test.c:614:48:614:48 | (unsigned int)... | 1.0 | -| test.c:614:48:614:53 | ... * ... | 5.797603059E9 | -| test.c:614:52:614:53 | ip | 5.797603059E9 | -| test.c:614:58:614:59 | 17 | 1.0 | -| test.c:614:58:614:59 | (unsigned int)... | 1.0 | -| test.c:614:58:614:64 | ... * ... | 5.797603059E9 | -| test.c:614:63:614:64 | ip | 5.797603059E9 | -| test.c:615:19:615:30 | (...) | 1.1595206119E10 | -| test.c:615:19:615:35 | ... * ... | 1.1595206119E10 | -| test.c:615:20:615:20 | 2 | 1.0 | -| test.c:615:20:615:20 | (unsigned int)... | 1.0 | -| test.c:615:20:615:25 | ... * ... | 1.1595206119E10 | -| test.c:615:20:615:29 | ... + ... | 1.1595206119E10 | -| test.c:615:24:615:25 | ip | 1.1595206119E10 | -| test.c:615:29:615:29 | 1 | 1.0 | -| test.c:615:29:615:29 | (unsigned int)... | 1.0 | -| test.c:615:34:615:35 | 14 | 1.0 | -| test.c:615:34:615:35 | (unsigned int)... | 1.0 | -| test.c:616:19:616:20 | 14 | 1.0 | -| test.c:616:19:616:20 | (unsigned int)... | 1.0 | -| test.c:616:19:616:31 | ... * ... | 1.1595206119E10 | -| test.c:616:19:616:41 | ... > ... | 1.0 | -| test.c:616:19:618:27 | ... ? ... : ... | 1.3444880494209504E20 | -| test.c:616:24:616:31 | (...) | 1.1595206119E10 | -| test.c:616:25:616:25 | 2 | 1.0 | -| test.c:616:25:616:25 | (unsigned int)... | 1.0 | -| test.c:616:25:616:30 | ... * ... | 1.1595206119E10 | -| test.c:616:29:616:30 | ip | 1.1595206119E10 | -| test.c:616:35:616:36 | 17 | 1.0 | -| test.c:616:35:616:36 | (unsigned int)... | 1.0 | -| test.c:616:35:616:41 | ... * ... | 1.1595206119E10 | -| test.c:616:40:616:41 | ip | 1.1595206119E10 | -| test.c:617:21:617:22 | 14 | 1.0 | -| test.c:617:21:617:22 | (unsigned int)... | 1.0 | -| test.c:617:21:617:33 | ... * ... | 1.1595206119E10 | -| test.c:617:26:617:33 | (...) | 1.1595206119E10 | -| test.c:617:27:617:27 | 2 | 1.0 | -| test.c:617:27:617:27 | (unsigned int)... | 1.0 | -| test.c:617:27:617:32 | ... * ... | 1.1595206119E10 | -| test.c:617:31:617:32 | ip | 1.1595206119E10 | +| test.c:613:15:613:15 | 2 | 1.0 | +| test.c:613:15:613:15 | (unsigned int)... | 1.0 | +| test.c:613:15:613:32 | ... * ... | 3.4785618357E10 | +| test.c:613:19:613:32 | (...) | 3.4785618357E10 | +| test.c:613:20:613:21 | ip | 3.4785618357E10 | +| test.c:613:20:613:26 | ... * ... | 3.4785618357E10 | +| test.c:613:20:613:31 | ... + ... | 3.4785618357E10 | +| test.c:613:25:613:26 | 14 | 1.0 | +| test.c:613:25:613:26 | (unsigned int)... | 1.0 | +| test.c:613:30:613:31 | 64 | 1.0 | +| test.c:613:30:613:31 | (unsigned int)... | 1.0 | +| test.c:614:15:619:28 | (...) | 3.367357068579931E32 | +| test.c:614:16:614:27 | (...) | 3.4785618357E10 | +| test.c:614:16:614:32 | ... * ... | 3.4785618357E10 | +| test.c:614:16:615:65 | ... > ... | 1.0 | +| test.c:614:16:619:27 | ... ? ... : ... | 3.367357068579931E32 | +| test.c:614:17:614:17 | 2 | 1.0 | +| test.c:614:17:614:17 | (unsigned int)... | 1.0 | +| test.c:614:17:614:22 | ... * ... | 3.4785618357E10 | +| test.c:614:17:614:26 | ... + ... | 3.4785618357E10 | +| test.c:614:21:614:22 | ip | 3.4785618357E10 | +| test.c:614:26:614:26 | 1 | 1.0 | +| test.c:614:26:614:26 | (unsigned int)... | 1.0 | +| test.c:614:31:614:32 | 14 | 1.0 | +| test.c:614:31:614:32 | (unsigned int)... | 1.0 | +| test.c:615:15:615:65 | (...) | 1.2100392444788552E21 | +| test.c:615:16:615:17 | 14 | 1.0 | +| test.c:615:16:615:17 | (unsigned int)... | 1.0 | +| test.c:615:16:615:28 | ... * ... | 3.4785618357E10 | +| test.c:615:16:615:38 | ... > ... | 1.0 | +| test.c:615:16:615:64 | ... ? ... : ... | 1.2100392444788552E21 | +| test.c:615:21:615:28 | (...) | 3.4785618357E10 | +| test.c:615:22:615:22 | 2 | 1.0 | +| test.c:615:22:615:22 | (unsigned int)... | 1.0 | +| test.c:615:22:615:27 | ... * ... | 3.4785618357E10 | +| test.c:615:26:615:27 | ip | 3.4785618357E10 | +| test.c:615:32:615:33 | 17 | 1.0 | +| test.c:615:32:615:33 | (unsigned int)... | 1.0 | +| test.c:615:32:615:38 | ... * ... | 3.4785618357E10 | +| test.c:615:37:615:38 | ip | 3.4785618357E10 | +| test.c:615:42:615:43 | 17 | 1.0 | +| test.c:615:42:615:43 | (unsigned int)... | 1.0 | +| test.c:615:42:615:54 | ... * ... | 3.4785618357E10 | +| test.c:615:47:615:54 | (...) | 3.4785618357E10 | +| test.c:615:48:615:48 | 2 | 1.0 | +| test.c:615:48:615:48 | (unsigned int)... | 1.0 | +| test.c:615:48:615:53 | ... * ... | 3.4785618357E10 | +| test.c:615:52:615:53 | ip | 3.4785618357E10 | +| test.c:615:58:615:59 | 17 | 1.0 | +| test.c:615:58:615:59 | (unsigned int)... | 1.0 | +| test.c:615:58:615:64 | ... * ... | 3.4785618357E10 | +| test.c:615:63:615:64 | ip | 3.4785618357E10 | +| test.c:616:19:616:30 | (...) | 6.9571236715E10 | +| test.c:616:19:616:35 | ... * ... | 6.9571236715E10 | +| test.c:616:20:616:20 | 2 | 1.0 | +| test.c:616:20:616:20 | (unsigned int)... | 1.0 | +| test.c:616:20:616:25 | ... * ... | 6.9571236715E10 | +| test.c:616:20:616:29 | ... + ... | 6.9571236715E10 | +| test.c:616:24:616:25 | ip | 6.9571236715E10 | +| test.c:616:29:616:29 | 1 | 1.0 | +| test.c:616:29:616:29 | (unsigned int)... | 1.0 | +| test.c:616:34:616:35 | 14 | 1.0 | +| test.c:616:34:616:35 | (unsigned int)... | 1.0 | +| test.c:617:19:617:20 | 14 | 1.0 | +| test.c:617:19:617:20 | (unsigned int)... | 1.0 | +| test.c:617:19:617:31 | ... * ... | 6.9571236715E10 | +| test.c:617:19:617:41 | ... > ... | 1.0 | +| test.c:617:19:619:27 | ... ? ... : ... | 4.840156978054564E21 | +| test.c:617:24:617:31 | (...) | 6.9571236715E10 | +| test.c:617:25:617:25 | 2 | 1.0 | +| test.c:617:25:617:25 | (unsigned int)... | 1.0 | +| test.c:617:25:617:30 | ... * ... | 6.9571236715E10 | +| test.c:617:29:617:30 | ip | 6.9571236715E10 | +| test.c:617:35:617:36 | 17 | 1.0 | +| test.c:617:35:617:36 | (unsigned int)... | 1.0 | +| test.c:617:35:617:41 | ... * ... | 6.9571236715E10 | +| test.c:617:40:617:41 | ip | 6.9571236715E10 | | test.c:618:21:618:22 | 14 | 1.0 | | test.c:618:21:618:22 | (unsigned int)... | 1.0 | -| test.c:618:21:618:27 | ... * ... | 1.1595206119E10 | -| test.c:618:26:618:27 | ip | 1.1595206119E10 | -| test.c:619:13:619:63 | (...) | 1.2100392444788552E21 | -| test.c:619:14:619:15 | 14 | 1.0 | -| test.c:619:14:619:15 | (unsigned int)... | 1.0 | -| test.c:619:14:619:20 | ... * ... | 3.4785618357E10 | -| test.c:619:14:619:36 | ... > ... | 1.0 | -| test.c:619:14:619:62 | ... ? ... : ... | 1.2100392444788552E21 | -| test.c:619:19:619:20 | ip | 3.4785618357E10 | -| test.c:619:24:619:31 | (...) | 3.4785618357E10 | -| test.c:619:24:619:36 | ... * ... | 3.4785618357E10 | -| test.c:619:25:619:26 | ip | 3.4785618357E10 | -| test.c:619:25:619:30 | ... + ... | 3.4785618357E10 | -| test.c:619:30:619:30 | 1 | 1.0 | -| test.c:619:30:619:30 | (unsigned int)... | 1.0 | -| test.c:619:35:619:36 | 17 | 1.0 | -| test.c:619:35:619:36 | (unsigned int)... | 1.0 | -| test.c:619:40:619:41 | 17 | 1.0 | -| test.c:619:40:619:41 | (unsigned int)... | 1.0 | -| test.c:619:40:619:46 | ... * ... | 3.4785618357E10 | -| test.c:619:45:619:46 | ip | 3.4785618357E10 | -| test.c:619:50:619:57 | (...) | 3.4785618357E10 | -| test.c:619:50:619:62 | ... * ... | 3.4785618357E10 | -| test.c:619:51:619:52 | ip | 3.4785618357E10 | -| test.c:619:51:619:56 | ... + ... | 3.4785618357E10 | -| test.c:619:56:619:56 | 1 | 1.0 | -| test.c:619:56:619:56 | (unsigned int)... | 1.0 | -| test.c:619:61:619:62 | 17 | 1.0 | -| test.c:619:61:619:62 | (unsigned int)... | 1.0 | -| test.c:620:13:620:13 | 4 | 1.0 | -| test.c:620:13:620:13 | (unsigned int)... | 1.0 | -| test.c:620:13:620:30 | ... * ... | 6.9571236714E10 | -| test.c:620:13:621:30 | ... + ... | 4.840156977915421E21 | -| test.c:620:13:622:30 | ... + ... | 3.3673570684347266E32 | -| test.c:620:13:628:26 | ... + ... | 9.071274901265435E65 | -| test.c:620:17:620:30 | (...) | 6.9571236714E10 | -| test.c:620:18:620:19 | ip | 6.9571236714E10 | -| test.c:620:18:620:24 | ... * ... | 6.9571236714E10 | -| test.c:620:18:620:29 | ... + ... | 6.9571236714E10 | -| test.c:620:23:620:24 | 14 | 1.0 | -| test.c:620:23:620:24 | (unsigned int)... | 1.0 | -| test.c:620:28:620:29 | 32 | 1.0 | -| test.c:620:28:620:29 | (unsigned int)... | 1.0 | -| test.c:621:13:621:30 | (...) | 6.9571236714E10 | -| test.c:621:14:621:14 | 2 | 1.0 | -| test.c:621:14:621:14 | (unsigned int)... | 1.0 | -| test.c:621:14:621:19 | ... * ... | 6.9571236714E10 | -| test.c:621:14:621:24 | ... * ... | 6.9571236714E10 | -| test.c:621:14:621:29 | ... + ... | 6.9571236714E10 | -| test.c:621:18:621:19 | ip | 6.9571236714E10 | -| test.c:621:23:621:24 | 14 | 1.0 | -| test.c:621:23:621:24 | (unsigned int)... | 1.0 | -| test.c:621:28:621:29 | 32 | 1.0 | -| test.c:621:28:621:29 | (unsigned int)... | 1.0 | -| test.c:622:13:622:13 | 2 | 1.0 | -| test.c:622:13:622:13 | (unsigned int)... | 1.0 | -| test.c:622:13:622:30 | ... * ... | 6.9571236714E10 | -| test.c:622:17:622:30 | (...) | 6.9571236714E10 | -| test.c:622:18:622:19 | ip | 6.9571236714E10 | -| test.c:622:18:622:24 | ... * ... | 6.9571236714E10 | -| test.c:622:18:622:29 | ... + ... | 6.9571236714E10 | -| test.c:622:23:622:24 | 14 | 1.0 | -| test.c:622:23:622:24 | (unsigned int)... | 1.0 | -| test.c:622:28:622:29 | 64 | 1.0 | -| test.c:622:28:622:29 | (unsigned int)... | 1.0 | -| test.c:623:13:628:26 | (...) | 2.693885654805863E33 | -| test.c:623:14:623:25 | (...) | 6.9571236714E10 | -| test.c:623:14:623:30 | ... * ... | 6.9571236714E10 | -| test.c:623:14:624:63 | ... > ... | 1.0 | -| test.c:623:14:628:25 | ... ? ... : ... | 2.693885654805863E33 | +| test.c:618:21:618:33 | ... * ... | 6.9571236715E10 | +| test.c:618:26:618:33 | (...) | 6.9571236715E10 | +| test.c:618:27:618:27 | 2 | 1.0 | +| test.c:618:27:618:27 | (unsigned int)... | 1.0 | +| test.c:618:27:618:32 | ... * ... | 6.9571236715E10 | +| test.c:618:31:618:32 | ip | 6.9571236715E10 | +| test.c:619:21:619:22 | 14 | 1.0 | +| test.c:619:21:619:22 | (unsigned int)... | 1.0 | +| test.c:619:21:619:27 | ... * ... | 6.9571236715E10 | +| test.c:619:26:619:27 | ip | 6.9571236715E10 | +| test.c:620:15:620:15 | 2 | 1.0 | +| test.c:620:15:620:15 | (unsigned int)... | 1.0 | +| test.c:620:15:620:20 | ... * ... | 3.4785618357E10 | +| test.c:620:15:620:25 | ... * ... | 3.4785618357E10 | +| test.c:620:15:620:45 | ... + ... | 1.2100392444788552E21 | +| test.c:620:19:620:20 | ip | 3.4785618357E10 | +| test.c:620:24:620:25 | 14 | 1.0 | +| test.c:620:24:620:25 | (unsigned int)... | 1.0 | +| test.c:620:29:620:40 | (...) | 3.4785618357E10 | +| test.c:620:29:620:45 | ... * ... | 3.4785618357E10 | +| test.c:620:30:620:30 | 2 | 1.0 | +| test.c:620:30:620:30 | (unsigned int)... | 1.0 | +| test.c:620:30:620:35 | ... * ... | 3.4785618357E10 | +| test.c:620:30:620:39 | ... + ... | 3.4785618357E10 | +| test.c:620:34:620:35 | ip | 3.4785618357E10 | +| test.c:620:39:620:39 | 1 | 1.0 | +| test.c:620:39:620:39 | (unsigned int)... | 1.0 | +| test.c:620:44:620:45 | 17 | 1.0 | +| test.c:620:44:620:45 | (unsigned int)... | 1.0 | +| test.c:621:11:621:11 | 4 | 1.0 | +| test.c:621:11:621:11 | (unsigned int)... | 1.0 | +| test.c:621:11:621:28 | ... * ... | 5.797603059E9 | +| test.c:621:11:622:32 | ... + ... | 3.361220122972616E19 | +| test.c:621:11:623:32 | ... + ... | 1.9487020066918396E29 | +| test.c:621:11:629:28 | ... + ... | 3.0379516094938436E59 | +| test.c:621:11:630:63 | ... > ... | 1.0 | +| test.c:621:11:642:27 | ... ? ... : ... | 4.390639451194891E87 | +| test.c:621:15:621:28 | (...) | 5.797603059E9 | +| test.c:621:16:621:17 | ip | 5.797603059E9 | +| test.c:621:16:621:22 | ... * ... | 5.797603059E9 | +| test.c:621:16:621:27 | ... + ... | 5.797603059E9 | +| test.c:621:21:621:22 | 14 | 1.0 | +| test.c:621:21:621:22 | (unsigned int)... | 1.0 | +| test.c:621:26:621:27 | 32 | 1.0 | +| test.c:621:26:621:27 | (unsigned int)... | 1.0 | +| test.c:622:15:622:32 | (...) | 5.797603059E9 | +| test.c:622:16:622:16 | 2 | 1.0 | +| test.c:622:16:622:16 | (unsigned int)... | 1.0 | +| test.c:622:16:622:21 | ... * ... | 5.797603059E9 | +| test.c:622:16:622:26 | ... * ... | 5.797603059E9 | +| test.c:622:16:622:31 | ... + ... | 5.797603059E9 | +| test.c:622:20:622:21 | ip | 5.797603059E9 | +| test.c:622:25:622:26 | 14 | 1.0 | +| test.c:622:25:622:26 | (unsigned int)... | 1.0 | +| test.c:622:30:622:31 | 32 | 1.0 | +| test.c:622:30:622:31 | (unsigned int)... | 1.0 | | test.c:623:15:623:15 | 2 | 1.0 | | test.c:623:15:623:15 | (unsigned int)... | 1.0 | -| test.c:623:15:623:20 | ... * ... | 6.9571236714E10 | -| test.c:623:15:623:24 | ... + ... | 6.9571236714E10 | -| test.c:623:19:623:20 | ip | 6.9571236714E10 | -| test.c:623:24:623:24 | 1 | 1.0 | -| test.c:623:24:623:24 | (unsigned int)... | 1.0 | -| test.c:623:29:623:30 | 14 | 1.0 | -| test.c:623:29:623:30 | (unsigned int)... | 1.0 | -| test.c:624:13:624:63 | (...) | 4.840156977915421E21 | -| test.c:624:14:624:15 | 14 | 1.0 | -| test.c:624:14:624:15 | (unsigned int)... | 1.0 | -| test.c:624:14:624:26 | ... * ... | 6.9571236714E10 | -| test.c:624:14:624:36 | ... > ... | 1.0 | -| test.c:624:14:624:62 | ... ? ... : ... | 4.840156977915421E21 | -| test.c:624:19:624:26 | (...) | 6.9571236714E10 | -| test.c:624:20:624:20 | 2 | 1.0 | -| test.c:624:20:624:20 | (unsigned int)... | 1.0 | -| test.c:624:20:624:25 | ... * ... | 6.9571236714E10 | -| test.c:624:24:624:25 | ip | 6.9571236714E10 | -| test.c:624:30:624:31 | 17 | 1.0 | -| test.c:624:30:624:31 | (unsigned int)... | 1.0 | -| test.c:624:30:624:36 | ... * ... | 6.9571236714E10 | -| test.c:624:35:624:36 | ip | 6.9571236714E10 | -| test.c:624:40:624:41 | 17 | 1.0 | -| test.c:624:40:624:41 | (unsigned int)... | 1.0 | -| test.c:624:40:624:52 | ... * ... | 6.9571236714E10 | -| test.c:624:45:624:52 | (...) | 6.9571236714E10 | -| test.c:624:46:624:46 | 2 | 1.0 | -| test.c:624:46:624:46 | (unsigned int)... | 1.0 | -| test.c:624:46:624:51 | ... * ... | 6.9571236714E10 | -| test.c:624:50:624:51 | ip | 6.9571236714E10 | -| test.c:624:56:624:57 | 17 | 1.0 | -| test.c:624:56:624:57 | (unsigned int)... | 1.0 | -| test.c:624:56:624:62 | ... * ... | 6.9571236714E10 | -| test.c:624:61:624:62 | ip | 6.9571236714E10 | -| test.c:625:17:625:28 | (...) | 1.39142473429E11 | -| test.c:625:17:625:33 | ... * ... | 1.39142473429E11 | -| test.c:625:18:625:18 | 2 | 1.0 | -| test.c:625:18:625:18 | (unsigned int)... | 1.0 | -| test.c:625:18:625:23 | ... * ... | 1.39142473429E11 | -| test.c:625:18:625:27 | ... + ... | 1.39142473429E11 | -| test.c:625:22:625:23 | ip | 1.39142473429E11 | -| test.c:625:27:625:27 | 1 | 1.0 | -| test.c:625:27:625:27 | (unsigned int)... | 1.0 | -| test.c:625:32:625:33 | 14 | 1.0 | +| test.c:623:15:623:32 | ... * ... | 5.797603059E9 | +| test.c:623:19:623:32 | (...) | 5.797603059E9 | +| test.c:623:20:623:21 | ip | 5.797603059E9 | +| test.c:623:20:623:26 | ... * ... | 5.797603059E9 | +| test.c:623:20:623:31 | ... + ... | 5.797603059E9 | +| test.c:623:25:623:26 | 14 | 1.0 | +| test.c:623:25:623:26 | (unsigned int)... | 1.0 | +| test.c:623:30:623:31 | 64 | 1.0 | +| test.c:623:30:623:31 | (unsigned int)... | 1.0 | +| test.c:624:15:629:28 | (...) | 1.558961605756818E30 | +| test.c:624:16:624:27 | (...) | 5.797603059E9 | +| test.c:624:16:624:32 | ... * ... | 5.797603059E9 | +| test.c:624:16:625:65 | ... > ... | 1.0 | +| test.c:624:16:629:27 | ... ? ... : ... | 1.558961605756818E30 | +| test.c:624:17:624:17 | 2 | 1.0 | +| test.c:624:17:624:17 | (unsigned int)... | 1.0 | +| test.c:624:17:624:22 | ... * ... | 5.797603059E9 | +| test.c:624:17:624:26 | ... + ... | 5.797603059E9 | +| test.c:624:21:624:22 | ip | 5.797603059E9 | +| test.c:624:26:624:26 | 1 | 1.0 | +| test.c:624:26:624:26 | (unsigned int)... | 1.0 | +| test.c:624:31:624:32 | 14 | 1.0 | +| test.c:624:31:624:32 | (unsigned int)... | 1.0 | +| test.c:625:15:625:65 | (...) | 3.361220122972616E19 | +| test.c:625:16:625:17 | 14 | 1.0 | +| test.c:625:16:625:17 | (unsigned int)... | 1.0 | +| test.c:625:16:625:28 | ... * ... | 5.797603059E9 | +| test.c:625:16:625:38 | ... > ... | 1.0 | +| test.c:625:16:625:64 | ... ? ... : ... | 3.361220122972616E19 | +| test.c:625:21:625:28 | (...) | 5.797603059E9 | +| test.c:625:22:625:22 | 2 | 1.0 | +| test.c:625:22:625:22 | (unsigned int)... | 1.0 | +| test.c:625:22:625:27 | ... * ... | 5.797603059E9 | +| test.c:625:26:625:27 | ip | 5.797603059E9 | +| test.c:625:32:625:33 | 17 | 1.0 | | test.c:625:32:625:33 | (unsigned int)... | 1.0 | -| test.c:626:17:626:18 | 14 | 1.0 | -| test.c:626:17:626:18 | (unsigned int)... | 1.0 | -| test.c:626:17:626:29 | ... * ... | 1.39142473429E11 | -| test.c:626:17:626:39 | ... > ... | 1.0 | -| test.c:626:17:628:25 | ... ? ... : ... | 1.936062791193997E22 | -| test.c:626:22:626:29 | (...) | 1.39142473429E11 | -| test.c:626:23:626:23 | 2 | 1.0 | -| test.c:626:23:626:23 | (unsigned int)... | 1.0 | -| test.c:626:23:626:28 | ... * ... | 1.39142473429E11 | -| test.c:626:27:626:28 | ip | 1.39142473429E11 | -| test.c:626:33:626:34 | 17 | 1.0 | -| test.c:626:33:626:34 | (unsigned int)... | 1.0 | -| test.c:626:33:626:39 | ... * ... | 1.39142473429E11 | -| test.c:626:38:626:39 | ip | 1.39142473429E11 | +| test.c:625:32:625:38 | ... * ... | 5.797603059E9 | +| test.c:625:37:625:38 | ip | 5.797603059E9 | +| test.c:625:42:625:43 | 17 | 1.0 | +| test.c:625:42:625:43 | (unsigned int)... | 1.0 | +| test.c:625:42:625:54 | ... * ... | 5.797603059E9 | +| test.c:625:47:625:54 | (...) | 5.797603059E9 | +| test.c:625:48:625:48 | 2 | 1.0 | +| test.c:625:48:625:48 | (unsigned int)... | 1.0 | +| test.c:625:48:625:53 | ... * ... | 5.797603059E9 | +| test.c:625:52:625:53 | ip | 5.797603059E9 | +| test.c:625:58:625:59 | 17 | 1.0 | +| test.c:625:58:625:59 | (unsigned int)... | 1.0 | +| test.c:625:58:625:64 | ... * ... | 5.797603059E9 | +| test.c:625:63:625:64 | ip | 5.797603059E9 | +| test.c:626:19:626:30 | (...) | 1.1595206119E10 | +| test.c:626:19:626:35 | ... * ... | 1.1595206119E10 | +| test.c:626:20:626:20 | 2 | 1.0 | +| test.c:626:20:626:20 | (unsigned int)... | 1.0 | +| test.c:626:20:626:25 | ... * ... | 1.1595206119E10 | +| test.c:626:20:626:29 | ... + ... | 1.1595206119E10 | +| test.c:626:24:626:25 | ip | 1.1595206119E10 | +| test.c:626:29:626:29 | 1 | 1.0 | +| test.c:626:29:626:29 | (unsigned int)... | 1.0 | +| test.c:626:34:626:35 | 14 | 1.0 | +| test.c:626:34:626:35 | (unsigned int)... | 1.0 | | test.c:627:19:627:20 | 14 | 1.0 | | test.c:627:19:627:20 | (unsigned int)... | 1.0 | -| test.c:627:19:627:31 | ... * ... | 1.39142473429E11 | -| test.c:627:24:627:31 | (...) | 1.39142473429E11 | +| test.c:627:19:627:31 | ... * ... | 1.1595206119E10 | +| test.c:627:19:627:41 | ... > ... | 1.0 | +| test.c:627:19:629:27 | ... ? ... : ... | 1.3444880494209504E20 | +| test.c:627:24:627:31 | (...) | 1.1595206119E10 | | test.c:627:25:627:25 | 2 | 1.0 | | test.c:627:25:627:25 | (unsigned int)... | 1.0 | -| test.c:627:25:627:30 | ... * ... | 1.39142473429E11 | -| test.c:627:29:627:30 | ip | 1.39142473429E11 | -| test.c:628:19:628:20 | 14 | 1.0 | -| test.c:628:19:628:20 | (unsigned int)... | 1.0 | -| test.c:628:19:628:25 | ... * ... | 1.39142473429E11 | -| test.c:628:24:628:25 | ip | 1.39142473429E11 | -| test.c:629:13:629:14 | 14 | 1.0 | -| test.c:629:13:629:14 | (unsigned int)... | 1.0 | -| test.c:629:13:629:19 | ... * ... | 6.9571236714E10 | -| test.c:629:13:629:35 | ... > ... | 1.0 | -| test.c:629:13:631:27 | ... ? ... : ... | 4.840156977915421E21 | -| test.c:629:18:629:19 | ip | 6.9571236714E10 | -| test.c:629:23:629:30 | (...) | 6.9571236714E10 | -| test.c:629:23:629:35 | ... * ... | 6.9571236714E10 | -| test.c:629:24:629:25 | ip | 6.9571236714E10 | -| test.c:629:24:629:29 | ... + ... | 6.9571236714E10 | -| test.c:629:29:629:29 | 1 | 1.0 | -| test.c:629:29:629:29 | (unsigned int)... | 1.0 | -| test.c:629:34:629:35 | 17 | 1.0 | -| test.c:629:34:629:35 | (unsigned int)... | 1.0 | -| test.c:630:15:630:16 | 14 | 1.0 | -| test.c:630:15:630:16 | (unsigned int)... | 1.0 | -| test.c:630:15:630:21 | ... * ... | 6.9571236714E10 | -| test.c:630:20:630:21 | ip | 6.9571236714E10 | -| test.c:631:15:631:22 | (...) | 6.9571236714E10 | -| test.c:631:15:631:27 | ... * ... | 6.9571236714E10 | -| test.c:631:16:631:17 | ip | 6.9571236714E10 | -| test.c:631:16:631:21 | ... + ... | 6.9571236714E10 | -| test.c:631:21:631:21 | 1 | 1.0 | -| test.c:631:21:631:21 | (unsigned int)... | 1.0 | -| test.c:631:26:631:27 | 14 | 1.0 | -| test.c:631:26:631:27 | (unsigned int)... | 1.0 | -| test.c:632:10:632:23 | special_number | 1.297918419127476E201 | -| test.c:639:10:639:11 | 0 | 1.0 | -| test.c:640:7:640:8 | c1 | 1.0 | -| test.c:640:13:640:13 | x | 1.0 | -| test.c:640:13:640:23 | ... += ... | 1.0 | -| test.c:640:18:640:23 | 748596 | 1.0 | -| test.c:641:7:641:8 | c2 | 1.0 | -| test.c:641:13:641:13 | x | 2.0 | -| test.c:641:13:641:25 | ... += ... | 2.0 | -| test.c:641:18:641:25 | 84652395 | 1.0 | -| test.c:642:7:642:8 | c3 | 1.0 | -| test.c:642:13:642:13 | x | 4.0 | -| test.c:642:13:642:24 | ... += ... | 4.0 | -| test.c:642:18:642:24 | 3675895 | 1.0 | -| test.c:643:7:643:8 | c4 | 1.0 | -| test.c:643:13:643:13 | x | 8.0 | -| test.c:643:13:643:22 | ... += ... | 8.0 | -| test.c:643:18:643:22 | 98634 | 1.0 | -| test.c:644:7:644:8 | c5 | 1.0 | -| test.c:644:13:644:13 | x | 16.0 | -| test.c:644:13:644:24 | ... += ... | 16.0 | -| test.c:644:18:644:24 | 7834985 | 1.0 | -| test.c:645:7:645:8 | c1 | 2.0 | -| test.c:645:7:645:14 | ... && ... | 1.0 | -| test.c:645:13:645:14 | c2 | 2.0 | -| test.c:645:19:645:19 | x | 32.0 | -| test.c:645:19:645:32 | ... += ... | 32.0 | -| test.c:645:24:645:32 | 938457398 | 1.0 | -| test.c:646:7:646:8 | c1 | 3.0 | -| test.c:646:7:646:14 | ... && ... | 1.0 | -| test.c:646:13:646:14 | c3 | 2.0 | -| test.c:646:19:646:19 | x | 64.0 | -| test.c:646:19:646:31 | ... += ... | 64.0 | -| test.c:646:24:646:31 | 73895648 | 1.0 | -| test.c:647:7:647:8 | c1 | 4.0 | -| test.c:647:7:647:14 | ... && ... | 1.0 | -| test.c:647:13:647:14 | c4 | 2.0 | -| test.c:647:19:647:19 | x | 128.0 | -| test.c:647:19:647:31 | ... += ... | 128.0 | -| test.c:647:24:647:31 | 12345432 | 1.0 | -| test.c:648:7:648:8 | c1 | 5.0 | -| test.c:648:7:648:14 | ... && ... | 1.0 | -| test.c:648:13:648:14 | c5 | 2.0 | -| test.c:648:19:648:19 | x | 256.0 | -| test.c:648:19:648:28 | ... += ... | 256.0 | -| test.c:648:24:648:28 | 38847 | 1.0 | -| test.c:649:7:649:8 | c2 | 5.0 | -| test.c:649:7:649:14 | ... && ... | 1.0 | -| test.c:649:13:649:14 | c3 | 5.0 | -| test.c:649:19:649:19 | x | 512.0 | -| test.c:649:19:649:26 | ... += ... | 512.0 | -| test.c:649:24:649:26 | 234 | 1.0 | -| test.c:651:11:651:11 | x | 1024.0 | -| test.c:651:11:651:15 | ... + ... | 1048576.0 | -| test.c:651:11:651:19 | ... + ... | 1.073741824E9 | -| test.c:651:11:651:23 | ... + ... | 1.099511627776E12 | -| test.c:651:11:651:27 | ... + ... | 1.125899906842624E15 | -| test.c:651:11:651:31 | ... + ... | 1.152921504606847E18 | -| test.c:651:11:651:35 | ... + ... | 1.1805916207174113E21 | -| test.c:651:11:651:39 | ... + ... | 1.2089258196146292E24 | -| test.c:651:11:651:43 | ... + ... | 1.2379400392853803E27 | -| test.c:651:11:651:47 | ... + ... | 1.2676506002282294E30 | -| test.c:651:11:651:51 | ... + ... | 1.298074214633707E33 | -| test.c:651:11:651:55 | ... + ... | 1.329227995784916E36 | -| test.c:651:15:651:15 | x | 1024.0 | -| test.c:651:19:651:19 | x | 1024.0 | -| test.c:651:23:651:23 | x | 1024.0 | -| test.c:651:27:651:27 | x | 1024.0 | -| test.c:651:31:651:31 | x | 1024.0 | -| test.c:651:35:651:35 | x | 1024.0 | -| test.c:651:39:651:39 | x | 1024.0 | -| test.c:651:43:651:43 | x | 1024.0 | -| test.c:651:47:651:47 | x | 1024.0 | -| test.c:651:51:651:51 | x | 1024.0 | -| test.c:651:55:651:55 | x | 1024.0 | -| test.c:652:10:652:10 | y | 1.329227995784916E36 | -| test.c:657:20:657:20 | x | 1.0 | -| test.c:657:20:657:26 | ... < ... | 1.0 | -| test.c:657:20:657:36 | ... ? ... : ... | 1.0 | -| test.c:657:24:657:26 | 100 | 1.0 | -| test.c:657:24:657:26 | (unsigned int)... | 1.0 | -| test.c:657:30:657:30 | x | 1.0 | -| test.c:657:34:657:36 | 100 | 1.0 | -| test.c:657:34:657:36 | (unsigned int)... | 1.0 | -| test.c:660:3:660:4 | y1 | 1.0 | -| test.c:660:9:660:11 | ++ ... | 1.0 | -| test.c:660:11:660:11 | y | 1.0 | -| test.c:661:3:661:4 | y2 | 1.0 | -| test.c:661:19:661:19 | 3 | 1.0 | -| test.c:661:19:661:19 | (unsigned int)... | 1.0 | -| test.c:670:3:670:3 | i | 1.0 | -| test.c:670:3:670:8 | ... = ... | 1.0 | -| test.c:670:7:670:8 | 10 | 1.0 | -| test.c:671:7:671:7 | i | 1.0 | -| test.c:673:3:673:3 | i | 1.0 | -| test.c:673:3:673:8 | ... = ... | 1.0 | -| test.c:673:7:673:8 | 10 | 1.0 | -| test.c:674:3:674:3 | i | 1.0 | -| test.c:674:3:674:9 | ... += ... | 1.0 | -| test.c:674:8:674:9 | 10 | 1.0 | -| test.c:675:7:675:7 | i | 1.0 | -| test.c:677:3:677:3 | i | 1.0 | -| test.c:677:3:677:8 | ... = ... | 1.0 | -| test.c:677:7:677:8 | 40 | 1.0 | -| test.c:678:3:678:3 | i | 1.0 | -| test.c:678:3:678:9 | ... -= ... | 1.0 | -| test.c:678:8:678:9 | 10 | 1.0 | -| test.c:679:7:679:7 | i | 1.0 | +| test.c:627:25:627:30 | ... * ... | 1.1595206119E10 | +| test.c:627:29:627:30 | ip | 1.1595206119E10 | +| test.c:627:35:627:36 | 17 | 1.0 | +| test.c:627:35:627:36 | (unsigned int)... | 1.0 | +| test.c:627:35:627:41 | ... * ... | 1.1595206119E10 | +| test.c:627:40:627:41 | ip | 1.1595206119E10 | +| test.c:628:21:628:22 | 14 | 1.0 | +| test.c:628:21:628:22 | (unsigned int)... | 1.0 | +| test.c:628:21:628:33 | ... * ... | 1.1595206119E10 | +| test.c:628:26:628:33 | (...) | 1.1595206119E10 | +| test.c:628:27:628:27 | 2 | 1.0 | +| test.c:628:27:628:27 | (unsigned int)... | 1.0 | +| test.c:628:27:628:32 | ... * ... | 1.1595206119E10 | +| test.c:628:31:628:32 | ip | 1.1595206119E10 | +| test.c:629:21:629:22 | 14 | 1.0 | +| test.c:629:21:629:22 | (unsigned int)... | 1.0 | +| test.c:629:21:629:27 | ... * ... | 1.1595206119E10 | +| test.c:629:26:629:27 | ip | 1.1595206119E10 | +| test.c:630:13:630:63 | (...) | 1.2100392444788552E21 | +| test.c:630:14:630:15 | 14 | 1.0 | +| test.c:630:14:630:15 | (unsigned int)... | 1.0 | +| test.c:630:14:630:20 | ... * ... | 3.4785618357E10 | +| test.c:630:14:630:36 | ... > ... | 1.0 | +| test.c:630:14:630:62 | ... ? ... : ... | 1.2100392444788552E21 | +| test.c:630:19:630:20 | ip | 3.4785618357E10 | +| test.c:630:24:630:31 | (...) | 3.4785618357E10 | +| test.c:630:24:630:36 | ... * ... | 3.4785618357E10 | +| test.c:630:25:630:26 | ip | 3.4785618357E10 | +| test.c:630:25:630:30 | ... + ... | 3.4785618357E10 | +| test.c:630:30:630:30 | 1 | 1.0 | +| test.c:630:30:630:30 | (unsigned int)... | 1.0 | +| test.c:630:35:630:36 | 17 | 1.0 | +| test.c:630:35:630:36 | (unsigned int)... | 1.0 | +| test.c:630:40:630:41 | 17 | 1.0 | +| test.c:630:40:630:41 | (unsigned int)... | 1.0 | +| test.c:630:40:630:46 | ... * ... | 3.4785618357E10 | +| test.c:630:45:630:46 | ip | 3.4785618357E10 | +| test.c:630:50:630:57 | (...) | 3.4785618357E10 | +| test.c:630:50:630:62 | ... * ... | 3.4785618357E10 | +| test.c:630:51:630:52 | ip | 3.4785618357E10 | +| test.c:630:51:630:56 | ... + ... | 3.4785618357E10 | +| test.c:630:56:630:56 | 1 | 1.0 | +| test.c:630:56:630:56 | (unsigned int)... | 1.0 | +| test.c:630:61:630:62 | 17 | 1.0 | +| test.c:630:61:630:62 | (unsigned int)... | 1.0 | +| test.c:631:13:631:13 | 4 | 1.0 | +| test.c:631:13:631:13 | (unsigned int)... | 1.0 | +| test.c:631:13:631:30 | ... * ... | 6.9571236714E10 | +| test.c:631:13:632:30 | ... + ... | 4.840156977915421E21 | +| test.c:631:13:633:30 | ... + ... | 3.3673570684347266E32 | +| test.c:631:13:639:26 | ... + ... | 9.071274901265435E65 | +| test.c:631:17:631:30 | (...) | 6.9571236714E10 | +| test.c:631:18:631:19 | ip | 6.9571236714E10 | +| test.c:631:18:631:24 | ... * ... | 6.9571236714E10 | +| test.c:631:18:631:29 | ... + ... | 6.9571236714E10 | +| test.c:631:23:631:24 | 14 | 1.0 | +| test.c:631:23:631:24 | (unsigned int)... | 1.0 | +| test.c:631:28:631:29 | 32 | 1.0 | +| test.c:631:28:631:29 | (unsigned int)... | 1.0 | +| test.c:632:13:632:30 | (...) | 6.9571236714E10 | +| test.c:632:14:632:14 | 2 | 1.0 | +| test.c:632:14:632:14 | (unsigned int)... | 1.0 | +| test.c:632:14:632:19 | ... * ... | 6.9571236714E10 | +| test.c:632:14:632:24 | ... * ... | 6.9571236714E10 | +| test.c:632:14:632:29 | ... + ... | 6.9571236714E10 | +| test.c:632:18:632:19 | ip | 6.9571236714E10 | +| test.c:632:23:632:24 | 14 | 1.0 | +| test.c:632:23:632:24 | (unsigned int)... | 1.0 | +| test.c:632:28:632:29 | 32 | 1.0 | +| test.c:632:28:632:29 | (unsigned int)... | 1.0 | +| test.c:633:13:633:13 | 2 | 1.0 | +| test.c:633:13:633:13 | (unsigned int)... | 1.0 | +| test.c:633:13:633:30 | ... * ... | 6.9571236714E10 | +| test.c:633:17:633:30 | (...) | 6.9571236714E10 | +| test.c:633:18:633:19 | ip | 6.9571236714E10 | +| test.c:633:18:633:24 | ... * ... | 6.9571236714E10 | +| test.c:633:18:633:29 | ... + ... | 6.9571236714E10 | +| test.c:633:23:633:24 | 14 | 1.0 | +| test.c:633:23:633:24 | (unsigned int)... | 1.0 | +| test.c:633:28:633:29 | 64 | 1.0 | +| test.c:633:28:633:29 | (unsigned int)... | 1.0 | +| test.c:634:13:639:26 | (...) | 2.693885654805863E33 | +| test.c:634:14:634:25 | (...) | 6.9571236714E10 | +| test.c:634:14:634:30 | ... * ... | 6.9571236714E10 | +| test.c:634:14:635:63 | ... > ... | 1.0 | +| test.c:634:14:639:25 | ... ? ... : ... | 2.693885654805863E33 | +| test.c:634:15:634:15 | 2 | 1.0 | +| test.c:634:15:634:15 | (unsigned int)... | 1.0 | +| test.c:634:15:634:20 | ... * ... | 6.9571236714E10 | +| test.c:634:15:634:24 | ... + ... | 6.9571236714E10 | +| test.c:634:19:634:20 | ip | 6.9571236714E10 | +| test.c:634:24:634:24 | 1 | 1.0 | +| test.c:634:24:634:24 | (unsigned int)... | 1.0 | +| test.c:634:29:634:30 | 14 | 1.0 | +| test.c:634:29:634:30 | (unsigned int)... | 1.0 | +| test.c:635:13:635:63 | (...) | 4.840156977915421E21 | +| test.c:635:14:635:15 | 14 | 1.0 | +| test.c:635:14:635:15 | (unsigned int)... | 1.0 | +| test.c:635:14:635:26 | ... * ... | 6.9571236714E10 | +| test.c:635:14:635:36 | ... > ... | 1.0 | +| test.c:635:14:635:62 | ... ? ... : ... | 4.840156977915421E21 | +| test.c:635:19:635:26 | (...) | 6.9571236714E10 | +| test.c:635:20:635:20 | 2 | 1.0 | +| test.c:635:20:635:20 | (unsigned int)... | 1.0 | +| test.c:635:20:635:25 | ... * ... | 6.9571236714E10 | +| test.c:635:24:635:25 | ip | 6.9571236714E10 | +| test.c:635:30:635:31 | 17 | 1.0 | +| test.c:635:30:635:31 | (unsigned int)... | 1.0 | +| test.c:635:30:635:36 | ... * ... | 6.9571236714E10 | +| test.c:635:35:635:36 | ip | 6.9571236714E10 | +| test.c:635:40:635:41 | 17 | 1.0 | +| test.c:635:40:635:41 | (unsigned int)... | 1.0 | +| test.c:635:40:635:52 | ... * ... | 6.9571236714E10 | +| test.c:635:45:635:52 | (...) | 6.9571236714E10 | +| test.c:635:46:635:46 | 2 | 1.0 | +| test.c:635:46:635:46 | (unsigned int)... | 1.0 | +| test.c:635:46:635:51 | ... * ... | 6.9571236714E10 | +| test.c:635:50:635:51 | ip | 6.9571236714E10 | +| test.c:635:56:635:57 | 17 | 1.0 | +| test.c:635:56:635:57 | (unsigned int)... | 1.0 | +| test.c:635:56:635:62 | ... * ... | 6.9571236714E10 | +| test.c:635:61:635:62 | ip | 6.9571236714E10 | +| test.c:636:17:636:28 | (...) | 1.39142473429E11 | +| test.c:636:17:636:33 | ... * ... | 1.39142473429E11 | +| test.c:636:18:636:18 | 2 | 1.0 | +| test.c:636:18:636:18 | (unsigned int)... | 1.0 | +| test.c:636:18:636:23 | ... * ... | 1.39142473429E11 | +| test.c:636:18:636:27 | ... + ... | 1.39142473429E11 | +| test.c:636:22:636:23 | ip | 1.39142473429E11 | +| test.c:636:27:636:27 | 1 | 1.0 | +| test.c:636:27:636:27 | (unsigned int)... | 1.0 | +| test.c:636:32:636:33 | 14 | 1.0 | +| test.c:636:32:636:33 | (unsigned int)... | 1.0 | +| test.c:637:17:637:18 | 14 | 1.0 | +| test.c:637:17:637:18 | (unsigned int)... | 1.0 | +| test.c:637:17:637:29 | ... * ... | 1.39142473429E11 | +| test.c:637:17:637:39 | ... > ... | 1.0 | +| test.c:637:17:639:25 | ... ? ... : ... | 1.936062791193997E22 | +| test.c:637:22:637:29 | (...) | 1.39142473429E11 | +| test.c:637:23:637:23 | 2 | 1.0 | +| test.c:637:23:637:23 | (unsigned int)... | 1.0 | +| test.c:637:23:637:28 | ... * ... | 1.39142473429E11 | +| test.c:637:27:637:28 | ip | 1.39142473429E11 | +| test.c:637:33:637:34 | 17 | 1.0 | +| test.c:637:33:637:34 | (unsigned int)... | 1.0 | +| test.c:637:33:637:39 | ... * ... | 1.39142473429E11 | +| test.c:637:38:637:39 | ip | 1.39142473429E11 | +| test.c:638:19:638:20 | 14 | 1.0 | +| test.c:638:19:638:20 | (unsigned int)... | 1.0 | +| test.c:638:19:638:31 | ... * ... | 1.39142473429E11 | +| test.c:638:24:638:31 | (...) | 1.39142473429E11 | +| test.c:638:25:638:25 | 2 | 1.0 | +| test.c:638:25:638:25 | (unsigned int)... | 1.0 | +| test.c:638:25:638:30 | ... * ... | 1.39142473429E11 | +| test.c:638:29:638:30 | ip | 1.39142473429E11 | +| test.c:639:19:639:20 | 14 | 1.0 | +| test.c:639:19:639:20 | (unsigned int)... | 1.0 | +| test.c:639:19:639:25 | ... * ... | 1.39142473429E11 | +| test.c:639:24:639:25 | ip | 1.39142473429E11 | +| test.c:640:13:640:14 | 14 | 1.0 | +| test.c:640:13:640:14 | (unsigned int)... | 1.0 | +| test.c:640:13:640:19 | ... * ... | 6.9571236714E10 | +| test.c:640:13:640:35 | ... > ... | 1.0 | +| test.c:640:13:642:27 | ... ? ... : ... | 4.840156977915421E21 | +| test.c:640:18:640:19 | ip | 6.9571236714E10 | +| test.c:640:23:640:30 | (...) | 6.9571236714E10 | +| test.c:640:23:640:35 | ... * ... | 6.9571236714E10 | +| test.c:640:24:640:25 | ip | 6.9571236714E10 | +| test.c:640:24:640:29 | ... + ... | 6.9571236714E10 | +| test.c:640:29:640:29 | 1 | 1.0 | +| test.c:640:29:640:29 | (unsigned int)... | 1.0 | +| test.c:640:34:640:35 | 17 | 1.0 | +| test.c:640:34:640:35 | (unsigned int)... | 1.0 | +| test.c:641:15:641:16 | 14 | 1.0 | +| test.c:641:15:641:16 | (unsigned int)... | 1.0 | +| test.c:641:15:641:21 | ... * ... | 6.9571236714E10 | +| test.c:641:20:641:21 | ip | 6.9571236714E10 | +| test.c:642:15:642:22 | (...) | 6.9571236714E10 | +| test.c:642:15:642:27 | ... * ... | 6.9571236714E10 | +| test.c:642:16:642:17 | ip | 6.9571236714E10 | +| test.c:642:16:642:21 | ... + ... | 6.9571236714E10 | +| test.c:642:21:642:21 | 1 | 1.0 | +| test.c:642:21:642:21 | (unsigned int)... | 1.0 | +| test.c:642:26:642:27 | 14 | 1.0 | +| test.c:642:26:642:27 | (unsigned int)... | 1.0 | +| test.c:643:10:643:23 | special_number | 1.297918419127476E201 | +| test.c:650:10:650:11 | 0 | 1.0 | +| test.c:651:7:651:8 | c1 | 1.0 | +| test.c:651:13:651:13 | x | 1.0 | +| test.c:651:13:651:23 | ... += ... | 1.0 | +| test.c:651:18:651:23 | 748596 | 1.0 | +| test.c:652:7:652:8 | c2 | 1.0 | +| test.c:652:13:652:13 | x | 2.0 | +| test.c:652:13:652:25 | ... += ... | 2.0 | +| test.c:652:18:652:25 | 84652395 | 1.0 | +| test.c:653:7:653:8 | c3 | 1.0 | +| test.c:653:13:653:13 | x | 4.0 | +| test.c:653:13:653:24 | ... += ... | 4.0 | +| test.c:653:18:653:24 | 3675895 | 1.0 | +| test.c:654:7:654:8 | c4 | 1.0 | +| test.c:654:13:654:13 | x | 8.0 | +| test.c:654:13:654:22 | ... += ... | 8.0 | +| test.c:654:18:654:22 | 98634 | 1.0 | +| test.c:655:7:655:8 | c5 | 1.0 | +| test.c:655:13:655:13 | x | 16.0 | +| test.c:655:13:655:24 | ... += ... | 16.0 | +| test.c:655:18:655:24 | 7834985 | 1.0 | +| test.c:656:7:656:8 | c1 | 2.0 | +| test.c:656:7:656:14 | ... && ... | 1.0 | +| test.c:656:13:656:14 | c2 | 2.0 | +| test.c:656:19:656:19 | x | 32.0 | +| test.c:656:19:656:32 | ... += ... | 32.0 | +| test.c:656:24:656:32 | 938457398 | 1.0 | +| test.c:657:7:657:8 | c1 | 3.0 | +| test.c:657:7:657:14 | ... && ... | 1.0 | +| test.c:657:13:657:14 | c3 | 2.0 | +| test.c:657:19:657:19 | x | 64.0 | +| test.c:657:19:657:31 | ... += ... | 64.0 | +| test.c:657:24:657:31 | 73895648 | 1.0 | +| test.c:658:7:658:8 | c1 | 4.0 | +| test.c:658:7:658:14 | ... && ... | 1.0 | +| test.c:658:13:658:14 | c4 | 2.0 | +| test.c:658:19:658:19 | x | 128.0 | +| test.c:658:19:658:31 | ... += ... | 128.0 | +| test.c:658:24:658:31 | 12345432 | 1.0 | +| test.c:659:7:659:8 | c1 | 5.0 | +| test.c:659:7:659:14 | ... && ... | 1.0 | +| test.c:659:13:659:14 | c5 | 2.0 | +| test.c:659:19:659:19 | x | 256.0 | +| test.c:659:19:659:28 | ... += ... | 256.0 | +| test.c:659:24:659:28 | 38847 | 1.0 | +| test.c:660:7:660:8 | c2 | 5.0 | +| test.c:660:7:660:14 | ... && ... | 1.0 | +| test.c:660:13:660:14 | c3 | 5.0 | +| test.c:660:19:660:19 | x | 512.0 | +| test.c:660:19:660:26 | ... += ... | 512.0 | +| test.c:660:24:660:26 | 234 | 1.0 | +| test.c:662:11:662:11 | x | 1024.0 | +| test.c:662:11:662:15 | ... + ... | 1048576.0 | +| test.c:662:11:662:19 | ... + ... | 1.073741824E9 | +| test.c:662:11:662:23 | ... + ... | 1.099511627776E12 | +| test.c:662:11:662:27 | ... + ... | 1.125899906842624E15 | +| test.c:662:11:662:31 | ... + ... | 1.152921504606847E18 | +| test.c:662:11:662:35 | ... + ... | 1.1805916207174113E21 | +| test.c:662:11:662:39 | ... + ... | 1.2089258196146292E24 | +| test.c:662:11:662:43 | ... + ... | 1.2379400392853803E27 | +| test.c:662:11:662:47 | ... + ... | 1.2676506002282294E30 | +| test.c:662:11:662:51 | ... + ... | 1.298074214633707E33 | +| test.c:662:11:662:55 | ... + ... | 1.329227995784916E36 | +| test.c:662:15:662:15 | x | 1024.0 | +| test.c:662:19:662:19 | x | 1024.0 | +| test.c:662:23:662:23 | x | 1024.0 | +| test.c:662:27:662:27 | x | 1024.0 | +| test.c:662:31:662:31 | x | 1024.0 | +| test.c:662:35:662:35 | x | 1024.0 | +| test.c:662:39:662:39 | x | 1024.0 | +| test.c:662:43:662:43 | x | 1024.0 | +| test.c:662:47:662:47 | x | 1024.0 | +| test.c:662:51:662:51 | x | 1024.0 | +| test.c:662:55:662:55 | x | 1024.0 | +| test.c:663:10:663:10 | y | 1.329227995784916E36 | +| test.c:668:20:668:20 | x | 1.0 | +| test.c:668:20:668:26 | ... < ... | 1.0 | +| test.c:668:20:668:36 | ... ? ... : ... | 1.0 | +| test.c:668:24:668:26 | 100 | 1.0 | +| test.c:668:24:668:26 | (unsigned int)... | 1.0 | +| test.c:668:30:668:30 | x | 1.0 | +| test.c:668:34:668:36 | 100 | 1.0 | +| test.c:668:34:668:36 | (unsigned int)... | 1.0 | +| test.c:671:3:671:4 | y1 | 1.0 | +| test.c:671:9:671:11 | ++ ... | 1.0 | +| test.c:671:11:671:11 | y | 1.0 | +| test.c:672:3:672:4 | y2 | 1.0 | +| test.c:672:19:672:19 | 3 | 1.0 | +| test.c:672:19:672:19 | (unsigned int)... | 1.0 | | test.c:681:3:681:3 | i | 1.0 | -| test.c:681:3:681:12 | ... = ... | 1.0 | -| test.c:681:7:681:7 | j | 1.0 | -| test.c:681:7:681:12 | ... = ... | 1.0 | -| test.c:681:11:681:12 | 40 | 1.0 | +| test.c:681:3:681:8 | ... = ... | 1.0 | +| test.c:681:7:681:8 | 10 | 1.0 | | test.c:682:7:682:7 | i | 1.0 | | test.c:684:3:684:3 | i | 1.0 | -| test.c:684:3:684:15 | ... = ... | 1.0 | -| test.c:684:7:684:15 | (...) | 1.0 | -| test.c:684:8:684:8 | j | 1.0 | -| test.c:684:8:684:14 | ... += ... | 1.0 | -| test.c:684:13:684:14 | 10 | 1.0 | -| test.c:685:7:685:7 | i | 1.0 | -| test.c:687:3:687:3 | i | 1.0 | -| test.c:687:3:687:20 | ... = ... | 1.0 | -| test.c:687:7:687:8 | 20 | 1.0 | -| test.c:687:7:687:20 | ... + ... | 1.0 | -| test.c:687:12:687:20 | (...) | 1.0 | -| test.c:687:13:687:13 | j | 1.0 | -| test.c:687:13:687:19 | ... -= ... | 1.0 | -| test.c:687:18:687:19 | 10 | 1.0 | -| test.c:688:7:688:7 | i | 1.0 | -| test.c:693:14:693:15 | 0 | 1.0 | -| test.c:695:7:695:7 | 3 | 1.0 | -| test.c:695:7:695:7 | (unsigned int)... | 1.0 | -| test.c:695:7:695:12 | ... <= ... | 1.0 | -| test.c:695:7:695:23 | ... && ... | 1.0 | -| test.c:695:7:695:33 | ... && ... | 1.0 | -| test.c:695:7:695:44 | ... && ... | 1.0 | -| test.c:695:12:695:12 | a | 1.0 | -| test.c:695:17:695:17 | a | 1.0 | -| test.c:695:17:695:23 | ... <= ... | 1.0 | -| test.c:695:22:695:23 | 11 | 1.0 | -| test.c:695:22:695:23 | (unsigned int)... | 1.0 | -| test.c:695:28:695:28 | 5 | 1.0 | -| test.c:695:28:695:28 | (unsigned int)... | 1.0 | -| test.c:695:28:695:33 | ... <= ... | 1.0 | -| test.c:695:33:695:33 | b | 1.0 | -| test.c:695:38:695:38 | b | 1.0 | -| test.c:695:38:695:44 | ... <= ... | 1.0 | -| test.c:695:43:695:44 | 23 | 1.0 | -| test.c:695:43:695:44 | (unsigned int)... | 1.0 | -| test.c:696:13:696:13 | a | 1.0 | -| test.c:696:13:696:15 | (int)... | 1.0 | -| test.c:696:13:696:15 | ... * ... | 1.0 | -| test.c:696:15:696:15 | b | 1.0 | -| test.c:697:5:697:9 | total | 1.0 | -| test.c:697:5:697:14 | ... += ... | 1.0 | -| test.c:697:14:697:14 | r | 1.0 | -| test.c:699:7:699:7 | 3 | 1.0 | -| test.c:699:7:699:7 | (unsigned int)... | 1.0 | -| test.c:699:7:699:12 | ... <= ... | 1.0 | -| test.c:699:7:699:23 | ... && ... | 1.0 | -| test.c:699:7:699:33 | ... && ... | 1.0 | -| test.c:699:7:699:44 | ... && ... | 1.0 | -| test.c:699:12:699:12 | a | 2.0 | -| test.c:699:17:699:17 | a | 2.0 | -| test.c:699:17:699:23 | ... <= ... | 1.0 | -| test.c:699:22:699:23 | 11 | 1.0 | -| test.c:699:22:699:23 | (unsigned int)... | 1.0 | -| test.c:699:28:699:28 | 0 | 1.0 | -| test.c:699:28:699:28 | (unsigned int)... | 1.0 | -| test.c:699:28:699:33 | ... <= ... | 1.0 | -| test.c:699:33:699:33 | b | 3.0 | -| test.c:699:38:699:38 | b | 3.0 | -| test.c:699:38:699:44 | ... <= ... | 1.0 | -| test.c:699:43:699:44 | 23 | 1.0 | -| test.c:699:43:699:44 | (unsigned int)... | 1.0 | -| test.c:700:13:700:13 | a | 2.0 | -| test.c:700:13:700:15 | (int)... | 6.0 | -| test.c:700:13:700:15 | ... * ... | 6.0 | -| test.c:700:15:700:15 | b | 3.0 | -| test.c:701:5:701:9 | total | 2.0 | -| test.c:701:5:701:14 | ... += ... | 12.0 | -| test.c:701:14:701:14 | r | 6.0 | -| test.c:703:7:703:7 | 3 | 1.0 | -| test.c:703:7:703:7 | (unsigned int)... | 1.0 | -| test.c:703:7:703:12 | ... <= ... | 1.0 | -| test.c:703:7:703:23 | ... && ... | 1.0 | -| test.c:703:7:703:34 | ... && ... | 1.0 | -| test.c:703:7:703:45 | ... && ... | 1.0 | -| test.c:703:12:703:12 | a | 3.0 | -| test.c:703:17:703:17 | a | 3.0 | -| test.c:703:17:703:23 | ... <= ... | 1.0 | -| test.c:703:22:703:23 | 11 | 1.0 | -| test.c:703:22:703:23 | (unsigned int)... | 1.0 | -| test.c:703:28:703:29 | 13 | 1.0 | -| test.c:703:28:703:29 | (unsigned int)... | 1.0 | -| test.c:703:28:703:34 | ... <= ... | 1.0 | -| test.c:703:34:703:34 | b | 7.0 | -| test.c:703:39:703:39 | b | 7.0 | -| test.c:703:39:703:45 | ... <= ... | 1.0 | -| test.c:703:44:703:45 | 23 | 1.0 | -| test.c:703:44:703:45 | (unsigned int)... | 1.0 | -| test.c:704:13:704:13 | a | 3.0 | -| test.c:704:13:704:15 | (int)... | 21.0 | -| test.c:704:13:704:15 | ... * ... | 21.0 | -| test.c:704:15:704:15 | b | 7.0 | -| test.c:705:5:705:9 | total | 14.0 | -| test.c:705:5:705:14 | ... += ... | 294.0 | -| test.c:705:14:705:14 | r | 21.0 | -| test.c:708:10:708:14 | total | 308.0 | -| test.c:712:14:712:15 | 0 | 1.0 | -| test.c:714:7:714:7 | 5 | 1.0 | +| test.c:684:3:684:8 | ... = ... | 1.0 | +| test.c:684:7:684:8 | 10 | 1.0 | +| test.c:685:3:685:3 | i | 1.0 | +| test.c:685:3:685:9 | ... += ... | 1.0 | +| test.c:685:8:685:9 | 10 | 1.0 | +| test.c:686:7:686:7 | i | 1.0 | +| test.c:688:3:688:3 | i | 1.0 | +| test.c:688:3:688:8 | ... = ... | 1.0 | +| test.c:688:7:688:8 | 40 | 1.0 | +| test.c:689:3:689:3 | i | 1.0 | +| test.c:689:3:689:9 | ... -= ... | 1.0 | +| test.c:689:8:689:9 | 10 | 1.0 | +| test.c:690:7:690:7 | i | 1.0 | +| test.c:692:3:692:3 | i | 1.0 | +| test.c:692:3:692:12 | ... = ... | 1.0 | +| test.c:692:7:692:7 | j | 1.0 | +| test.c:692:7:692:12 | ... = ... | 1.0 | +| test.c:692:11:692:12 | 40 | 1.0 | +| test.c:693:7:693:7 | i | 1.0 | +| test.c:695:3:695:3 | i | 1.0 | +| test.c:695:3:695:15 | ... = ... | 1.0 | +| test.c:695:7:695:15 | (...) | 1.0 | +| test.c:695:8:695:8 | j | 1.0 | +| test.c:695:8:695:14 | ... += ... | 1.0 | +| test.c:695:13:695:14 | 10 | 1.0 | +| test.c:696:7:696:7 | i | 1.0 | +| test.c:698:3:698:3 | i | 1.0 | +| test.c:698:3:698:20 | ... = ... | 1.0 | +| test.c:698:7:698:8 | 20 | 1.0 | +| test.c:698:7:698:20 | ... + ... | 1.0 | +| test.c:698:12:698:20 | (...) | 1.0 | +| test.c:698:13:698:13 | j | 1.0 | +| test.c:698:13:698:19 | ... -= ... | 1.0 | +| test.c:698:18:698:19 | 10 | 1.0 | +| test.c:699:7:699:7 | i | 1.0 | +| test.c:704:14:704:15 | 0 | 1.0 | +| test.c:706:7:706:7 | 3 | 1.0 | +| test.c:706:7:706:7 | (unsigned int)... | 1.0 | +| test.c:706:7:706:12 | ... <= ... | 1.0 | +| test.c:706:7:706:23 | ... && ... | 1.0 | +| test.c:706:7:706:33 | ... && ... | 1.0 | +| test.c:706:7:706:44 | ... && ... | 1.0 | +| test.c:706:12:706:12 | a | 1.0 | +| test.c:706:17:706:17 | a | 1.0 | +| test.c:706:17:706:23 | ... <= ... | 1.0 | +| test.c:706:22:706:23 | 11 | 1.0 | +| test.c:706:22:706:23 | (unsigned int)... | 1.0 | +| test.c:706:28:706:28 | 5 | 1.0 | +| test.c:706:28:706:28 | (unsigned int)... | 1.0 | +| test.c:706:28:706:33 | ... <= ... | 1.0 | +| test.c:706:33:706:33 | b | 1.0 | +| test.c:706:38:706:38 | b | 1.0 | +| test.c:706:38:706:44 | ... <= ... | 1.0 | +| test.c:706:43:706:44 | 23 | 1.0 | +| test.c:706:43:706:44 | (unsigned int)... | 1.0 | +| test.c:707:13:707:13 | a | 1.0 | +| test.c:707:13:707:15 | (int)... | 1.0 | +| test.c:707:13:707:15 | ... * ... | 1.0 | +| test.c:707:15:707:15 | b | 1.0 | +| test.c:708:5:708:9 | total | 1.0 | +| test.c:708:5:708:14 | ... += ... | 1.0 | +| test.c:708:14:708:14 | r | 1.0 | +| test.c:710:7:710:7 | 3 | 1.0 | +| test.c:710:7:710:7 | (unsigned int)... | 1.0 | +| test.c:710:7:710:12 | ... <= ... | 1.0 | +| test.c:710:7:710:23 | ... && ... | 1.0 | +| test.c:710:7:710:33 | ... && ... | 1.0 | +| test.c:710:7:710:44 | ... && ... | 1.0 | +| test.c:710:12:710:12 | a | 2.0 | +| test.c:710:17:710:17 | a | 2.0 | +| test.c:710:17:710:23 | ... <= ... | 1.0 | +| test.c:710:22:710:23 | 11 | 1.0 | +| test.c:710:22:710:23 | (unsigned int)... | 1.0 | +| test.c:710:28:710:28 | 0 | 1.0 | +| test.c:710:28:710:28 | (unsigned int)... | 1.0 | +| test.c:710:28:710:33 | ... <= ... | 1.0 | +| test.c:710:33:710:33 | b | 3.0 | +| test.c:710:38:710:38 | b | 3.0 | +| test.c:710:38:710:44 | ... <= ... | 1.0 | +| test.c:710:43:710:44 | 23 | 1.0 | +| test.c:710:43:710:44 | (unsigned int)... | 1.0 | +| test.c:711:13:711:13 | a | 2.0 | +| test.c:711:13:711:15 | (int)... | 6.0 | +| test.c:711:13:711:15 | ... * ... | 6.0 | +| test.c:711:15:711:15 | b | 3.0 | +| test.c:712:5:712:9 | total | 2.0 | +| test.c:712:5:712:14 | ... += ... | 12.0 | +| test.c:712:14:712:14 | r | 6.0 | +| test.c:714:7:714:7 | 3 | 1.0 | | test.c:714:7:714:7 | (unsigned int)... | 1.0 | | test.c:714:7:714:12 | ... <= ... | 1.0 | | test.c:714:7:714:23 | ... && ... | 1.0 | -| test.c:714:12:714:12 | b | 1.0 | -| test.c:714:17:714:17 | b | 1.0 | +| test.c:714:7:714:34 | ... && ... | 1.0 | +| test.c:714:7:714:45 | ... && ... | 1.0 | +| test.c:714:12:714:12 | a | 3.0 | +| test.c:714:17:714:17 | a | 3.0 | | test.c:714:17:714:23 | ... <= ... | 1.0 | -| test.c:714:22:714:23 | 23 | 1.0 | +| test.c:714:22:714:23 | 11 | 1.0 | | test.c:714:22:714:23 | (unsigned int)... | 1.0 | -| test.c:715:13:715:14 | 11 | 1.0 | -| test.c:715:13:715:14 | (unsigned int)... | 1.0 | -| test.c:715:13:715:16 | (int)... | 1.0 | -| test.c:715:13:715:16 | ... * ... | 1.0 | -| test.c:715:16:715:16 | b | 1.0 | -| test.c:716:5:716:9 | total | 1.0 | -| test.c:716:5:716:14 | ... += ... | 1.0 | -| test.c:716:14:716:14 | r | 1.0 | -| test.c:718:7:718:7 | 0 | 1.0 | -| test.c:718:7:718:7 | (unsigned int)... | 1.0 | -| test.c:718:7:718:12 | ... <= ... | 1.0 | -| test.c:718:7:718:23 | ... && ... | 1.0 | -| test.c:718:12:718:12 | b | 2.0 | -| test.c:718:17:718:17 | b | 2.0 | -| test.c:718:17:718:23 | ... <= ... | 1.0 | -| test.c:718:22:718:23 | 23 | 1.0 | -| test.c:718:22:718:23 | (unsigned int)... | 1.0 | -| test.c:719:13:719:14 | 11 | 1.0 | -| test.c:719:13:719:14 | (unsigned int)... | 1.0 | -| test.c:719:13:719:16 | (int)... | 2.0 | -| test.c:719:13:719:16 | ... * ... | 2.0 | -| test.c:719:16:719:16 | b | 2.0 | -| test.c:720:5:720:9 | total | 2.0 | -| test.c:720:5:720:14 | ... += ... | 4.0 | -| test.c:720:14:720:14 | r | 2.0 | -| test.c:722:7:722:8 | 13 | 1.0 | -| test.c:722:7:722:8 | (unsigned int)... | 1.0 | -| test.c:722:7:722:13 | ... <= ... | 1.0 | -| test.c:722:7:722:24 | ... && ... | 1.0 | -| test.c:722:13:722:13 | b | 3.0 | -| test.c:722:18:722:18 | b | 3.0 | -| test.c:722:18:722:24 | ... <= ... | 1.0 | -| test.c:722:23:722:24 | 23 | 1.0 | -| test.c:722:23:722:24 | (unsigned int)... | 1.0 | -| test.c:723:13:723:14 | 11 | 1.0 | -| test.c:723:13:723:14 | (unsigned int)... | 1.0 | -| test.c:723:13:723:16 | (int)... | 3.0 | -| test.c:723:13:723:16 | ... * ... | 3.0 | -| test.c:723:16:723:16 | b | 3.0 | -| test.c:724:5:724:9 | total | 6.0 | -| test.c:724:5:724:14 | ... += ... | 18.0 | -| test.c:724:14:724:14 | r | 3.0 | -| test.c:727:10:727:14 | total | 24.0 | -| test.c:732:3:732:3 | x | 1.0 | -| test.c:732:3:732:22 | ... = ... | 1.0 | -| test.c:732:7:732:7 | y | 1.0 | -| test.c:732:7:732:22 | ... = ... | 1.0 | -| test.c:732:11:732:22 | 1000000003 | 1.0 | -| test.c:733:3:733:4 | xy | 1.0 | -| test.c:733:3:733:12 | ... = ... | 1.0 | -| test.c:733:8:733:8 | x | 1.0 | -| test.c:733:8:733:12 | ... * ... | 1.0 | -| test.c:733:12:733:12 | y | 1.0 | -| test.c:734:10:734:11 | xy | 1.0 | -| test.c:739:3:739:3 | x | 1.0 | -| test.c:739:3:739:14 | ... = ... | 1.0 | -| test.c:739:7:739:14 | 274177 | 1.0 | -| test.c:740:3:740:3 | y | 1.0 | -| test.c:740:3:740:22 | ... = ... | 1.0 | -| test.c:740:7:740:22 | 67280421310721 | 1.0 | -| test.c:741:3:741:4 | xy | 1.0 | -| test.c:741:3:741:12 | ... = ... | 1.0 | -| test.c:741:8:741:8 | x | 1.0 | -| test.c:741:8:741:12 | ... * ... | 1.0 | -| test.c:741:12:741:12 | y | 1.0 | -| test.c:742:10:742:11 | xy | 1.0 | -| test.c:746:7:746:8 | ui | 1.0 | -| test.c:746:7:746:14 | ... >= ... | 1.0 | -| test.c:746:13:746:14 | 10 | 1.0 | -| test.c:746:13:746:14 | (unsigned int)... | 1.0 | -| test.c:747:28:747:44 | (unsigned long)... | 1.0 | -| test.c:747:28:747:49 | ... * ... | 1.0 | -| test.c:747:43:747:44 | ui | 1.0 | -| test.c:747:48:747:49 | (unsigned long)... | 1.0 | -| test.c:747:48:747:49 | ui | 1.0 | -| test.c:748:12:748:17 | result | 1.0 | -| test.c:750:7:750:8 | ul | 1.0 | -| test.c:750:7:750:14 | ... >= ... | 1.0 | -| test.c:750:13:750:14 | 10 | 1.0 | -| test.c:750:13:750:14 | (unsigned long)... | 1.0 | -| test.c:751:28:751:29 | ul | 1.0 | -| test.c:751:28:751:34 | ... * ... | 1.0 | -| test.c:751:33:751:34 | ul | 1.0 | -| test.c:752:12:752:17 | result | 1.0 | -| test.c:754:10:754:10 | 0 | 1.0 | -| test.c:754:10:754:10 | (unsigned long)... | 1.0 | -| test.c:758:7:758:8 | ui | 1.0 | -| test.c:758:7:758:14 | ... <= ... | 1.0 | -| test.c:758:7:758:25 | ... && ... | 1.0 | -| test.c:758:13:758:14 | 10 | 1.0 | -| test.c:758:13:758:14 | (unsigned int)... | 1.0 | -| test.c:758:19:758:20 | ui | 1.0 | -| test.c:758:19:758:25 | ... >= ... | 1.0 | -| test.c:758:25:758:25 | 2 | 1.0 | -| test.c:758:25:758:25 | (unsigned int)... | 1.0 | -| test.c:759:5:759:6 | ui | 1.0 | -| test.c:759:5:759:16 | ... *= ... | 1.0 | -| test.c:759:11:759:12 | ui | 1.0 | -| test.c:759:11:759:16 | ... + ... | 1.0 | -| test.c:759:16:759:16 | 0 | 1.0 | -| test.c:759:16:759:16 | (unsigned int)... | 1.0 | -| test.c:760:12:760:13 | (unsigned long)... | 1.0 | -| test.c:760:12:760:13 | ui | 1.0 | -| test.c:763:26:763:27 | 10 | 1.0 | -| test.c:763:26:763:27 | (unsigned int)... | 1.0 | -| test.c:764:3:764:9 | uiconst | 1.0 | -| test.c:764:3:764:14 | ... *= ... | 1.0 | -| test.c:764:14:764:14 | 4 | 1.0 | -| test.c:764:14:764:14 | (unsigned int)... | 1.0 | -| test.c:766:27:766:28 | 10 | 1.0 | -| test.c:766:27:766:28 | (unsigned long)... | 1.0 | -| test.c:767:3:767:9 | ulconst | 1.0 | -| test.c:767:3:767:14 | ... *= ... | 1.0 | -| test.c:767:14:767:14 | 4 | 1.0 | -| test.c:767:14:767:14 | (unsigned long)... | 1.0 | -| test.c:768:10:768:16 | (unsigned long)... | 1.0 | -| test.c:768:10:768:16 | uiconst | 1.0 | -| test.c:768:10:768:26 | ... + ... | 1.0 | -| test.c:768:20:768:26 | ulconst | 1.0 | -| test.c:772:7:772:7 | i | 1.0 | -| test.c:772:7:772:13 | ... >= ... | 1.0 | -| test.c:772:7:772:23 | ... && ... | 1.0 | -| test.c:772:12:772:13 | - ... | 1.0 | -| test.c:772:13:772:13 | 1 | 1.0 | -| test.c:772:18:772:18 | i | 1.0 | -| test.c:772:18:772:23 | ... <= ... | 1.0 | -| test.c:772:23:772:23 | 2 | 1.0 | -| test.c:773:5:773:5 | i | 1.0 | -| test.c:773:5:773:13 | ... = ... | 1.0 | -| test.c:773:9:773:9 | 5 | 1.0 | -| test.c:773:9:773:13 | ... * ... | 1.0 | -| test.c:773:13:773:13 | i | 1.0 | -| test.c:774:9:774:9 | i | 1.0 | -| test.c:776:5:776:5 | i | 1.0 | -| test.c:776:5:776:14 | ... = ... | 1.0 | -| test.c:776:9:776:9 | i | 1.0 | -| test.c:776:9:776:14 | ... * ... | 1.0 | -| test.c:776:13:776:14 | - ... | 1.0 | -| test.c:776:14:776:14 | 3 | 1.0 | -| test.c:777:9:777:9 | i | 1.0 | -| test.c:779:5:779:5 | i | 1.0 | -| test.c:779:5:779:10 | ... *= ... | 1.0 | -| test.c:779:10:779:10 | 7 | 1.0 | -| test.c:780:9:780:9 | i | 1.0 | -| test.c:782:5:782:5 | i | 1.0 | -| test.c:782:5:782:12 | ... *= ... | 1.0 | -| test.c:782:10:782:12 | - ... | 1.0 | -| test.c:782:11:782:12 | 11 | 1.0 | -| test.c:783:9:783:9 | i | 1.0 | -| test.c:785:7:785:7 | i | 2.0 | -| test.c:785:7:785:13 | ... == ... | 1.0 | -| test.c:785:12:785:13 | - ... | 1.0 | -| test.c:785:13:785:13 | 1 | 1.0 | -| test.c:786:5:786:5 | i | 1.0 | -| test.c:786:5:786:27 | ... = ... | 2.0 | -| test.c:786:9:786:9 | i | 2.0 | -| test.c:786:9:786:27 | ... * ... | 2.0 | -| test.c:786:13:786:27 | (int)... | 1.0 | -| test.c:786:18:786:27 | 4294967295 | 1.0 | -| test.c:787:9:787:9 | i | 2.0 | -| test.c:789:3:789:3 | i | 1.0 | -| test.c:789:3:789:12 | ... = ... | 4.0 | -| test.c:789:7:789:7 | i | 4.0 | -| test.c:789:7:789:12 | ... * ... | 4.0 | -| test.c:789:11:789:12 | - ... | 1.0 | -| test.c:789:12:789:12 | 1 | 1.0 | -| test.c:790:10:790:10 | i | 4.0 | -| test.c:792:20:792:20 | 1 | 1.0 | -| test.c:792:20:792:20 | (signed char)... | 1.0 | -| test.c:793:3:793:3 | i | 1.0 | -| test.c:793:3:793:17 | ... = ... | 1.0 | -| test.c:793:7:793:17 | (...) | 1.0 | -| test.c:793:7:793:17 | (int)... | 1.0 | -| test.c:793:8:793:11 | * ... | 1.0 | -| test.c:793:8:793:16 | ... *= ... | 1.0 | -| test.c:793:10:793:11 | sc | 1.0 | -| test.c:793:16:793:16 | 2 | 1.0 | -| test.c:795:7:795:7 | i | 1.0 | -| test.c:797:10:797:10 | 0 | 1.0 | -| test.c:802:7:802:7 | (int)... | 1.0 | -| test.c:802:7:802:7 | n | 1.0 | -| test.c:804:7:804:7 | n | 1.0 | -| test.c:804:7:804:11 | ... > ... | 1.0 | -| test.c:804:11:804:11 | 0 | 1.0 | -| test.c:804:11:804:11 | (unsigned int)... | 1.0 | -| test.c:805:9:805:9 | (int)... | 1.0 | -| test.c:805:9:805:9 | n | 1.0 | -| test.c:808:7:808:7 | n | 2.0 | -| test.c:808:7:808:12 | ... != ... | 1.0 | -| test.c:808:12:808:12 | 0 | 1.0 | -| test.c:808:12:808:12 | (unsigned int)... | 1.0 | -| test.c:809:9:809:9 | (int)... | 2.0 | -| test.c:809:9:809:9 | n | 2.0 | -| test.c:811:9:811:9 | (int)... | 2.0 | -| test.c:811:9:811:9 | n | 2.0 | -| test.c:814:7:814:8 | ! ... | 1.0 | -| test.c:814:8:814:8 | n | 4.0 | -| test.c:815:9:815:9 | (int)... | 4.0 | -| test.c:815:9:815:9 | n | 4.0 | -| test.c:817:9:817:9 | (int)... | 4.0 | -| test.c:817:9:817:9 | n | 4.0 | -| test.c:820:10:820:10 | n | 13.0 | -| test.c:820:10:820:15 | ... != ... | 1.0 | -| test.c:820:15:820:15 | 0 | 1.0 | -| test.c:820:15:820:15 | (unsigned int)... | 1.0 | -| test.c:821:5:821:5 | n | 13.0 | -| test.c:821:5:821:7 | ... -- | 13.0 | -| test.c:824:7:824:7 | (int)... | 13.0 | -| test.c:824:7:824:7 | n | 13.0 | -| test.c:828:7:828:7 | (int)... | 1.0 | -| test.c:828:7:828:7 | n | 1.0 | -| test.c:828:7:828:11 | ... < ... | 1.0 | -| test.c:828:11:828:11 | 0 | 1.0 | -| test.c:831:7:831:7 | (int)... | 1.0 | -| test.c:831:7:831:7 | n | 1.0 | -| test.c:831:7:831:12 | ... == ... | 1.0 | -| test.c:831:12:831:12 | 0 | 1.0 | -| test.c:832:9:832:9 | (int)... | 1.0 | -| test.c:832:9:832:9 | n | 1.0 | -| test.c:834:9:834:9 | (int)... | 1.0 | -| test.c:834:9:834:9 | n | 1.0 | -| test.c:837:7:837:7 | n | 2.0 | -| test.c:838:9:838:9 | (int)... | 2.0 | -| test.c:838:9:838:9 | n | 2.0 | -| test.c:840:9:840:9 | (int)... | 2.0 | -| test.c:840:9:840:9 | n | 2.0 | -| test.c:843:10:843:10 | (int)... | 13.0 | -| test.c:843:10:843:10 | n | 12.0 | -| test.c:843:10:843:15 | ... != ... | 1.0 | -| test.c:843:15:843:15 | 0 | 1.0 | -| test.c:844:5:844:5 | n | 12.0 | -| test.c:844:5:844:7 | ... -- | 12.0 | -| test.c:847:7:847:7 | (int)... | 12.0 | -| test.c:847:7:847:7 | n | 12.0 | -| test.c:851:7:851:7 | (int)... | 1.0 | -| test.c:851:7:851:7 | n | 1.0 | -| test.c:851:7:851:12 | ... != ... | 1.0 | -| test.c:851:12:851:12 | 0 | 1.0 | -| test.c:852:9:852:9 | (int)... | 1.0 | -| test.c:852:9:852:9 | n | 1.0 | -| test.c:852:9:852:14 | ... >= ... | 1.0 | -| test.c:852:14:852:14 | 0 | 1.0 | -| test.c:853:11:853:11 | (int)... | 1.0 | -| test.c:853:11:853:11 | n | 1.0 | -| test.c:857:7:857:7 | (int)... | 2.0 | -| test.c:857:7:857:7 | n | 2.0 | -| test.c:857:7:857:12 | ... >= ... | 1.0 | -| test.c:857:12:857:12 | 5 | 1.0 | -| test.c:858:9:858:9 | 2 | 1.0 | -| test.c:858:9:858:13 | ... * ... | 2.0 | -| test.c:858:9:858:18 | ... - ... | 2.0 | -| test.c:858:9:858:23 | ... == ... | 1.0 | -| test.c:858:13:858:13 | (int)... | 2.0 | -| test.c:858:13:858:13 | n | 2.0 | -| test.c:858:17:858:18 | 10 | 1.0 | -| test.c:858:23:858:23 | 0 | 1.0 | -| test.c:861:9:861:9 | (int)... | 2.0 | -| test.c:861:9:861:9 | n | 2.0 | -| test.c:864:7:864:7 | (int)... | 3.0 | -| test.c:864:7:864:7 | n | 3.0 | -| test.c:864:7:864:17 | ... != ... | 1.0 | -| test.c:864:7:864:32 | ... && ... | 1.0 | -| test.c:864:12:864:17 | - ... | 1.0 | -| test.c:864:13:864:17 | 32768 | 1.0 | -| test.c:864:22:864:22 | (int)... | 3.0 | -| test.c:864:22:864:22 | n | 3.0 | -| test.c:864:22:864:32 | ... != ... | 1.0 | -| test.c:864:27:864:32 | - ... | 1.0 | -| test.c:864:28:864:32 | 32767 | 1.0 | -| test.c:865:9:865:9 | (int)... | 3.0 | -| test.c:865:9:865:9 | n | 3.0 | -| test.c:868:7:868:7 | (int)... | 4.0 | -| test.c:868:7:868:7 | n | 4.0 | +| test.c:714:28:714:29 | 13 | 1.0 | +| test.c:714:28:714:29 | (unsigned int)... | 1.0 | +| test.c:714:28:714:34 | ... <= ... | 1.0 | +| test.c:714:34:714:34 | b | 7.0 | +| test.c:714:39:714:39 | b | 7.0 | +| test.c:714:39:714:45 | ... <= ... | 1.0 | +| test.c:714:44:714:45 | 23 | 1.0 | +| test.c:714:44:714:45 | (unsigned int)... | 1.0 | +| test.c:715:13:715:13 | a | 3.0 | +| test.c:715:13:715:15 | (int)... | 21.0 | +| test.c:715:13:715:15 | ... * ... | 21.0 | +| test.c:715:15:715:15 | b | 7.0 | +| test.c:716:5:716:9 | total | 14.0 | +| test.c:716:5:716:14 | ... += ... | 294.0 | +| test.c:716:14:716:14 | r | 21.0 | +| test.c:719:10:719:14 | total | 308.0 | +| test.c:723:14:723:15 | 0 | 1.0 | +| test.c:725:7:725:7 | 5 | 1.0 | +| test.c:725:7:725:7 | (unsigned int)... | 1.0 | +| test.c:725:7:725:12 | ... <= ... | 1.0 | +| test.c:725:7:725:23 | ... && ... | 1.0 | +| test.c:725:12:725:12 | b | 1.0 | +| test.c:725:17:725:17 | b | 1.0 | +| test.c:725:17:725:23 | ... <= ... | 1.0 | +| test.c:725:22:725:23 | 23 | 1.0 | +| test.c:725:22:725:23 | (unsigned int)... | 1.0 | +| test.c:726:13:726:14 | 11 | 1.0 | +| test.c:726:13:726:14 | (unsigned int)... | 1.0 | +| test.c:726:13:726:16 | (int)... | 1.0 | +| test.c:726:13:726:16 | ... * ... | 1.0 | +| test.c:726:16:726:16 | b | 1.0 | +| test.c:727:5:727:9 | total | 1.0 | +| test.c:727:5:727:14 | ... += ... | 1.0 | +| test.c:727:14:727:14 | r | 1.0 | +| test.c:729:7:729:7 | 0 | 1.0 | +| test.c:729:7:729:7 | (unsigned int)... | 1.0 | +| test.c:729:7:729:12 | ... <= ... | 1.0 | +| test.c:729:7:729:23 | ... && ... | 1.0 | +| test.c:729:12:729:12 | b | 2.0 | +| test.c:729:17:729:17 | b | 2.0 | +| test.c:729:17:729:23 | ... <= ... | 1.0 | +| test.c:729:22:729:23 | 23 | 1.0 | +| test.c:729:22:729:23 | (unsigned int)... | 1.0 | +| test.c:730:13:730:14 | 11 | 1.0 | +| test.c:730:13:730:14 | (unsigned int)... | 1.0 | +| test.c:730:13:730:16 | (int)... | 2.0 | +| test.c:730:13:730:16 | ... * ... | 2.0 | +| test.c:730:16:730:16 | b | 2.0 | +| test.c:731:5:731:9 | total | 2.0 | +| test.c:731:5:731:14 | ... += ... | 4.0 | +| test.c:731:14:731:14 | r | 2.0 | +| test.c:733:7:733:8 | 13 | 1.0 | +| test.c:733:7:733:8 | (unsigned int)... | 1.0 | +| test.c:733:7:733:13 | ... <= ... | 1.0 | +| test.c:733:7:733:24 | ... && ... | 1.0 | +| test.c:733:13:733:13 | b | 3.0 | +| test.c:733:18:733:18 | b | 3.0 | +| test.c:733:18:733:24 | ... <= ... | 1.0 | +| test.c:733:23:733:24 | 23 | 1.0 | +| test.c:733:23:733:24 | (unsigned int)... | 1.0 | +| test.c:734:13:734:14 | 11 | 1.0 | +| test.c:734:13:734:14 | (unsigned int)... | 1.0 | +| test.c:734:13:734:16 | (int)... | 3.0 | +| test.c:734:13:734:16 | ... * ... | 3.0 | +| test.c:734:16:734:16 | b | 3.0 | +| test.c:735:5:735:9 | total | 6.0 | +| test.c:735:5:735:14 | ... += ... | 18.0 | +| test.c:735:14:735:14 | r | 3.0 | +| test.c:738:10:738:14 | total | 24.0 | +| test.c:743:3:743:3 | x | 1.0 | +| test.c:743:3:743:22 | ... = ... | 1.0 | +| test.c:743:7:743:7 | y | 1.0 | +| test.c:743:7:743:22 | ... = ... | 1.0 | +| test.c:743:11:743:22 | 1000000003 | 1.0 | +| test.c:744:3:744:4 | xy | 1.0 | +| test.c:744:3:744:12 | ... = ... | 1.0 | +| test.c:744:8:744:8 | x | 1.0 | +| test.c:744:8:744:12 | ... * ... | 1.0 | +| test.c:744:12:744:12 | y | 1.0 | +| test.c:745:10:745:11 | xy | 1.0 | +| test.c:750:3:750:3 | x | 1.0 | +| test.c:750:3:750:14 | ... = ... | 1.0 | +| test.c:750:7:750:14 | 274177 | 1.0 | +| test.c:751:3:751:3 | y | 1.0 | +| test.c:751:3:751:22 | ... = ... | 1.0 | +| test.c:751:7:751:22 | 67280421310721 | 1.0 | +| test.c:752:3:752:4 | xy | 1.0 | +| test.c:752:3:752:12 | ... = ... | 1.0 | +| test.c:752:8:752:8 | x | 1.0 | +| test.c:752:8:752:12 | ... * ... | 1.0 | +| test.c:752:12:752:12 | y | 1.0 | +| test.c:753:10:753:11 | xy | 1.0 | +| test.c:757:7:757:8 | ui | 1.0 | +| test.c:757:7:757:14 | ... >= ... | 1.0 | +| test.c:757:13:757:14 | 10 | 1.0 | +| test.c:757:13:757:14 | (unsigned int)... | 1.0 | +| test.c:758:28:758:44 | (unsigned long)... | 1.0 | +| test.c:758:28:758:49 | ... * ... | 1.0 | +| test.c:758:43:758:44 | ui | 1.0 | +| test.c:758:48:758:49 | (unsigned long)... | 1.0 | +| test.c:758:48:758:49 | ui | 1.0 | +| test.c:759:12:759:17 | result | 1.0 | +| test.c:761:7:761:8 | ul | 1.0 | +| test.c:761:7:761:14 | ... >= ... | 1.0 | +| test.c:761:13:761:14 | 10 | 1.0 | +| test.c:761:13:761:14 | (unsigned long)... | 1.0 | +| test.c:762:28:762:29 | ul | 1.0 | +| test.c:762:28:762:34 | ... * ... | 1.0 | +| test.c:762:33:762:34 | ul | 1.0 | +| test.c:763:12:763:17 | result | 1.0 | +| test.c:765:10:765:10 | 0 | 1.0 | +| test.c:765:10:765:10 | (unsigned long)... | 1.0 | +| test.c:769:7:769:8 | ui | 1.0 | +| test.c:769:7:769:14 | ... <= ... | 1.0 | +| test.c:769:7:769:25 | ... && ... | 1.0 | +| test.c:769:13:769:14 | 10 | 1.0 | +| test.c:769:13:769:14 | (unsigned int)... | 1.0 | +| test.c:769:19:769:20 | ui | 1.0 | +| test.c:769:19:769:25 | ... >= ... | 1.0 | +| test.c:769:25:769:25 | 2 | 1.0 | +| test.c:769:25:769:25 | (unsigned int)... | 1.0 | +| test.c:770:5:770:6 | ui | 1.0 | +| test.c:770:5:770:16 | ... *= ... | 1.0 | +| test.c:770:11:770:12 | ui | 1.0 | +| test.c:770:11:770:16 | ... + ... | 1.0 | +| test.c:770:16:770:16 | 0 | 1.0 | +| test.c:770:16:770:16 | (unsigned int)... | 1.0 | +| test.c:771:12:771:13 | (unsigned long)... | 1.0 | +| test.c:771:12:771:13 | ui | 1.0 | +| test.c:774:26:774:27 | 10 | 1.0 | +| test.c:774:26:774:27 | (unsigned int)... | 1.0 | +| test.c:775:3:775:9 | uiconst | 1.0 | +| test.c:775:3:775:14 | ... *= ... | 1.0 | +| test.c:775:14:775:14 | 4 | 1.0 | +| test.c:775:14:775:14 | (unsigned int)... | 1.0 | +| test.c:777:27:777:28 | 10 | 1.0 | +| test.c:777:27:777:28 | (unsigned long)... | 1.0 | +| test.c:778:3:778:9 | ulconst | 1.0 | +| test.c:778:3:778:14 | ... *= ... | 1.0 | +| test.c:778:14:778:14 | 4 | 1.0 | +| test.c:778:14:778:14 | (unsigned long)... | 1.0 | +| test.c:779:10:779:16 | (unsigned long)... | 1.0 | +| test.c:779:10:779:16 | uiconst | 1.0 | +| test.c:779:10:779:26 | ... + ... | 1.0 | +| test.c:779:20:779:26 | ulconst | 1.0 | +| test.c:783:7:783:7 | i | 1.0 | +| test.c:783:7:783:13 | ... >= ... | 1.0 | +| test.c:783:7:783:23 | ... && ... | 1.0 | +| test.c:783:12:783:13 | - ... | 1.0 | +| test.c:783:13:783:13 | 1 | 1.0 | +| test.c:783:18:783:18 | i | 1.0 | +| test.c:783:18:783:23 | ... <= ... | 1.0 | +| test.c:783:23:783:23 | 2 | 1.0 | +| test.c:784:5:784:5 | i | 1.0 | +| test.c:784:5:784:13 | ... = ... | 1.0 | +| test.c:784:9:784:9 | 5 | 1.0 | +| test.c:784:9:784:13 | ... * ... | 1.0 | +| test.c:784:13:784:13 | i | 1.0 | +| test.c:785:9:785:9 | i | 1.0 | +| test.c:787:5:787:5 | i | 1.0 | +| test.c:787:5:787:14 | ... = ... | 1.0 | +| test.c:787:9:787:9 | i | 1.0 | +| test.c:787:9:787:14 | ... * ... | 1.0 | +| test.c:787:13:787:14 | - ... | 1.0 | +| test.c:787:14:787:14 | 3 | 1.0 | +| test.c:788:9:788:9 | i | 1.0 | +| test.c:790:5:790:5 | i | 1.0 | +| test.c:790:5:790:10 | ... *= ... | 1.0 | +| test.c:790:10:790:10 | 7 | 1.0 | +| test.c:791:9:791:9 | i | 1.0 | +| test.c:793:5:793:5 | i | 1.0 | +| test.c:793:5:793:12 | ... *= ... | 1.0 | +| test.c:793:10:793:12 | - ... | 1.0 | +| test.c:793:11:793:12 | 11 | 1.0 | +| test.c:794:9:794:9 | i | 1.0 | +| test.c:796:7:796:7 | i | 2.0 | +| test.c:796:7:796:13 | ... == ... | 1.0 | +| test.c:796:12:796:13 | - ... | 1.0 | +| test.c:796:13:796:13 | 1 | 1.0 | +| test.c:797:5:797:5 | i | 1.0 | +| test.c:797:5:797:27 | ... = ... | 2.0 | +| test.c:797:9:797:9 | i | 2.0 | +| test.c:797:9:797:27 | ... * ... | 2.0 | +| test.c:797:13:797:27 | (int)... | 1.0 | +| test.c:797:18:797:27 | 4294967295 | 1.0 | +| test.c:798:9:798:9 | i | 2.0 | +| test.c:800:3:800:3 | i | 1.0 | +| test.c:800:3:800:12 | ... = ... | 4.0 | +| test.c:800:7:800:7 | i | 4.0 | +| test.c:800:7:800:12 | ... * ... | 4.0 | +| test.c:800:11:800:12 | - ... | 1.0 | +| test.c:800:12:800:12 | 1 | 1.0 | +| test.c:801:10:801:10 | i | 4.0 | +| test.c:803:20:803:20 | 1 | 1.0 | +| test.c:803:20:803:20 | (signed char)... | 1.0 | +| test.c:804:3:804:3 | i | 1.0 | +| test.c:804:3:804:17 | ... = ... | 1.0 | +| test.c:804:7:804:17 | (...) | 1.0 | +| test.c:804:7:804:17 | (int)... | 1.0 | +| test.c:804:8:804:11 | * ... | 1.0 | +| test.c:804:8:804:16 | ... *= ... | 1.0 | +| test.c:804:10:804:11 | sc | 1.0 | +| test.c:804:16:804:16 | 2 | 1.0 | +| test.c:806:7:806:7 | i | 1.0 | +| test.c:808:10:808:10 | 0 | 1.0 | +| test.c:813:7:813:7 | (int)... | 1.0 | +| test.c:813:7:813:7 | n | 1.0 | +| test.c:815:7:815:7 | n | 1.0 | +| test.c:815:7:815:11 | ... > ... | 1.0 | +| test.c:815:11:815:11 | 0 | 1.0 | +| test.c:815:11:815:11 | (unsigned int)... | 1.0 | +| test.c:816:9:816:9 | (int)... | 1.0 | +| test.c:816:9:816:9 | n | 1.0 | +| test.c:819:7:819:7 | n | 2.0 | +| test.c:819:7:819:12 | ... != ... | 1.0 | +| test.c:819:12:819:12 | 0 | 1.0 | +| test.c:819:12:819:12 | (unsigned int)... | 1.0 | +| test.c:820:9:820:9 | (int)... | 2.0 | +| test.c:820:9:820:9 | n | 2.0 | +| test.c:822:9:822:9 | (int)... | 2.0 | +| test.c:822:9:822:9 | n | 2.0 | +| test.c:825:7:825:8 | ! ... | 1.0 | +| test.c:825:8:825:8 | n | 4.0 | +| test.c:826:9:826:9 | (int)... | 4.0 | +| test.c:826:9:826:9 | n | 4.0 | +| test.c:828:9:828:9 | (int)... | 4.0 | +| test.c:828:9:828:9 | n | 4.0 | +| test.c:831:10:831:10 | n | 13.0 | +| test.c:831:10:831:15 | ... != ... | 1.0 | +| test.c:831:15:831:15 | 0 | 1.0 | +| test.c:831:15:831:15 | (unsigned int)... | 1.0 | +| test.c:832:5:832:5 | n | 13.0 | +| test.c:832:5:832:7 | ... -- | 13.0 | +| test.c:835:7:835:7 | (int)... | 13.0 | +| test.c:835:7:835:7 | n | 13.0 | +| test.c:839:7:839:7 | (int)... | 1.0 | +| test.c:839:7:839:7 | n | 1.0 | +| test.c:839:7:839:11 | ... < ... | 1.0 | +| test.c:839:11:839:11 | 0 | 1.0 | +| test.c:842:7:842:7 | (int)... | 1.0 | +| test.c:842:7:842:7 | n | 1.0 | +| test.c:842:7:842:12 | ... == ... | 1.0 | +| test.c:842:12:842:12 | 0 | 1.0 | +| test.c:843:9:843:9 | (int)... | 1.0 | +| test.c:843:9:843:9 | n | 1.0 | +| test.c:845:9:845:9 | (int)... | 1.0 | +| test.c:845:9:845:9 | n | 1.0 | +| test.c:848:7:848:7 | n | 2.0 | +| test.c:849:9:849:9 | (int)... | 2.0 | +| test.c:849:9:849:9 | n | 2.0 | +| test.c:851:9:851:9 | (int)... | 2.0 | +| test.c:851:9:851:9 | n | 2.0 | +| test.c:854:10:854:10 | (int)... | 13.0 | +| test.c:854:10:854:10 | n | 12.0 | +| test.c:854:10:854:15 | ... != ... | 1.0 | +| test.c:854:15:854:15 | 0 | 1.0 | +| test.c:855:5:855:5 | n | 12.0 | +| test.c:855:5:855:7 | ... -- | 12.0 | +| test.c:858:7:858:7 | (int)... | 12.0 | +| test.c:858:7:858:7 | n | 12.0 | +| test.c:862:7:862:7 | (int)... | 1.0 | +| test.c:862:7:862:7 | n | 1.0 | +| test.c:862:7:862:12 | ... != ... | 1.0 | +| test.c:862:12:862:12 | 0 | 1.0 | +| test.c:863:9:863:9 | (int)... | 1.0 | +| test.c:863:9:863:9 | n | 1.0 | +| test.c:863:9:863:14 | ... >= ... | 1.0 | +| test.c:863:14:863:14 | 0 | 1.0 | +| test.c:864:11:864:11 | (int)... | 1.0 | +| test.c:864:11:864:11 | n | 1.0 | +| test.c:868:7:868:7 | (int)... | 2.0 | +| test.c:868:7:868:7 | n | 2.0 | | test.c:868:7:868:12 | ... >= ... | 1.0 | -| test.c:868:12:868:12 | 0 | 1.0 | -| test.c:869:5:869:5 | n | 4.0 | -| test.c:869:5:869:14 | ... ? ... : ... | 16.0 | -| test.c:869:10:869:10 | (int)... | 4.0 | -| test.c:869:10:869:10 | n | 4.0 | -| test.c:869:14:869:14 | (int)... | 4.0 | -| test.c:869:14:869:14 | n | 4.0 | -| test.c:870:5:870:6 | ! ... | 1.0 | -| test.c:870:5:870:14 | ... ? ... : ... | 64.0 | -| test.c:870:6:870:6 | n | 8.0 | -| test.c:870:10:870:10 | (int)... | 8.0 | -| test.c:870:10:870:10 | n | 8.0 | -| test.c:870:14:870:14 | (int)... | 8.0 | -| test.c:870:14:870:14 | n | 8.0 | -| test.c:881:7:881:8 | (unsigned long)... | 1.0 | -| test.c:881:7:881:8 | ss | 1.0 | -| test.c:881:7:881:22 | ... < ... | 1.0 | -| test.c:881:12:881:22 | sizeof(int) | 1.0 | -| test.c:882:9:882:10 | (int)... | 1.0 | -| test.c:882:9:882:10 | ss | 1.0 | -| test.c:885:7:885:8 | (int)... | 2.0 | -| test.c:885:7:885:8 | ss | 2.0 | -| test.c:885:7:885:17 | ... < ... | 1.0 | -| test.c:885:12:885:17 | 32769 | 1.0 | -| test.c:886:9:886:10 | (int)... | 2.0 | -| test.c:886:9:886:10 | ss | 2.0 | -| test.c:889:7:889:15 | (int)... | 1.0 | -| test.c:889:7:889:15 | (short)... | 1.0 | -| test.c:889:7:889:20 | ... >= ... | 1.0 | -| test.c:889:14:889:15 | us | 1.0 | -| test.c:889:20:889:20 | 0 | 1.0 | -| test.c:890:9:890:10 | (int)... | 1.0 | -| test.c:890:9:890:10 | us | 1.0 | -| test.c:893:7:893:15 | (int)... | 2.0 | -| test.c:893:7:893:15 | (short)... | 2.0 | -| test.c:893:7:893:21 | ... >= ... | 1.0 | -| test.c:893:14:893:15 | us | 2.0 | -| test.c:893:20:893:21 | - ... | 1.0 | -| test.c:893:21:893:21 | 1 | 1.0 | -| test.c:894:9:894:10 | (int)... | 2.0 | -| test.c:894:9:894:10 | us | 2.0 | -| test.c:897:7:897:8 | (unsigned long)... | 3.0 | -| test.c:897:7:897:8 | ss | 3.0 | -| test.c:897:7:897:23 | ... >= ... | 1.0 | -| test.c:897:13:897:23 | sizeof(int) | 1.0 | -| test.c:898:9:898:10 | (int)... | 3.0 | -| test.c:898:9:898:10 | ss | 3.0 | -| test.c:901:7:901:8 | (int)... | 4.0 | -| test.c:901:7:901:8 | ss | 4.0 | -| test.c:901:7:901:12 | (unsigned long)... | 4.0 | -| test.c:901:7:901:12 | ... + ... | 4.0 | -| test.c:901:7:901:26 | ... < ... | 1.0 | -| test.c:901:12:901:12 | 1 | 1.0 | -| test.c:901:16:901:26 | sizeof(int) | 1.0 | -| test.c:902:9:902:10 | (int)... | 4.0 | -| test.c:902:9:902:10 | ss | 4.0 | -| test.c:908:8:908:8 | s | 1.0 | -| test.c:908:8:908:12 | ... = ... | 1.0 | -| test.c:908:12:908:12 | 0 | 1.0 | -| test.c:908:15:908:15 | s | 13.0 | -| test.c:908:15:908:20 | ... < ... | 1.0 | -| test.c:908:19:908:20 | 10 | 1.0 | -| test.c:908:23:908:23 | s | 13.0 | -| test.c:908:23:908:25 | ... ++ | 13.0 | -| test.c:909:18:909:18 | s | 13.0 | -| test.c:909:18:909:22 | ... + ... | 13.0 | -| test.c:909:22:909:22 | s | 13.0 | -| test.c:910:9:910:14 | result | 13.0 | -| test.c:915:10:915:11 | 0 | 1.0 | -| test.c:916:7:916:7 | i | 1.0 | -| test.c:916:7:916:11 | ... < ... | 1.0 | -| test.c:916:11:916:11 | 0 | 1.0 | -| test.c:917:9:917:9 | i | 1.0 | -| test.c:920:20:920:20 | 0 | 1.0 | -| test.c:920:20:920:20 | (unsigned int)... | 1.0 | -| test.c:921:7:921:7 | u | 1.0 | -| test.c:921:7:921:11 | ... < ... | 1.0 | -| test.c:921:11:921:11 | 0 | 1.0 | -| test.c:921:11:921:11 | (unsigned int)... | 1.0 | -| test.c:922:9:922:9 | (int)... | 1.0 | -| test.c:922:9:922:9 | u | 1.0 | -| test.c:927:12:927:12 | s | 1.0 | -| test.c:927:12:927:16 | ... % ... | 1.0 | -| test.c:927:16:927:16 | 5 | 1.0 | -| test.c:928:7:928:8 | s2 | 1.0 | -| test.c:933:7:933:7 | x | 1.0 | -| test.c:934:9:934:9 | y | 1.0 | -| test.c:934:9:934:14 | ... != ... | 1.0 | -| test.c:934:14:934:14 | 0 | 1.0 | -| test.c:935:12:935:12 | 0 | 1.0 | -| test.c:938:7:938:7 | y | 2.0 | -| test.c:947:7:947:7 | x | 1.0 | -| test.c:947:7:947:13 | ... >= ... | 1.0 | -| test.c:947:12:947:13 | 10 | 1.0 | -| test.c:952:7:952:7 | x | 13.0 | -| test.c:957:16:957:26 | 2147483647 | 1.0 | -| test.c:958:16:958:19 | 256 | 1.0 | -| test.c:959:7:959:13 | (...) | 1.0 | -| test.c:959:7:959:20 | ... <= ... | 1.0 | -| test.c:959:8:959:8 | x | 1.0 | -| test.c:959:8:959:12 | ... + ... | 1.0 | -| test.c:959:12:959:12 | y | 1.0 | -| test.c:959:18:959:20 | 512 | 1.0 | -| test.c:960:9:960:9 | x | 1.0 | -| test.c:961:9:961:9 | y | 1.0 | +| test.c:868:12:868:12 | 5 | 1.0 | +| test.c:869:9:869:9 | 2 | 1.0 | +| test.c:869:9:869:13 | ... * ... | 2.0 | +| test.c:869:9:869:18 | ... - ... | 2.0 | +| test.c:869:9:869:23 | ... == ... | 1.0 | +| test.c:869:13:869:13 | (int)... | 2.0 | +| test.c:869:13:869:13 | n | 2.0 | +| test.c:869:17:869:18 | 10 | 1.0 | +| test.c:869:23:869:23 | 0 | 1.0 | +| test.c:872:9:872:9 | (int)... | 2.0 | +| test.c:872:9:872:9 | n | 2.0 | +| test.c:875:7:875:7 | (int)... | 3.0 | +| test.c:875:7:875:7 | n | 3.0 | +| test.c:875:7:875:17 | ... != ... | 1.0 | +| test.c:875:7:875:32 | ... && ... | 1.0 | +| test.c:875:12:875:17 | - ... | 1.0 | +| test.c:875:13:875:17 | 32768 | 1.0 | +| test.c:875:22:875:22 | (int)... | 3.0 | +| test.c:875:22:875:22 | n | 3.0 | +| test.c:875:22:875:32 | ... != ... | 1.0 | +| test.c:875:27:875:32 | - ... | 1.0 | +| test.c:875:28:875:32 | 32767 | 1.0 | +| test.c:876:9:876:9 | (int)... | 3.0 | +| test.c:876:9:876:9 | n | 3.0 | +| test.c:879:7:879:7 | (int)... | 4.0 | +| test.c:879:7:879:7 | n | 4.0 | +| test.c:879:7:879:12 | ... >= ... | 1.0 | +| test.c:879:12:879:12 | 0 | 1.0 | +| test.c:880:5:880:5 | n | 4.0 | +| test.c:880:5:880:14 | ... ? ... : ... | 16.0 | +| test.c:880:10:880:10 | (int)... | 4.0 | +| test.c:880:10:880:10 | n | 4.0 | +| test.c:880:14:880:14 | (int)... | 4.0 | +| test.c:880:14:880:14 | n | 4.0 | +| test.c:881:5:881:6 | ! ... | 1.0 | +| test.c:881:5:881:14 | ... ? ... : ... | 64.0 | +| test.c:881:6:881:6 | n | 8.0 | +| test.c:881:10:881:10 | (int)... | 8.0 | +| test.c:881:10:881:10 | n | 8.0 | +| test.c:881:14:881:14 | (int)... | 8.0 | +| test.c:881:14:881:14 | n | 8.0 | +| test.c:892:7:892:8 | (unsigned long)... | 1.0 | +| test.c:892:7:892:8 | ss | 1.0 | +| test.c:892:7:892:22 | ... < ... | 1.0 | +| test.c:892:12:892:22 | sizeof(int) | 1.0 | +| test.c:893:9:893:10 | (int)... | 1.0 | +| test.c:893:9:893:10 | ss | 1.0 | +| test.c:896:7:896:8 | (int)... | 2.0 | +| test.c:896:7:896:8 | ss | 2.0 | +| test.c:896:7:896:17 | ... < ... | 1.0 | +| test.c:896:12:896:17 | 32769 | 1.0 | +| test.c:897:9:897:10 | (int)... | 2.0 | +| test.c:897:9:897:10 | ss | 2.0 | +| test.c:900:7:900:15 | (int)... | 1.0 | +| test.c:900:7:900:15 | (short)... | 1.0 | +| test.c:900:7:900:20 | ... >= ... | 1.0 | +| test.c:900:14:900:15 | us | 1.0 | +| test.c:900:20:900:20 | 0 | 1.0 | +| test.c:901:9:901:10 | (int)... | 1.0 | +| test.c:901:9:901:10 | us | 1.0 | +| test.c:904:7:904:15 | (int)... | 2.0 | +| test.c:904:7:904:15 | (short)... | 2.0 | +| test.c:904:7:904:21 | ... >= ... | 1.0 | +| test.c:904:14:904:15 | us | 2.0 | +| test.c:904:20:904:21 | - ... | 1.0 | +| test.c:904:21:904:21 | 1 | 1.0 | +| test.c:905:9:905:10 | (int)... | 2.0 | +| test.c:905:9:905:10 | us | 2.0 | +| test.c:908:7:908:8 | (unsigned long)... | 3.0 | +| test.c:908:7:908:8 | ss | 3.0 | +| test.c:908:7:908:23 | ... >= ... | 1.0 | +| test.c:908:13:908:23 | sizeof(int) | 1.0 | +| test.c:909:9:909:10 | (int)... | 3.0 | +| test.c:909:9:909:10 | ss | 3.0 | +| test.c:912:7:912:8 | (int)... | 4.0 | +| test.c:912:7:912:8 | ss | 4.0 | +| test.c:912:7:912:12 | (unsigned long)... | 4.0 | +| test.c:912:7:912:12 | ... + ... | 4.0 | +| test.c:912:7:912:26 | ... < ... | 1.0 | +| test.c:912:12:912:12 | 1 | 1.0 | +| test.c:912:16:912:26 | sizeof(int) | 1.0 | +| test.c:913:9:913:10 | (int)... | 4.0 | +| test.c:913:9:913:10 | ss | 4.0 | +| test.c:919:8:919:8 | s | 1.0 | +| test.c:919:8:919:12 | ... = ... | 1.0 | +| test.c:919:12:919:12 | 0 | 1.0 | +| test.c:919:15:919:15 | s | 13.0 | +| test.c:919:15:919:20 | ... < ... | 1.0 | +| test.c:919:19:919:20 | 10 | 1.0 | +| test.c:919:23:919:23 | s | 13.0 | +| test.c:919:23:919:25 | ... ++ | 13.0 | +| test.c:920:18:920:18 | s | 13.0 | +| test.c:920:18:920:22 | ... + ... | 13.0 | +| test.c:920:22:920:22 | s | 13.0 | +| test.c:921:9:921:14 | result | 13.0 | +| test.c:926:10:926:11 | 0 | 1.0 | +| test.c:927:7:927:7 | i | 1.0 | +| test.c:927:7:927:11 | ... < ... | 1.0 | +| test.c:927:11:927:11 | 0 | 1.0 | +| test.c:928:9:928:9 | i | 1.0 | +| test.c:931:20:931:20 | 0 | 1.0 | +| test.c:931:20:931:20 | (unsigned int)... | 1.0 | +| test.c:932:7:932:7 | u | 1.0 | +| test.c:932:7:932:11 | ... < ... | 1.0 | +| test.c:932:11:932:11 | 0 | 1.0 | +| test.c:932:11:932:11 | (unsigned int)... | 1.0 | +| test.c:933:9:933:9 | (int)... | 1.0 | +| test.c:933:9:933:9 | u | 1.0 | +| test.c:938:12:938:12 | s | 1.0 | +| test.c:938:12:938:16 | ... % ... | 1.0 | +| test.c:938:16:938:16 | 5 | 1.0 | +| test.c:939:7:939:8 | s2 | 1.0 | +| test.c:944:7:944:7 | x | 1.0 | +| test.c:945:9:945:9 | y | 1.0 | +| test.c:945:9:945:14 | ... != ... | 1.0 | +| test.c:945:14:945:14 | 0 | 1.0 | +| test.c:946:12:946:12 | 0 | 1.0 | +| test.c:949:7:949:7 | y | 2.0 | +| test.c:958:7:958:7 | x | 1.0 | +| test.c:958:7:958:13 | ... >= ... | 1.0 | +| test.c:958:12:958:13 | 10 | 1.0 | +| test.c:963:7:963:7 | x | 13.0 | +| test.c:968:16:968:26 | 2147483647 | 1.0 | +| test.c:969:16:969:19 | 256 | 1.0 | +| test.c:970:7:970:13 | (...) | 1.0 | +| test.c:970:7:970:20 | ... <= ... | 1.0 | +| test.c:970:8:970:8 | x | 1.0 | +| test.c:970:8:970:12 | ... + ... | 1.0 | +| test.c:970:12:970:12 | y | 1.0 | +| test.c:970:18:970:20 | 512 | 1.0 | +| test.c:971:9:971:9 | x | 1.0 | +| test.c:972:9:972:9 | y | 1.0 | | test.cpp:9:11:9:12 | - ... | 1.0 | | test.cpp:9:12:9:12 | 1 | 1.0 | | test.cpp:10:7:10:7 | (bool)... | 1.0 | diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryLower.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryLower.expected index 3edc677b717..f4e3cdb8cc2 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryLower.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryLower.expected @@ -1,148 +1,153 @@ | test.c:154:10:154:40 | ... ? ... : ... | -1.0 | 1.0 | -1.0 | -| test.c:367:8:367:23 | ... ? ... : ... | 0.0 | 0.0 | 10.0 | -| test.c:368:8:368:24 | ... ? ... : ... | 0.0 | 10.0 | 0.0 | -| test.c:376:10:376:15 | ... ? ... : ... | 0.0 | 0.0 | 5.0 | -| test.c:377:10:377:17 | ... ? ... : ... | 0.0 | 0.0 | 500.0 | -| test.c:378:10:378:21 | ... ? ... : ... | 1.0 | 1.0 | 500.0 | -| test.c:379:10:379:36 | ... ? ... : ... | 0.0 | 1.0 | 5.0 | -| test.c:380:10:380:38 | ... ? ... : ... | 0.0 | 1.0 | 500.0 | -| test.c:381:10:381:39 | ... ? ... : ... | 1.0 | 1.0 | 500.0 | -| test.c:389:8:389:24 | ... ? ... : ... | 101.0 | 101.0 | 110.0 | -| test.c:390:8:390:25 | ... ? ... : ... | 101.0 | 110.0 | 101.0 | -| test.c:395:10:395:21 | ... ? ... : ... | 0.0 | 0.0 | 5.0 | -| test.c:396:10:396:21 | ... ? ... : ... | 100.0 | 100.0 | 5.0 | -| test.c:397:10:397:38 | ... ? ... : ... | 0.0 | 100.0 | 5.0 | -| test.c:404:14:404:108 | ... ? ... : ... | 0.14333887 | 0.14333887 | 0.40496805 | -| test.c:404:18:404:95 | ... ? ... : ... | 0.14333887 | 0.14333887 | 0.21540225 | -| test.c:404:22:404:82 | ... ? ... : ... | 0.14333887 | 0.14333887 | 0.39206458 | -| test.c:404:26:404:69 | ... ? ... : ... | 0.14333887 | 0.14333887 | 0.35279203 | -| test.c:404:30:404:56 | ... ? ... : ... | 0.14333887 | 0.47438827 | 0.14333887 | -| test.c:405:14:405:108 | ... ? ... : ... | 0.22247853 | 0.22247853 | 0.5297741 | -| test.c:405:18:405:95 | ... ? ... : ... | 0.22247853 | 0.22247853 | 0.59270465 | -| test.c:405:22:405:82 | ... ? ... : ... | 0.22247853 | 0.22247853 | 0.32661893 | -| test.c:405:26:405:69 | ... ? ... : ... | 0.22247853 | 0.34183348 | 0.22247853 | -| test.c:405:30:405:56 | ... ? ... : ... | 0.34183348 | 0.34183348 | 0.3533464 | -| test.c:406:14:406:108 | ... ? ... : ... | 0.05121256 | 0.05121256 | 0.67981451 | -| test.c:406:18:406:95 | ... ? ... : ... | 0.05121256 | 0.05121256 | 0.79310745 | -| test.c:406:22:406:82 | ... ? ... : ... | 0.05121256 | 0.31235514 | 0.05121256 | -| test.c:406:26:406:69 | ... ? ... : ... | 0.31235514 | 0.31478084 | 0.31235514 | -| test.c:406:30:406:56 | ... ? ... : ... | 0.31478084 | 0.77429603 | 0.31478084 | -| test.c:407:14:407:108 | ... ? ... : ... | 0.36976948 | 0.36976948 | 0.83866835 | -| test.c:407:18:407:95 | ... ? ... : ... | 0.36976948 | 0.44729556 | 0.36976948 | -| test.c:407:22:407:82 | ... ? ... : ... | 0.44729556 | 0.44729556 | 0.59952732 | -| test.c:407:26:407:69 | ... ? ... : ... | 0.44729556 | 0.44729556 | 0.98997262 | -| test.c:407:30:407:56 | ... ? ... : ... | 0.44729556 | 0.44729556 | 0.80599202 | -| test.c:408:14:408:108 | ... ? ... : ... | 0.10597712 | 0.10597712 | 0.68734874 | -| test.c:408:18:408:95 | ... ? ... : ... | 0.10597712 | 0.10597712 | 0.72485966 | -| test.c:408:22:408:82 | ... ? ... : ... | 0.10597712 | 0.10597712 | 0.21778426 | -| test.c:408:26:408:69 | ... ? ... : ... | 0.10597712 | 0.49311828 | 0.10597712 | -| test.c:408:30:408:56 | ... ? ... : ... | 0.49311828 | 0.49311828 | 0.90389911 | -| test.c:409:14:409:108 | ... ? ... : ... | 0.1078665 | 0.1078665 | 0.58440865 | -| test.c:409:18:409:95 | ... ? ... : ... | 0.1078665 | 0.1078665 | 0.34808892 | -| test.c:409:22:409:82 | ... ? ... : ... | 0.1078665 | 0.1078665 | 0.76164052 | -| test.c:409:26:409:69 | ... ? ... : ... | 0.1078665 | 0.1078665 | 0.11884576 | -| test.c:409:30:409:56 | ... ? ... : ... | 0.1078665 | 0.47452848 | 0.1078665 | -| test.c:410:14:410:108 | ... ? ... : ... | 0.02524326 | 0.02524326 | 0.36232384 | -| test.c:410:18:410:95 | ... ? ... : ... | 0.02524326 | 0.02524326 | 0.85235179 | -| test.c:410:22:410:82 | ... ? ... : ... | 0.02524326 | 0.02524326 | 0.12516558 | -| test.c:410:26:410:69 | ... ? ... : ... | 0.02524326 | 0.02524326 | 0.95823075 | -| test.c:410:30:410:56 | ... ? ... : ... | 0.02524326 | 0.02524326 | 0.82905046 | -| test.c:411:14:411:108 | ... ? ... : ... | 0.14963485 | 0.14963485 | 0.84331272 | -| test.c:411:18:411:95 | ... ? ... : ... | 0.14963485 | 0.14963485 | 0.48640909 | -| test.c:411:22:411:82 | ... ? ... : ... | 0.14963485 | 0.14963485 | 0.45041108 | -| test.c:411:26:411:69 | ... ? ... : ... | 0.14963485 | 0.32876044 | 0.14963485 | -| test.c:411:30:411:56 | ... ? ... : ... | 0.32876044 | 0.38708626 | 0.32876044 | -| test.c:412:14:412:108 | ... ? ... : ... | 0.05328182 | 0.14800508 | 0.05328182 | -| test.c:412:18:412:95 | ... ? ... : ... | 0.14800508 | 0.14800508 | 0.37428143 | -| test.c:412:22:412:82 | ... ? ... : ... | 0.14800508 | 0.15755063 | 0.14800508 | -| test.c:412:26:412:69 | ... ? ... : ... | 0.15755063 | 0.15755063 | 0.26428481 | -| test.c:412:30:412:56 | ... ? ... : ... | 0.15755063 | 0.15755063 | 0.77086833 | -| test.c:413:14:413:108 | ... ? ... : ... | 0.27643238 | 0.27643238 | 0.69072144 | -| test.c:413:18:413:95 | ... ? ... : ... | 0.27643238 | 0.27643238 | 0.39468857 | -| test.c:413:22:413:82 | ... ? ... : ... | 0.27643238 | 0.27643238 | 0.55679274 | -| test.c:413:26:413:69 | ... ? ... : ... | 0.27643238 | 0.41736536 | 0.27643238 | -| test.c:413:30:413:56 | ... ? ... : ... | 0.41736536 | 0.41736536 | 0.76826628 | -| test.c:414:14:414:108 | ... ? ... : ... | 0.2051911 | 0.2051911 | 0.81372798 | -| test.c:414:18:414:95 | ... ? ... : ... | 0.2051911 | 0.2051911 | 0.88745559 | -| test.c:414:22:414:82 | ... ? ... : ... | 0.2051911 | 0.29904824 | 0.2051911 | -| test.c:414:26:414:69 | ... ? ... : ... | 0.29904824 | 0.29904824 | 0.76242583 | -| test.c:414:30:414:56 | ... ? ... : ... | 0.29904824 | 0.88955345 | 0.29904824 | -| test.c:415:14:415:108 | ... ? ... : ... | 0.13204114 | 0.13204114 | 0.42762647 | -| test.c:415:18:415:95 | ... ? ... : ... | 0.13204114 | 0.13204114 | 0.52031241 | -| test.c:415:22:415:82 | ... ? ... : ... | 0.13204114 | 0.42186276 | 0.13204114 | -| test.c:415:26:415:69 | ... ? ... : ... | 0.42186276 | 0.42186276 | 0.44996679 | -| test.c:415:30:415:56 | ... ? ... : ... | 0.42186276 | 0.42186276 | 0.53843358 | -| test.c:457:4:631:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:457:5:459:49 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:460:6:542:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:461:8:479:41 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:464:10:468:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:464:31:464:79 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:466:13:468:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:473:12:478:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:474:12:474:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:476:15:478:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:480:6:499:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:483:8:487:19 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:483:29:483:77 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:485:11:487:19 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:488:6:488:54 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:492:10:496:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:492:31:492:79 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:494:13:496:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:497:9:499:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:501:10:520:43 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:504:12:509:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:505:12:505:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:507:15:509:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:514:14:519:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:515:14:515:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:517:17:519:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:521:9:542:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:524:14:529:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:525:14:525:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:527:17:529:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:530:12:530:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:534:12:539:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:535:12:535:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:537:15:539:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:540:11:542:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:543:9:545:51 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:546:9:631:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:547:14:566:47 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:550:16:555:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:551:16:551:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:553:19:555:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:560:18:565:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:561:18:561:66 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:563:21:565:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:567:12:588:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:570:14:575:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:571:14:571:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:573:17:575:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:576:12:576:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:580:16:585:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:581:16:581:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:583:19:585:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:586:15:588:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:590:12:609:45 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:593:14:598:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:594:14:594:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:596:17:598:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:603:16:608:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:604:16:604:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:606:19:608:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:610:11:631:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:613:16:618:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:614:16:614:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:616:19:618:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:619:14:619:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:623:14:628:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:624:14:624:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:626:17:628:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:629:13:631:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:657:20:657:36 | ... ? ... : ... | 0.0 | 0.0 | 100.0 | -| test.c:869:5:869:14 | ... ? ... : ... | 0.0 | 1.0 | 0.0 | -| test.c:870:5:870:14 | ... ? ... : ... | 0.0 | 0.0 | 1.0 | +| test.c:348:22:348:44 | ... ? ... : ... | 0.5 | 0.5 | 2.0 | +| test.c:349:20:349:43 | ... ? ... : ... | 0.0 | 0.0 | 2.0 | +| test.c:350:22:350:44 | ... ? ... : ... | 0.33333333333333337 | 0.33333333333333337 | 2.0 | +| test.c:351:22:351:44 | ... ? ... : ... | 0.5 | 0.5 | 2.0 | +| test.c:352:22:352:45 | ... ? ... : ... | 2.0 | 8.5 | 2.0 | +| test.c:378:8:378:23 | ... ? ... : ... | 0.0 | 0.0 | 10.0 | +| test.c:379:8:379:24 | ... ? ... : ... | 0.0 | 10.0 | 0.0 | +| test.c:387:10:387:15 | ... ? ... : ... | 0.0 | 0.0 | 5.0 | +| test.c:388:10:388:17 | ... ? ... : ... | 0.0 | 0.0 | 500.0 | +| test.c:389:10:389:21 | ... ? ... : ... | 1.0 | 1.0 | 500.0 | +| test.c:390:10:390:36 | ... ? ... : ... | 0.0 | 1.0 | 5.0 | +| test.c:391:10:391:38 | ... ? ... : ... | 0.0 | 1.0 | 500.0 | +| test.c:392:10:392:39 | ... ? ... : ... | 1.0 | 1.0 | 500.0 | +| test.c:400:8:400:24 | ... ? ... : ... | 101.0 | 101.0 | 110.0 | +| test.c:401:8:401:25 | ... ? ... : ... | 101.0 | 110.0 | 101.0 | +| test.c:406:10:406:21 | ... ? ... : ... | 0.0 | 0.0 | 5.0 | +| test.c:407:10:407:21 | ... ? ... : ... | 100.0 | 100.0 | 5.0 | +| test.c:408:10:408:38 | ... ? ... : ... | 0.0 | 100.0 | 5.0 | +| test.c:415:14:415:108 | ... ? ... : ... | 0.14333887 | 0.14333887 | 0.40496805 | +| test.c:415:18:415:95 | ... ? ... : ... | 0.14333887 | 0.14333887 | 0.21540225 | +| test.c:415:22:415:82 | ... ? ... : ... | 0.14333887 | 0.14333887 | 0.39206458 | +| test.c:415:26:415:69 | ... ? ... : ... | 0.14333887 | 0.14333887 | 0.35279203 | +| test.c:415:30:415:56 | ... ? ... : ... | 0.14333887 | 0.47438827 | 0.14333887 | +| test.c:416:14:416:108 | ... ? ... : ... | 0.22247853 | 0.22247853 | 0.5297741 | +| test.c:416:18:416:95 | ... ? ... : ... | 0.22247853 | 0.22247853 | 0.59270465 | +| test.c:416:22:416:82 | ... ? ... : ... | 0.22247853 | 0.22247853 | 0.32661893 | +| test.c:416:26:416:69 | ... ? ... : ... | 0.22247853 | 0.34183348 | 0.22247853 | +| test.c:416:30:416:56 | ... ? ... : ... | 0.34183348 | 0.34183348 | 0.3533464 | +| test.c:417:14:417:108 | ... ? ... : ... | 0.05121256 | 0.05121256 | 0.67981451 | +| test.c:417:18:417:95 | ... ? ... : ... | 0.05121256 | 0.05121256 | 0.79310745 | +| test.c:417:22:417:82 | ... ? ... : ... | 0.05121256 | 0.31235514 | 0.05121256 | +| test.c:417:26:417:69 | ... ? ... : ... | 0.31235514 | 0.31478084 | 0.31235514 | +| test.c:417:30:417:56 | ... ? ... : ... | 0.31478084 | 0.77429603 | 0.31478084 | +| test.c:418:14:418:108 | ... ? ... : ... | 0.36976948 | 0.36976948 | 0.83866835 | +| test.c:418:18:418:95 | ... ? ... : ... | 0.36976948 | 0.44729556 | 0.36976948 | +| test.c:418:22:418:82 | ... ? ... : ... | 0.44729556 | 0.44729556 | 0.59952732 | +| test.c:418:26:418:69 | ... ? ... : ... | 0.44729556 | 0.44729556 | 0.98997262 | +| test.c:418:30:418:56 | ... ? ... : ... | 0.44729556 | 0.44729556 | 0.80599202 | +| test.c:419:14:419:108 | ... ? ... : ... | 0.10597712 | 0.10597712 | 0.68734874 | +| test.c:419:18:419:95 | ... ? ... : ... | 0.10597712 | 0.10597712 | 0.72485966 | +| test.c:419:22:419:82 | ... ? ... : ... | 0.10597712 | 0.10597712 | 0.21778426 | +| test.c:419:26:419:69 | ... ? ... : ... | 0.10597712 | 0.49311828 | 0.10597712 | +| test.c:419:30:419:56 | ... ? ... : ... | 0.49311828 | 0.49311828 | 0.90389911 | +| test.c:420:14:420:108 | ... ? ... : ... | 0.1078665 | 0.1078665 | 0.58440865 | +| test.c:420:18:420:95 | ... ? ... : ... | 0.1078665 | 0.1078665 | 0.34808892 | +| test.c:420:22:420:82 | ... ? ... : ... | 0.1078665 | 0.1078665 | 0.76164052 | +| test.c:420:26:420:69 | ... ? ... : ... | 0.1078665 | 0.1078665 | 0.11884576 | +| test.c:420:30:420:56 | ... ? ... : ... | 0.1078665 | 0.47452848 | 0.1078665 | +| test.c:421:14:421:108 | ... ? ... : ... | 0.02524326 | 0.02524326 | 0.36232384 | +| test.c:421:18:421:95 | ... ? ... : ... | 0.02524326 | 0.02524326 | 0.85235179 | +| test.c:421:22:421:82 | ... ? ... : ... | 0.02524326 | 0.02524326 | 0.12516558 | +| test.c:421:26:421:69 | ... ? ... : ... | 0.02524326 | 0.02524326 | 0.95823075 | +| test.c:421:30:421:56 | ... ? ... : ... | 0.02524326 | 0.02524326 | 0.82905046 | +| test.c:422:14:422:108 | ... ? ... : ... | 0.14963485 | 0.14963485 | 0.84331272 | +| test.c:422:18:422:95 | ... ? ... : ... | 0.14963485 | 0.14963485 | 0.48640909 | +| test.c:422:22:422:82 | ... ? ... : ... | 0.14963485 | 0.14963485 | 0.45041108 | +| test.c:422:26:422:69 | ... ? ... : ... | 0.14963485 | 0.32876044 | 0.14963485 | +| test.c:422:30:422:56 | ... ? ... : ... | 0.32876044 | 0.38708626 | 0.32876044 | +| test.c:423:14:423:108 | ... ? ... : ... | 0.05328182 | 0.14800508 | 0.05328182 | +| test.c:423:18:423:95 | ... ? ... : ... | 0.14800508 | 0.14800508 | 0.37428143 | +| test.c:423:22:423:82 | ... ? ... : ... | 0.14800508 | 0.15755063 | 0.14800508 | +| test.c:423:26:423:69 | ... ? ... : ... | 0.15755063 | 0.15755063 | 0.26428481 | +| test.c:423:30:423:56 | ... ? ... : ... | 0.15755063 | 0.15755063 | 0.77086833 | +| test.c:424:14:424:108 | ... ? ... : ... | 0.27643238 | 0.27643238 | 0.69072144 | +| test.c:424:18:424:95 | ... ? ... : ... | 0.27643238 | 0.27643238 | 0.39468857 | +| test.c:424:22:424:82 | ... ? ... : ... | 0.27643238 | 0.27643238 | 0.55679274 | +| test.c:424:26:424:69 | ... ? ... : ... | 0.27643238 | 0.41736536 | 0.27643238 | +| test.c:424:30:424:56 | ... ? ... : ... | 0.41736536 | 0.41736536 | 0.76826628 | +| test.c:425:14:425:108 | ... ? ... : ... | 0.2051911 | 0.2051911 | 0.81372798 | +| test.c:425:18:425:95 | ... ? ... : ... | 0.2051911 | 0.2051911 | 0.88745559 | +| test.c:425:22:425:82 | ... ? ... : ... | 0.2051911 | 0.29904824 | 0.2051911 | +| test.c:425:26:425:69 | ... ? ... : ... | 0.29904824 | 0.29904824 | 0.76242583 | +| test.c:425:30:425:56 | ... ? ... : ... | 0.29904824 | 0.88955345 | 0.29904824 | +| test.c:426:14:426:108 | ... ? ... : ... | 0.13204114 | 0.13204114 | 0.42762647 | +| test.c:426:18:426:95 | ... ? ... : ... | 0.13204114 | 0.13204114 | 0.52031241 | +| test.c:426:22:426:82 | ... ? ... : ... | 0.13204114 | 0.42186276 | 0.13204114 | +| test.c:426:26:426:69 | ... ? ... : ... | 0.42186276 | 0.42186276 | 0.44996679 | +| test.c:426:30:426:56 | ... ? ... : ... | 0.42186276 | 0.42186276 | 0.53843358 | +| test.c:468:4:642:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:468:5:470:49 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:471:6:553:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:472:8:490:41 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:475:10:479:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:475:31:475:79 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:477:13:479:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:484:12:489:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:485:12:485:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:487:15:489:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:491:6:510:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:494:8:498:19 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:494:29:494:77 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:496:11:498:19 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:499:6:499:54 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:503:10:507:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:503:31:503:79 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:505:13:507:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:508:9:510:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:512:10:531:43 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:515:12:520:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:516:12:516:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:518:15:520:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:525:14:530:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:526:14:526:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:528:17:530:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:532:9:553:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:535:14:540:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:536:14:536:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:538:17:540:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:541:12:541:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:545:12:550:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:546:12:546:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:548:15:550:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:551:11:553:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:554:9:556:51 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:557:9:642:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:558:14:577:47 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:561:16:566:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:562:16:562:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:564:19:566:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:571:18:576:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:572:18:572:66 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:574:21:576:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:578:12:599:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:581:14:586:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:582:14:582:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:584:17:586:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:587:12:587:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:591:16:596:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:592:16:592:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:594:19:596:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:597:15:599:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:601:12:620:45 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:604:14:609:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:605:14:605:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:607:17:609:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:614:16:619:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:615:16:615:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:617:19:619:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:621:11:642:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:624:16:629:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:625:16:625:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:627:19:629:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:630:14:630:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:634:14:639:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:635:14:635:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:637:17:639:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:640:13:642:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | +| test.c:668:20:668:36 | ... ? ... : ... | 0.0 | 0.0 | 100.0 | +| test.c:880:5:880:14 | ... ? ... : ... | 0.0 | 1.0 | 0.0 | +| test.c:881:5:881:14 | ... ? ... : ... | 0.0 | 0.0 | 1.0 | | test.cpp:121:3:121:12 | ... ? ... : ... | 0.0 | 1.0 | 0.0 | | test.cpp:122:3:122:12 | ... ? ... : ... | 0.0 | 0.0 | 1.0 | diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryUpper.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryUpper.expected index 9ffdab9467c..529b6ea83f1 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryUpper.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryUpper.expected @@ -1,148 +1,153 @@ | test.c:154:10:154:40 | ... ? ... : ... | 2.147483647E9 | 2.147483647E9 | -1.0 | -| test.c:367:8:367:23 | ... ? ... : ... | 99.0 | 99.0 | 10.0 | -| test.c:368:8:368:24 | ... ? ... : ... | 99.0 | 10.0 | 99.0 | -| test.c:376:10:376:15 | ... ? ... : ... | 299.0 | 299.0 | 5.0 | -| test.c:377:10:377:17 | ... ? ... : ... | 500.0 | 299.0 | 500.0 | -| test.c:378:10:378:21 | ... ? ... : ... | 300.0 | 300.0 | 500.0 | -| test.c:379:10:379:36 | ... ? ... : ... | 255.0 | 300.0 | 5.0 | -| test.c:380:10:380:38 | ... ? ... : ... | 500.0 | 300.0 | 500.0 | -| test.c:381:10:381:39 | ... ? ... : ... | 300.0 | 300.0 | 500.0 | -| test.c:389:8:389:24 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 110.0 | -| test.c:390:8:390:25 | ... ? ... : ... | 4.294967295E9 | 110.0 | 4.294967295E9 | -| test.c:395:10:395:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 5.0 | -| test.c:396:10:396:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 5.0 | -| test.c:397:10:397:38 | ... ? ... : ... | 255.0 | 4.294967295E9 | 5.0 | -| test.c:404:14:404:108 | ... ? ... : ... | 0.47438827 | 0.47438827 | 0.40496805 | -| test.c:404:18:404:95 | ... ? ... : ... | 0.47438827 | 0.47438827 | 0.21540225 | -| test.c:404:22:404:82 | ... ? ... : ... | 0.47438827 | 0.47438827 | 0.39206458 | -| test.c:404:26:404:69 | ... ? ... : ... | 0.47438827 | 0.47438827 | 0.35279203 | -| test.c:404:30:404:56 | ... ? ... : ... | 0.47438827 | 0.47438827 | 0.14333887 | -| test.c:405:14:405:108 | ... ? ... : ... | 0.59270465 | 0.59270465 | 0.5297741 | -| test.c:405:18:405:95 | ... ? ... : ... | 0.59270465 | 0.3533464 | 0.59270465 | -| test.c:405:22:405:82 | ... ? ... : ... | 0.3533464 | 0.3533464 | 0.32661893 | -| test.c:405:26:405:69 | ... ? ... : ... | 0.3533464 | 0.3533464 | 0.22247853 | -| test.c:405:30:405:56 | ... ? ... : ... | 0.3533464 | 0.34183348 | 0.3533464 | -| test.c:406:14:406:108 | ... ? ... : ... | 0.79310745 | 0.79310745 | 0.67981451 | -| test.c:406:18:406:95 | ... ? ... : ... | 0.79310745 | 0.77429603 | 0.79310745 | -| test.c:406:22:406:82 | ... ? ... : ... | 0.77429603 | 0.77429603 | 0.05121256 | -| test.c:406:26:406:69 | ... ? ... : ... | 0.77429603 | 0.77429603 | 0.31235514 | -| test.c:406:30:406:56 | ... ? ... : ... | 0.77429603 | 0.77429603 | 0.31478084 | -| test.c:407:14:407:108 | ... ? ... : ... | 0.98997262 | 0.98997262 | 0.83866835 | -| test.c:407:18:407:95 | ... ? ... : ... | 0.98997262 | 0.98997262 | 0.36976948 | -| test.c:407:22:407:82 | ... ? ... : ... | 0.98997262 | 0.98997262 | 0.59952732 | -| test.c:407:26:407:69 | ... ? ... : ... | 0.98997262 | 0.80599202 | 0.98997262 | -| test.c:407:30:407:56 | ... ? ... : ... | 0.80599202 | 0.44729556 | 0.80599202 | -| test.c:408:14:408:108 | ... ? ... : ... | 0.90389911 | 0.90389911 | 0.68734874 | -| test.c:408:18:408:95 | ... ? ... : ... | 0.90389911 | 0.90389911 | 0.72485966 | -| test.c:408:22:408:82 | ... ? ... : ... | 0.90389911 | 0.90389911 | 0.21778426 | -| test.c:408:26:408:69 | ... ? ... : ... | 0.90389911 | 0.90389911 | 0.10597712 | -| test.c:408:30:408:56 | ... ? ... : ... | 0.90389911 | 0.49311828 | 0.90389911 | -| test.c:409:14:409:108 | ... ? ... : ... | 0.76164052 | 0.76164052 | 0.58440865 | -| test.c:409:18:409:95 | ... ? ... : ... | 0.76164052 | 0.76164052 | 0.34808892 | -| test.c:409:22:409:82 | ... ? ... : ... | 0.76164052 | 0.47452848 | 0.76164052 | -| test.c:409:26:409:69 | ... ? ... : ... | 0.47452848 | 0.47452848 | 0.11884576 | -| test.c:409:30:409:56 | ... ? ... : ... | 0.47452848 | 0.47452848 | 0.1078665 | -| test.c:410:14:410:108 | ... ? ... : ... | 0.95823075 | 0.95823075 | 0.36232384 | -| test.c:410:18:410:95 | ... ? ... : ... | 0.95823075 | 0.95823075 | 0.85235179 | -| test.c:410:22:410:82 | ... ? ... : ... | 0.95823075 | 0.95823075 | 0.12516558 | -| test.c:410:26:410:69 | ... ? ... : ... | 0.95823075 | 0.82905046 | 0.95823075 | -| test.c:410:30:410:56 | ... ? ... : ... | 0.82905046 | 0.02524326 | 0.82905046 | -| test.c:411:14:411:108 | ... ? ... : ... | 0.84331272 | 0.48640909 | 0.84331272 | -| test.c:411:18:411:95 | ... ? ... : ... | 0.48640909 | 0.45041108 | 0.48640909 | -| test.c:411:22:411:82 | ... ? ... : ... | 0.45041108 | 0.38708626 | 0.45041108 | -| test.c:411:26:411:69 | ... ? ... : ... | 0.38708626 | 0.38708626 | 0.14963485 | -| test.c:411:30:411:56 | ... ? ... : ... | 0.38708626 | 0.38708626 | 0.32876044 | -| test.c:412:14:412:108 | ... ? ... : ... | 0.77086833 | 0.77086833 | 0.05328182 | -| test.c:412:18:412:95 | ... ? ... : ... | 0.77086833 | 0.77086833 | 0.37428143 | -| test.c:412:22:412:82 | ... ? ... : ... | 0.77086833 | 0.77086833 | 0.14800508 | -| test.c:412:26:412:69 | ... ? ... : ... | 0.77086833 | 0.77086833 | 0.26428481 | -| test.c:412:30:412:56 | ... ? ... : ... | 0.77086833 | 0.15755063 | 0.77086833 | -| test.c:413:14:413:108 | ... ? ... : ... | 0.76826628 | 0.76826628 | 0.69072144 | -| test.c:413:18:413:95 | ... ? ... : ... | 0.76826628 | 0.76826628 | 0.39468857 | -| test.c:413:22:413:82 | ... ? ... : ... | 0.76826628 | 0.76826628 | 0.55679274 | -| test.c:413:26:413:69 | ... ? ... : ... | 0.76826628 | 0.76826628 | 0.27643238 | -| test.c:413:30:413:56 | ... ? ... : ... | 0.76826628 | 0.41736536 | 0.76826628 | -| test.c:414:14:414:108 | ... ? ... : ... | 0.88955345 | 0.88955345 | 0.81372798 | -| test.c:414:18:414:95 | ... ? ... : ... | 0.88955345 | 0.88955345 | 0.88745559 | -| test.c:414:22:414:82 | ... ? ... : ... | 0.88955345 | 0.88955345 | 0.2051911 | -| test.c:414:26:414:69 | ... ? ... : ... | 0.88955345 | 0.88955345 | 0.76242583 | -| test.c:414:30:414:56 | ... ? ... : ... | 0.88955345 | 0.88955345 | 0.29904824 | -| test.c:415:14:415:108 | ... ? ... : ... | 0.53843358 | 0.53843358 | 0.42762647 | -| test.c:415:18:415:95 | ... ? ... : ... | 0.53843358 | 0.53843358 | 0.52031241 | -| test.c:415:22:415:82 | ... ? ... : ... | 0.53843358 | 0.53843358 | 0.13204114 | -| test.c:415:26:415:69 | ... ? ... : ... | 0.53843358 | 0.53843358 | 0.44996679 | -| test.c:415:30:415:56 | ... ? ... : ... | 0.53843358 | 0.42186276 | 0.53843358 | -| test.c:457:4:631:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:457:5:459:49 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:460:6:542:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:461:8:479:41 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:464:10:468:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:464:31:464:79 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:466:13:468:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:473:12:478:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:474:12:474:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:476:15:478:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:480:6:499:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:483:8:487:19 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:483:29:483:77 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:485:11:487:19 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:488:6:488:54 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:492:10:496:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:492:31:492:79 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:494:13:496:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:497:9:499:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:501:10:520:43 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:504:12:509:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:505:12:505:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:507:15:509:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:514:14:519:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:515:14:515:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:517:17:519:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:521:9:542:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:524:14:529:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:525:14:525:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:527:17:529:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:530:12:530:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:534:12:539:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:535:12:535:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:537:15:539:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:540:11:542:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:543:9:545:51 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:546:9:631:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:547:14:566:47 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:550:16:555:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:551:16:551:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:553:19:555:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:560:18:565:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:561:18:561:66 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:563:21:565:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:567:12:588:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:570:14:575:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:571:14:571:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:573:17:575:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:576:12:576:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:580:16:585:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:581:16:581:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:583:19:585:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:586:15:588:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:590:12:609:45 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:593:14:598:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:594:14:594:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:596:17:598:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:603:16:608:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:604:16:604:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:606:19:608:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:610:11:631:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:613:16:618:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:614:16:614:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:616:19:618:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:619:14:619:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:623:14:628:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:624:14:624:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:626:17:628:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:629:13:631:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:657:20:657:36 | ... ? ... : ... | 100.0 | 99.0 | 100.0 | -| test.c:869:5:869:14 | ... ? ... : ... | 32767.0 | 32767.0 | 0.0 | -| test.c:870:5:870:14 | ... ? ... : ... | 32767.0 | 0.0 | 32767.0 | +| test.c:348:22:348:44 | ... ? ... : ... | 2.147483647E9 | 2.147483647E9 | 2.0 | +| test.c:349:20:349:43 | ... ? ... : ... | 2.147483647E9 | 2.147483647E9 | 2.0 | +| test.c:350:22:350:44 | ... ? ... : ... | 1.4316557643333333E9 | 1.4316557643333333E9 | 2.0 | +| test.c:351:22:351:44 | ... ? ... : ... | 2.147483647E9 | 2.147483647E9 | 2.0 | +| test.c:352:22:352:45 | ... ? ... : ... | 2.147483647E9 | 2.147483647E9 | 2.0 | +| test.c:378:8:378:23 | ... ? ... : ... | 99.0 | 99.0 | 10.0 | +| test.c:379:8:379:24 | ... ? ... : ... | 99.0 | 10.0 | 99.0 | +| test.c:387:10:387:15 | ... ? ... : ... | 299.0 | 299.0 | 5.0 | +| test.c:388:10:388:17 | ... ? ... : ... | 500.0 | 299.0 | 500.0 | +| test.c:389:10:389:21 | ... ? ... : ... | 300.0 | 300.0 | 500.0 | +| test.c:390:10:390:36 | ... ? ... : ... | 255.0 | 300.0 | 5.0 | +| test.c:391:10:391:38 | ... ? ... : ... | 500.0 | 300.0 | 500.0 | +| test.c:392:10:392:39 | ... ? ... : ... | 300.0 | 300.0 | 500.0 | +| test.c:400:8:400:24 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 110.0 | +| test.c:401:8:401:25 | ... ? ... : ... | 4.294967295E9 | 110.0 | 4.294967295E9 | +| test.c:406:10:406:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 5.0 | +| test.c:407:10:407:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 5.0 | +| test.c:408:10:408:38 | ... ? ... : ... | 255.0 | 4.294967295E9 | 5.0 | +| test.c:415:14:415:108 | ... ? ... : ... | 0.47438827 | 0.47438827 | 0.40496805 | +| test.c:415:18:415:95 | ... ? ... : ... | 0.47438827 | 0.47438827 | 0.21540225 | +| test.c:415:22:415:82 | ... ? ... : ... | 0.47438827 | 0.47438827 | 0.39206458 | +| test.c:415:26:415:69 | ... ? ... : ... | 0.47438827 | 0.47438827 | 0.35279203 | +| test.c:415:30:415:56 | ... ? ... : ... | 0.47438827 | 0.47438827 | 0.14333887 | +| test.c:416:14:416:108 | ... ? ... : ... | 0.59270465 | 0.59270465 | 0.5297741 | +| test.c:416:18:416:95 | ... ? ... : ... | 0.59270465 | 0.3533464 | 0.59270465 | +| test.c:416:22:416:82 | ... ? ... : ... | 0.3533464 | 0.3533464 | 0.32661893 | +| test.c:416:26:416:69 | ... ? ... : ... | 0.3533464 | 0.3533464 | 0.22247853 | +| test.c:416:30:416:56 | ... ? ... : ... | 0.3533464 | 0.34183348 | 0.3533464 | +| test.c:417:14:417:108 | ... ? ... : ... | 0.79310745 | 0.79310745 | 0.67981451 | +| test.c:417:18:417:95 | ... ? ... : ... | 0.79310745 | 0.77429603 | 0.79310745 | +| test.c:417:22:417:82 | ... ? ... : ... | 0.77429603 | 0.77429603 | 0.05121256 | +| test.c:417:26:417:69 | ... ? ... : ... | 0.77429603 | 0.77429603 | 0.31235514 | +| test.c:417:30:417:56 | ... ? ... : ... | 0.77429603 | 0.77429603 | 0.31478084 | +| test.c:418:14:418:108 | ... ? ... : ... | 0.98997262 | 0.98997262 | 0.83866835 | +| test.c:418:18:418:95 | ... ? ... : ... | 0.98997262 | 0.98997262 | 0.36976948 | +| test.c:418:22:418:82 | ... ? ... : ... | 0.98997262 | 0.98997262 | 0.59952732 | +| test.c:418:26:418:69 | ... ? ... : ... | 0.98997262 | 0.80599202 | 0.98997262 | +| test.c:418:30:418:56 | ... ? ... : ... | 0.80599202 | 0.44729556 | 0.80599202 | +| test.c:419:14:419:108 | ... ? ... : ... | 0.90389911 | 0.90389911 | 0.68734874 | +| test.c:419:18:419:95 | ... ? ... : ... | 0.90389911 | 0.90389911 | 0.72485966 | +| test.c:419:22:419:82 | ... ? ... : ... | 0.90389911 | 0.90389911 | 0.21778426 | +| test.c:419:26:419:69 | ... ? ... : ... | 0.90389911 | 0.90389911 | 0.10597712 | +| test.c:419:30:419:56 | ... ? ... : ... | 0.90389911 | 0.49311828 | 0.90389911 | +| test.c:420:14:420:108 | ... ? ... : ... | 0.76164052 | 0.76164052 | 0.58440865 | +| test.c:420:18:420:95 | ... ? ... : ... | 0.76164052 | 0.76164052 | 0.34808892 | +| test.c:420:22:420:82 | ... ? ... : ... | 0.76164052 | 0.47452848 | 0.76164052 | +| test.c:420:26:420:69 | ... ? ... : ... | 0.47452848 | 0.47452848 | 0.11884576 | +| test.c:420:30:420:56 | ... ? ... : ... | 0.47452848 | 0.47452848 | 0.1078665 | +| test.c:421:14:421:108 | ... ? ... : ... | 0.95823075 | 0.95823075 | 0.36232384 | +| test.c:421:18:421:95 | ... ? ... : ... | 0.95823075 | 0.95823075 | 0.85235179 | +| test.c:421:22:421:82 | ... ? ... : ... | 0.95823075 | 0.95823075 | 0.12516558 | +| test.c:421:26:421:69 | ... ? ... : ... | 0.95823075 | 0.82905046 | 0.95823075 | +| test.c:421:30:421:56 | ... ? ... : ... | 0.82905046 | 0.02524326 | 0.82905046 | +| test.c:422:14:422:108 | ... ? ... : ... | 0.84331272 | 0.48640909 | 0.84331272 | +| test.c:422:18:422:95 | ... ? ... : ... | 0.48640909 | 0.45041108 | 0.48640909 | +| test.c:422:22:422:82 | ... ? ... : ... | 0.45041108 | 0.38708626 | 0.45041108 | +| test.c:422:26:422:69 | ... ? ... : ... | 0.38708626 | 0.38708626 | 0.14963485 | +| test.c:422:30:422:56 | ... ? ... : ... | 0.38708626 | 0.38708626 | 0.32876044 | +| test.c:423:14:423:108 | ... ? ... : ... | 0.77086833 | 0.77086833 | 0.05328182 | +| test.c:423:18:423:95 | ... ? ... : ... | 0.77086833 | 0.77086833 | 0.37428143 | +| test.c:423:22:423:82 | ... ? ... : ... | 0.77086833 | 0.77086833 | 0.14800508 | +| test.c:423:26:423:69 | ... ? ... : ... | 0.77086833 | 0.77086833 | 0.26428481 | +| test.c:423:30:423:56 | ... ? ... : ... | 0.77086833 | 0.15755063 | 0.77086833 | +| test.c:424:14:424:108 | ... ? ... : ... | 0.76826628 | 0.76826628 | 0.69072144 | +| test.c:424:18:424:95 | ... ? ... : ... | 0.76826628 | 0.76826628 | 0.39468857 | +| test.c:424:22:424:82 | ... ? ... : ... | 0.76826628 | 0.76826628 | 0.55679274 | +| test.c:424:26:424:69 | ... ? ... : ... | 0.76826628 | 0.76826628 | 0.27643238 | +| test.c:424:30:424:56 | ... ? ... : ... | 0.76826628 | 0.41736536 | 0.76826628 | +| test.c:425:14:425:108 | ... ? ... : ... | 0.88955345 | 0.88955345 | 0.81372798 | +| test.c:425:18:425:95 | ... ? ... : ... | 0.88955345 | 0.88955345 | 0.88745559 | +| test.c:425:22:425:82 | ... ? ... : ... | 0.88955345 | 0.88955345 | 0.2051911 | +| test.c:425:26:425:69 | ... ? ... : ... | 0.88955345 | 0.88955345 | 0.76242583 | +| test.c:425:30:425:56 | ... ? ... : ... | 0.88955345 | 0.88955345 | 0.29904824 | +| test.c:426:14:426:108 | ... ? ... : ... | 0.53843358 | 0.53843358 | 0.42762647 | +| test.c:426:18:426:95 | ... ? ... : ... | 0.53843358 | 0.53843358 | 0.52031241 | +| test.c:426:22:426:82 | ... ? ... : ... | 0.53843358 | 0.53843358 | 0.13204114 | +| test.c:426:26:426:69 | ... ? ... : ... | 0.53843358 | 0.53843358 | 0.44996679 | +| test.c:426:30:426:56 | ... ? ... : ... | 0.53843358 | 0.42186276 | 0.53843358 | +| test.c:468:4:642:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:468:5:470:49 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:471:6:553:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:472:8:490:41 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:475:10:479:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:475:31:475:79 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:477:13:479:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:484:12:489:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:485:12:485:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:487:15:489:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:491:6:510:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:494:8:498:19 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:494:29:494:77 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:496:11:498:19 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:499:6:499:54 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:503:10:507:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:503:31:503:79 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:505:13:507:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:508:9:510:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:512:10:531:43 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:515:12:520:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:516:12:516:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:518:15:520:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:525:14:530:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:526:14:526:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:528:17:530:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:532:9:553:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:535:14:540:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:536:14:536:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:538:17:540:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:541:12:541:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:545:12:550:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:546:12:546:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:548:15:550:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:551:11:553:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:554:9:556:51 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:557:9:642:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:558:14:577:47 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:561:16:566:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:562:16:562:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:564:19:566:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:571:18:576:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:572:18:572:66 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:574:21:576:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:578:12:599:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:581:14:586:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:582:14:582:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:584:17:586:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:587:12:587:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:591:16:596:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:592:16:592:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:594:19:596:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:597:15:599:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:601:12:620:45 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:604:14:609:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:605:14:605:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:607:17:609:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:614:16:619:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:615:16:615:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:617:19:619:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:621:11:642:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:624:16:629:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:625:16:625:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:627:19:629:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:630:14:630:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:634:14:639:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:635:14:635:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:637:17:639:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:640:13:642:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | +| test.c:668:20:668:36 | ... ? ... : ... | 100.0 | 99.0 | 100.0 | +| test.c:880:5:880:14 | ... ? ... : ... | 32767.0 | 32767.0 | 0.0 | +| test.c:881:5:881:14 | ... ? ... : ... | 32767.0 | 0.0 | 32767.0 | | test.cpp:121:3:121:12 | ... ? ... : ... | 32767.0 | 32767.0 | 0.0 | | test.cpp:122:3:122:12 | ... ? ... : ... | 32767.0 | 0.0 | 32767.0 | diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c index d59d20ecc9b..d394eb637ab 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c @@ -343,6 +343,17 @@ unsigned long long test_shift(unsigned long long a) { return shifted; } +// Tests for bounds on integers derived from inequalities. +unsigned int test_inequality_integer(unsigned int e) { + unsigned int bi1 = (2 * e + 1) > 0 ? e : 2; + signed int bi2 = (2 * e + 1) >= 0 ? e : 2; + unsigned int bi3 = (3 * e + 2) > 0 ? e : 2; + unsigned int bi4 = (2 * e + 1) > 0 ? e : 2; + unsigned int bi5 = (2 * e + 1) > 16 ? e : 2; + + return bi1 + bi2 + bi3 + bi4 + bi5; +} + int test16(int x) { int d, i = 0; if (x < 0) { diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/upperBound.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/upperBound.expected index b2591fb52f3..16181b8e238 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/upperBound.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/upperBound.expected @@ -352,664 +352,679 @@ | test.c:333:10:333:14 | total | 2147483647 | | test.c:341:32:341:34 | odd | 9007199254740991 | | test.c:343:10:343:16 | shifted | 4503599627370495 | -| test.c:348:7:348:7 | x | 2147483647 | -| test.c:352:10:352:10 | i | 7 | -| test.c:353:5:353:5 | i | 2 | -| test.c:355:3:355:3 | d | 2147483647 | -| test.c:355:7:355:7 | i | 7 | -| test.c:356:7:356:7 | x | 2147483647 | -| test.c:357:9:357:9 | d | 7 | -| test.c:357:14:357:14 | x | -1 | -| test.c:367:3:367:4 | y1 | 4294967295 | -| test.c:367:8:367:8 | x | 4294967295 | -| test.c:367:18:367:18 | x | 99 | -| test.c:368:3:368:4 | y2 | 4294967295 | -| test.c:368:8:368:8 | x | 4294967295 | -| test.c:368:24:368:24 | x | 99 | -| test.c:369:3:369:4 | y3 | 4294967295 | -| test.c:370:3:370:4 | y4 | 4294967295 | -| test.c:371:3:371:4 | y5 | 4294967295 | -| test.c:372:3:372:4 | y6 | 4294967295 | -| test.c:373:3:373:4 | y7 | 4294967295 | -| test.c:374:3:374:4 | y8 | 4294967295 | -| test.c:375:7:375:7 | x | 4294967295 | -| test.c:376:5:376:6 | y3 | 4294967295 | -| test.c:376:10:376:10 | x | 299 | -| test.c:377:5:377:6 | y4 | 4294967295 | -| test.c:377:10:377:10 | x | 299 | -| test.c:378:5:378:6 | y5 | 4294967295 | -| test.c:378:11:378:11 | x | 299 | -| test.c:379:5:379:6 | y6 | 4294967295 | -| test.c:379:27:379:27 | x | 299 | -| test.c:380:5:380:6 | y7 | 4294967295 | -| test.c:380:27:380:27 | x | 299 | -| test.c:381:5:381:6 | y8 | 4294967295 | -| test.c:381:28:381:28 | x | 299 | -| test.c:383:10:383:11 | y1 | 99 | -| test.c:383:15:383:16 | y2 | 99 | -| test.c:383:20:383:21 | y3 | 299 | -| test.c:383:25:383:26 | y4 | 500 | -| test.c:383:30:383:31 | y5 | 300 | -| test.c:383:35:383:36 | y6 | 255 | -| test.c:383:40:383:41 | y7 | 500 | -| test.c:383:45:383:46 | y8 | 300 | -| test.c:389:3:389:4 | y1 | 4294967295 | -| test.c:389:8:389:8 | x | 4294967295 | -| test.c:389:18:389:18 | x | 4294967295 | -| test.c:390:3:390:4 | y2 | 4294967295 | -| test.c:390:8:390:8 | x | 4294967295 | -| test.c:390:25:390:25 | x | 4294967295 | -| test.c:391:3:391:4 | y3 | 4294967295 | -| test.c:392:3:392:4 | y4 | 4294967295 | -| test.c:393:3:393:4 | y5 | 4294967295 | -| test.c:394:7:394:7 | x | 4294967295 | -| test.c:395:5:395:6 | y3 | 4294967295 | -| test.c:395:11:395:11 | x | 4294967295 | -| test.c:396:5:396:6 | y4 | 4294967295 | -| test.c:396:11:396:11 | x | 4294967295 | -| test.c:397:5:397:6 | y5 | 4294967295 | -| test.c:397:27:397:27 | x | 4294967295 | -| test.c:399:10:399:11 | y1 | 4294967295 | -| test.c:399:15:399:16 | y2 | 4294967295 | -| test.c:399:20:399:21 | y3 | 4294967295 | -| test.c:399:25:399:26 | y4 | 4294967295 | -| test.c:399:30:399:31 | y5 | 1000 | -| test.c:404:14:404:14 | m | Infinity | -| test.c:404:18:404:18 | n | Infinity | -| test.c:404:22:404:22 | o | Infinity | -| test.c:404:26:404:26 | p | Infinity | -| test.c:404:30:404:30 | q | Infinity | -| test.c:405:14:405:14 | m | Infinity | -| test.c:405:18:405:18 | n | Infinity | -| test.c:405:22:405:22 | o | Infinity | -| test.c:405:26:405:26 | p | Infinity | -| test.c:405:30:405:30 | q | Infinity | -| test.c:406:14:406:14 | m | Infinity | -| test.c:406:18:406:18 | n | Infinity | -| test.c:406:22:406:22 | o | Infinity | -| test.c:406:26:406:26 | p | Infinity | -| test.c:406:30:406:30 | q | Infinity | -| test.c:407:14:407:14 | m | Infinity | -| test.c:407:18:407:18 | n | Infinity | -| test.c:407:22:407:22 | o | Infinity | -| test.c:407:26:407:26 | p | Infinity | -| test.c:407:30:407:30 | q | Infinity | -| test.c:408:14:408:14 | m | Infinity | -| test.c:408:18:408:18 | n | Infinity | -| test.c:408:22:408:22 | o | Infinity | -| test.c:408:26:408:26 | p | Infinity | -| test.c:408:30:408:30 | q | Infinity | -| test.c:409:14:409:14 | m | Infinity | -| test.c:409:18:409:18 | n | Infinity | -| test.c:409:22:409:22 | o | Infinity | -| test.c:409:26:409:26 | p | Infinity | -| test.c:409:30:409:30 | q | Infinity | -| test.c:410:14:410:14 | m | Infinity | -| test.c:410:18:410:18 | n | Infinity | -| test.c:410:22:410:22 | o | Infinity | -| test.c:410:26:410:26 | p | Infinity | -| test.c:410:30:410:30 | q | Infinity | -| test.c:411:14:411:14 | m | Infinity | -| test.c:411:18:411:18 | n | Infinity | -| test.c:411:22:411:22 | o | Infinity | -| test.c:411:26:411:26 | p | Infinity | -| test.c:411:30:411:30 | q | Infinity | -| test.c:412:14:412:14 | m | Infinity | -| test.c:412:18:412:18 | n | Infinity | -| test.c:412:22:412:22 | o | Infinity | -| test.c:412:26:412:26 | p | Infinity | -| test.c:412:30:412:30 | q | Infinity | -| test.c:413:14:413:14 | m | Infinity | -| test.c:413:18:413:18 | n | Infinity | -| test.c:413:22:413:22 | o | Infinity | -| test.c:413:26:413:26 | p | Infinity | -| test.c:413:30:413:30 | q | Infinity | -| test.c:414:14:414:14 | m | Infinity | -| test.c:414:18:414:18 | n | Infinity | -| test.c:414:22:414:22 | o | Infinity | -| test.c:414:26:414:26 | p | Infinity | -| test.c:414:30:414:30 | q | Infinity | +| test.c:348:27:348:27 | e | 4294967295 | +| test.c:348:40:348:40 | e | 2147483647 | +| test.c:349:25:349:25 | e | 4294967295 | +| test.c:349:39:349:39 | e | 2147483647 | +| test.c:350:27:350:27 | e | 4294967295 | +| test.c:350:40:350:40 | e | 1431655764.333333 | +| test.c:351:27:351:27 | e | 4294967295 | +| test.c:351:40:351:40 | e | 2147483647 | +| test.c:352:27:352:27 | e | 4294967295 | +| test.c:352:41:352:41 | e | 2147483647 | +| test.c:354:10:354:12 | bi1 | 2147483647 | +| test.c:354:16:354:18 | bi2 | 2147483647 | +| test.c:354:22:354:24 | bi3 | 1431655764.333333 | +| test.c:354:28:354:30 | bi4 | 2147483647 | +| test.c:354:34:354:36 | bi5 | 2147483647 | +| test.c:359:7:359:7 | x | 2147483647 | +| test.c:363:10:363:10 | i | 7 | +| test.c:364:5:364:5 | i | 2 | +| test.c:366:3:366:3 | d | 2147483647 | +| test.c:366:7:366:7 | i | 7 | +| test.c:367:7:367:7 | x | 2147483647 | +| test.c:368:9:368:9 | d | 7 | +| test.c:368:14:368:14 | x | -1 | +| test.c:378:3:378:4 | y1 | 4294967295 | +| test.c:378:8:378:8 | x | 4294967295 | +| test.c:378:18:378:18 | x | 99 | +| test.c:379:3:379:4 | y2 | 4294967295 | +| test.c:379:8:379:8 | x | 4294967295 | +| test.c:379:24:379:24 | x | 99 | +| test.c:380:3:380:4 | y3 | 4294967295 | +| test.c:381:3:381:4 | y4 | 4294967295 | +| test.c:382:3:382:4 | y5 | 4294967295 | +| test.c:383:3:383:4 | y6 | 4294967295 | +| test.c:384:3:384:4 | y7 | 4294967295 | +| test.c:385:3:385:4 | y8 | 4294967295 | +| test.c:386:7:386:7 | x | 4294967295 | +| test.c:387:5:387:6 | y3 | 4294967295 | +| test.c:387:10:387:10 | x | 299 | +| test.c:388:5:388:6 | y4 | 4294967295 | +| test.c:388:10:388:10 | x | 299 | +| test.c:389:5:389:6 | y5 | 4294967295 | +| test.c:389:11:389:11 | x | 299 | +| test.c:390:5:390:6 | y6 | 4294967295 | +| test.c:390:27:390:27 | x | 299 | +| test.c:391:5:391:6 | y7 | 4294967295 | +| test.c:391:27:391:27 | x | 299 | +| test.c:392:5:392:6 | y8 | 4294967295 | +| test.c:392:28:392:28 | x | 299 | +| test.c:394:10:394:11 | y1 | 99 | +| test.c:394:15:394:16 | y2 | 99 | +| test.c:394:20:394:21 | y3 | 299 | +| test.c:394:25:394:26 | y4 | 500 | +| test.c:394:30:394:31 | y5 | 300 | +| test.c:394:35:394:36 | y6 | 255 | +| test.c:394:40:394:41 | y7 | 500 | +| test.c:394:45:394:46 | y8 | 300 | +| test.c:400:3:400:4 | y1 | 4294967295 | +| test.c:400:8:400:8 | x | 4294967295 | +| test.c:400:18:400:18 | x | 4294967295 | +| test.c:401:3:401:4 | y2 | 4294967295 | +| test.c:401:8:401:8 | x | 4294967295 | +| test.c:401:25:401:25 | x | 4294967295 | +| test.c:402:3:402:4 | y3 | 4294967295 | +| test.c:403:3:403:4 | y4 | 4294967295 | +| test.c:404:3:404:4 | y5 | 4294967295 | +| test.c:405:7:405:7 | x | 4294967295 | +| test.c:406:5:406:6 | y3 | 4294967295 | +| test.c:406:11:406:11 | x | 4294967295 | +| test.c:407:5:407:6 | y4 | 4294967295 | +| test.c:407:11:407:11 | x | 4294967295 | +| test.c:408:5:408:6 | y5 | 4294967295 | +| test.c:408:27:408:27 | x | 4294967295 | +| test.c:410:10:410:11 | y1 | 4294967295 | +| test.c:410:15:410:16 | y2 | 4294967295 | +| test.c:410:20:410:21 | y3 | 4294967295 | +| test.c:410:25:410:26 | y4 | 4294967295 | +| test.c:410:30:410:31 | y5 | 1000 | | test.c:415:14:415:14 | m | Infinity | | test.c:415:18:415:18 | n | Infinity | | test.c:415:22:415:22 | o | Infinity | | test.c:415:26:415:26 | p | Infinity | | test.c:415:30:415:30 | q | Infinity | -| test.c:421:19:421:19 | a | 0.474388 | -| test.c:421:23:421:23 | b | 0.592705 | -| test.c:421:27:421:27 | c | 0.793107 | -| test.c:421:31:421:31 | d | 0.989973 | -| test.c:421:35:421:35 | e | 0.903899 | -| test.c:421:39:421:39 | f | 0.761641 | -| test.c:421:43:421:43 | g | 0.958231 | -| test.c:421:47:421:47 | h | 0.843313 | -| test.c:421:51:421:51 | i | 0.770868 | -| test.c:421:55:421:55 | j | 0.768266 | -| test.c:421:59:421:59 | k | 0.889553 | -| test.c:421:63:421:63 | l | 0.538434 | -| test.c:423:10:423:15 | output | 9.284378 | -| test.c:430:7:430:9 | rhs | 4294967295 | -| test.c:430:19:430:21 | rhs | 11 | -| test.c:431:7:431:9 | rhs | 4294967295 | -| test.c:431:19:431:21 | rhs | 12 | -| test.c:432:7:432:9 | rhs | 4294967295 | -| test.c:432:19:432:21 | rhs | 13 | -| test.c:433:7:433:9 | rhs | 4294967295 | -| test.c:433:19:433:21 | rhs | 14 | -| test.c:434:7:434:9 | rhs | 4294967295 | -| test.c:434:19:434:21 | rhs | 15 | -| test.c:435:10:435:12 | rhs | 4294967295 | -| test.c:439:7:439:7 | a | 2147483647 | -| test.c:440:9:440:9 | b | 2147483647 | -| test.c:441:7:441:7 | a | 17 | -| test.c:441:12:441:12 | b | 23 | -| test.c:443:9:443:9 | a | 40 | -| test.c:444:7:444:7 | b | 2147483647 | -| test.c:449:11:449:11 | a | 2147483647 | -| test.c:449:15:449:15 | b | 2147483647 | -| test.c:450:10:450:10 | a | 2147483647 | -| test.c:450:14:450:14 | b | 2147483647 | -| test.c:457:10:457:11 | ip | 4294967295 | -| test.c:457:20:457:21 | ip | 4294967295 | -| test.c:457:40:457:41 | ip | 4294967295 | -| test.c:458:14:458:15 | ip | 4294967295 | -| test.c:459:14:459:15 | ip | 4294967295 | -| test.c:459:34:459:35 | ip | 4294967295 | -| test.c:460:11:460:12 | ip | 4294967295 | -| test.c:461:13:461:14 | ip | 4294967295 | -| test.c:462:14:462:15 | ip | 4294967295 | -| test.c:463:14:463:15 | ip | 4294967295 | -| test.c:464:15:464:16 | ip | 4294967295 | -| test.c:464:41:464:42 | ip | 4294967295 | -| test.c:464:52:464:53 | ip | 4294967295 | -| test.c:464:67:464:68 | ip | 4294967295 | -| test.c:464:78:464:79 | ip | 4294967295 | -| test.c:465:18:465:19 | ip | 4294967295 | -| test.c:466:23:466:24 | ip | 4294967295 | -| test.c:466:34:466:35 | ip | 4294967295 | -| test.c:467:25:467:26 | ip | 4294967295 | +| test.c:416:14:416:14 | m | Infinity | +| test.c:416:18:416:18 | n | Infinity | +| test.c:416:22:416:22 | o | Infinity | +| test.c:416:26:416:26 | p | Infinity | +| test.c:416:30:416:30 | q | Infinity | +| test.c:417:14:417:14 | m | Infinity | +| test.c:417:18:417:18 | n | Infinity | +| test.c:417:22:417:22 | o | Infinity | +| test.c:417:26:417:26 | p | Infinity | +| test.c:417:30:417:30 | q | Infinity | +| test.c:418:14:418:14 | m | Infinity | +| test.c:418:18:418:18 | n | Infinity | +| test.c:418:22:418:22 | o | Infinity | +| test.c:418:26:418:26 | p | Infinity | +| test.c:418:30:418:30 | q | Infinity | +| test.c:419:14:419:14 | m | Infinity | +| test.c:419:18:419:18 | n | Infinity | +| test.c:419:22:419:22 | o | Infinity | +| test.c:419:26:419:26 | p | Infinity | +| test.c:419:30:419:30 | q | Infinity | +| test.c:420:14:420:14 | m | Infinity | +| test.c:420:18:420:18 | n | Infinity | +| test.c:420:22:420:22 | o | Infinity | +| test.c:420:26:420:26 | p | Infinity | +| test.c:420:30:420:30 | q | Infinity | +| test.c:421:14:421:14 | m | Infinity | +| test.c:421:18:421:18 | n | Infinity | +| test.c:421:22:421:22 | o | Infinity | +| test.c:421:26:421:26 | p | Infinity | +| test.c:421:30:421:30 | q | Infinity | +| test.c:422:14:422:14 | m | Infinity | +| test.c:422:18:422:18 | n | Infinity | +| test.c:422:22:422:22 | o | Infinity | +| test.c:422:26:422:26 | p | Infinity | +| test.c:422:30:422:30 | q | Infinity | +| test.c:423:14:423:14 | m | Infinity | +| test.c:423:18:423:18 | n | Infinity | +| test.c:423:22:423:22 | o | Infinity | +| test.c:423:26:423:26 | p | Infinity | +| test.c:423:30:423:30 | q | Infinity | +| test.c:424:14:424:14 | m | Infinity | +| test.c:424:18:424:18 | n | Infinity | +| test.c:424:22:424:22 | o | Infinity | +| test.c:424:26:424:26 | p | Infinity | +| test.c:424:30:424:30 | q | Infinity | +| test.c:425:14:425:14 | m | Infinity | +| test.c:425:18:425:18 | n | Infinity | +| test.c:425:22:425:22 | o | Infinity | +| test.c:425:26:425:26 | p | Infinity | +| test.c:425:30:425:30 | q | Infinity | +| test.c:426:14:426:14 | m | Infinity | +| test.c:426:18:426:18 | n | Infinity | +| test.c:426:22:426:22 | o | Infinity | +| test.c:426:26:426:26 | p | Infinity | +| test.c:426:30:426:30 | q | Infinity | +| test.c:432:19:432:19 | a | 0.474388 | +| test.c:432:23:432:23 | b | 0.592705 | +| test.c:432:27:432:27 | c | 0.793107 | +| test.c:432:31:432:31 | d | 0.989973 | +| test.c:432:35:432:35 | e | 0.903899 | +| test.c:432:39:432:39 | f | 0.761641 | +| test.c:432:43:432:43 | g | 0.958231 | +| test.c:432:47:432:47 | h | 0.843313 | +| test.c:432:51:432:51 | i | 0.770868 | +| test.c:432:55:432:55 | j | 0.768266 | +| test.c:432:59:432:59 | k | 0.889553 | +| test.c:432:63:432:63 | l | 0.538434 | +| test.c:434:10:434:15 | output | 9.284378 | +| test.c:441:7:441:9 | rhs | 4294967295 | +| test.c:441:19:441:21 | rhs | 11 | +| test.c:442:7:442:9 | rhs | 4294967295 | +| test.c:442:19:442:21 | rhs | 12 | +| test.c:443:7:443:9 | rhs | 4294967295 | +| test.c:443:19:443:21 | rhs | 13 | +| test.c:444:7:444:9 | rhs | 4294967295 | +| test.c:444:19:444:21 | rhs | 14 | +| test.c:445:7:445:9 | rhs | 4294967295 | +| test.c:445:19:445:21 | rhs | 15 | +| test.c:446:10:446:12 | rhs | 4294967295 | +| test.c:450:7:450:7 | a | 2147483647 | +| test.c:451:9:451:9 | b | 2147483647 | +| test.c:452:7:452:7 | a | 17 | +| test.c:452:12:452:12 | b | 23 | +| test.c:454:9:454:9 | a | 40 | +| test.c:455:7:455:7 | b | 2147483647 | +| test.c:460:11:460:11 | a | 2147483647 | +| test.c:460:15:460:15 | b | 2147483647 | +| test.c:461:10:461:10 | a | 2147483647 | +| test.c:461:14:461:14 | b | 2147483647 | +| test.c:468:10:468:11 | ip | 4294967295 | | test.c:468:20:468:21 | ip | 4294967295 | -| test.c:469:11:469:12 | ip | 4294967295 | -| test.c:469:26:469:27 | ip | 4294967295 | -| test.c:470:16:470:17 | ip | 4294967295 | -| test.c:471:16:471:17 | ip | 4294967295 | -| test.c:472:16:472:17 | ip | 4294967295 | -| test.c:473:17:473:18 | ip | 4294967295 | -| test.c:474:22:474:23 | ip | 4294967295 | -| test.c:474:33:474:34 | ip | 4294967295 | -| test.c:474:48:474:49 | ip | 4294967295 | -| test.c:474:59:474:60 | ip | 4294967295 | -| test.c:475:20:475:21 | ip | 4294967295 | -| test.c:476:25:476:26 | ip | 4294967295 | -| test.c:476:36:476:37 | ip | 4294967295 | -| test.c:477:27:477:28 | ip | 4294967295 | -| test.c:478:22:478:23 | ip | 4294967295 | -| test.c:479:15:479:16 | ip | 4294967295 | -| test.c:479:30:479:31 | ip | 4294967295 | +| test.c:468:40:468:41 | ip | 4294967295 | +| test.c:469:14:469:15 | ip | 4294967295 | +| test.c:470:14:470:15 | ip | 4294967295 | +| test.c:470:34:470:35 | ip | 4294967295 | +| test.c:471:11:471:12 | ip | 4294967295 | +| test.c:472:13:472:14 | ip | 4294967295 | +| test.c:473:14:473:15 | ip | 4294967295 | +| test.c:474:14:474:15 | ip | 4294967295 | +| test.c:475:15:475:16 | ip | 4294967295 | +| test.c:475:41:475:42 | ip | 4294967295 | +| test.c:475:52:475:53 | ip | 4294967295 | +| test.c:475:67:475:68 | ip | 4294967295 | +| test.c:475:78:475:79 | ip | 4294967295 | +| test.c:476:18:476:19 | ip | 4294967295 | +| test.c:477:23:477:24 | ip | 4294967295 | +| test.c:477:34:477:35 | ip | 4294967295 | +| test.c:478:25:478:26 | ip | 4294967295 | +| test.c:479:20:479:21 | ip | 4294967295 | | test.c:480:11:480:12 | ip | 4294967295 | -| test.c:481:12:481:13 | ip | 4294967295 | -| test.c:482:12:482:13 | ip | 4294967295 | -| test.c:483:13:483:14 | ip | 4294967295 | -| test.c:483:39:483:40 | ip | 4294967295 | -| test.c:483:50:483:51 | ip | 4294967295 | -| test.c:483:65:483:66 | ip | 4294967295 | -| test.c:483:76:483:77 | ip | 4294967295 | -| test.c:484:16:484:17 | ip | 4294967295 | -| test.c:485:21:485:22 | ip | 4294967295 | -| test.c:485:32:485:33 | ip | 4294967295 | -| test.c:486:23:486:24 | ip | 4294967295 | -| test.c:487:18:487:19 | ip | 4294967295 | -| test.c:488:11:488:12 | ip | 4294967295 | -| test.c:488:17:488:18 | ip | 4294967295 | -| test.c:488:37:488:38 | ip | 4294967295 | -| test.c:488:43:488:44 | ip | 4294967295 | -| test.c:489:14:489:15 | ip | 4294967295 | -| test.c:490:14:490:15 | ip | 4294967295 | -| test.c:491:14:491:15 | ip | 4294967295 | -| test.c:492:15:492:16 | ip | 4294967295 | -| test.c:492:41:492:42 | ip | 4294967295 | -| test.c:492:52:492:53 | ip | 4294967295 | -| test.c:492:67:492:68 | ip | 4294967295 | -| test.c:492:78:492:79 | ip | 4294967295 | -| test.c:493:18:493:19 | ip | 4294967295 | -| test.c:494:23:494:24 | ip | 4294967295 | -| test.c:494:34:494:35 | ip | 4294967295 | -| test.c:495:25:495:26 | ip | 4294967295 | -| test.c:496:20:496:21 | ip | 4294967295 | -| test.c:497:14:497:15 | ip | 4294967295 | -| test.c:497:20:497:21 | ip | 4294967295 | -| test.c:498:16:498:17 | ip | 4294967295 | -| test.c:499:12:499:13 | ip | 4294967295 | +| test.c:480:26:480:27 | ip | 4294967295 | +| test.c:481:16:481:17 | ip | 4294967295 | +| test.c:482:16:482:17 | ip | 4294967295 | +| test.c:483:16:483:17 | ip | 4294967295 | +| test.c:484:17:484:18 | ip | 4294967295 | +| test.c:485:22:485:23 | ip | 4294967295 | +| test.c:485:33:485:34 | ip | 4294967295 | +| test.c:485:48:485:49 | ip | 4294967295 | +| test.c:485:59:485:60 | ip | 4294967295 | +| test.c:486:20:486:21 | ip | 4294967295 | +| test.c:487:25:487:26 | ip | 4294967295 | +| test.c:487:36:487:37 | ip | 4294967295 | +| test.c:488:27:488:28 | ip | 4294967295 | +| test.c:489:22:489:23 | ip | 4294967295 | +| test.c:490:15:490:16 | ip | 4294967295 | +| test.c:490:30:490:31 | ip | 4294967295 | +| test.c:491:11:491:12 | ip | 4294967295 | +| test.c:492:12:492:13 | ip | 4294967295 | +| test.c:493:12:493:13 | ip | 4294967295 | +| test.c:494:13:494:14 | ip | 4294967295 | +| test.c:494:39:494:40 | ip | 4294967295 | +| test.c:494:50:494:51 | ip | 4294967295 | +| test.c:494:65:494:66 | ip | 4294967295 | +| test.c:494:76:494:77 | ip | 4294967295 | +| test.c:495:16:495:17 | ip | 4294967295 | +| test.c:496:21:496:22 | ip | 4294967295 | +| test.c:496:32:496:33 | ip | 4294967295 | +| test.c:497:23:497:24 | ip | 4294967295 | +| test.c:498:18:498:19 | ip | 4294967295 | +| test.c:499:11:499:12 | ip | 4294967295 | +| test.c:499:17:499:18 | ip | 4294967295 | +| test.c:499:37:499:38 | ip | 4294967295 | +| test.c:499:43:499:44 | ip | 4294967295 | | test.c:500:14:500:15 | ip | 4294967295 | -| test.c:501:15:501:16 | ip | 4294967295 | -| test.c:502:16:502:17 | ip | 4294967295 | -| test.c:503:16:503:17 | ip | 4294967295 | -| test.c:504:17:504:18 | ip | 4294967295 | -| test.c:505:22:505:23 | ip | 4294967295 | -| test.c:505:33:505:34 | ip | 4294967295 | -| test.c:505:48:505:49 | ip | 4294967295 | -| test.c:505:59:505:60 | ip | 4294967295 | -| test.c:506:20:506:21 | ip | 4294967295 | -| test.c:507:25:507:26 | ip | 4294967295 | -| test.c:507:36:507:37 | ip | 4294967295 | -| test.c:508:27:508:28 | ip | 4294967295 | -| test.c:509:22:509:23 | ip | 4294967295 | -| test.c:510:13:510:14 | ip | 4294967295 | -| test.c:510:28:510:29 | ip | 4294967295 | -| test.c:511:18:511:19 | ip | 4294967295 | -| test.c:512:18:512:19 | ip | 4294967295 | -| test.c:513:18:513:19 | ip | 4294967295 | -| test.c:514:19:514:20 | ip | 4294967295 | -| test.c:515:24:515:25 | ip | 4294967295 | -| test.c:515:35:515:36 | ip | 4294967295 | -| test.c:515:50:515:51 | ip | 4294967295 | -| test.c:515:61:515:62 | ip | 4294967295 | +| test.c:501:14:501:15 | ip | 4294967295 | +| test.c:502:14:502:15 | ip | 4294967295 | +| test.c:503:15:503:16 | ip | 4294967295 | +| test.c:503:41:503:42 | ip | 4294967295 | +| test.c:503:52:503:53 | ip | 4294967295 | +| test.c:503:67:503:68 | ip | 4294967295 | +| test.c:503:78:503:79 | ip | 4294967295 | +| test.c:504:18:504:19 | ip | 4294967295 | +| test.c:505:23:505:24 | ip | 4294967295 | +| test.c:505:34:505:35 | ip | 4294967295 | +| test.c:506:25:506:26 | ip | 4294967295 | +| test.c:507:20:507:21 | ip | 4294967295 | +| test.c:508:14:508:15 | ip | 4294967295 | +| test.c:508:20:508:21 | ip | 4294967295 | +| test.c:509:16:509:17 | ip | 4294967295 | +| test.c:510:12:510:13 | ip | 4294967295 | +| test.c:511:14:511:15 | ip | 4294967295 | +| test.c:512:15:512:16 | ip | 4294967295 | +| test.c:513:16:513:17 | ip | 4294967295 | +| test.c:514:16:514:17 | ip | 4294967295 | +| test.c:515:17:515:18 | ip | 4294967295 | | test.c:516:22:516:23 | ip | 4294967295 | -| test.c:517:27:517:28 | ip | 4294967295 | -| test.c:517:38:517:39 | ip | 4294967295 | -| test.c:518:29:518:30 | ip | 4294967295 | -| test.c:519:24:519:25 | ip | 4294967295 | -| test.c:520:17:520:18 | ip | 4294967295 | -| test.c:520:32:520:33 | ip | 4294967295 | -| test.c:521:14:521:15 | ip | 4294967295 | +| test.c:516:33:516:34 | ip | 4294967295 | +| test.c:516:48:516:49 | ip | 4294967295 | +| test.c:516:59:516:60 | ip | 4294967295 | +| test.c:517:20:517:21 | ip | 4294967295 | +| test.c:518:25:518:26 | ip | 4294967295 | +| test.c:518:36:518:37 | ip | 4294967295 | +| test.c:519:27:519:28 | ip | 4294967295 | +| test.c:520:22:520:23 | ip | 4294967295 | +| test.c:521:13:521:14 | ip | 4294967295 | +| test.c:521:28:521:29 | ip | 4294967295 | | test.c:522:18:522:19 | ip | 4294967295 | | test.c:523:18:523:19 | ip | 4294967295 | -| test.c:524:19:524:20 | ip | 4294967295 | -| test.c:525:24:525:25 | ip | 4294967295 | -| test.c:525:35:525:36 | ip | 4294967295 | -| test.c:525:50:525:51 | ip | 4294967295 | -| test.c:525:61:525:62 | ip | 4294967295 | -| test.c:526:22:526:23 | ip | 4294967295 | -| test.c:527:27:527:28 | ip | 4294967295 | -| test.c:527:38:527:39 | ip | 4294967295 | -| test.c:528:29:528:30 | ip | 4294967295 | -| test.c:529:24:529:25 | ip | 4294967295 | -| test.c:530:17:530:18 | ip | 4294967295 | -| test.c:530:23:530:24 | ip | 4294967295 | -| test.c:530:43:530:44 | ip | 4294967295 | -| test.c:530:49:530:50 | ip | 4294967295 | -| test.c:531:16:531:17 | ip | 4294967295 | -| test.c:532:16:532:17 | ip | 4294967295 | -| test.c:533:16:533:17 | ip | 4294967295 | -| test.c:534:17:534:18 | ip | 4294967295 | -| test.c:535:22:535:23 | ip | 4294967295 | -| test.c:535:33:535:34 | ip | 4294967295 | -| test.c:535:48:535:49 | ip | 4294967295 | -| test.c:535:59:535:60 | ip | 4294967295 | -| test.c:536:20:536:21 | ip | 4294967295 | -| test.c:537:25:537:26 | ip | 4294967295 | -| test.c:537:36:537:37 | ip | 4294967295 | +| test.c:524:18:524:19 | ip | 4294967295 | +| test.c:525:19:525:20 | ip | 4294967295 | +| test.c:526:24:526:25 | ip | 4294967295 | +| test.c:526:35:526:36 | ip | 4294967295 | +| test.c:526:50:526:51 | ip | 4294967295 | +| test.c:526:61:526:62 | ip | 4294967295 | +| test.c:527:22:527:23 | ip | 4294967295 | +| test.c:528:27:528:28 | ip | 4294967295 | +| test.c:528:38:528:39 | ip | 4294967295 | +| test.c:529:29:529:30 | ip | 4294967295 | +| test.c:530:24:530:25 | ip | 4294967295 | +| test.c:531:17:531:18 | ip | 4294967295 | +| test.c:531:32:531:33 | ip | 4294967295 | +| test.c:532:14:532:15 | ip | 4294967295 | +| test.c:533:18:533:19 | ip | 4294967295 | +| test.c:534:18:534:19 | ip | 4294967295 | +| test.c:535:19:535:20 | ip | 4294967295 | +| test.c:536:24:536:25 | ip | 4294967295 | +| test.c:536:35:536:36 | ip | 4294967295 | +| test.c:536:50:536:51 | ip | 4294967295 | +| test.c:536:61:536:62 | ip | 4294967295 | +| test.c:537:22:537:23 | ip | 4294967295 | | test.c:538:27:538:28 | ip | 4294967295 | -| test.c:539:22:539:23 | ip | 4294967295 | -| test.c:540:16:540:17 | ip | 4294967295 | -| test.c:540:22:540:23 | ip | 4294967295 | -| test.c:541:18:541:19 | ip | 4294967295 | -| test.c:542:14:542:15 | ip | 4294967295 | -| test.c:543:14:543:15 | ip | 4294967295 | -| test.c:543:24:543:25 | ip | 4294967295 | -| test.c:543:44:543:45 | ip | 4294967295 | +| test.c:538:38:538:39 | ip | 4294967295 | +| test.c:539:29:539:30 | ip | 4294967295 | +| test.c:540:24:540:25 | ip | 4294967295 | +| test.c:541:17:541:18 | ip | 4294967295 | +| test.c:541:23:541:24 | ip | 4294967295 | +| test.c:541:43:541:44 | ip | 4294967295 | +| test.c:541:49:541:50 | ip | 4294967295 | +| test.c:542:16:542:17 | ip | 4294967295 | +| test.c:543:16:543:17 | ip | 4294967295 | | test.c:544:16:544:17 | ip | 4294967295 | -| test.c:545:16:545:17 | ip | 4294967295 | -| test.c:545:36:545:37 | ip | 4294967295 | -| test.c:546:14:546:15 | ip | 4294967295 | -| test.c:547:19:547:20 | ip | 4294967295 | -| test.c:548:20:548:21 | ip | 4294967295 | -| test.c:549:20:549:21 | ip | 4294967295 | -| test.c:550:21:550:22 | ip | 4294967295 | -| test.c:551:26:551:27 | ip | 4294967295 | -| test.c:551:37:551:38 | ip | 4294967295 | -| test.c:551:52:551:53 | ip | 4294967295 | -| test.c:551:63:551:64 | ip | 4294967295 | -| test.c:552:24:552:25 | ip | 4294967295 | -| test.c:553:29:553:30 | ip | 4294967295 | -| test.c:553:40:553:41 | ip | 4294967295 | -| test.c:554:31:554:32 | ip | 4294967295 | -| test.c:555:26:555:27 | ip | 4294967295 | -| test.c:556:17:556:18 | ip | 4294967295 | -| test.c:556:32:556:33 | ip | 4294967295 | -| test.c:557:22:557:23 | ip | 4294967295 | -| test.c:558:22:558:23 | ip | 4294967295 | -| test.c:559:22:559:23 | ip | 4294967295 | -| test.c:560:23:560:24 | ip | 4294967295 | -| test.c:561:28:561:29 | ip | 4294967295 | -| test.c:561:39:561:40 | ip | 4294967295 | -| test.c:561:54:561:55 | ip | 4294967295 | -| test.c:561:65:561:66 | ip | 4294967295 | +| test.c:545:17:545:18 | ip | 4294967295 | +| test.c:546:22:546:23 | ip | 4294967295 | +| test.c:546:33:546:34 | ip | 4294967295 | +| test.c:546:48:546:49 | ip | 4294967295 | +| test.c:546:59:546:60 | ip | 4294967295 | +| test.c:547:20:547:21 | ip | 4294967295 | +| test.c:548:25:548:26 | ip | 4294967295 | +| test.c:548:36:548:37 | ip | 4294967295 | +| test.c:549:27:549:28 | ip | 4294967295 | +| test.c:550:22:550:23 | ip | 4294967295 | +| test.c:551:16:551:17 | ip | 4294967295 | +| test.c:551:22:551:23 | ip | 4294967295 | +| test.c:552:18:552:19 | ip | 4294967295 | +| test.c:553:14:553:15 | ip | 4294967295 | +| test.c:554:14:554:15 | ip | 4294967295 | +| test.c:554:24:554:25 | ip | 4294967295 | +| test.c:554:44:554:45 | ip | 4294967295 | +| test.c:555:16:555:17 | ip | 4294967295 | +| test.c:556:16:556:17 | ip | 4294967295 | +| test.c:556:36:556:37 | ip | 4294967295 | +| test.c:557:14:557:15 | ip | 4294967295 | +| test.c:558:19:558:20 | ip | 4294967295 | +| test.c:559:20:559:21 | ip | 4294967295 | +| test.c:560:20:560:21 | ip | 4294967295 | +| test.c:561:21:561:22 | ip | 4294967295 | | test.c:562:26:562:27 | ip | 4294967295 | -| test.c:563:31:563:32 | ip | 4294967295 | -| test.c:563:42:563:43 | ip | 4294967295 | -| test.c:564:33:564:34 | ip | 4294967295 | -| test.c:565:28:565:29 | ip | 4294967295 | -| test.c:566:21:566:22 | ip | 4294967295 | -| test.c:566:36:566:37 | ip | 4294967295 | +| test.c:562:37:562:38 | ip | 4294967295 | +| test.c:562:52:562:53 | ip | 4294967295 | +| test.c:562:63:562:64 | ip | 4294967295 | +| test.c:563:24:563:25 | ip | 4294967295 | +| test.c:564:29:564:30 | ip | 4294967295 | +| test.c:564:40:564:41 | ip | 4294967295 | +| test.c:565:31:565:32 | ip | 4294967295 | +| test.c:566:26:566:27 | ip | 4294967295 | | test.c:567:17:567:18 | ip | 4294967295 | -| test.c:568:18:568:19 | ip | 4294967295 | -| test.c:569:18:569:19 | ip | 4294967295 | -| test.c:570:19:570:20 | ip | 4294967295 | -| test.c:571:24:571:25 | ip | 4294967295 | -| test.c:571:35:571:36 | ip | 4294967295 | -| test.c:571:50:571:51 | ip | 4294967295 | -| test.c:571:61:571:62 | ip | 4294967295 | -| test.c:572:22:572:23 | ip | 4294967295 | -| test.c:573:27:573:28 | ip | 4294967295 | -| test.c:573:38:573:39 | ip | 4294967295 | -| test.c:574:29:574:30 | ip | 4294967295 | -| test.c:575:24:575:25 | ip | 4294967295 | -| test.c:576:17:576:18 | ip | 4294967295 | -| test.c:576:23:576:24 | ip | 4294967295 | -| test.c:576:43:576:44 | ip | 4294967295 | -| test.c:576:49:576:50 | ip | 4294967295 | -| test.c:577:20:577:21 | ip | 4294967295 | -| test.c:578:20:578:21 | ip | 4294967295 | -| test.c:579:20:579:21 | ip | 4294967295 | -| test.c:580:21:580:22 | ip | 4294967295 | -| test.c:581:26:581:27 | ip | 4294967295 | -| test.c:581:37:581:38 | ip | 4294967295 | -| test.c:581:52:581:53 | ip | 4294967295 | -| test.c:581:63:581:64 | ip | 4294967295 | +| test.c:567:32:567:33 | ip | 4294967295 | +| test.c:568:22:568:23 | ip | 4294967295 | +| test.c:569:22:569:23 | ip | 4294967295 | +| test.c:570:22:570:23 | ip | 4294967295 | +| test.c:571:23:571:24 | ip | 4294967295 | +| test.c:572:28:572:29 | ip | 4294967295 | +| test.c:572:39:572:40 | ip | 4294967295 | +| test.c:572:54:572:55 | ip | 4294967295 | +| test.c:572:65:572:66 | ip | 4294967295 | +| test.c:573:26:573:27 | ip | 4294967295 | +| test.c:574:31:574:32 | ip | 4294967295 | +| test.c:574:42:574:43 | ip | 4294967295 | +| test.c:575:33:575:34 | ip | 4294967295 | +| test.c:576:28:576:29 | ip | 4294967295 | +| test.c:577:21:577:22 | ip | 4294967295 | +| test.c:577:36:577:37 | ip | 4294967295 | +| test.c:578:17:578:18 | ip | 4294967295 | +| test.c:579:18:579:19 | ip | 4294967295 | +| test.c:580:18:580:19 | ip | 4294967295 | +| test.c:581:19:581:20 | ip | 4294967295 | | test.c:582:24:582:25 | ip | 4294967295 | -| test.c:583:29:583:30 | ip | 4294967295 | -| test.c:583:40:583:41 | ip | 4294967295 | -| test.c:584:31:584:32 | ip | 4294967295 | -| test.c:585:26:585:27 | ip | 4294967295 | -| test.c:586:20:586:21 | ip | 4294967295 | -| test.c:586:26:586:27 | ip | 4294967295 | -| test.c:587:22:587:23 | ip | 4294967295 | -| test.c:588:18:588:19 | ip | 4294967295 | -| test.c:589:16:589:17 | ip | 4294967295 | -| test.c:590:17:590:18 | ip | 4294967295 | -| test.c:591:18:591:19 | ip | 4294967295 | -| test.c:592:18:592:19 | ip | 4294967295 | -| test.c:593:19:593:20 | ip | 4294967295 | -| test.c:594:24:594:25 | ip | 4294967295 | -| test.c:594:35:594:36 | ip | 4294967295 | -| test.c:594:50:594:51 | ip | 4294967295 | -| test.c:594:61:594:62 | ip | 4294967295 | -| test.c:595:22:595:23 | ip | 4294967295 | -| test.c:596:27:596:28 | ip | 4294967295 | -| test.c:596:38:596:39 | ip | 4294967295 | -| test.c:597:29:597:30 | ip | 4294967295 | -| test.c:598:24:598:25 | ip | 4294967295 | -| test.c:599:15:599:16 | ip | 4294967295 | -| test.c:599:30:599:31 | ip | 4294967295 | -| test.c:600:20:600:21 | ip | 4294967295 | -| test.c:601:20:601:21 | ip | 4294967295 | -| test.c:602:20:602:21 | ip | 4294967295 | -| test.c:603:21:603:22 | ip | 4294967295 | -| test.c:604:26:604:27 | ip | 4294967295 | -| test.c:604:37:604:38 | ip | 4294967295 | -| test.c:604:52:604:53 | ip | 4294967295 | -| test.c:604:63:604:64 | ip | 4294967295 | +| test.c:582:35:582:36 | ip | 4294967295 | +| test.c:582:50:582:51 | ip | 4294967295 | +| test.c:582:61:582:62 | ip | 4294967295 | +| test.c:583:22:583:23 | ip | 4294967295 | +| test.c:584:27:584:28 | ip | 4294967295 | +| test.c:584:38:584:39 | ip | 4294967295 | +| test.c:585:29:585:30 | ip | 4294967295 | +| test.c:586:24:586:25 | ip | 4294967295 | +| test.c:587:17:587:18 | ip | 4294967295 | +| test.c:587:23:587:24 | ip | 4294967295 | +| test.c:587:43:587:44 | ip | 4294967295 | +| test.c:587:49:587:50 | ip | 4294967295 | +| test.c:588:20:588:21 | ip | 4294967295 | +| test.c:589:20:589:21 | ip | 4294967295 | +| test.c:590:20:590:21 | ip | 4294967295 | +| test.c:591:21:591:22 | ip | 4294967295 | +| test.c:592:26:592:27 | ip | 4294967295 | +| test.c:592:37:592:38 | ip | 4294967295 | +| test.c:592:52:592:53 | ip | 4294967295 | +| test.c:592:63:592:64 | ip | 4294967295 | +| test.c:593:24:593:25 | ip | 4294967295 | +| test.c:594:29:594:30 | ip | 4294967295 | +| test.c:594:40:594:41 | ip | 4294967295 | +| test.c:595:31:595:32 | ip | 4294967295 | +| test.c:596:26:596:27 | ip | 4294967295 | +| test.c:597:20:597:21 | ip | 4294967295 | +| test.c:597:26:597:27 | ip | 4294967295 | +| test.c:598:22:598:23 | ip | 4294967295 | +| test.c:599:18:599:19 | ip | 4294967295 | +| test.c:600:16:600:17 | ip | 4294967295 | +| test.c:601:17:601:18 | ip | 4294967295 | +| test.c:602:18:602:19 | ip | 4294967295 | +| test.c:603:18:603:19 | ip | 4294967295 | +| test.c:604:19:604:20 | ip | 4294967295 | | test.c:605:24:605:25 | ip | 4294967295 | -| test.c:606:29:606:30 | ip | 4294967295 | -| test.c:606:40:606:41 | ip | 4294967295 | -| test.c:607:31:607:32 | ip | 4294967295 | -| test.c:608:26:608:27 | ip | 4294967295 | -| test.c:609:19:609:20 | ip | 4294967295 | -| test.c:609:34:609:35 | ip | 4294967295 | -| test.c:610:16:610:17 | ip | 4294967295 | +| test.c:605:35:605:36 | ip | 4294967295 | +| test.c:605:50:605:51 | ip | 4294967295 | +| test.c:605:61:605:62 | ip | 4294967295 | +| test.c:606:22:606:23 | ip | 4294967295 | +| test.c:607:27:607:28 | ip | 4294967295 | +| test.c:607:38:607:39 | ip | 4294967295 | +| test.c:608:29:608:30 | ip | 4294967295 | +| test.c:609:24:609:25 | ip | 4294967295 | +| test.c:610:15:610:16 | ip | 4294967295 | +| test.c:610:30:610:31 | ip | 4294967295 | | test.c:611:20:611:21 | ip | 4294967295 | | test.c:612:20:612:21 | ip | 4294967295 | -| test.c:613:21:613:22 | ip | 4294967295 | -| test.c:614:26:614:27 | ip | 4294967295 | -| test.c:614:37:614:38 | ip | 4294967295 | -| test.c:614:52:614:53 | ip | 4294967295 | -| test.c:614:63:614:64 | ip | 4294967295 | -| test.c:615:24:615:25 | ip | 4294967295 | -| test.c:616:29:616:30 | ip | 4294967295 | -| test.c:616:40:616:41 | ip | 4294967295 | -| test.c:617:31:617:32 | ip | 4294967295 | -| test.c:618:26:618:27 | ip | 4294967295 | -| test.c:619:19:619:20 | ip | 4294967295 | -| test.c:619:25:619:26 | ip | 4294967295 | -| test.c:619:45:619:46 | ip | 4294967295 | -| test.c:619:51:619:52 | ip | 4294967295 | -| test.c:620:18:620:19 | ip | 4294967295 | -| test.c:621:18:621:19 | ip | 4294967295 | -| test.c:622:18:622:19 | ip | 4294967295 | -| test.c:623:19:623:20 | ip | 4294967295 | -| test.c:624:24:624:25 | ip | 4294967295 | -| test.c:624:35:624:36 | ip | 4294967295 | -| test.c:624:50:624:51 | ip | 4294967295 | -| test.c:624:61:624:62 | ip | 4294967295 | -| test.c:625:22:625:23 | ip | 4294967295 | -| test.c:626:27:626:28 | ip | 4294967295 | -| test.c:626:38:626:39 | ip | 4294967295 | +| test.c:613:20:613:21 | ip | 4294967295 | +| test.c:614:21:614:22 | ip | 4294967295 | +| test.c:615:26:615:27 | ip | 4294967295 | +| test.c:615:37:615:38 | ip | 4294967295 | +| test.c:615:52:615:53 | ip | 4294967295 | +| test.c:615:63:615:64 | ip | 4294967295 | +| test.c:616:24:616:25 | ip | 4294967295 | +| test.c:617:29:617:30 | ip | 4294967295 | +| test.c:617:40:617:41 | ip | 4294967295 | +| test.c:618:31:618:32 | ip | 4294967295 | +| test.c:619:26:619:27 | ip | 4294967295 | +| test.c:620:19:620:20 | ip | 4294967295 | +| test.c:620:34:620:35 | ip | 4294967295 | +| test.c:621:16:621:17 | ip | 4294967295 | +| test.c:622:20:622:21 | ip | 4294967295 | +| test.c:623:20:623:21 | ip | 4294967295 | +| test.c:624:21:624:22 | ip | 4294967295 | +| test.c:625:26:625:27 | ip | 4294967295 | +| test.c:625:37:625:38 | ip | 4294967295 | +| test.c:625:52:625:53 | ip | 4294967295 | +| test.c:625:63:625:64 | ip | 4294967295 | +| test.c:626:24:626:25 | ip | 4294967295 | | test.c:627:29:627:30 | ip | 4294967295 | -| test.c:628:24:628:25 | ip | 4294967295 | -| test.c:629:18:629:19 | ip | 4294967295 | -| test.c:629:24:629:25 | ip | 4294967295 | -| test.c:630:20:630:21 | ip | 4294967295 | -| test.c:631:16:631:17 | ip | 4294967295 | -| test.c:632:10:632:23 | special_number | 4294967295 | -| test.c:640:7:640:8 | c1 | 2147483647 | -| test.c:640:13:640:13 | x | 0 | -| test.c:641:7:641:8 | c2 | 2147483647 | -| test.c:641:13:641:13 | x | 748596 | -| test.c:642:7:642:8 | c3 | 2147483647 | -| test.c:642:13:642:13 | x | 85400991 | -| test.c:643:7:643:8 | c4 | 2147483647 | -| test.c:643:13:643:13 | x | 89076886 | -| test.c:644:7:644:8 | c5 | 2147483647 | -| test.c:644:13:644:13 | x | 89175520 | -| test.c:645:7:645:8 | c1 | 2147483647 | -| test.c:645:13:645:14 | c2 | 2147483647 | -| test.c:645:19:645:19 | x | 97010505 | -| test.c:646:7:646:8 | c1 | 2147483647 | -| test.c:646:13:646:14 | c3 | 2147483647 | -| test.c:646:19:646:19 | x | 1035467903 | -| test.c:647:7:647:8 | c1 | 2147483647 | -| test.c:647:13:647:14 | c4 | 2147483647 | -| test.c:647:19:647:19 | x | 1109363551 | -| test.c:648:7:648:8 | c1 | 2147483647 | -| test.c:648:13:648:14 | c5 | 2147483647 | -| test.c:648:19:648:19 | x | 1121708983 | -| test.c:649:7:649:8 | c2 | 2147483647 | -| test.c:649:13:649:14 | c3 | 2147483647 | -| test.c:649:19:649:19 | x | 1121747830 | -| test.c:651:11:651:11 | x | 2147483647 | -| test.c:651:15:651:15 | x | 2147483647 | -| test.c:651:19:651:19 | x | 2147483647 | -| test.c:651:23:651:23 | x | 2147483647 | -| test.c:651:27:651:27 | x | 2147483647 | -| test.c:651:31:651:31 | x | 2147483647 | -| test.c:651:35:651:35 | x | 2147483647 | -| test.c:651:39:651:39 | x | 2147483647 | -| test.c:651:43:651:43 | x | 2147483647 | -| test.c:651:47:651:47 | x | 2147483647 | -| test.c:651:51:651:51 | x | 2147483647 | -| test.c:651:55:651:55 | x | 2147483647 | -| test.c:652:10:652:10 | y | 2147483647 | -| test.c:657:20:657:20 | x | 4294967295 | -| test.c:657:30:657:30 | x | 99 | -| test.c:660:3:660:4 | y1 | 4294967295 | -| test.c:660:11:660:11 | y | 100 | -| test.c:660:14:660:14 | y | 101 | -| test.c:661:3:661:4 | y2 | 4294967295 | -| test.c:661:9:661:9 | y | 101 | -| test.c:661:14:661:14 | y | 102 | -| test.c:661:22:661:22 | y | 105 | -| test.c:662:10:662:11 | y1 | 101 | -| test.c:662:15:662:16 | y2 | 105 | -| test.c:670:3:670:3 | i | 2147483647 | -| test.c:671:7:671:7 | i | 10 | -| test.c:673:3:673:3 | i | 2147483647 | -| test.c:674:3:674:3 | i | 10 | -| test.c:675:7:675:7 | i | 20 | -| test.c:677:3:677:3 | i | 2147483647 | -| test.c:678:3:678:3 | i | 40 | -| test.c:679:7:679:7 | i | 30 | +| test.c:627:40:627:41 | ip | 4294967295 | +| test.c:628:31:628:32 | ip | 4294967295 | +| test.c:629:26:629:27 | ip | 4294967295 | +| test.c:630:19:630:20 | ip | 4294967295 | +| test.c:630:25:630:26 | ip | 4294967295 | +| test.c:630:45:630:46 | ip | 4294967295 | +| test.c:630:51:630:52 | ip | 4294967295 | +| test.c:631:18:631:19 | ip | 4294967295 | +| test.c:632:18:632:19 | ip | 4294967295 | +| test.c:633:18:633:19 | ip | 4294967295 | +| test.c:634:19:634:20 | ip | 4294967295 | +| test.c:635:24:635:25 | ip | 4294967295 | +| test.c:635:35:635:36 | ip | 4294967295 | +| test.c:635:50:635:51 | ip | 4294967295 | +| test.c:635:61:635:62 | ip | 4294967295 | +| test.c:636:22:636:23 | ip | 4294967295 | +| test.c:637:27:637:28 | ip | 4294967295 | +| test.c:637:38:637:39 | ip | 4294967295 | +| test.c:638:29:638:30 | ip | 4294967295 | +| test.c:639:24:639:25 | ip | 4294967295 | +| test.c:640:18:640:19 | ip | 4294967295 | +| test.c:640:24:640:25 | ip | 4294967295 | +| test.c:641:20:641:21 | ip | 4294967295 | +| test.c:642:16:642:17 | ip | 4294967295 | +| test.c:643:10:643:23 | special_number | 4294967295 | +| test.c:651:7:651:8 | c1 | 2147483647 | +| test.c:651:13:651:13 | x | 0 | +| test.c:652:7:652:8 | c2 | 2147483647 | +| test.c:652:13:652:13 | x | 748596 | +| test.c:653:7:653:8 | c3 | 2147483647 | +| test.c:653:13:653:13 | x | 85400991 | +| test.c:654:7:654:8 | c4 | 2147483647 | +| test.c:654:13:654:13 | x | 89076886 | +| test.c:655:7:655:8 | c5 | 2147483647 | +| test.c:655:13:655:13 | x | 89175520 | +| test.c:656:7:656:8 | c1 | 2147483647 | +| test.c:656:13:656:14 | c2 | 2147483647 | +| test.c:656:19:656:19 | x | 97010505 | +| test.c:657:7:657:8 | c1 | 2147483647 | +| test.c:657:13:657:14 | c3 | 2147483647 | +| test.c:657:19:657:19 | x | 1035467903 | +| test.c:658:7:658:8 | c1 | 2147483647 | +| test.c:658:13:658:14 | c4 | 2147483647 | +| test.c:658:19:658:19 | x | 1109363551 | +| test.c:659:7:659:8 | c1 | 2147483647 | +| test.c:659:13:659:14 | c5 | 2147483647 | +| test.c:659:19:659:19 | x | 1121708983 | +| test.c:660:7:660:8 | c2 | 2147483647 | +| test.c:660:13:660:14 | c3 | 2147483647 | +| test.c:660:19:660:19 | x | 1121747830 | +| test.c:662:11:662:11 | x | 2147483647 | +| test.c:662:15:662:15 | x | 2147483647 | +| test.c:662:19:662:19 | x | 2147483647 | +| test.c:662:23:662:23 | x | 2147483647 | +| test.c:662:27:662:27 | x | 2147483647 | +| test.c:662:31:662:31 | x | 2147483647 | +| test.c:662:35:662:35 | x | 2147483647 | +| test.c:662:39:662:39 | x | 2147483647 | +| test.c:662:43:662:43 | x | 2147483647 | +| test.c:662:47:662:47 | x | 2147483647 | +| test.c:662:51:662:51 | x | 2147483647 | +| test.c:662:55:662:55 | x | 2147483647 | +| test.c:663:10:663:10 | y | 2147483647 | +| test.c:668:20:668:20 | x | 4294967295 | +| test.c:668:30:668:30 | x | 99 | +| test.c:671:3:671:4 | y1 | 4294967295 | +| test.c:671:11:671:11 | y | 100 | +| test.c:671:14:671:14 | y | 101 | +| test.c:672:3:672:4 | y2 | 4294967295 | +| test.c:672:9:672:9 | y | 101 | +| test.c:672:14:672:14 | y | 102 | +| test.c:672:22:672:22 | y | 105 | +| test.c:673:10:673:11 | y1 | 101 | +| test.c:673:15:673:16 | y2 | 105 | | test.c:681:3:681:3 | i | 2147483647 | -| test.c:681:7:681:7 | j | 2147483647 | -| test.c:682:7:682:7 | i | 40 | +| test.c:682:7:682:7 | i | 10 | | test.c:684:3:684:3 | i | 2147483647 | -| test.c:684:8:684:8 | j | 40 | -| test.c:685:7:685:7 | i | 50 | -| test.c:687:3:687:3 | i | 2147483647 | -| test.c:687:13:687:13 | j | 50 | -| test.c:688:7:688:7 | i | 60 | -| test.c:695:12:695:12 | a | 4294967295 | -| test.c:695:17:695:17 | a | 4294967295 | -| test.c:695:33:695:33 | b | 4294967295 | -| test.c:695:38:695:38 | b | 4294967295 | -| test.c:696:13:696:13 | a | 11 | -| test.c:696:15:696:15 | b | 23 | -| test.c:697:5:697:9 | total | 0 | -| test.c:697:14:697:14 | r | 253 | -| test.c:699:12:699:12 | a | 4294967295 | -| test.c:699:17:699:17 | a | 4294967295 | -| test.c:699:33:699:33 | b | 4294967295 | -| test.c:699:38:699:38 | b | 4294967295 | -| test.c:700:13:700:13 | a | 11 | -| test.c:700:15:700:15 | b | 23 | -| test.c:701:5:701:9 | total | 253 | -| test.c:701:14:701:14 | r | 253 | -| test.c:703:12:703:12 | a | 4294967295 | -| test.c:703:17:703:17 | a | 4294967295 | -| test.c:703:34:703:34 | b | 4294967295 | -| test.c:703:39:703:39 | b | 4294967295 | -| test.c:704:13:704:13 | a | 11 | -| test.c:704:15:704:15 | b | 23 | -| test.c:705:5:705:9 | total | 506 | -| test.c:705:14:705:14 | r | 253 | -| test.c:708:10:708:14 | total | 759 | -| test.c:714:12:714:12 | b | 4294967295 | -| test.c:714:17:714:17 | b | 4294967295 | -| test.c:715:16:715:16 | b | 23 | -| test.c:716:5:716:9 | total | 0 | +| test.c:685:3:685:3 | i | 10 | +| test.c:686:7:686:7 | i | 20 | +| test.c:688:3:688:3 | i | 2147483647 | +| test.c:689:3:689:3 | i | 40 | +| test.c:690:7:690:7 | i | 30 | +| test.c:692:3:692:3 | i | 2147483647 | +| test.c:692:7:692:7 | j | 2147483647 | +| test.c:693:7:693:7 | i | 40 | +| test.c:695:3:695:3 | i | 2147483647 | +| test.c:695:8:695:8 | j | 40 | +| test.c:696:7:696:7 | i | 50 | +| test.c:698:3:698:3 | i | 2147483647 | +| test.c:698:13:698:13 | j | 50 | +| test.c:699:7:699:7 | i | 60 | +| test.c:706:12:706:12 | a | 4294967295 | +| test.c:706:17:706:17 | a | 4294967295 | +| test.c:706:33:706:33 | b | 4294967295 | +| test.c:706:38:706:38 | b | 4294967295 | +| test.c:707:13:707:13 | a | 11 | +| test.c:707:15:707:15 | b | 23 | +| test.c:708:5:708:9 | total | 0 | +| test.c:708:14:708:14 | r | 253 | +| test.c:710:12:710:12 | a | 4294967295 | +| test.c:710:17:710:17 | a | 4294967295 | +| test.c:710:33:710:33 | b | 4294967295 | +| test.c:710:38:710:38 | b | 4294967295 | +| test.c:711:13:711:13 | a | 11 | +| test.c:711:15:711:15 | b | 23 | +| test.c:712:5:712:9 | total | 253 | +| test.c:712:14:712:14 | r | 253 | +| test.c:714:12:714:12 | a | 4294967295 | +| test.c:714:17:714:17 | a | 4294967295 | +| test.c:714:34:714:34 | b | 4294967295 | +| test.c:714:39:714:39 | b | 4294967295 | +| test.c:715:13:715:13 | a | 11 | +| test.c:715:15:715:15 | b | 23 | +| test.c:716:5:716:9 | total | 506 | | test.c:716:14:716:14 | r | 253 | -| test.c:718:12:718:12 | b | 4294967295 | -| test.c:718:17:718:17 | b | 4294967295 | -| test.c:719:16:719:16 | b | 23 | -| test.c:720:5:720:9 | total | 253 | -| test.c:720:14:720:14 | r | 253 | -| test.c:722:13:722:13 | b | 4294967295 | -| test.c:722:18:722:18 | b | 4294967295 | -| test.c:723:16:723:16 | b | 23 | -| test.c:724:5:724:9 | total | 506 | -| test.c:724:14:724:14 | r | 253 | -| test.c:727:10:727:14 | total | 759 | -| test.c:732:3:732:3 | x | 18446744073709551616 | -| test.c:732:7:732:7 | y | 18446744073709551616 | -| test.c:733:3:733:4 | xy | 18446744073709551616 | -| test.c:733:8:733:8 | x | 1000000003 | -| test.c:733:12:733:12 | y | 1000000003 | -| test.c:734:10:734:11 | xy | 1000000006000000000 | -| test.c:739:3:739:3 | x | 18446744073709551616 | -| test.c:740:3:740:3 | y | 18446744073709551616 | -| test.c:741:3:741:4 | xy | 18446744073709551616 | -| test.c:741:8:741:8 | x | 274177 | -| test.c:741:12:741:12 | y | 67280421310721 | -| test.c:742:10:742:11 | xy | 18446744073709551616 | -| test.c:746:7:746:8 | ui | 4294967295 | -| test.c:747:43:747:44 | ui | 4294967295 | -| test.c:747:48:747:49 | ui | 4294967295 | -| test.c:748:12:748:17 | result | 18446744065119617024 | -| test.c:750:7:750:8 | ul | 18446744073709551616 | -| test.c:751:28:751:29 | ul | 18446744073709551616 | -| test.c:751:33:751:34 | ul | 18446744073709551616 | -| test.c:752:12:752:17 | result | 18446744073709551616 | -| test.c:758:7:758:8 | ui | 4294967295 | -| test.c:758:19:758:20 | ui | 10 | -| test.c:759:5:759:6 | ui | 10 | -| test.c:759:11:759:12 | ui | 10 | -| test.c:760:12:760:13 | ui | 100 | -| test.c:764:3:764:9 | uiconst | 10 | -| test.c:767:3:767:9 | ulconst | 10 | -| test.c:768:10:768:16 | uiconst | 40 | -| test.c:768:20:768:26 | ulconst | 40 | -| test.c:772:7:772:7 | i | 2147483647 | -| test.c:772:18:772:18 | i | 2147483647 | -| test.c:773:5:773:5 | i | 2147483647 | -| test.c:773:13:773:13 | i | 2 | -| test.c:774:9:774:9 | i | 10 | -| test.c:776:5:776:5 | i | 2147483647 | -| test.c:776:9:776:9 | i | 10 | -| test.c:777:9:777:9 | i | 15 | -| test.c:779:5:779:5 | i | 15 | -| test.c:780:9:780:9 | i | 105 | -| test.c:782:5:782:5 | i | 105 | -| test.c:783:9:783:9 | i | 2310 | -| test.c:785:7:785:7 | i | 2147483647 | -| test.c:786:5:786:5 | i | 2147483647 | -| test.c:786:9:786:9 | i | -1 | -| test.c:787:9:787:9 | i | 1 | -| test.c:789:3:789:3 | i | 2147483647 | -| test.c:789:7:789:7 | i | 2147483647 | -| test.c:790:10:790:10 | i | 2147483647 | -| test.c:793:3:793:3 | i | 2147483647 | -| test.c:793:10:793:11 | sc | 1 | -| test.c:795:7:795:7 | i | 127 | -| test.c:802:7:802:7 | n | 4294967295 | -| test.c:804:7:804:7 | n | 4294967295 | -| test.c:805:9:805:9 | n | 4294967295 | -| test.c:808:7:808:7 | n | 4294967295 | -| test.c:809:9:809:9 | n | 4294967295 | -| test.c:811:9:811:9 | n | 0 | -| test.c:814:8:814:8 | n | 4294967295 | -| test.c:815:9:815:9 | n | 0 | -| test.c:817:9:817:9 | n | 4294967295 | -| test.c:820:10:820:10 | n | 4294967295 | -| test.c:821:5:821:5 | n | 4294967295 | -| test.c:824:7:824:7 | n | 0 | -| test.c:828:7:828:7 | n | 32767 | -| test.c:831:7:831:7 | n | 32767 | -| test.c:832:9:832:9 | n | 0 | -| test.c:834:9:834:9 | n | 32767 | -| test.c:837:7:837:7 | n | 32767 | -| test.c:838:9:838:9 | n | 32767 | -| test.c:840:9:840:9 | n | 0 | -| test.c:843:10:843:10 | n | 32767 | -| test.c:844:5:844:5 | n | 32767 | -| test.c:847:7:847:7 | n | 0 | -| test.c:851:7:851:7 | n | 32767 | -| test.c:852:9:852:9 | n | 32767 | -| test.c:853:11:853:11 | n | 32767 | -| test.c:857:7:857:7 | n | 32767 | -| test.c:858:13:858:13 | n | 32767 | -| test.c:861:9:861:9 | n | 32767 | -| test.c:864:7:864:7 | n | 32767 | -| test.c:864:22:864:22 | n | 32767 | -| test.c:865:9:865:9 | n | 32767 | +| test.c:719:10:719:14 | total | 759 | +| test.c:725:12:725:12 | b | 4294967295 | +| test.c:725:17:725:17 | b | 4294967295 | +| test.c:726:16:726:16 | b | 23 | +| test.c:727:5:727:9 | total | 0 | +| test.c:727:14:727:14 | r | 253 | +| test.c:729:12:729:12 | b | 4294967295 | +| test.c:729:17:729:17 | b | 4294967295 | +| test.c:730:16:730:16 | b | 23 | +| test.c:731:5:731:9 | total | 253 | +| test.c:731:14:731:14 | r | 253 | +| test.c:733:13:733:13 | b | 4294967295 | +| test.c:733:18:733:18 | b | 4294967295 | +| test.c:734:16:734:16 | b | 23 | +| test.c:735:5:735:9 | total | 506 | +| test.c:735:14:735:14 | r | 253 | +| test.c:738:10:738:14 | total | 759 | +| test.c:743:3:743:3 | x | 18446744073709551616 | +| test.c:743:7:743:7 | y | 18446744073709551616 | +| test.c:744:3:744:4 | xy | 18446744073709551616 | +| test.c:744:8:744:8 | x | 1000000003 | +| test.c:744:12:744:12 | y | 1000000003 | +| test.c:745:10:745:11 | xy | 1000000006000000000 | +| test.c:750:3:750:3 | x | 18446744073709551616 | +| test.c:751:3:751:3 | y | 18446744073709551616 | +| test.c:752:3:752:4 | xy | 18446744073709551616 | +| test.c:752:8:752:8 | x | 274177 | +| test.c:752:12:752:12 | y | 67280421310721 | +| test.c:753:10:753:11 | xy | 18446744073709551616 | +| test.c:757:7:757:8 | ui | 4294967295 | +| test.c:758:43:758:44 | ui | 4294967295 | +| test.c:758:48:758:49 | ui | 4294967295 | +| test.c:759:12:759:17 | result | 18446744065119617024 | +| test.c:761:7:761:8 | ul | 18446744073709551616 | +| test.c:762:28:762:29 | ul | 18446744073709551616 | +| test.c:762:33:762:34 | ul | 18446744073709551616 | +| test.c:763:12:763:17 | result | 18446744073709551616 | +| test.c:769:7:769:8 | ui | 4294967295 | +| test.c:769:19:769:20 | ui | 10 | +| test.c:770:5:770:6 | ui | 10 | +| test.c:770:11:770:12 | ui | 10 | +| test.c:771:12:771:13 | ui | 100 | +| test.c:775:3:775:9 | uiconst | 10 | +| test.c:778:3:778:9 | ulconst | 10 | +| test.c:779:10:779:16 | uiconst | 40 | +| test.c:779:20:779:26 | ulconst | 40 | +| test.c:783:7:783:7 | i | 2147483647 | +| test.c:783:18:783:18 | i | 2147483647 | +| test.c:784:5:784:5 | i | 2147483647 | +| test.c:784:13:784:13 | i | 2 | +| test.c:785:9:785:9 | i | 10 | +| test.c:787:5:787:5 | i | 2147483647 | +| test.c:787:9:787:9 | i | 10 | +| test.c:788:9:788:9 | i | 15 | +| test.c:790:5:790:5 | i | 15 | +| test.c:791:9:791:9 | i | 105 | +| test.c:793:5:793:5 | i | 105 | +| test.c:794:9:794:9 | i | 2310 | +| test.c:796:7:796:7 | i | 2147483647 | +| test.c:797:5:797:5 | i | 2147483647 | +| test.c:797:9:797:9 | i | -1 | +| test.c:798:9:798:9 | i | 1 | +| test.c:800:3:800:3 | i | 2147483647 | +| test.c:800:7:800:7 | i | 2147483647 | +| test.c:801:10:801:10 | i | 2147483647 | +| test.c:804:3:804:3 | i | 2147483647 | +| test.c:804:10:804:11 | sc | 1 | +| test.c:806:7:806:7 | i | 127 | +| test.c:813:7:813:7 | n | 4294967295 | +| test.c:815:7:815:7 | n | 4294967295 | +| test.c:816:9:816:9 | n | 4294967295 | +| test.c:819:7:819:7 | n | 4294967295 | +| test.c:820:9:820:9 | n | 4294967295 | +| test.c:822:9:822:9 | n | 0 | +| test.c:825:8:825:8 | n | 4294967295 | +| test.c:826:9:826:9 | n | 0 | +| test.c:828:9:828:9 | n | 4294967295 | +| test.c:831:10:831:10 | n | 4294967295 | +| test.c:832:5:832:5 | n | 4294967295 | +| test.c:835:7:835:7 | n | 0 | +| test.c:839:7:839:7 | n | 32767 | +| test.c:842:7:842:7 | n | 32767 | +| test.c:843:9:843:9 | n | 0 | +| test.c:845:9:845:9 | n | 32767 | +| test.c:848:7:848:7 | n | 32767 | +| test.c:849:9:849:9 | n | 32767 | +| test.c:851:9:851:9 | n | 0 | +| test.c:854:10:854:10 | n | 32767 | +| test.c:855:5:855:5 | n | 32767 | +| test.c:858:7:858:7 | n | 0 | +| test.c:862:7:862:7 | n | 32767 | +| test.c:863:9:863:9 | n | 32767 | +| test.c:864:11:864:11 | n | 32767 | | test.c:868:7:868:7 | n | 32767 | -| test.c:869:5:869:5 | n | 32767 | -| test.c:869:10:869:10 | n | 32767 | -| test.c:869:14:869:14 | n | 0 | -| test.c:870:6:870:6 | n | 32767 | -| test.c:870:10:870:10 | n | 0 | -| test.c:870:14:870:14 | n | 32767 | -| test.c:881:7:881:8 | ss | 32767 | -| test.c:882:9:882:10 | ss | 3 | -| test.c:885:7:885:8 | ss | 32767 | -| test.c:886:9:886:10 | ss | 32767 | -| test.c:889:14:889:15 | us | 65535 | -| test.c:890:9:890:10 | us | 32767 | -| test.c:893:14:893:15 | us | 65535 | -| test.c:894:9:894:10 | us | 65535 | -| test.c:897:7:897:8 | ss | 32767 | -| test.c:898:9:898:10 | ss | 32767 | -| test.c:901:7:901:8 | ss | 32767 | -| test.c:902:9:902:10 | ss | 2 | -| test.c:908:8:908:8 | s | 2147483647 | -| test.c:908:15:908:15 | s | 127 | -| test.c:908:23:908:23 | s | 9 | -| test.c:909:18:909:18 | s | 9 | -| test.c:909:22:909:22 | s | 9 | -| test.c:910:9:910:14 | result | 127 | -| test.c:916:7:916:7 | i | 0 | -| test.c:917:9:917:9 | i | 2147483647 | -| test.c:921:7:921:7 | u | 0 | -| test.c:922:9:922:9 | u | 4294967295 | -| test.c:927:12:927:12 | s | 2147483647 | -| test.c:928:7:928:8 | s2 | 4 | -| test.c:933:7:933:7 | x | 2147483647 | -| test.c:934:9:934:9 | y | 2147483647 | -| test.c:938:7:938:7 | y | 2147483647 | -| test.c:947:7:947:7 | x | 2147483647 | -| test.c:952:7:952:7 | x | 15 | -| test.c:959:8:959:8 | x | 2147483647 | -| test.c:959:12:959:12 | y | 256 | -| test.c:960:9:960:9 | x | 2147483647 | -| test.c:961:9:961:9 | y | 256 | +| test.c:869:13:869:13 | n | 32767 | +| test.c:872:9:872:9 | n | 32767 | +| test.c:875:7:875:7 | n | 32767 | +| test.c:875:22:875:22 | n | 32767 | +| test.c:876:9:876:9 | n | 32767 | +| test.c:879:7:879:7 | n | 32767 | +| test.c:880:5:880:5 | n | 32767 | +| test.c:880:10:880:10 | n | 32767 | +| test.c:880:14:880:14 | n | 0 | +| test.c:881:6:881:6 | n | 32767 | +| test.c:881:10:881:10 | n | 0 | +| test.c:881:14:881:14 | n | 32767 | +| test.c:892:7:892:8 | ss | 32767 | +| test.c:893:9:893:10 | ss | 3 | +| test.c:896:7:896:8 | ss | 32767 | +| test.c:897:9:897:10 | ss | 32767 | +| test.c:900:14:900:15 | us | 65535 | +| test.c:901:9:901:10 | us | 32767 | +| test.c:904:14:904:15 | us | 65535 | +| test.c:905:9:905:10 | us | 65535 | +| test.c:908:7:908:8 | ss | 32767 | +| test.c:909:9:909:10 | ss | 32767 | +| test.c:912:7:912:8 | ss | 32767 | +| test.c:913:9:913:10 | ss | 2 | +| test.c:919:8:919:8 | s | 2147483647 | +| test.c:919:15:919:15 | s | 127 | +| test.c:919:23:919:23 | s | 9 | +| test.c:920:18:920:18 | s | 9 | +| test.c:920:22:920:22 | s | 9 | +| test.c:921:9:921:14 | result | 127 | +| test.c:927:7:927:7 | i | 0 | +| test.c:928:9:928:9 | i | 2147483647 | +| test.c:932:7:932:7 | u | 0 | +| test.c:933:9:933:9 | u | 4294967295 | +| test.c:938:12:938:12 | s | 2147483647 | +| test.c:939:7:939:8 | s2 | 4 | +| test.c:944:7:944:7 | x | 2147483647 | +| test.c:945:9:945:9 | y | 2147483647 | +| test.c:949:7:949:7 | y | 2147483647 | +| test.c:958:7:958:7 | x | 2147483647 | +| test.c:963:7:963:7 | x | 15 | +| test.c:970:8:970:8 | x | 2147483647 | +| test.c:970:12:970:12 | y | 256 | +| test.c:971:9:971:9 | x | 2147483647 | +| test.c:972:9:972:9 | y | 256 | | test.cpp:10:7:10:7 | b | 2147483647 | | test.cpp:11:5:11:5 | x | 2147483647 | | test.cpp:13:10:13:10 | x | 2147483647 | From 3a135888c7f420f4477caeb7a98d45bf6b977b32 Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Sat, 4 Oct 2025 16:46:50 +0200 Subject: [PATCH 47/63] C++: Improve bounds from inequalities on integers --- .../cpp/rangeanalysis/SimpleRangeAnalysis.qll | 48 +++++++++++++++---- .../SimpleRangeAnalysis/lowerBound.expected | 14 +++--- .../SimpleRangeAnalysis/ternaryLower.expected | 8 ++-- .../SimpleRangeAnalysis/ternaryUpper.expected | 2 +- .../SimpleRangeAnalysis/upperBound.expected | 4 +- 5 files changed, 52 insertions(+), 24 deletions(-) diff --git a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll index cc4647b54e0..c3c3c2dd3e7 100644 --- a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll +++ b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll @@ -1709,6 +1709,22 @@ predicate nonNanGuardedVariable(Expr guard, VariableAccess v, boolean branch) { nanExcludingComparison(guard, branch) } +/** + * Adjusts a lower bound to its meaning for integral types. + * + * Examples: + * `>= 3.0` becomes `3.0` + * ` > 3.0` becomes `4.0` + * `>= 3.5` becomes `4.0` + * ` > 3.5` becomes `4.0` + */ +bindingset[strictness, lb] +private float adjustLowerBoundIntegral(RelationStrictness strictness, float lb) { + if strictness = Nonstrict() and lb.floorFloat() = lb + then result = lb + else result = lb.floorFloat() + 1 +} + /** * If the guard is a comparison of the form `p*v + q r`, then this * predicate uses the bounds information for `r` to compute a lower bound @@ -1720,15 +1736,29 @@ private predicate lowerBoundFromGuard(Expr guard, VariableAccess v, float lb, bo | if nonNanGuardedVariable(guard, v, branch) then - if - strictness = Nonstrict() or - not getVariableRangeType(v.getTarget()) instanceof IntegralType - then lb = childLB - else lb = childLB + 1 + if getVariableRangeType(v.getTarget()) instanceof IntegralType + then lb = adjustLowerBoundIntegral(strictness, childLB) + else lb = childLB else lb = varMinVal(v.getTarget()) ) } +/** + * Adjusts an upper bound to its meaning for integral types. + * + * Examples: + * `<= 3.0` becomes `3.0` + * ` < 3.0` becomes `2.0` + * `<= 3.5` becomes `3.0` + * ` < 3.5` becomes `3.0` + */ +bindingset[strictness, ub] +private float adjustUpperBoundIntegral(RelationStrictness strictness, float ub) { + if strictness = Nonstrict() and ub.ceilFloat() = ub + then result = ub + else result = ub.ceilFloat() - 1 +} + /** * If the guard is a comparison of the form `p*v + q r`, then this * predicate uses the bounds information for `r` to compute a upper bound @@ -1740,11 +1770,9 @@ private predicate upperBoundFromGuard(Expr guard, VariableAccess v, float ub, bo | if nonNanGuardedVariable(guard, v, branch) then - if - strictness = Nonstrict() or - not getVariableRangeType(v.getTarget()) instanceof IntegralType - then ub = childUB - else ub = childUB - 1 + if getVariableRangeType(v.getTarget()) instanceof IntegralType + then ub = adjustUpperBoundIntegral(strictness, childUB) + else ub = childUB else ub = varMaxVal(v.getTarget()) ) } diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/lowerBound.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/lowerBound.expected index 8fe3b0ea0a1..0c520190c8b 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/lowerBound.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/lowerBound.expected @@ -353,19 +353,19 @@ | test.c:341:32:341:34 | odd | 9007199254740991 | | test.c:343:10:343:16 | shifted | 4503599627370495 | | test.c:348:27:348:27 | e | 0 | -| test.c:348:40:348:40 | e | 0.5 | +| test.c:348:40:348:40 | e | 0 | | test.c:349:25:349:25 | e | 0 | | test.c:349:39:349:39 | e | 0 | | test.c:350:27:350:27 | e | 0 | -| test.c:350:40:350:40 | e | 0.333333 | +| test.c:350:40:350:40 | e | 0 | | test.c:351:27:351:27 | e | 0 | -| test.c:351:40:351:40 | e | 0.5 | +| test.c:351:40:351:40 | e | 0 | | test.c:352:27:352:27 | e | 0 | -| test.c:352:41:352:41 | e | 8.5 | -| test.c:354:10:354:12 | bi1 | 0.5 | +| test.c:352:41:352:41 | e | 8 | +| test.c:354:10:354:12 | bi1 | 0 | | test.c:354:16:354:18 | bi2 | 0 | -| test.c:354:22:354:24 | bi3 | 0.333333 | -| test.c:354:28:354:30 | bi4 | 0.5 | +| test.c:354:22:354:24 | bi3 | 0 | +| test.c:354:28:354:30 | bi4 | 0 | | test.c:354:34:354:36 | bi5 | 2 | | test.c:359:7:359:7 | x | -2147483648 | | test.c:363:10:363:10 | i | 0 | diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryLower.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryLower.expected index f4e3cdb8cc2..50b65d84bf3 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryLower.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryLower.expected @@ -1,9 +1,9 @@ | test.c:154:10:154:40 | ... ? ... : ... | -1.0 | 1.0 | -1.0 | -| test.c:348:22:348:44 | ... ? ... : ... | 0.5 | 0.5 | 2.0 | +| test.c:348:22:348:44 | ... ? ... : ... | 0.0 | 0.0 | 2.0 | | test.c:349:20:349:43 | ... ? ... : ... | 0.0 | 0.0 | 2.0 | -| test.c:350:22:350:44 | ... ? ... : ... | 0.33333333333333337 | 0.33333333333333337 | 2.0 | -| test.c:351:22:351:44 | ... ? ... : ... | 0.5 | 0.5 | 2.0 | -| test.c:352:22:352:45 | ... ? ... : ... | 2.0 | 8.5 | 2.0 | +| test.c:350:22:350:44 | ... ? ... : ... | 0.0 | 0.0 | 2.0 | +| test.c:351:22:351:44 | ... ? ... : ... | 0.0 | 0.0 | 2.0 | +| test.c:352:22:352:45 | ... ? ... : ... | 2.0 | 8.0 | 2.0 | | test.c:378:8:378:23 | ... ? ... : ... | 0.0 | 0.0 | 10.0 | | test.c:379:8:379:24 | ... ? ... : ... | 0.0 | 10.0 | 0.0 | | test.c:387:10:387:15 | ... ? ... : ... | 0.0 | 0.0 | 5.0 | diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryUpper.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryUpper.expected index 529b6ea83f1..3b3a00df6b9 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryUpper.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryUpper.expected @@ -1,7 +1,7 @@ | test.c:154:10:154:40 | ... ? ... : ... | 2.147483647E9 | 2.147483647E9 | -1.0 | | test.c:348:22:348:44 | ... ? ... : ... | 2.147483647E9 | 2.147483647E9 | 2.0 | | test.c:349:20:349:43 | ... ? ... : ... | 2.147483647E9 | 2.147483647E9 | 2.0 | -| test.c:350:22:350:44 | ... ? ... : ... | 1.4316557643333333E9 | 1.4316557643333333E9 | 2.0 | +| test.c:350:22:350:44 | ... ? ... : ... | 1.431655764E9 | 1.431655764E9 | 2.0 | | test.c:351:22:351:44 | ... ? ... : ... | 2.147483647E9 | 2.147483647E9 | 2.0 | | test.c:352:22:352:45 | ... ? ... : ... | 2.147483647E9 | 2.147483647E9 | 2.0 | | test.c:378:8:378:23 | ... ? ... : ... | 99.0 | 99.0 | 10.0 | diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/upperBound.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/upperBound.expected index 16181b8e238..dd7fc398f0c 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/upperBound.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/upperBound.expected @@ -357,14 +357,14 @@ | test.c:349:25:349:25 | e | 4294967295 | | test.c:349:39:349:39 | e | 2147483647 | | test.c:350:27:350:27 | e | 4294967295 | -| test.c:350:40:350:40 | e | 1431655764.333333 | +| test.c:350:40:350:40 | e | 1431655764 | | test.c:351:27:351:27 | e | 4294967295 | | test.c:351:40:351:40 | e | 2147483647 | | test.c:352:27:352:27 | e | 4294967295 | | test.c:352:41:352:41 | e | 2147483647 | | test.c:354:10:354:12 | bi1 | 2147483647 | | test.c:354:16:354:18 | bi2 | 2147483647 | -| test.c:354:22:354:24 | bi3 | 1431655764.333333 | +| test.c:354:22:354:24 | bi3 | 1431655764 | | test.c:354:28:354:30 | bi4 | 2147483647 | | test.c:354:34:354:36 | bi5 | 2147483647 | | test.c:359:7:359:7 | x | 2147483647 | From 8c9318b1a06634983cf401e35b013d3f7ea6b6aa Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan <62447351+owen-mc@users.noreply.github.com> Date: Fri, 9 Jan 2026 09:38:10 +0000 Subject: [PATCH 48/63] Minor tweaks to QLDocs --- .../lib/semmle/code/java/security/AndroidIntentRedirection.qll | 2 +- java/ql/lib/semmle/code/java/security/FragmentInjection.qll | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/java/ql/lib/semmle/code/java/security/AndroidIntentRedirection.qll b/java/ql/lib/semmle/code/java/security/AndroidIntentRedirection.qll index 57dfcd29117..6b8ea861049 100644 --- a/java/ql/lib/semmle/code/java/security/AndroidIntentRedirection.qll +++ b/java/ql/lib/semmle/code/java/security/AndroidIntentRedirection.qll @@ -35,7 +35,7 @@ private class DefaultIntentRedirectionSink extends IntentRedirectionSink { DefaultIntentRedirectionSink() { sinkNode(this, "intent-redirection") } } -/** External sanitizers for Intent redirection vulnerabilities. */ +/** An external sanitizer for Intent redirection vulnerabilities. */ private class ExternalIntentRedirectionSanitizer extends IntentRedirectionSanitizer { ExternalIntentRedirectionSanitizer() { barrierNode(this, "intent-redirection") } } diff --git a/java/ql/lib/semmle/code/java/security/FragmentInjection.qll b/java/ql/lib/semmle/code/java/security/FragmentInjection.qll index 6a01b2c8b18..d27677b2271 100644 --- a/java/ql/lib/semmle/code/java/security/FragmentInjection.qll +++ b/java/ql/lib/semmle/code/java/security/FragmentInjection.qll @@ -50,7 +50,7 @@ private class DefaultFragmentInjectionSink extends FragmentInjectionSink { } /** - * A barrier for Fragment injection vulnerabilities. + * A sanitizer for Fragment injection vulnerabilities. */ abstract class FragmentInjectionSanitizer extends DataFlow::Node { } From 6028cd6636402efd5aa8ac6c6f02fe76e68aa98a Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Fri, 9 Jan 2026 11:14:23 +0100 Subject: [PATCH 49/63] Address review comments --- .../codeql/rust/internal/TypeInference.qll | 37 +++++++++++-------- .../lib/codeql/rust/internal/TypeMention.qll | 2 +- .../internal/typeinference/DerefChain.qll | 26 +++---------- .../typeinference/internal/TypeInference.qll | 14 +++---- 4 files changed, 35 insertions(+), 44 deletions(-) diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index e07d3cba083..890c9fc8251 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -1538,7 +1538,7 @@ private module MethodResolution { pragma[nomagic] Type getACandidateReceiverTypeAtNoBorrow(DerefChain derefChain, TypePath path) { result = this.getReceiverTypeAt(path) and - derefChain = "" + derefChain.isEmpty() or exists(DerefImplItemNode impl, DerefChain suffix | result = ImplicitDeref::getDereferencedCandidateReceiverType(this, impl, suffix, path) and @@ -1647,7 +1647,7 @@ private module MethodResolution { or // needed for the `hasNoCompatibleTarget` check in // `ReceiverSatisfiesBlanketLikeConstraintInput::hasBlanketCandidate` - derefChain = "" + derefChain.isEmpty() ) and strippedType = this.getComplexStrippedType(derefChain, TNoBorrowKind(), strippedTypePath) and n = -1 @@ -1680,7 +1680,7 @@ private module MethodResolution { or // needed for the `hasNoCompatibleTarget` check in // `ReceiverSatisfiesBlanketLikeConstraintInput::hasBlanketCandidate` - derefChain = "" + derefChain.isEmpty() ) and strippedType = this.getComplexStrippedType(derefChain, TNoBorrowKind(), strippedTypePath) and n = -1 @@ -1830,7 +1830,7 @@ private module MethodResolution { * as long as the method cannot be resolved in an earlier candidate type, and possibly * applying a borrow at the end. * - * The string `derefChain` encodes the sequence of dereferences, and `borrows` indicates + * The parameter `derefChain` encodes the sequence of dereferences, and `borrows` indicates * whether a borrow has been applied. * * [1]: https://doc.rust-lang.org/reference/expressions/method-call-expr.html#r-expr.method.candidate-receivers @@ -1865,8 +1865,8 @@ private module MethodResolution { /** * Gets a method that this call resolves to after having applied a sequence of - * dereferences and possibly a borrow on the receiver type, encoded in the string - * `derefChain` and the enum `borrow`. + * dereferences and possibly a borrow on the receiver type, encoded in `derefChain` + * and `borrow`. */ pragma[nomagic] Method resolveCallTarget(ImplOrTraitItemNode i, DerefChain derefChain, BorrowKind borrow) { @@ -1881,9 +1881,7 @@ private module MethodResolution { * and borrowed according to `derefChain` and `borrow`, in order to be able to * resolve the call target. */ - predicate argumentHasImplicitDerefChainBorrow( - AstNode arg, DerefChain derefChain, BorrowKind borrow - ) { + predicate argumentHasImplicitDerefChainBorrow(Expr arg, DerefChain derefChain, BorrowKind borrow) { exists(this.resolveCallTarget(_, derefChain, borrow)) and arg = this.getArg(any(ArgumentPosition pos | pos.isSelf())) and not (derefChain.isEmpty() and borrow.isNoBorrow()) @@ -2025,7 +2023,7 @@ private module MethodResolution { } override predicate argumentHasImplicitDerefChainBorrow( - AstNode arg, DerefChain derefChain, BorrowKind borrow + Expr arg, DerefChain derefChain, BorrowKind borrow ) { exists(ArgumentPosition pos, boolean isMutable | this.implicitBorrowAt(pos, isMutable) and @@ -2161,7 +2159,7 @@ private module MethodResolution { MkMethodCallDerefCand(MethodCall mc, DerefChain derefChain) { mc.supportsAutoDerefAndBorrow() and mc.hasNoCompatibleTargetMutBorrow(derefChain) and - exists(mc.getACandidateReceiverTypeAtNoBorrow(derefChain, _)) + exists(mc.getACandidateReceiverTypeAtNoBorrow(derefChain, TypePath::nil())) } /** A method call with a dereference chain. */ @@ -2579,6 +2577,13 @@ private Type inferMethodCallTypeNonSelf(AstNode n, boolean isReturn, TypePath pa ) } +/** + * Gets the type of `n` at `path` after applying `derefChain` and `borrow`, + * where `n` is the `self` argument of a method call. + * + * The predicate recursively pops the head of `derefChain` until it becomes + * empty, at which point the inferred type can be applied back to `n`. + */ pragma[nomagic] private Type inferMethodCallTypeSelf( AstNode n, DerefChain derefChain, BorrowKind borrow, TypePath path @@ -2604,14 +2609,14 @@ private Type inferMethodCallTypeSelf( t0 = inferMethodCallTypeSelf(n, derefChain0, borrow, path0) and derefChain0.isCons(impl, derefChain) and borrow.isNoBorrow() and - selfParamType = impl.resolveSelfParamTypeStrippedAt(selfPath) + selfParamType = impl.resolveSelfTypeAt(selfPath) | result = selfParamType and path = selfPath and not result instanceof TypeParameter or exists(TypeParameter tp, TypePath pathToTypeParam, TypePath suffix | - impl.returnTypeStrippedMentionsTypeParameterAt(tp, pathToTypeParam) and + impl.targetTypeParameterAt(tp, pathToTypeParam) and path0 = pathToTypeParam.appendInverse(suffix) and result = t0 and path = selfPath.append(suffix) @@ -3911,13 +3916,13 @@ cached private module Cached { /** Holds if `n` is implicitly dereferenced and/or borrowed. */ cached - predicate implicitDerefChainBorrow(AstNode n, DerefChain derefChain, boolean borrow) { + predicate implicitDerefChainBorrow(Expr e, DerefChain derefChain, boolean borrow) { exists(BorrowKind bk | - any(MethodResolution::MethodCall mc).argumentHasImplicitDerefChainBorrow(n, derefChain, bk) and + any(MethodResolution::MethodCall mc).argumentHasImplicitDerefChainBorrow(e, derefChain, bk) and if bk.isNoBorrow() then borrow = false else borrow = true ) or - n = + e = any(FieldExpr fe | exists(resolveStructFieldExpr(fe, derefChain)) or diff --git a/rust/ql/lib/codeql/rust/internal/TypeMention.qll b/rust/ql/lib/codeql/rust/internal/TypeMention.qll index d8cf06827f6..74661bb86c3 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeMention.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeMention.qll @@ -309,7 +309,7 @@ class NonAliasPathTypeMention extends PathTypeMention { } pragma[nomagic] -private Type resolveImplSelfTypeAt(Impl i, TypePath path) { +Type resolveImplSelfTypeAt(Impl i, TypePath path) { result = i.getSelfTy().(TypeMention).resolveTypeAt(path) } diff --git a/rust/ql/lib/codeql/rust/internal/typeinference/DerefChain.qll b/rust/ql/lib/codeql/rust/internal/typeinference/DerefChain.qll index e655b8446e7..06fd0dbaede 100644 --- a/rust/ql/lib/codeql/rust/internal/typeinference/DerefChain.qll +++ b/rust/ql/lib/codeql/rust/internal/typeinference/DerefChain.qll @@ -16,30 +16,16 @@ class DerefImplItemNode extends ImplItemNode { /** Gets the `deref` function in this `Deref` impl block. */ Function getDerefFunction() { result = this.getAssocItem("deref") } - private SelfParam getSelfParam() { result = this.getDerefFunction().getSelfParam() } + /** Gets the type of the implementing type at `path`. */ + Type resolveSelfTypeAt(TypePath path) { result = resolveImplSelfTypeAt(this, path) } /** - * Resolves the type at `path` of the `self` parameter inside the `deref` function, - * stripped of the leading `&`. + * Holds if the target type of the dereference implemention mentions type + * parameter `tp` at `path`. */ pragma[nomagic] - Type resolveSelfParamTypeStrippedAt(TypePath path) { - exists(TypePath path0 | - result = getSelfParamTypeMention(this.getSelfParam()).resolveTypeAt(path0) and - path0.isCons(getRefTypeParameter(false), path) - ) - } - - /** - * Holds if the return type at `path` of the `deref` function, stripped of the - * leading `&`, mentions type parameter `tp` at `path`. - */ - pragma[nomagic] - predicate returnTypeStrippedMentionsTypeParameterAt(TypeParameter tp, TypePath path) { - exists(TypePath path0 | - tp = getReturnTypeMention(this.getDerefFunction()).resolveTypeAt(path0) and - path0.isCons(getRefTypeParameter(false), path) - ) + predicate targetTypeParameterAt(TypeParameter tp, TypePath path) { + tp = this.getAssocItem("Target").(TypeAlias).getTypeRepr().(TypeMention).resolveTypeAt(path) } /** Gets the first type parameter of the type being implemented, if any. */ diff --git a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll index f38be739028..05a8d31ef87 100644 --- a/shared/typeinference/codeql/typeinference/internal/TypeInference.qll +++ b/shared/typeinference/codeql/typeinference/internal/TypeInference.qll @@ -974,7 +974,7 @@ module Make1 Input1> { } pragma[inline] - private predicate satisfiesConstraintTypeMention1Inline( + private predicate satisfiesConstraintTypeMentionInline( HasTypeTree tt, TypeAbstraction abs, Type constraint, TypePath path, TypePath pathToTypeParamInSub ) { @@ -986,18 +986,18 @@ module Make1 Input1> { } pragma[nomagic] - private predicate satisfiesConstraintTypeMention1( + private predicate satisfiesConstraintTypeMention( HasTypeTree tt, Type constraint, TypePath path, TypePath pathToTypeParamInSub ) { - satisfiesConstraintTypeMention1Inline(tt, _, constraint, path, pathToTypeParamInSub) + satisfiesConstraintTypeMentionInline(tt, _, constraint, path, pathToTypeParamInSub) } pragma[nomagic] - private predicate satisfiesConstraintTypeMention1Through( + private predicate satisfiesConstraintTypeMentionThrough( HasTypeTree tt, TypeAbstraction abs, Type constraint, TypePath path, TypePath pathToTypeParamInSub ) { - satisfiesConstraintTypeMention1Inline(tt, abs, constraint, path, pathToTypeParamInSub) + satisfiesConstraintTypeMentionInline(tt, abs, constraint, path, pathToTypeParamInSub) } pragma[inline] @@ -1017,7 +1017,7 @@ module Make1 Input1> { satisfiesConstraintTypeNonTypeParamInline(tt, _, constraint, path, t) or exists(TypePath prefix0, TypePath pathToTypeParamInSub, TypePath suffix | - satisfiesConstraintTypeMention1(tt, constraint, prefix0, pathToTypeParamInSub) and + satisfiesConstraintTypeMention(tt, constraint, prefix0, pathToTypeParamInSub) and getTypeAt(tt, pathToTypeParamInSub.appendInverse(suffix)) = t and path = prefix0.append(suffix) ) @@ -1037,7 +1037,7 @@ module Make1 Input1> { satisfiesConstraintTypeNonTypeParamInline(tt, abs, constraint, path, t) or exists(TypePath prefix0, TypePath pathToTypeParamInSub, TypePath suffix | - satisfiesConstraintTypeMention1Through(tt, abs, constraint, prefix0, pathToTypeParamInSub) and + satisfiesConstraintTypeMentionThrough(tt, abs, constraint, prefix0, pathToTypeParamInSub) and getTypeAt(tt, pathToTypeParamInSub.appendInverse(suffix)) = t and path = prefix0.append(suffix) ) From e2eaf80202eaab7a9731f4e82196ff8ab97ba643 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Fri, 9 Jan 2026 11:28:37 +0100 Subject: [PATCH 50/63] Rust: Fix QL4QL finding --- rust/ql/lib/codeql/rust/internal/TypeInference.qll | 4 ++-- .../codeql/rust/internal/typeinference/DerefChain.qll | 9 +++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index 890c9fc8251..22fa673af94 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -2615,8 +2615,8 @@ private Type inferMethodCallTypeSelf( path = selfPath and not result instanceof TypeParameter or - exists(TypeParameter tp, TypePath pathToTypeParam, TypePath suffix | - impl.targetTypeParameterAt(tp, pathToTypeParam) and + exists(TypePath pathToTypeParam, TypePath suffix | + impl.targetHasTypeParameterAt(pathToTypeParam) and path0 = pathToTypeParam.appendInverse(suffix) and result = t0 and path = selfPath.append(suffix) diff --git a/rust/ql/lib/codeql/rust/internal/typeinference/DerefChain.qll b/rust/ql/lib/codeql/rust/internal/typeinference/DerefChain.qll index 06fd0dbaede..16e35bae421 100644 --- a/rust/ql/lib/codeql/rust/internal/typeinference/DerefChain.qll +++ b/rust/ql/lib/codeql/rust/internal/typeinference/DerefChain.qll @@ -20,12 +20,13 @@ class DerefImplItemNode extends ImplItemNode { Type resolveSelfTypeAt(TypePath path) { result = resolveImplSelfTypeAt(this, path) } /** - * Holds if the target type of the dereference implemention mentions type - * parameter `tp` at `path`. + * Holds if the target type of the dereference implemention mentions a type + * parameter at `path`. */ pragma[nomagic] - predicate targetTypeParameterAt(TypeParameter tp, TypePath path) { - tp = this.getAssocItem("Target").(TypeAlias).getTypeRepr().(TypeMention).resolveTypeAt(path) + predicate targetHasTypeParameterAt(TypePath path) { + this.getAssocItem("Target").(TypeAlias).getTypeRepr().(TypeMention).resolveTypeAt(path) + instanceof TypeParameter } /** Gets the first type parameter of the type being implemented, if any. */ From 11bd3343701ab98ab4449e987bca73fba3b0dec5 Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Fri, 9 Jan 2026 11:40:16 +0100 Subject: [PATCH 51/63] Rust: Use `TypeItem` in path resolution --- .../codeql/rust/internal/PathResolution.qll | 76 +++---------------- 1 file changed, 10 insertions(+), 66 deletions(-) diff --git a/rust/ql/lib/codeql/rust/internal/PathResolution.qll b/rust/ql/lib/codeql/rust/internal/PathResolution.qll index e62f11b8e83..e23efc60ee4 100644 --- a/rust/ql/lib/codeql/rust/internal/PathResolution.qll +++ b/rust/ql/lib/codeql/rust/internal/PathResolution.qll @@ -629,14 +629,14 @@ private class ConstItemNode extends AssocItemNode instanceof Const { override TypeParam getTypeParam(int i) { none() } } -private class EnumItemNode extends TypeItemNode instanceof Enum { - override string getName() { result = Enum.super.getName().getText() } +private class TypeItemTypeItemNode extends TypeItemNode instanceof TypeItem { + override string getName() { result = TypeItem.super.getName().getText() } override Namespace getNamespace() { result.isType() } - override Visibility getVisibility() { result = Enum.super.getVisibility() } + override Visibility getVisibility() { result = TypeItem.super.getVisibility() } - override Attr getAnAttr() { result = Enum.super.getAnAttr() } + override Attr getAnAttr() { result = TypeItem.super.getAnAttr() } override TypeParam getTypeParam(int i) { result = super.getGenericParamList().getTypeParam(i) } @@ -982,9 +982,8 @@ private class ImplItemNodeImpl extends ImplItemNode { TraitItemNodeImpl resolveTraitTyCand() { result = resolvePathCand(this.getTraitPath()) } } -private class StructItemNode extends TypeItemNode, ParameterizableItemNode instanceof Struct { - override string getName() { result = Struct.super.getName().getText() } - +private class StructItemNode extends TypeItemTypeItemNode, ParameterizableItemNode instanceof Struct +{ override Namespace getNamespace() { result.isType() // the struct itself or @@ -992,40 +991,17 @@ private class StructItemNode extends TypeItemNode, ParameterizableItemNode insta result.isValue() // the constructor } - override Visibility getVisibility() { result = Struct.super.getVisibility() } - - override Attr getAnAttr() { result = Struct.super.getAnAttr() } - override int getArity() { result = super.getFieldList().(TupleFieldList).getNumberOfFields() } - override TypeParam getTypeParam(int i) { result = super.getGenericParamList().getTypeParam(i) } - - override predicate hasCanonicalPath(Crate c) { this.hasCanonicalPathPrefix(c) } - - bindingset[c] - private string getCanonicalPathPart(Crate c, int i) { - i = 0 and - result = this.getCanonicalPathPrefix(c) - or - i = 1 and - result = "::" - or - i = 2 and - result = this.getName() - } - language[monotonicAggregates] override string getCanonicalPath(Crate c) { this.hasCanonicalPath(c) and ( - this = - any(Builtins::BuiltinType t | - not t.hasVisibility() and - result = t.getDisplayName() - ) + not super.hasVisibility() and + result = this.(Builtins::BuiltinType).getDisplayName() or - not this = any(Builtins::BuiltinType t | not t.hasVisibility()) and - result = strictconcat(int i | i in [0 .. 2] | this.getCanonicalPathPart(c, i) order by i) + (super.hasVisibility() or not this instanceof Builtins::BuiltinType) and + result = TypeItemTypeItemNode.super.getCanonicalPath(c) ) } } @@ -1122,38 +1098,6 @@ private class TypeAliasItemNodeImpl extends TypeAliasItemNode instanceof TypeAli } } -private class UnionItemNode extends TypeItemNode instanceof Union { - override string getName() { result = Union.super.getName().getText() } - - override Namespace getNamespace() { result.isType() } - - override Visibility getVisibility() { result = Union.super.getVisibility() } - - override Attr getAnAttr() { result = Union.super.getAnAttr() } - - override TypeParam getTypeParam(int i) { result = super.getGenericParamList().getTypeParam(i) } - - override predicate hasCanonicalPath(Crate c) { this.hasCanonicalPathPrefix(c) } - - bindingset[c] - private string getCanonicalPathPart(Crate c, int i) { - i = 0 and - result = this.getCanonicalPathPrefix(c) - or - i = 1 and - result = "::" - or - i = 2 and - result = this.getName() - } - - language[monotonicAggregates] - override string getCanonicalPath(Crate c) { - this.hasCanonicalPath(c) and - result = strictconcat(int i | i in [0 .. 2] | this.getCanonicalPathPart(c, i) order by i) - } -} - private class UseItemNode extends ItemNode instanceof Use { override string getName() { result = "(use)" } From 209ee9236b939daa170535f72712dc97407c35f8 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 8 Jan 2026 10:32:20 +0100 Subject: [PATCH 52/63] Rust: Also lift read steps in summaries as taint steps --- .../dataflow/internal/TaintTrackingImpl.qll | 15 +- .../dataflow/modeled/inline-flow.expected | 40 ++-- .../dataflow/sources/file/InlineFlow.expected | 14 +- .../dataflow/sources/file/test.rs | 2 +- .../sources/stdin/InlineFlow.expected | 202 ++++++++++-------- .../dataflow/sources/stdin/test.rs | 2 +- .../strings/inline-taint-flow.expected | 34 +-- .../security/CWE-022/TaintedPath.expected | 6 +- .../HardcodedCryptographicValue.expected | 32 ++- 9 files changed, 202 insertions(+), 145 deletions(-) diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/TaintTrackingImpl.qll b/rust/ql/lib/codeql/rust/dataflow/internal/TaintTrackingImpl.qll index 33d44501cfc..944227d2fcc 100644 --- a/rust/ql/lib/codeql/rust/dataflow/internal/TaintTrackingImpl.qll +++ b/rust/ql/lib/codeql/rust/dataflow/internal/TaintTrackingImpl.qll @@ -52,18 +52,9 @@ module RustTaintTracking implements InputSig { // Read steps give rise to taint steps. This has the effect that if `foo` // is tainted and an operation reads from `foo` (e.g., `foo.bar`) then // taint is propagated. - exists(Content c | - RustDataFlow::readContentStep(pred, c, succ) and - not excludedTaintStepContent(c) - ) - or - // In addition to the above, for element and reference content we let - // _all_ read steps (including those from flow summaries and those that - // result in small primitive types) give rise to taint steps. - exists(SingletonContentSet cs | RustDataFlow::readStep(pred, cs, succ) | - cs.getContent() instanceof ElementContent - or - cs.getContent() instanceof ReferenceContent + exists(ContentSet cs | + RustDataFlow::readStep(pred, cs, succ) and + not excludedTaintStepContent(cs.getAReadContent()) ) or exists(FormatArgsExpr format | succ.asExpr() = format | diff --git a/rust/ql/test/library-tests/dataflow/modeled/inline-flow.expected b/rust/ql/test/library-tests/dataflow/modeled/inline-flow.expected index c2672a6823a..7e8a551b67b 100644 --- a/rust/ql/test/library-tests/dataflow/modeled/inline-flow.expected +++ b/rust/ql/test/library-tests/dataflow/modeled/inline-flow.expected @@ -17,11 +17,12 @@ models | 16 | Summary: ::deref; Argument[self].Reference.Field[core::pin::Pin::pointer].Reference; ReturnValue.Reference; value | | 17 | Summary: ::into_inner; Argument[0].Field[core::pin::Pin::pointer]; ReturnValue; value | | 18 | Summary: ::into_inner_unchecked; Argument[0].Field[core::pin::Pin::pointer]; ReturnValue; value | -| 19 | Summary: ::new; Argument[0]; ReturnValue.Field[core::pin::Pin::pointer]; value | -| 20 | Summary: ::new_unchecked; Argument[0]; ReturnValue.Field[core::pin::Pin::pointer]; value | -| 21 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 22 | Summary: core::ptr::read; Argument[0].Reference; ReturnValue; value | -| 23 | Summary: core::ptr::write; Argument[1]; Argument[0].Reference; value | +| 19 | Summary: ::new; Argument[0].Reference; ReturnValue; value | +| 20 | Summary: ::new; Argument[0]; ReturnValue.Field[core::pin::Pin::pointer]; value | +| 21 | Summary: ::new_unchecked; Argument[0]; ReturnValue.Field[core::pin::Pin::pointer]; value | +| 22 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 23 | Summary: core::ptr::read; Argument[0].Reference; ReturnValue; value | +| 24 | Summary: core::ptr::write; Argument[1]; Argument[0].Reference; value | edges | main.rs:12:9:12:9 | a [Some] | main.rs:13:10:13:10 | a [Some] | provenance | | | main.rs:12:9:12:9 | a [Some] | main.rs:14:13:14:13 | a [Some] | provenance | | @@ -36,11 +37,11 @@ edges | main.rs:19:9:19:9 | a [Ok] | main.rs:21:13:21:13 | a [Ok] | provenance | | | main.rs:19:31:19:44 | Ok(...) [Ok] | main.rs:19:9:19:9 | a [Ok] | provenance | | | main.rs:19:34:19:43 | source(...) | main.rs:19:31:19:44 | Ok(...) [Ok] | provenance | | -| main.rs:20:10:20:10 | a [Ok] | main.rs:20:10:20:19 | a.unwrap() | provenance | MaD:21 | +| main.rs:20:10:20:10 | a [Ok] | main.rs:20:10:20:19 | a.unwrap() | provenance | MaD:22 | | main.rs:21:9:21:9 | b [Ok] | main.rs:22:10:22:10 | b [Ok] | provenance | | | main.rs:21:13:21:13 | a [Ok] | main.rs:21:13:21:21 | a.clone() [Ok] | provenance | MaD:2 | | main.rs:21:13:21:21 | a.clone() [Ok] | main.rs:21:9:21:9 | b [Ok] | provenance | | -| main.rs:22:10:22:10 | b [Ok] | main.rs:22:10:22:19 | b.unwrap() | provenance | MaD:21 | +| main.rs:22:10:22:10 | b [Ok] | main.rs:22:10:22:19 | b.unwrap() | provenance | MaD:22 | | main.rs:26:9:26:9 | a | main.rs:27:10:27:10 | a | provenance | | | main.rs:26:9:26:9 | a | main.rs:28:13:28:13 | a | provenance | | | main.rs:26:13:26:22 | source(...) | main.rs:26:9:26:9 | a | provenance | | @@ -81,18 +82,22 @@ edges | main.rs:79:37:79:46 | source(...) | main.rs:79:33:79:46 | ... + ... | provenance | MaD:6 | | main.rs:79:37:79:46 | source(...) | main.rs:79:33:79:46 | ... + ... | provenance | MaD:7 | | main.rs:92:29:92:29 | [post] y [&ref] | main.rs:93:33:93:33 | y [&ref] | provenance | | -| main.rs:92:32:92:41 | source(...) | main.rs:92:29:92:29 | [post] y [&ref] | provenance | MaD:23 | -| main.rs:93:33:93:33 | y [&ref] | main.rs:93:18:93:34 | ...::read(...) | provenance | MaD:22 | +| main.rs:92:32:92:41 | source(...) | main.rs:92:29:92:29 | [post] y [&ref] | provenance | MaD:24 | +| main.rs:93:33:93:33 | y [&ref] | main.rs:93:18:93:34 | ...::read(...) | provenance | MaD:23 | | main.rs:108:13:108:17 | mut i | main.rs:109:34:109:34 | i | provenance | | | main.rs:108:13:108:17 | mut i | main.rs:110:33:110:33 | i | provenance | | | main.rs:108:13:108:17 | mut i | main.rs:111:47:111:47 | i | provenance | | | main.rs:108:13:108:17 | mut i | main.rs:112:24:112:27 | mut pinned | provenance | | | main.rs:108:13:108:17 | mut i | main.rs:113:14:113:14 | i | provenance | | | main.rs:108:21:108:30 | source(...) | main.rs:108:13:108:17 | mut i | provenance | | +| main.rs:109:13:109:20 | mut pin1 | main.rs:114:15:114:18 | pin1 | provenance | | +| main.rs:109:13:109:20 | mut pin1 | main.rs:115:31:115:34 | pin1 | provenance | | | main.rs:109:13:109:20 | mut pin1 [Pin, &ref] | main.rs:114:15:114:18 | pin1 [Pin, &ref] | provenance | | | main.rs:109:13:109:20 | mut pin1 [Pin, &ref] | main.rs:115:31:115:34 | pin1 [Pin, &ref] | provenance | | +| main.rs:109:24:109:35 | ...::new(...) | main.rs:109:13:109:20 | mut pin1 | provenance | | | main.rs:109:24:109:35 | ...::new(...) [Pin, &ref] | main.rs:109:13:109:20 | mut pin1 [Pin, &ref] | provenance | | -| main.rs:109:33:109:34 | &i [&ref] | main.rs:109:24:109:35 | ...::new(...) [Pin, &ref] | provenance | MaD:19 | +| main.rs:109:33:109:34 | &i [&ref] | main.rs:109:24:109:35 | ...::new(...) | provenance | MaD:19 | +| main.rs:109:33:109:34 | &i [&ref] | main.rs:109:24:109:35 | ...::new(...) [Pin, &ref] | provenance | MaD:20 | | main.rs:109:34:109:34 | i | main.rs:109:33:109:34 | &i [&ref] | provenance | | | main.rs:110:13:110:20 | mut pin2 [Pin, Box(0)] | main.rs:116:15:116:18 | pin2 [Pin, Box(0)] | provenance | | | main.rs:110:24:110:34 | ...::pin(...) [Pin, Box(0)] | main.rs:110:13:110:20 | mut pin2 [Pin, Box(0)] | provenance | | @@ -102,12 +107,16 @@ edges | main.rs:111:38:111:48 | ...::new(...) [Box(0)] | main.rs:111:24:111:49 | ...::into_pin(...) [Pin, Box(0)] | provenance | MaD:8 | | main.rs:111:47:111:47 | i | main.rs:111:38:111:48 | ...::new(...) [Box(0)] | provenance | MaD:9 | | main.rs:112:13:112:20 | mut pin4 [Pin, &ref] | main.rs:118:15:118:18 | pin4 [Pin, &ref] | provenance | | -| main.rs:112:24:112:27 | &mut pinned [&ref] | main.rs:112:24:112:27 | ...::new_unchecked(...) [Pin, &ref] | provenance | MaD:20 | +| main.rs:112:24:112:27 | &mut pinned [&ref] | main.rs:112:24:112:27 | ...::new_unchecked(...) [Pin, &ref] | provenance | MaD:21 | | main.rs:112:24:112:27 | ...::new_unchecked(...) [Pin, &ref] | main.rs:112:13:112:20 | mut pin4 [Pin, &ref] | provenance | | | main.rs:112:24:112:27 | mut pinned | main.rs:112:24:112:27 | pinned | provenance | | | main.rs:112:24:112:27 | pinned | main.rs:112:24:112:27 | &mut pinned [&ref] | provenance | | +| main.rs:114:15:114:18 | pin1 | main.rs:114:14:114:18 | * ... | provenance | MaD:15 | +| main.rs:114:15:114:18 | pin1 | main.rs:114:14:114:18 | * ... | provenance | MaD:16 | | main.rs:114:15:114:18 | pin1 [Pin, &ref] | main.rs:114:14:114:18 | * ... | provenance | MaD:16 | +| main.rs:115:15:115:35 | ...::into_inner(...) | main.rs:115:14:115:35 | * ... | provenance | MaD:1 | | main.rs:115:15:115:35 | ...::into_inner(...) [&ref] | main.rs:115:14:115:35 | * ... | provenance | MaD:1 | +| main.rs:115:31:115:34 | pin1 | main.rs:115:15:115:35 | ...::into_inner(...) | provenance | MaD:17 | | main.rs:115:31:115:34 | pin1 [Pin, &ref] | main.rs:115:15:115:35 | ...::into_inner(...) [&ref] | provenance | MaD:17 | | main.rs:116:15:116:18 | pin2 [Pin, Box(0)] | main.rs:116:14:116:18 | * ... | provenance | MaD:15 | | main.rs:117:15:117:18 | pin3 [Pin, Box(0)] | main.rs:117:14:117:18 | * ... | provenance | MaD:15 | @@ -118,7 +127,7 @@ edges | main.rs:122:38:122:47 | source(...) | main.rs:122:22:122:49 | MyStruct {...} [MyStruct] | provenance | | | main.rs:123:13:123:20 | mut pin1 [Pin, &ref, MyStruct] | main.rs:129:30:129:33 | pin1 [Pin, &ref, MyStruct] | provenance | | | main.rs:123:24:123:36 | ...::new(...) [Pin, &ref, MyStruct] | main.rs:123:13:123:20 | mut pin1 [Pin, &ref, MyStruct] | provenance | | -| main.rs:123:33:123:35 | &ms [&ref, MyStruct] | main.rs:123:24:123:36 | ...::new(...) [Pin, &ref, MyStruct] | provenance | MaD:19 | +| main.rs:123:33:123:35 | &ms [&ref, MyStruct] | main.rs:123:24:123:36 | ...::new(...) [Pin, &ref, MyStruct] | provenance | MaD:20 | | main.rs:123:34:123:35 | ms [MyStruct] | main.rs:123:33:123:35 | &ms [&ref, MyStruct] | provenance | | | main.rs:127:14:127:15 | ms [MyStruct] | main.rs:127:14:127:19 | ms.val | provenance | | | main.rs:129:14:129:34 | ...::into_inner(...) [&ref, MyStruct] | main.rs:129:14:129:38 | ... .val | provenance | | @@ -128,7 +137,7 @@ edges | main.rs:136:38:136:47 | source(...) | main.rs:136:22:136:49 | MyStruct {...} [MyStruct] | provenance | | | main.rs:137:13:137:20 | mut pin5 [Pin, &ref, MyStruct] | main.rs:139:40:139:43 | pin5 [Pin, &ref, MyStruct] | provenance | | | main.rs:137:24:137:46 | ...::new_unchecked(...) [Pin, &ref, MyStruct] | main.rs:137:13:137:20 | mut pin5 [Pin, &ref, MyStruct] | provenance | | -| main.rs:137:43:137:45 | &ms [&ref, MyStruct] | main.rs:137:24:137:46 | ...::new_unchecked(...) [Pin, &ref, MyStruct] | provenance | MaD:20 | +| main.rs:137:43:137:45 | &ms [&ref, MyStruct] | main.rs:137:24:137:46 | ...::new_unchecked(...) [Pin, &ref, MyStruct] | provenance | MaD:21 | | main.rs:137:44:137:45 | ms [MyStruct] | main.rs:137:43:137:45 | &ms [&ref, MyStruct] | provenance | | | main.rs:139:14:139:44 | ...::into_inner_unchecked(...) [&ref, MyStruct] | main.rs:139:14:139:48 | ... .val | provenance | | | main.rs:139:40:139:43 | pin5 [Pin, &ref, MyStruct] | main.rs:139:14:139:44 | ...::into_inner_unchecked(...) [&ref, MyStruct] | provenance | MaD:18 | @@ -227,7 +236,9 @@ nodes | main.rs:93:33:93:33 | y [&ref] | semmle.label | y [&ref] | | main.rs:108:13:108:17 | mut i | semmle.label | mut i | | main.rs:108:21:108:30 | source(...) | semmle.label | source(...) | +| main.rs:109:13:109:20 | mut pin1 | semmle.label | mut pin1 | | main.rs:109:13:109:20 | mut pin1 [Pin, &ref] | semmle.label | mut pin1 [Pin, &ref] | +| main.rs:109:24:109:35 | ...::new(...) | semmle.label | ...::new(...) | | main.rs:109:24:109:35 | ...::new(...) [Pin, &ref] | semmle.label | ...::new(...) [Pin, &ref] | | main.rs:109:33:109:34 | &i [&ref] | semmle.label | &i [&ref] | | main.rs:109:34:109:34 | i | semmle.label | i | @@ -245,9 +256,12 @@ nodes | main.rs:112:24:112:27 | pinned | semmle.label | pinned | | main.rs:113:14:113:14 | i | semmle.label | i | | main.rs:114:14:114:18 | * ... | semmle.label | * ... | +| main.rs:114:15:114:18 | pin1 | semmle.label | pin1 | | main.rs:114:15:114:18 | pin1 [Pin, &ref] | semmle.label | pin1 [Pin, &ref] | | main.rs:115:14:115:35 | * ... | semmle.label | * ... | +| main.rs:115:15:115:35 | ...::into_inner(...) | semmle.label | ...::into_inner(...) | | main.rs:115:15:115:35 | ...::into_inner(...) [&ref] | semmle.label | ...::into_inner(...) [&ref] | +| main.rs:115:31:115:34 | pin1 | semmle.label | pin1 | | main.rs:115:31:115:34 | pin1 [Pin, &ref] | semmle.label | pin1 [Pin, &ref] | | main.rs:116:14:116:18 | * ... | semmle.label | * ... | | main.rs:116:15:116:18 | pin2 [Pin, Box(0)] | semmle.label | pin2 [Pin, Box(0)] | diff --git a/rust/ql/test/library-tests/dataflow/sources/file/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/file/InlineFlow.expected index 8eeac807a44..6ed7d5dafb9 100644 --- a/rust/ql/test/library-tests/dataflow/sources/file/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/file/InlineFlow.expected @@ -36,7 +36,8 @@ models | 35 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_string; Argument[self].Reference; Argument[0].Reference; taint | | 36 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u8; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | | 37 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 38 | Summary: ::as_path; Argument[self].Reference; ReturnValue.Reference; value | +| 38 | Summary: ::into_string; Argument[self].Field[std::ffi::os_str::OsString::inner].Field[std::sys::os_str::bytes::Buf::inner]; ReturnValue.Field[core::result::Result::Ok(0)].Field[alloc::string::String::vec]; value | +| 39 | Summary: ::as_path; Argument[self].Reference; ReturnValue.Reference; value | edges | test.rs:12:13:12:18 | buffer | test.rs:13:14:13:19 | buffer | provenance | | | test.rs:12:31:12:43 | ...::read | test.rs:12:31:12:55 | ...::read(...) [Ok] | provenance | Src:MaD:11 | @@ -58,14 +59,18 @@ edges | test.rs:29:22:29:25 | path | test.rs:29:20:29:27 | e.path() | provenance | Src:MaD:4 MaD:4 | | test.rs:30:14:30:17 | path | test.rs:30:14:30:25 | path.clone() | provenance | MaD:18 | | test.rs:31:14:31:17 | path | test.rs:31:14:31:25 | path.clone() | provenance | MaD:18 | -| test.rs:31:14:31:25 | path.clone() | test.rs:31:14:31:35 | ... .as_path() | provenance | MaD:38 | +| test.rs:31:14:31:25 | path.clone() | test.rs:31:14:31:35 | ... .as_path() | provenance | MaD:39 | | test.rs:40:14:40:17 | path | test.rs:40:14:40:32 | path.canonicalize() [Ok] | provenance | MaD:19 | | test.rs:40:14:40:32 | path.canonicalize() [Ok] | test.rs:40:14:40:41 | ... .unwrap() | provenance | MaD:37 | | test.rs:43:13:43:21 | file_name | test.rs:44:14:44:22 | file_name | provenance | | +| test.rs:43:13:43:21 | file_name | test.rs:45:14:45:22 | file_name | provenance | | | test.rs:43:13:43:21 | file_name | test.rs:49:14:49:22 | file_name | provenance | | | test.rs:43:25:43:37 | e.file_name() | test.rs:43:13:43:21 | file_name | provenance | | | test.rs:43:27:43:35 | file_name | test.rs:43:25:43:37 | e.file_name() | provenance | Src:MaD:3 MaD:3 | | test.rs:44:14:44:22 | file_name | test.rs:44:14:44:30 | file_name.clone() | provenance | MaD:18 | +| test.rs:45:14:45:22 | file_name | test.rs:45:14:45:30 | file_name.clone() | provenance | MaD:18 | +| test.rs:45:14:45:30 | file_name.clone() | test.rs:45:14:45:44 | ... .into_string() [Ok, String] | provenance | MaD:38 | +| test.rs:45:14:45:44 | ... .into_string() [Ok, String] | test.rs:45:14:45:53 | ... .unwrap() | provenance | MaD:37 | | test.rs:65:13:65:18 | target | test.rs:66:14:66:19 | target | provenance | | | test.rs:65:22:65:34 | ...::read_link | test.rs:65:22:65:49 | ...::read_link(...) [Ok] | provenance | Src:MaD:12 | | test.rs:65:22:65:49 | ...::read_link(...) [Ok] | test.rs:65:22:65:50 | TryExpr | provenance | | @@ -286,6 +291,10 @@ nodes | test.rs:43:27:43:35 | file_name | semmle.label | file_name | | test.rs:44:14:44:22 | file_name | semmle.label | file_name | | test.rs:44:14:44:30 | file_name.clone() | semmle.label | file_name.clone() | +| test.rs:45:14:45:22 | file_name | semmle.label | file_name | +| test.rs:45:14:45:30 | file_name.clone() | semmle.label | file_name.clone() | +| test.rs:45:14:45:44 | ... .into_string() [Ok, String] | semmle.label | ... .into_string() [Ok, String] | +| test.rs:45:14:45:53 | ... .unwrap() | semmle.label | ... .unwrap() | | test.rs:49:14:49:22 | file_name | semmle.label | file_name | | test.rs:65:13:65:18 | target | semmle.label | target | | test.rs:65:22:65:34 | ...::read_link | semmle.label | ...::read_link | @@ -502,6 +511,7 @@ testFailures | test.rs:40:14:40:41 | ... .unwrap() | test.rs:29:22:29:25 | path | test.rs:40:14:40:41 | ... .unwrap() | $@ | test.rs:29:22:29:25 | path | path | | test.rs:41:14:41:17 | path | test.rs:29:22:29:25 | path | test.rs:41:14:41:17 | path | $@ | test.rs:29:22:29:25 | path | path | | test.rs:44:14:44:30 | file_name.clone() | test.rs:43:27:43:35 | file_name | test.rs:44:14:44:30 | file_name.clone() | $@ | test.rs:43:27:43:35 | file_name | file_name | +| test.rs:45:14:45:53 | ... .unwrap() | test.rs:43:27:43:35 | file_name | test.rs:45:14:45:53 | ... .unwrap() | $@ | test.rs:43:27:43:35 | file_name | file_name | | test.rs:49:14:49:22 | file_name | test.rs:43:27:43:35 | file_name | test.rs:49:14:49:22 | file_name | $@ | test.rs:43:27:43:35 | file_name | file_name | | test.rs:66:14:66:19 | target | test.rs:65:22:65:34 | ...::read_link | test.rs:66:14:66:19 | target | $@ | test.rs:65:22:65:34 | ...::read_link | ...::read_link | | test.rs:75:14:75:19 | buffer | test.rs:74:31:74:45 | ...::read | test.rs:75:14:75:19 | buffer | $@ | test.rs:74:31:74:45 | ...::read | ...::read | diff --git a/rust/ql/test/library-tests/dataflow/sources/file/test.rs b/rust/ql/test/library-tests/dataflow/sources/file/test.rs index 4aa56a0dd74..18090a54568 100644 --- a/rust/ql/test/library-tests/dataflow/sources/file/test.rs +++ b/rust/ql/test/library-tests/dataflow/sources/file/test.rs @@ -42,7 +42,7 @@ fn test_fs() -> Result<(), Box> { let file_name = e.file_name(); // $ Alert[rust/summary/taint-sources] sink(file_name.clone()); // $ hasTaintFlow - sink(file_name.clone().into_string().unwrap()); // $ MISSING: hasTaintFlow + sink(file_name.clone().into_string().unwrap()); // $ hasTaintFlow sink(file_name.to_str().unwrap()); // $ MISSING: hasTaintFlow sink(file_name.to_string_lossy().to_mut()); // $ MISSING: hasTaintFlow sink(file_name.clone().as_encoded_bytes()); // $ MISSING: hasTaintFlow diff --git a/rust/ql/test/library-tests/dataflow/sources/stdin/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/stdin/InlineFlow.expected index 01693b0041f..a6ad21c10b4 100644 --- a/rust/ql/test/library-tests/dataflow/sources/stdin/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/stdin/InlineFlow.expected @@ -1,151 +1,164 @@ models | 1 | Source: std::io::stdio::stdin; ReturnValue; stdin | | 2 | Source: tokio::io::stdin::stdin; ReturnValue; stdin | -| 3 | Summary: <_ as core::ops::index::Index>::index; Argument[self].Reference.Element; ReturnValue.Reference; value | -| 4 | Summary: <_ as std::io::BufRead>::fill_buf; Argument[self].Reference; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 5 | Summary: <_ as std::io::BufRead>::lines; Argument[self]; ReturnValue; taint | -| 6 | Summary: <_ as std::io::BufRead>::read_line; Argument[self].Reference; Argument[0].Reference; taint | -| 7 | Summary: <_ as std::io::BufRead>::read_until; Argument[self].Reference; Argument[1].Reference; taint | -| 8 | Summary: <_ as std::io::BufRead>::split; Argument[self]; ReturnValue; taint | -| 9 | Summary: <_ as std::io::Read>::bytes; Argument[self]; ReturnValue; taint | -| 10 | Summary: <_ as std::io::Read>::read; Argument[self].Reference; Argument[0].Reference; taint | -| 11 | Summary: <_ as std::io::Read>::read_exact; Argument[self].Reference; Argument[0].Reference; taint | -| 12 | Summary: <_ as std::io::Read>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | -| 13 | Summary: <_ as std::io::Read>::read_to_string; Argument[self].Reference; Argument[0].Reference; taint | -| 14 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::fill_buf; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 15 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::lines; Argument[self]; ReturnValue; taint | -| 16 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_line; Argument[self].Reference; Argument[0].Reference; taint | -| 17 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_until; Argument[self].Reference; Argument[1].Reference; taint | -| 18 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::split; Argument[self]; ReturnValue; taint | -| 19 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | -| 20 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_buf; Argument[self].Reference; Argument[0].Reference; taint | -| 21 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_exact; Argument[self].Reference; Argument[0].Reference; taint | -| 22 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f32; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 23 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i16; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 24 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i64_le; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 25 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | -| 26 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_string; Argument[self].Reference; Argument[0].Reference; taint | -| 27 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u8; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 28 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 29 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 30 | Summary: ::next; Argument[self].Reference.Element; ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]; value | -| 31 | Summary: ::buffer; Argument[self].Reference; ReturnValue.Reference; taint | -| 32 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 33 | Summary: ::lock; Argument[self].Reference; ReturnValue; taint | -| 34 | Summary: ::buffer; Argument[self].Reference; ReturnValue.Reference; taint | -| 35 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 36 | Summary: ::next_line; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | -| 37 | Summary: ::next_segment; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | +| 3 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value | +| 4 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Reference.Element; ReturnValue.Field[core::option::Option::Some(0)]; value | +| 5 | Summary: <_ as core::ops::index::Index>::index; Argument[self].Reference.Element; ReturnValue.Reference; value | +| 6 | Summary: <_ as std::io::BufRead>::fill_buf; Argument[self].Reference; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 7 | Summary: <_ as std::io::BufRead>::lines; Argument[self]; ReturnValue; taint | +| 8 | Summary: <_ as std::io::BufRead>::read_line; Argument[self].Reference; Argument[0].Reference; taint | +| 9 | Summary: <_ as std::io::BufRead>::read_until; Argument[self].Reference; Argument[1].Reference; taint | +| 10 | Summary: <_ as std::io::BufRead>::split; Argument[self]; ReturnValue; taint | +| 11 | Summary: <_ as std::io::Read>::bytes; Argument[self]; ReturnValue; taint | +| 12 | Summary: <_ as std::io::Read>::read; Argument[self].Reference; Argument[0].Reference; taint | +| 13 | Summary: <_ as std::io::Read>::read_exact; Argument[self].Reference; Argument[0].Reference; taint | +| 14 | Summary: <_ as std::io::Read>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | +| 15 | Summary: <_ as std::io::Read>::read_to_string; Argument[self].Reference; Argument[0].Reference; taint | +| 16 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::fill_buf; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 17 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::lines; Argument[self]; ReturnValue; taint | +| 18 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_line; Argument[self].Reference; Argument[0].Reference; taint | +| 19 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::read_until; Argument[self].Reference; Argument[1].Reference; taint | +| 20 | Summary: <_ as tokio::io::util::async_buf_read_ext::AsyncBufReadExt>::split; Argument[self]; ReturnValue; taint | +| 21 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read; Argument[self].Reference; Argument[0].Reference; taint | +| 22 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_buf; Argument[self].Reference; Argument[0].Reference; taint | +| 23 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_exact; Argument[self].Reference; Argument[0].Reference; taint | +| 24 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f32; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 25 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i16; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 26 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_i64_le; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 27 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | +| 28 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_string; Argument[self].Reference; Argument[0].Reference; taint | +| 29 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u8; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 30 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 31 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 32 | Summary: ::next; Argument[self].Reference.Element; ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]; value | +| 33 | Summary: ::buffer; Argument[self].Reference; ReturnValue.Reference; taint | +| 34 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 35 | Summary: ::lock; Argument[self].Reference; ReturnValue; taint | +| 36 | Summary: ::buffer; Argument[self].Reference; ReturnValue.Reference; taint | +| 37 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 38 | Summary: ::next_line; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | +| 39 | Summary: ::next_segment; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | edges | test.rs:13:22:13:35 | ...::stdin | test.rs:13:22:13:37 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 | -| test.rs:13:22:13:37 | ...::stdin(...) | test.rs:13:44:13:54 | [post] &mut buffer [&ref] | provenance | MaD:10 | +| test.rs:13:22:13:37 | ...::stdin(...) | test.rs:13:44:13:54 | [post] &mut buffer [&ref] | provenance | MaD:12 | | test.rs:13:44:13:54 | [post] &mut buffer [&ref] | test.rs:13:49:13:54 | [post] buffer | provenance | | | test.rs:13:49:13:54 | [post] buffer | test.rs:14:15:14:20 | buffer | provenance | | | test.rs:14:15:14:20 | buffer | test.rs:14:14:14:20 | &buffer | provenance | | | test.rs:19:22:19:35 | ...::stdin | test.rs:19:22:19:37 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 | -| test.rs:19:22:19:37 | ...::stdin(...) | test.rs:19:51:19:61 | [post] &mut buffer [&ref] | provenance | MaD:12 | +| test.rs:19:22:19:37 | ...::stdin(...) | test.rs:19:51:19:61 | [post] &mut buffer [&ref] | provenance | MaD:14 | | test.rs:19:51:19:61 | [post] &mut buffer [&ref] | test.rs:19:56:19:61 | [post] buffer | provenance | | | test.rs:19:56:19:61 | [post] buffer | test.rs:20:15:20:20 | buffer | provenance | | | test.rs:20:15:20:20 | buffer | test.rs:20:14:20:20 | &buffer | provenance | | | test.rs:25:22:25:35 | ...::stdin | test.rs:25:22:25:37 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 | -| test.rs:25:22:25:37 | ...::stdin(...) | test.rs:25:54:25:64 | [post] &mut buffer [&ref] | provenance | MaD:13 | +| test.rs:25:22:25:37 | ...::stdin(...) | test.rs:25:54:25:64 | [post] &mut buffer [&ref] | provenance | MaD:15 | | test.rs:25:54:25:64 | [post] &mut buffer [&ref] | test.rs:25:59:25:64 | [post] buffer | provenance | | | test.rs:25:59:25:64 | [post] buffer | test.rs:26:15:26:20 | buffer | provenance | | | test.rs:26:15:26:20 | buffer | test.rs:26:14:26:20 | &buffer | provenance | | | test.rs:31:22:31:35 | ...::stdin | test.rs:31:22:31:37 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 | -| test.rs:31:22:31:37 | ...::stdin(...) | test.rs:31:22:31:44 | ... .lock() | provenance | MaD:33 | -| test.rs:31:22:31:44 | ... .lock() | test.rs:31:61:31:71 | [post] &mut buffer [&ref] | provenance | MaD:13 | +| test.rs:31:22:31:37 | ...::stdin(...) | test.rs:31:22:31:44 | ... .lock() | provenance | MaD:35 | +| test.rs:31:22:31:44 | ... .lock() | test.rs:31:61:31:71 | [post] &mut buffer [&ref] | provenance | MaD:15 | | test.rs:31:61:31:71 | [post] &mut buffer [&ref] | test.rs:31:66:31:71 | [post] buffer | provenance | | | test.rs:31:66:31:71 | [post] buffer | test.rs:32:15:32:20 | buffer | provenance | | | test.rs:32:15:32:20 | buffer | test.rs:32:14:32:20 | &buffer | provenance | | | test.rs:37:9:37:22 | ...::stdin | test.rs:37:9:37:24 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 | -| test.rs:37:9:37:24 | ...::stdin(...) | test.rs:37:37:37:47 | [post] &mut buffer [&ref] | provenance | MaD:11 | +| test.rs:37:9:37:24 | ...::stdin(...) | test.rs:37:37:37:47 | [post] &mut buffer [&ref] | provenance | MaD:13 | | test.rs:37:37:37:47 | [post] &mut buffer [&ref] | test.rs:37:42:37:47 | [post] buffer | provenance | | | test.rs:37:42:37:47 | [post] buffer | test.rs:38:15:38:20 | buffer | provenance | | | test.rs:38:15:38:20 | buffer | test.rs:38:14:38:20 | &buffer | provenance | | | test.rs:41:17:41:30 | ...::stdin | test.rs:41:17:41:32 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 | -| test.rs:41:17:41:32 | ...::stdin(...) | test.rs:41:17:41:40 | ... .bytes() | provenance | MaD:9 | +| test.rs:41:17:41:32 | ...::stdin(...) | test.rs:41:17:41:40 | ... .bytes() | provenance | MaD:11 | | test.rs:41:17:41:40 | ... .bytes() | test.rs:42:14:42:17 | byte | provenance | | | test.rs:48:13:48:22 | mut reader | test.rs:49:20:49:25 | reader | provenance | | | test.rs:48:26:48:66 | ...::new(...) | test.rs:48:13:48:22 | mut reader | provenance | | | test.rs:48:50:48:63 | ...::stdin | test.rs:48:50:48:65 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 | -| test.rs:48:50:48:65 | ...::stdin(...) | test.rs:48:26:48:66 | ...::new(...) | provenance | MaD:32 | +| test.rs:48:50:48:65 | ...::stdin(...) | test.rs:48:26:48:66 | ...::new(...) | provenance | MaD:34 | | test.rs:49:13:49:16 | data | test.rs:50:15:50:18 | data | provenance | | -| test.rs:49:20:49:25 | reader | test.rs:49:20:49:36 | reader.fill_buf() [Ok] | provenance | MaD:4 | +| test.rs:49:20:49:25 | reader | test.rs:49:20:49:36 | reader.fill_buf() [Ok] | provenance | MaD:6 | | test.rs:49:20:49:36 | reader.fill_buf() [Ok] | test.rs:49:20:49:37 | TryExpr | provenance | | | test.rs:49:20:49:37 | TryExpr | test.rs:49:13:49:16 | data | provenance | | | test.rs:50:15:50:18 | data | test.rs:50:14:50:18 | &data | provenance | | | test.rs:54:13:54:18 | reader | test.rs:55:20:55:25 | reader | provenance | | | test.rs:54:22:54:62 | ...::new(...) | test.rs:54:13:54:18 | reader | provenance | | | test.rs:54:46:54:59 | ...::stdin | test.rs:54:46:54:61 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 | -| test.rs:54:46:54:61 | ...::stdin(...) | test.rs:54:22:54:62 | ...::new(...) | provenance | MaD:32 | +| test.rs:54:46:54:61 | ...::stdin(...) | test.rs:54:22:54:62 | ...::new(...) | provenance | MaD:34 | | test.rs:55:13:55:16 | data [&ref] | test.rs:56:15:56:18 | data [&ref] | provenance | | -| test.rs:55:20:55:25 | reader | test.rs:55:20:55:34 | reader.buffer() [&ref] | provenance | MaD:31 | +| test.rs:55:20:55:25 | reader | test.rs:55:20:55:34 | reader.buffer() [&ref] | provenance | MaD:33 | | test.rs:55:20:55:34 | reader.buffer() [&ref] | test.rs:55:13:55:16 | data [&ref] | provenance | | | test.rs:56:15:56:18 | data [&ref] | test.rs:56:14:56:18 | &data | provenance | | | test.rs:61:13:61:22 | mut reader | test.rs:62:9:62:14 | reader | provenance | | | test.rs:61:26:61:66 | ...::new(...) | test.rs:61:13:61:22 | mut reader | provenance | | | test.rs:61:50:61:63 | ...::stdin | test.rs:61:50:61:65 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 | -| test.rs:61:50:61:65 | ...::stdin(...) | test.rs:61:26:61:66 | ...::new(...) | provenance | MaD:32 | -| test.rs:62:9:62:14 | reader | test.rs:62:26:62:36 | [post] &mut buffer [&ref] | provenance | MaD:6 | +| test.rs:61:50:61:65 | ...::stdin(...) | test.rs:61:26:61:66 | ...::new(...) | provenance | MaD:34 | +| test.rs:62:9:62:14 | reader | test.rs:62:26:62:36 | [post] &mut buffer [&ref] | provenance | MaD:8 | | test.rs:62:26:62:36 | [post] &mut buffer [&ref] | test.rs:62:31:62:36 | [post] buffer | provenance | | | test.rs:62:31:62:36 | [post] buffer | test.rs:63:15:63:20 | buffer | provenance | | | test.rs:63:15:63:20 | buffer | test.rs:63:14:63:20 | &buffer | provenance | | | test.rs:68:13:68:22 | mut reader | test.rs:69:9:69:14 | reader | provenance | | | test.rs:68:26:68:66 | ...::new(...) | test.rs:68:13:68:22 | mut reader | provenance | | | test.rs:68:50:68:63 | ...::stdin | test.rs:68:50:68:65 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 | -| test.rs:68:50:68:65 | ...::stdin(...) | test.rs:68:26:68:66 | ...::new(...) | provenance | MaD:32 | -| test.rs:69:9:69:14 | reader | test.rs:69:33:69:43 | [post] &mut buffer [&ref] | provenance | MaD:7 | +| test.rs:68:50:68:65 | ...::stdin(...) | test.rs:68:26:68:66 | ...::new(...) | provenance | MaD:34 | +| test.rs:69:9:69:14 | reader | test.rs:69:33:69:43 | [post] &mut buffer [&ref] | provenance | MaD:9 | | test.rs:69:33:69:43 | [post] &mut buffer [&ref] | test.rs:69:38:69:43 | [post] buffer | provenance | | | test.rs:69:38:69:43 | [post] buffer | test.rs:70:15:70:20 | buffer | provenance | | | test.rs:69:38:69:43 | [post] buffer | test.rs:71:14:71:19 | buffer | provenance | | | test.rs:70:15:70:20 | buffer | test.rs:70:14:70:20 | &buffer | provenance | | -| test.rs:71:14:71:19 | buffer | test.rs:71:14:71:22 | buffer[0] | provenance | MaD:3 | +| test.rs:71:14:71:19 | buffer | test.rs:71:14:71:22 | buffer[0] | provenance | MaD:5 | | test.rs:75:13:75:28 | mut reader_split | test.rs:76:14:76:25 | reader_split | provenance | | | test.rs:75:13:75:28 | mut reader_split | test.rs:77:33:77:44 | reader_split | provenance | | -| test.rs:75:32:75:72 | ...::new(...) | test.rs:75:32:75:84 | ... .split(...) | provenance | MaD:8 | +| test.rs:75:32:75:72 | ...::new(...) | test.rs:75:32:75:84 | ... .split(...) | provenance | MaD:10 | | test.rs:75:32:75:84 | ... .split(...) | test.rs:75:13:75:28 | mut reader_split | provenance | | | test.rs:75:56:75:69 | ...::stdin | test.rs:75:56:75:71 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 | -| test.rs:75:56:75:71 | ...::stdin(...) | test.rs:75:32:75:72 | ...::new(...) | provenance | MaD:32 | -| test.rs:76:14:76:25 | reader_split | test.rs:76:14:76:32 | reader_split.next() [Some, Ok] | provenance | MaD:30 | -| test.rs:76:14:76:32 | reader_split.next() [Some, Ok] | test.rs:76:14:76:41 | ... .unwrap() [Ok] | provenance | MaD:28 | -| test.rs:76:14:76:41 | ... .unwrap() [Ok] | test.rs:76:14:76:50 | ... .unwrap() | provenance | MaD:29 | +| test.rs:75:56:75:71 | ...::stdin(...) | test.rs:75:32:75:72 | ...::new(...) | provenance | MaD:34 | +| test.rs:76:14:76:25 | reader_split | test.rs:76:14:76:32 | reader_split.next() [Some, Ok] | provenance | MaD:32 | +| test.rs:76:14:76:32 | reader_split.next() [Some, Ok] | test.rs:76:14:76:41 | ... .unwrap() [Ok] | provenance | MaD:30 | +| test.rs:76:14:76:41 | ... .unwrap() [Ok] | test.rs:76:14:76:50 | ... .unwrap() | provenance | MaD:31 | | test.rs:77:19:77:29 | Some(...) [Some, Ok] | test.rs:77:24:77:28 | chunk [Ok] | provenance | | | test.rs:77:24:77:28 | chunk [Ok] | test.rs:78:18:78:22 | chunk [Ok] | provenance | | -| test.rs:77:33:77:44 | reader_split | test.rs:77:33:77:51 | reader_split.next() [Some, Ok] | provenance | MaD:30 | +| test.rs:77:33:77:44 | reader_split | test.rs:77:33:77:51 | reader_split.next() [Some, Ok] | provenance | MaD:32 | | test.rs:77:33:77:51 | reader_split.next() [Some, Ok] | test.rs:77:19:77:29 | Some(...) [Some, Ok] | provenance | | -| test.rs:78:18:78:22 | chunk [Ok] | test.rs:78:18:78:31 | chunk.unwrap() | provenance | MaD:29 | +| test.rs:78:18:78:22 | chunk [Ok] | test.rs:78:18:78:31 | chunk.unwrap() | provenance | MaD:31 | | test.rs:83:13:83:18 | reader | test.rs:84:21:84:26 | reader | provenance | | | test.rs:83:22:83:62 | ...::new(...) | test.rs:83:13:83:18 | reader | provenance | | | test.rs:83:46:83:59 | ...::stdin | test.rs:83:46:83:61 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 | -| test.rs:83:46:83:61 | ...::stdin(...) | test.rs:83:22:83:62 | ...::new(...) | provenance | MaD:32 | -| test.rs:84:21:84:26 | reader | test.rs:84:21:84:34 | reader.lines() | provenance | MaD:5 | +| test.rs:83:46:83:61 | ...::stdin(...) | test.rs:83:22:83:62 | ...::new(...) | provenance | MaD:34 | +| test.rs:84:21:84:26 | reader | test.rs:84:21:84:34 | reader.lines() | provenance | MaD:7 | | test.rs:84:21:84:34 | reader.lines() | test.rs:85:18:85:21 | line | provenance | | +| test.rs:90:13:90:18 | reader | test.rs:91:20:91:25 | reader | provenance | | +| test.rs:90:22:90:62 | ...::new(...) | test.rs:90:13:90:18 | reader | provenance | | +| test.rs:90:46:90:59 | ...::stdin | test.rs:90:46:90:61 | ...::stdin(...) | provenance | Src:MaD:1 MaD:1 | +| test.rs:90:46:90:61 | ...::stdin(...) | test.rs:90:22:90:62 | ...::new(...) | provenance | MaD:34 | +| test.rs:91:13:91:16 | line | test.rs:92:14:92:17 | line | provenance | | +| test.rs:91:20:91:25 | reader | test.rs:91:20:91:33 | reader.lines() | provenance | MaD:7 | +| test.rs:91:20:91:33 | reader.lines() | test.rs:91:20:91:40 | ... .nth(...) [Some] | provenance | MaD:4 | +| test.rs:91:20:91:40 | ... .nth(...) [Some] | test.rs:91:20:91:49 | ... .unwrap() | provenance | MaD:30 | +| test.rs:91:20:91:49 | ... .unwrap() | test.rs:91:13:91:16 | line | provenance | | +| test.rs:92:14:92:17 | line | test.rs:92:14:92:26 | line.unwrap() | provenance | MaD:31 | +| test.rs:92:14:92:26 | line.unwrap() | test.rs:92:14:92:34 | ... .clone() | provenance | MaD:3 | | test.rs:109:13:109:21 | mut stdin | test.rs:111:22:111:26 | stdin | provenance | | | test.rs:109:25:109:40 | ...::stdin | test.rs:109:25:109:42 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 | | test.rs:109:25:109:42 | ...::stdin(...) | test.rs:109:13:109:21 | mut stdin | provenance | | -| test.rs:111:22:111:26 | stdin | test.rs:111:33:111:43 | [post] &mut buffer [&ref] | provenance | MaD:19 | +| test.rs:111:22:111:26 | stdin | test.rs:111:33:111:43 | [post] &mut buffer [&ref] | provenance | MaD:21 | | test.rs:111:33:111:43 | [post] &mut buffer [&ref] | test.rs:111:38:111:43 | [post] buffer | provenance | | | test.rs:111:38:111:43 | [post] buffer | test.rs:112:15:112:20 | buffer | provenance | | | test.rs:112:15:112:20 | buffer | test.rs:112:14:112:20 | &buffer | provenance | | | test.rs:116:13:116:21 | mut stdin | test.rs:118:22:118:26 | stdin | provenance | | | test.rs:116:25:116:40 | ...::stdin | test.rs:116:25:116:42 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 | | test.rs:116:25:116:42 | ...::stdin(...) | test.rs:116:13:116:21 | mut stdin | provenance | | -| test.rs:118:22:118:26 | stdin | test.rs:118:40:118:50 | [post] &mut buffer [&ref] | provenance | MaD:25 | +| test.rs:118:22:118:26 | stdin | test.rs:118:40:118:50 | [post] &mut buffer [&ref] | provenance | MaD:27 | | test.rs:118:40:118:50 | [post] &mut buffer [&ref] | test.rs:118:45:118:50 | [post] buffer | provenance | | | test.rs:118:45:118:50 | [post] buffer | test.rs:119:15:119:20 | buffer | provenance | | | test.rs:119:15:119:20 | buffer | test.rs:119:14:119:20 | &buffer | provenance | | | test.rs:123:13:123:21 | mut stdin | test.rs:125:22:125:26 | stdin | provenance | | | test.rs:123:25:123:40 | ...::stdin | test.rs:123:25:123:42 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 | | test.rs:123:25:123:42 | ...::stdin(...) | test.rs:123:13:123:21 | mut stdin | provenance | | -| test.rs:125:22:125:26 | stdin | test.rs:125:43:125:53 | [post] &mut buffer [&ref] | provenance | MaD:26 | +| test.rs:125:22:125:26 | stdin | test.rs:125:43:125:53 | [post] &mut buffer [&ref] | provenance | MaD:28 | | test.rs:125:43:125:53 | [post] &mut buffer [&ref] | test.rs:125:48:125:53 | [post] buffer | provenance | | | test.rs:125:48:125:53 | [post] buffer | test.rs:126:15:126:20 | buffer | provenance | | | test.rs:126:15:126:20 | buffer | test.rs:126:14:126:20 | &buffer | provenance | | | test.rs:130:13:130:21 | mut stdin | test.rs:132:9:132:13 | stdin | provenance | | | test.rs:130:25:130:40 | ...::stdin | test.rs:130:25:130:42 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 | | test.rs:130:25:130:42 | ...::stdin(...) | test.rs:130:13:130:21 | mut stdin | provenance | | -| test.rs:132:9:132:13 | stdin | test.rs:132:26:132:36 | [post] &mut buffer [&ref] | provenance | MaD:21 | +| test.rs:132:9:132:13 | stdin | test.rs:132:26:132:36 | [post] &mut buffer [&ref] | provenance | MaD:23 | | test.rs:132:26:132:36 | [post] &mut buffer [&ref] | test.rs:132:31:132:36 | [post] buffer | provenance | | | test.rs:132:31:132:36 | [post] buffer | test.rs:133:15:133:20 | buffer | provenance | | | test.rs:133:15:133:20 | buffer | test.rs:133:14:133:20 | &buffer | provenance | | @@ -156,38 +169,38 @@ edges | test.rs:137:25:137:40 | ...::stdin | test.rs:137:25:137:42 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 | | test.rs:137:25:137:42 | ...::stdin(...) | test.rs:137:13:137:21 | mut stdin | provenance | | | test.rs:138:13:138:14 | v1 | test.rs:142:14:142:15 | v1 | provenance | | -| test.rs:138:18:138:22 | stdin | test.rs:138:18:138:32 | stdin.read_u8() [future, Ok] | provenance | MaD:27 | +| test.rs:138:18:138:22 | stdin | test.rs:138:18:138:32 | stdin.read_u8() [future, Ok] | provenance | MaD:29 | | test.rs:138:18:138:32 | stdin.read_u8() [future, Ok] | test.rs:138:18:138:38 | await ... [Ok] | provenance | | | test.rs:138:18:138:38 | await ... [Ok] | test.rs:138:18:138:39 | TryExpr | provenance | | | test.rs:138:18:138:39 | TryExpr | test.rs:138:13:138:14 | v1 | provenance | | | test.rs:139:13:139:14 | v2 | test.rs:143:14:143:15 | v2 | provenance | | -| test.rs:139:18:139:22 | stdin | test.rs:139:18:139:33 | stdin.read_i16() [future, Ok] | provenance | MaD:23 | +| test.rs:139:18:139:22 | stdin | test.rs:139:18:139:33 | stdin.read_i16() [future, Ok] | provenance | MaD:25 | | test.rs:139:18:139:33 | stdin.read_i16() [future, Ok] | test.rs:139:18:139:39 | await ... [Ok] | provenance | | | test.rs:139:18:139:39 | await ... [Ok] | test.rs:139:18:139:40 | TryExpr | provenance | | | test.rs:139:18:139:40 | TryExpr | test.rs:139:13:139:14 | v2 | provenance | | | test.rs:140:13:140:14 | v3 | test.rs:144:14:144:15 | v3 | provenance | | -| test.rs:140:18:140:22 | stdin | test.rs:140:18:140:33 | stdin.read_f32() [future, Ok] | provenance | MaD:22 | +| test.rs:140:18:140:22 | stdin | test.rs:140:18:140:33 | stdin.read_f32() [future, Ok] | provenance | MaD:24 | | test.rs:140:18:140:33 | stdin.read_f32() [future, Ok] | test.rs:140:18:140:39 | await ... [Ok] | provenance | | | test.rs:140:18:140:39 | await ... [Ok] | test.rs:140:18:140:40 | TryExpr | provenance | | | test.rs:140:18:140:40 | TryExpr | test.rs:140:13:140:14 | v3 | provenance | | | test.rs:141:13:141:14 | v4 | test.rs:145:14:145:15 | v4 | provenance | | -| test.rs:141:18:141:22 | stdin | test.rs:141:18:141:36 | stdin.read_i64_le() [future, Ok] | provenance | MaD:24 | +| test.rs:141:18:141:22 | stdin | test.rs:141:18:141:36 | stdin.read_i64_le() [future, Ok] | provenance | MaD:26 | | test.rs:141:18:141:36 | stdin.read_i64_le() [future, Ok] | test.rs:141:18:141:42 | await ... [Ok] | provenance | | | test.rs:141:18:141:42 | await ... [Ok] | test.rs:141:18:141:43 | TryExpr | provenance | | | test.rs:141:18:141:43 | TryExpr | test.rs:141:13:141:14 | v4 | provenance | | | test.rs:149:13:149:21 | mut stdin | test.rs:151:9:151:13 | stdin | provenance | | | test.rs:149:25:149:40 | ...::stdin | test.rs:149:25:149:42 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 | | test.rs:149:25:149:42 | ...::stdin(...) | test.rs:149:13:149:21 | mut stdin | provenance | | -| test.rs:151:9:151:13 | stdin | test.rs:151:24:151:34 | [post] &mut buffer [&ref] | provenance | MaD:20 | +| test.rs:151:9:151:13 | stdin | test.rs:151:24:151:34 | [post] &mut buffer [&ref] | provenance | MaD:22 | | test.rs:151:24:151:34 | [post] &mut buffer [&ref] | test.rs:151:29:151:34 | [post] buffer | provenance | | | test.rs:151:29:151:34 | [post] buffer | test.rs:152:15:152:20 | buffer | provenance | | | test.rs:152:15:152:20 | buffer | test.rs:152:14:152:20 | &buffer | provenance | | | test.rs:158:13:158:22 | mut reader | test.rs:159:20:159:25 | reader | provenance | | | test.rs:158:26:158:70 | ...::new(...) | test.rs:158:13:158:22 | mut reader | provenance | | | test.rs:158:52:158:67 | ...::stdin | test.rs:158:52:158:69 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 | -| test.rs:158:52:158:69 | ...::stdin(...) | test.rs:158:26:158:70 | ...::new(...) | provenance | MaD:35 | +| test.rs:158:52:158:69 | ...::stdin(...) | test.rs:158:26:158:70 | ...::new(...) | provenance | MaD:37 | | test.rs:159:13:159:16 | data | test.rs:160:15:160:18 | data | provenance | | -| test.rs:159:20:159:25 | reader | test.rs:159:20:159:36 | reader.fill_buf() [future, Ok] | provenance | MaD:14 | +| test.rs:159:20:159:25 | reader | test.rs:159:20:159:36 | reader.fill_buf() [future, Ok] | provenance | MaD:16 | | test.rs:159:20:159:36 | reader.fill_buf() [future, Ok] | test.rs:159:20:159:42 | await ... [Ok] | provenance | | | test.rs:159:20:159:42 | await ... [Ok] | test.rs:159:20:159:43 | TryExpr | provenance | | | test.rs:159:20:159:43 | TryExpr | test.rs:159:13:159:16 | data | provenance | | @@ -195,60 +208,60 @@ edges | test.rs:164:13:164:18 | reader | test.rs:165:20:165:25 | reader | provenance | | | test.rs:164:22:164:66 | ...::new(...) | test.rs:164:13:164:18 | reader | provenance | | | test.rs:164:48:164:63 | ...::stdin | test.rs:164:48:164:65 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 | -| test.rs:164:48:164:65 | ...::stdin(...) | test.rs:164:22:164:66 | ...::new(...) | provenance | MaD:35 | +| test.rs:164:48:164:65 | ...::stdin(...) | test.rs:164:22:164:66 | ...::new(...) | provenance | MaD:37 | | test.rs:165:13:165:16 | data [&ref] | test.rs:166:15:166:18 | data [&ref] | provenance | | -| test.rs:165:20:165:25 | reader | test.rs:165:20:165:34 | reader.buffer() [&ref] | provenance | MaD:34 | +| test.rs:165:20:165:25 | reader | test.rs:165:20:165:34 | reader.buffer() [&ref] | provenance | MaD:36 | | test.rs:165:20:165:34 | reader.buffer() [&ref] | test.rs:165:13:165:16 | data [&ref] | provenance | | | test.rs:166:15:166:18 | data [&ref] | test.rs:166:14:166:18 | &data | provenance | | | test.rs:171:13:171:22 | mut reader | test.rs:172:9:172:14 | reader | provenance | | | test.rs:171:26:171:70 | ...::new(...) | test.rs:171:13:171:22 | mut reader | provenance | | | test.rs:171:52:171:67 | ...::stdin | test.rs:171:52:171:69 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 | -| test.rs:171:52:171:69 | ...::stdin(...) | test.rs:171:26:171:70 | ...::new(...) | provenance | MaD:35 | -| test.rs:172:9:172:14 | reader | test.rs:172:26:172:36 | [post] &mut buffer [&ref] | provenance | MaD:16 | +| test.rs:171:52:171:69 | ...::stdin(...) | test.rs:171:26:171:70 | ...::new(...) | provenance | MaD:37 | +| test.rs:172:9:172:14 | reader | test.rs:172:26:172:36 | [post] &mut buffer [&ref] | provenance | MaD:18 | | test.rs:172:26:172:36 | [post] &mut buffer [&ref] | test.rs:172:31:172:36 | [post] buffer | provenance | | | test.rs:172:31:172:36 | [post] buffer | test.rs:173:15:173:20 | buffer | provenance | | | test.rs:173:15:173:20 | buffer | test.rs:173:14:173:20 | &buffer | provenance | | | test.rs:178:13:178:22 | mut reader | test.rs:179:9:179:14 | reader | provenance | | | test.rs:178:26:178:70 | ...::new(...) | test.rs:178:13:178:22 | mut reader | provenance | | | test.rs:178:52:178:67 | ...::stdin | test.rs:178:52:178:69 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 | -| test.rs:178:52:178:69 | ...::stdin(...) | test.rs:178:26:178:70 | ...::new(...) | provenance | MaD:35 | -| test.rs:179:9:179:14 | reader | test.rs:179:33:179:43 | [post] &mut buffer [&ref] | provenance | MaD:17 | +| test.rs:178:52:178:69 | ...::stdin(...) | test.rs:178:26:178:70 | ...::new(...) | provenance | MaD:37 | +| test.rs:179:9:179:14 | reader | test.rs:179:33:179:43 | [post] &mut buffer [&ref] | provenance | MaD:19 | | test.rs:179:33:179:43 | [post] &mut buffer [&ref] | test.rs:179:38:179:43 | [post] buffer | provenance | | | test.rs:179:38:179:43 | [post] buffer | test.rs:180:15:180:20 | buffer | provenance | | | test.rs:179:38:179:43 | [post] buffer | test.rs:181:14:181:19 | buffer | provenance | | | test.rs:180:15:180:20 | buffer | test.rs:180:14:180:20 | &buffer | provenance | | -| test.rs:181:14:181:19 | buffer | test.rs:181:14:181:22 | buffer[0] | provenance | MaD:3 | +| test.rs:181:14:181:19 | buffer | test.rs:181:14:181:22 | buffer[0] | provenance | MaD:5 | | test.rs:185:13:185:28 | mut reader_split | test.rs:186:14:186:25 | reader_split | provenance | | | test.rs:185:13:185:28 | mut reader_split | test.rs:187:33:187:44 | reader_split | provenance | | -| test.rs:185:32:185:76 | ...::new(...) | test.rs:185:32:185:88 | ... .split(...) | provenance | MaD:18 | +| test.rs:185:32:185:76 | ...::new(...) | test.rs:185:32:185:88 | ... .split(...) | provenance | MaD:20 | | test.rs:185:32:185:88 | ... .split(...) | test.rs:185:13:185:28 | mut reader_split | provenance | | | test.rs:185:58:185:73 | ...::stdin | test.rs:185:58:185:75 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 | -| test.rs:185:58:185:75 | ...::stdin(...) | test.rs:185:32:185:76 | ...::new(...) | provenance | MaD:35 | -| test.rs:186:14:186:25 | reader_split | test.rs:186:14:186:40 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:37 | +| test.rs:185:58:185:75 | ...::stdin(...) | test.rs:185:32:185:76 | ...::new(...) | provenance | MaD:37 | +| test.rs:186:14:186:25 | reader_split | test.rs:186:14:186:40 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:39 | | test.rs:186:14:186:40 | reader_split.next_segment() [future, Ok, Some] | test.rs:186:14:186:46 | await ... [Ok, Some] | provenance | | | test.rs:186:14:186:46 | await ... [Ok, Some] | test.rs:186:14:186:47 | TryExpr [Some] | provenance | | -| test.rs:186:14:186:47 | TryExpr [Some] | test.rs:186:14:186:56 | ... .unwrap() | provenance | MaD:28 | +| test.rs:186:14:186:47 | TryExpr [Some] | test.rs:186:14:186:56 | ... .unwrap() | provenance | MaD:30 | | test.rs:187:19:187:29 | Some(...) [Some] | test.rs:187:24:187:28 | chunk | provenance | | | test.rs:187:24:187:28 | chunk | test.rs:188:18:188:22 | chunk | provenance | | -| test.rs:187:33:187:44 | reader_split | test.rs:187:33:187:59 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:37 | +| test.rs:187:33:187:44 | reader_split | test.rs:187:33:187:59 | reader_split.next_segment() [future, Ok, Some] | provenance | MaD:39 | | test.rs:187:33:187:59 | reader_split.next_segment() [future, Ok, Some] | test.rs:187:33:187:65 | await ... [Ok, Some] | provenance | | | test.rs:187:33:187:65 | await ... [Ok, Some] | test.rs:187:33:187:66 | TryExpr [Some] | provenance | | | test.rs:187:33:187:66 | TryExpr [Some] | test.rs:187:19:187:29 | Some(...) [Some] | provenance | | | test.rs:193:13:193:18 | reader | test.rs:194:25:194:30 | reader | provenance | | | test.rs:193:22:193:66 | ...::new(...) | test.rs:193:13:193:18 | reader | provenance | | | test.rs:193:48:193:63 | ...::stdin | test.rs:193:48:193:65 | ...::stdin(...) | provenance | Src:MaD:2 MaD:2 | -| test.rs:193:48:193:65 | ...::stdin(...) | test.rs:193:22:193:66 | ...::new(...) | provenance | MaD:35 | +| test.rs:193:48:193:65 | ...::stdin(...) | test.rs:193:22:193:66 | ...::new(...) | provenance | MaD:37 | | test.rs:194:13:194:21 | mut lines | test.rs:195:14:195:18 | lines | provenance | | | test.rs:194:13:194:21 | mut lines | test.rs:196:32:196:36 | lines | provenance | | -| test.rs:194:25:194:30 | reader | test.rs:194:25:194:38 | reader.lines() | provenance | MaD:15 | +| test.rs:194:25:194:30 | reader | test.rs:194:25:194:38 | reader.lines() | provenance | MaD:17 | | test.rs:194:25:194:38 | reader.lines() | test.rs:194:13:194:21 | mut lines | provenance | | -| test.rs:195:14:195:18 | lines | test.rs:195:14:195:30 | lines.next_line() [future, Ok, Some] | provenance | MaD:36 | +| test.rs:195:14:195:18 | lines | test.rs:195:14:195:30 | lines.next_line() [future, Ok, Some] | provenance | MaD:38 | | test.rs:195:14:195:30 | lines.next_line() [future, Ok, Some] | test.rs:195:14:195:36 | await ... [Ok, Some] | provenance | | | test.rs:195:14:195:36 | await ... [Ok, Some] | test.rs:195:14:195:37 | TryExpr [Some] | provenance | | -| test.rs:195:14:195:37 | TryExpr [Some] | test.rs:195:14:195:46 | ... .unwrap() | provenance | MaD:28 | +| test.rs:195:14:195:37 | TryExpr [Some] | test.rs:195:14:195:46 | ... .unwrap() | provenance | MaD:30 | | test.rs:196:19:196:28 | Some(...) [Some] | test.rs:196:24:196:27 | line | provenance | | | test.rs:196:24:196:27 | line | test.rs:197:18:197:21 | line | provenance | | -| test.rs:196:32:196:36 | lines | test.rs:196:32:196:48 | lines.next_line() [future, Ok, Some] | provenance | MaD:36 | +| test.rs:196:32:196:36 | lines | test.rs:196:32:196:48 | lines.next_line() [future, Ok, Some] | provenance | MaD:38 | | test.rs:196:32:196:48 | lines.next_line() [future, Ok, Some] | test.rs:196:32:196:54 | await ... [Ok, Some] | provenance | | | test.rs:196:32:196:54 | await ... [Ok, Some] | test.rs:196:32:196:55 | TryExpr [Some] | provenance | | | test.rs:196:32:196:55 | TryExpr [Some] | test.rs:196:19:196:28 | Some(...) [Some] | provenance | | @@ -349,6 +362,18 @@ nodes | test.rs:84:21:84:26 | reader | semmle.label | reader | | test.rs:84:21:84:34 | reader.lines() | semmle.label | reader.lines() | | test.rs:85:18:85:21 | line | semmle.label | line | +| test.rs:90:13:90:18 | reader | semmle.label | reader | +| test.rs:90:22:90:62 | ...::new(...) | semmle.label | ...::new(...) | +| test.rs:90:46:90:59 | ...::stdin | semmle.label | ...::stdin | +| test.rs:90:46:90:61 | ...::stdin(...) | semmle.label | ...::stdin(...) | +| test.rs:91:13:91:16 | line | semmle.label | line | +| test.rs:91:20:91:25 | reader | semmle.label | reader | +| test.rs:91:20:91:33 | reader.lines() | semmle.label | reader.lines() | +| test.rs:91:20:91:40 | ... .nth(...) [Some] | semmle.label | ... .nth(...) [Some] | +| test.rs:91:20:91:49 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:92:14:92:17 | line | semmle.label | line | +| test.rs:92:14:92:26 | line.unwrap() | semmle.label | line.unwrap() | +| test.rs:92:14:92:34 | ... .clone() | semmle.label | ... .clone() | | test.rs:109:13:109:21 | mut stdin | semmle.label | mut stdin | | test.rs:109:25:109:40 | ...::stdin | semmle.label | ...::stdin | | test.rs:109:25:109:42 | ...::stdin(...) | semmle.label | ...::stdin(...) | @@ -509,6 +534,7 @@ testFailures | test.rs:76:14:76:50 | ... .unwrap() | test.rs:75:56:75:69 | ...::stdin | test.rs:76:14:76:50 | ... .unwrap() | $@ | test.rs:75:56:75:69 | ...::stdin | ...::stdin | | test.rs:78:18:78:31 | chunk.unwrap() | test.rs:75:56:75:69 | ...::stdin | test.rs:78:18:78:31 | chunk.unwrap() | $@ | test.rs:75:56:75:69 | ...::stdin | ...::stdin | | test.rs:85:18:85:21 | line | test.rs:83:46:83:59 | ...::stdin | test.rs:85:18:85:21 | line | $@ | test.rs:83:46:83:59 | ...::stdin | ...::stdin | +| test.rs:92:14:92:34 | ... .clone() | test.rs:90:46:90:59 | ...::stdin | test.rs:92:14:92:34 | ... .clone() | $@ | test.rs:90:46:90:59 | ...::stdin | ...::stdin | | test.rs:112:14:112:20 | &buffer | test.rs:109:25:109:40 | ...::stdin | test.rs:112:14:112:20 | &buffer | $@ | test.rs:109:25:109:40 | ...::stdin | ...::stdin | | test.rs:119:14:119:20 | &buffer | test.rs:116:25:116:40 | ...::stdin | test.rs:119:14:119:20 | &buffer | $@ | test.rs:116:25:116:40 | ...::stdin | ...::stdin | | test.rs:126:14:126:20 | &buffer | test.rs:123:25:123:40 | ...::stdin | test.rs:126:14:126:20 | &buffer | $@ | test.rs:123:25:123:40 | ...::stdin | ...::stdin | diff --git a/rust/ql/test/library-tests/dataflow/sources/stdin/test.rs b/rust/ql/test/library-tests/dataflow/sources/stdin/test.rs index 230303fa1ea..fd11b9ed25e 100644 --- a/rust/ql/test/library-tests/dataflow/sources/stdin/test.rs +++ b/rust/ql/test/library-tests/dataflow/sources/stdin/test.rs @@ -89,7 +89,7 @@ fn test_io_stdin() -> std::io::Result<()> { { let reader = std::io::BufReader::new(std::io::stdin()); // $ Alert[rust/summary/taint-sources] let line = reader.lines().nth(1).unwrap(); - sink(line.unwrap().clone()); // $ MISSING: hasTaintFlow + sink(line.unwrap().clone()); // $ hasTaintFlow } { diff --git a/rust/ql/test/library-tests/dataflow/strings/inline-taint-flow.expected b/rust/ql/test/library-tests/dataflow/strings/inline-taint-flow.expected index f15f3dd7678..c39c5e60476 100644 --- a/rust/ql/test/library-tests/dataflow/strings/inline-taint-flow.expected +++ b/rust/ql/test/library-tests/dataflow/strings/inline-taint-flow.expected @@ -2,12 +2,13 @@ models | 1 | Summary: <_ as alloc::string::ToString>::to_string; Argument[self].Reference; ReturnValue; taint | | 2 | Summary: <_ as core::convert::From>::from; Argument[0]; ReturnValue; taint | | 3 | Summary: <_ as core::ops::index::Index>::index; Argument[self].Reference.Element; ReturnValue.Reference; value | -| 4 | Summary: ::from; Argument[0].Reference; ReturnValue; value | -| 5 | Summary: ::add; Argument[0].Reference; ReturnValue; taint | -| 6 | Summary: ::add; Argument[self,0]; ReturnValue; taint | -| 7 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 8 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | -| 9 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | +| 4 | Summary: ::from; Argument[0].Field[alloc::borrow::Cow::Owned(0)]; ReturnValue; value | +| 5 | Summary: ::from; Argument[0].Reference; ReturnValue; value | +| 6 | Summary: ::add; Argument[0].Reference; ReturnValue; taint | +| 7 | Summary: ::add; Argument[self,0]; ReturnValue; taint | +| 8 | Summary: ::as_str; Argument[self]; ReturnValue; value | +| 9 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | +| 10 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | edges | main.rs:26:9:26:9 | s | main.rs:27:19:27:19 | s | provenance | | | main.rs:26:9:26:9 | s | main.rs:27:19:27:25 | s[...] | provenance | | @@ -19,11 +20,11 @@ edges | main.rs:32:9:32:10 | s1 | main.rs:35:14:35:15 | s1 | provenance | | | main.rs:32:14:32:23 | source(...) | main.rs:32:9:32:10 | s1 | provenance | | | main.rs:35:9:35:10 | s4 | main.rs:38:10:38:11 | s4 | provenance | | -| main.rs:35:14:35:15 | s1 | main.rs:35:14:35:20 | ... + ... | provenance | MaD:6 | +| main.rs:35:14:35:15 | s1 | main.rs:35:14:35:20 | ... + ... | provenance | MaD:7 | | main.rs:35:14:35:20 | ... + ... | main.rs:35:9:35:10 | s4 | provenance | | | main.rs:43:9:43:10 | s1 | main.rs:46:34:46:35 | s1 | provenance | | | main.rs:43:14:43:23 | source(...) | main.rs:43:9:43:10 | s1 | provenance | | -| main.rs:46:33:46:35 | &s1 [&ref] | main.rs:46:10:46:35 | ... + ... | provenance | MaD:5 | +| main.rs:46:33:46:35 | &s1 [&ref] | main.rs:46:10:46:35 | ... + ... | provenance | MaD:6 | | main.rs:46:34:46:35 | s1 | main.rs:46:33:46:35 | &s1 [&ref] | provenance | | | main.rs:51:9:51:10 | s1 | main.rs:52:27:52:28 | s1 | provenance | | | main.rs:51:14:51:29 | source_slice(...) | main.rs:51:9:51:10 | s1 | provenance | | @@ -31,6 +32,7 @@ edges | main.rs:52:14:52:29 | ...::from(...) | main.rs:52:9:52:10 | s2 | provenance | | | main.rs:52:27:52:28 | s1 | main.rs:52:14:52:29 | ...::from(...) | provenance | MaD:2 | | main.rs:52:27:52:28 | s1 | main.rs:52:14:52:29 | ...::from(...) | provenance | MaD:4 | +| main.rs:52:27:52:28 | s1 | main.rs:52:14:52:29 | ...::from(...) | provenance | MaD:5 | | main.rs:57:9:57:10 | s1 | main.rs:58:14:58:15 | s1 | provenance | | | main.rs:57:14:57:29 | source_slice(...) | main.rs:57:9:57:10 | s1 | provenance | | | main.rs:58:9:58:10 | s2 | main.rs:59:10:59:11 | s2 | provenance | | @@ -38,32 +40,32 @@ edges | main.rs:58:14:58:27 | s1.to_string() | main.rs:58:9:58:10 | s2 | provenance | | | main.rs:63:9:63:9 | s | main.rs:64:16:64:16 | s | provenance | | | main.rs:63:13:63:22 | source(...) | main.rs:63:9:63:9 | s | provenance | | -| main.rs:64:16:64:16 | s | main.rs:64:16:64:25 | s.as_str() | provenance | MaD:7 | +| main.rs:64:16:64:16 | s | main.rs:64:16:64:25 | s.as_str() | provenance | MaD:8 | | main.rs:68:9:68:9 | s | main.rs:70:34:70:61 | MacroExpr | provenance | | | main.rs:68:9:68:9 | s | main.rs:73:34:73:59 | MacroExpr | provenance | | | main.rs:68:13:68:22 | source(...) | main.rs:68:9:68:9 | s | provenance | | | main.rs:70:9:70:18 | formatted1 | main.rs:71:10:71:19 | formatted1 | provenance | | | main.rs:70:22:70:62 | ...::format(...) | main.rs:70:9:70:18 | formatted1 | provenance | | -| main.rs:70:34:70:61 | MacroExpr | main.rs:70:22:70:62 | ...::format(...) | provenance | MaD:8 | +| main.rs:70:34:70:61 | MacroExpr | main.rs:70:22:70:62 | ...::format(...) | provenance | MaD:9 | | main.rs:73:9:73:18 | formatted2 | main.rs:74:10:74:19 | formatted2 | provenance | | | main.rs:73:22:73:60 | ...::format(...) | main.rs:73:9:73:18 | formatted2 | provenance | | -| main.rs:73:34:73:59 | MacroExpr | main.rs:73:22:73:60 | ...::format(...) | provenance | MaD:8 | +| main.rs:73:34:73:59 | MacroExpr | main.rs:73:22:73:60 | ...::format(...) | provenance | MaD:9 | | main.rs:76:9:76:13 | width | main.rs:77:34:77:74 | MacroExpr | provenance | | | main.rs:76:17:76:32 | source_usize(...) | main.rs:76:9:76:13 | width | provenance | | | main.rs:77:9:77:18 | formatted3 | main.rs:78:10:78:19 | formatted3 | provenance | | | main.rs:77:22:77:75 | ...::format(...) | main.rs:77:9:77:18 | formatted3 | provenance | | -| main.rs:77:34:77:74 | MacroExpr | main.rs:77:22:77:75 | ...::format(...) | provenance | MaD:8 | +| main.rs:77:34:77:74 | MacroExpr | main.rs:77:22:77:75 | ...::format(...) | provenance | MaD:9 | | main.rs:82:9:82:10 | s1 | main.rs:86:18:86:25 | MacroExpr | provenance | | | main.rs:82:9:82:10 | s1 | main.rs:87:18:87:32 | MacroExpr | provenance | | | main.rs:82:14:82:23 | source(...) | main.rs:82:9:82:10 | s1 | provenance | | | main.rs:86:18:86:25 | ...::format(...) | main.rs:86:18:86:25 | { ... } | provenance | | | main.rs:86:18:86:25 | ...::must_use(...) | main.rs:86:10:86:26 | MacroExpr | provenance | | -| main.rs:86:18:86:25 | MacroExpr | main.rs:86:18:86:25 | ...::format(...) | provenance | MaD:8 | -| main.rs:86:18:86:25 | { ... } | main.rs:86:18:86:25 | ...::must_use(...) | provenance | MaD:9 | +| main.rs:86:18:86:25 | MacroExpr | main.rs:86:18:86:25 | ...::format(...) | provenance | MaD:9 | +| main.rs:86:18:86:25 | { ... } | main.rs:86:18:86:25 | ...::must_use(...) | provenance | MaD:10 | | main.rs:87:18:87:32 | ...::format(...) | main.rs:87:18:87:32 | { ... } | provenance | | | main.rs:87:18:87:32 | ...::must_use(...) | main.rs:87:10:87:33 | MacroExpr | provenance | | -| main.rs:87:18:87:32 | MacroExpr | main.rs:87:18:87:32 | ...::format(...) | provenance | MaD:8 | -| main.rs:87:18:87:32 | { ... } | main.rs:87:18:87:32 | ...::must_use(...) | provenance | MaD:9 | +| main.rs:87:18:87:32 | MacroExpr | main.rs:87:18:87:32 | ...::format(...) | provenance | MaD:9 | +| main.rs:87:18:87:32 | { ... } | main.rs:87:18:87:32 | ...::must_use(...) | provenance | MaD:10 | nodes | main.rs:26:9:26:9 | s | semmle.label | s | | main.rs:26:13:26:22 | source(...) | semmle.label | source(...) | diff --git a/rust/ql/test/query-tests/security/CWE-022/TaintedPath.expected b/rust/ql/test/query-tests/security/CWE-022/TaintedPath.expected index 244c768696f..5f74cb457c9 100644 --- a/rust/ql/test/query-tests/security/CWE-022/TaintedPath.expected +++ b/rust/ql/test/query-tests/security/CWE-022/TaintedPath.expected @@ -21,6 +21,7 @@ edges | src/main.rs:9:21:9:44 | ...::from(...) | src/main.rs:9:9:9:17 | file_path | provenance | | | src/main.rs:9:35:9:43 | file_name | src/main.rs:9:21:9:44 | ...::from(...) | provenance | MaD:9 | | src/main.rs:9:35:9:43 | file_name | src/main.rs:9:21:9:44 | ...::from(...) | provenance | MaD:16 | +| src/main.rs:9:35:9:43 | file_name | src/main.rs:9:21:9:44 | ...::from(...) | provenance | MaD:17 | | src/main.rs:11:24:11:32 | file_path | src/main.rs:11:5:11:22 | ...::read_to_string | provenance | MaD:6 Sink:MaD:6 | | src/main.rs:38:11:38:19 | file_path | src/main.rs:41:52:41:60 | file_path | provenance | | | src/main.rs:41:9:41:17 | file_path | src/main.rs:46:24:46:32 | file_path | provenance | | @@ -28,6 +29,7 @@ edges | src/main.rs:41:38:41:61 | ...::from(...) | src/main.rs:41:21:41:62 | public_path.join(...) | provenance | MaD:14 | | src/main.rs:41:52:41:60 | file_path | src/main.rs:41:38:41:61 | ...::from(...) | provenance | MaD:9 | | src/main.rs:41:52:41:60 | file_path | src/main.rs:41:38:41:61 | ...::from(...) | provenance | MaD:16 | +| src/main.rs:41:52:41:60 | file_path | src/main.rs:41:38:41:61 | ...::from(...) | provenance | MaD:17 | | src/main.rs:46:24:46:32 | file_path | src/main.rs:46:5:46:22 | ...::read_to_string | provenance | MaD:6 Sink:MaD:6 | | src/main.rs:63:11:63:19 | file_path | src/main.rs:66:32:66:40 | file_path | provenance | | | src/main.rs:66:9:66:17 | file_path [&ref] | src/main.rs:71:24:71:32 | file_path [&ref] | provenance | | @@ -41,6 +43,7 @@ edges | src/main.rs:79:38:79:61 | ...::from(...) | src/main.rs:79:21:79:62 | public_path.join(...) | provenance | MaD:14 | | src/main.rs:79:52:79:60 | file_path | src/main.rs:79:38:79:61 | ...::from(...) | provenance | MaD:9 | | src/main.rs:79:52:79:60 | file_path | src/main.rs:79:38:79:61 | ...::from(...) | provenance | MaD:16 | +| src/main.rs:79:52:79:60 | file_path | src/main.rs:79:38:79:61 | ...::from(...) | provenance | MaD:17 | | src/main.rs:80:9:80:17 | file_path | src/main.rs:85:24:85:32 | file_path | provenance | | | src/main.rs:80:21:80:29 | file_path | src/main.rs:80:21:80:44 | file_path.canonicalize() [Ok] | provenance | MaD:11 | | src/main.rs:80:21:80:44 | file_path.canonicalize() [Ok] | src/main.rs:80:21:80:53 | ... .unwrap() | provenance | MaD:13 | @@ -136,7 +139,8 @@ models | 13 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | | 14 | Summary: ::join; Argument[0]; ReturnValue; taint | | 15 | Summary: ::new; Argument[0].Reference; ReturnValue.Reference; value | -| 16 | Summary: ::from; Argument[0]; ReturnValue; taint | +| 16 | Summary: ::from; Argument[0].Field[alloc::borrow::Cow::Owned(0)]; ReturnValue; value | +| 17 | Summary: ::from; Argument[0]; ReturnValue; taint | nodes | src/main.rs:7:11:7:19 | file_name | semmle.label | file_name | | src/main.rs:9:9:9:17 | file_path | semmle.label | file_path | diff --git a/rust/ql/test/query-tests/security/CWE-798/HardcodedCryptographicValue.expected b/rust/ql/test/query-tests/security/CWE-798/HardcodedCryptographicValue.expected index 081ec36f4ed..381615208f0 100644 --- a/rust/ql/test/query-tests/security/CWE-798/HardcodedCryptographicValue.expected +++ b/rust/ql/test/query-tests/security/CWE-798/HardcodedCryptographicValue.expected @@ -23,32 +23,32 @@ edges | test_cipher.rs:18:28:18:36 | &... [&ref] | test_cipher.rs:18:9:18:14 | const1 [&ref] | provenance | | | test_cipher.rs:18:29:18:36 | [0u8; 16] | test_cipher.rs:18:28:18:36 | &... [&ref] | provenance | | | test_cipher.rs:19:49:19:79 | ...::from_slice(...) [&ref] | test_cipher.rs:19:30:19:47 | ...::new | provenance | MaD:3 Sink:MaD:3 | -| test_cipher.rs:19:73:19:78 | const1 [&ref] | test_cipher.rs:19:49:19:79 | ...::from_slice(...) [&ref] | provenance | MaD:19 | +| test_cipher.rs:19:73:19:78 | const1 [&ref] | test_cipher.rs:19:49:19:79 | ...::from_slice(...) [&ref] | provenance | MaD:24 | | test_cipher.rs:25:9:25:14 | const4 [&ref] | test_cipher.rs:26:66:26:71 | const4 [&ref] | provenance | | | test_cipher.rs:25:28:25:36 | &... [&ref] | test_cipher.rs:25:9:25:14 | const4 [&ref] | provenance | | | test_cipher.rs:25:29:25:36 | [0u8; 16] | test_cipher.rs:25:28:25:36 | &... [&ref] | provenance | | | test_cipher.rs:26:42:26:72 | ...::from_slice(...) [&ref] | test_cipher.rs:26:30:26:40 | ...::new | provenance | MaD:4 Sink:MaD:4 | -| test_cipher.rs:26:66:26:71 | const4 [&ref] | test_cipher.rs:26:42:26:72 | ...::from_slice(...) [&ref] | provenance | MaD:19 | +| test_cipher.rs:26:66:26:71 | const4 [&ref] | test_cipher.rs:26:42:26:72 | ...::from_slice(...) [&ref] | provenance | MaD:24 | | test_cipher.rs:29:9:29:14 | const5 [&ref] | test_cipher.rs:30:95:30:100 | const5 [&ref] | provenance | | | test_cipher.rs:29:28:29:36 | &... [&ref] | test_cipher.rs:29:9:29:14 | const5 [&ref] | provenance | | | test_cipher.rs:29:29:29:36 | [0u8; 16] | test_cipher.rs:29:28:29:36 | &... [&ref] | provenance | | | test_cipher.rs:30:72:30:101 | ...::from_slice(...) [&ref] | test_cipher.rs:30:30:30:40 | ...::new | provenance | MaD:5 Sink:MaD:5 | -| test_cipher.rs:30:95:30:100 | const5 [&ref] | test_cipher.rs:30:72:30:101 | ...::from_slice(...) [&ref] | provenance | MaD:19 | +| test_cipher.rs:30:95:30:100 | const5 [&ref] | test_cipher.rs:30:72:30:101 | ...::from_slice(...) [&ref] | provenance | MaD:24 | | test_cipher.rs:37:9:37:14 | const7 | test_cipher.rs:38:74:38:79 | const7 | provenance | | | test_cipher.rs:37:27:37:74 | [...] | test_cipher.rs:37:9:37:14 | const7 | provenance | | | test_cipher.rs:38:49:38:80 | ...::from_slice(...) [&ref] | test_cipher.rs:38:30:38:47 | ...::new | provenance | MaD:3 Sink:MaD:3 | -| test_cipher.rs:38:73:38:79 | &const7 [&ref] | test_cipher.rs:38:49:38:80 | ...::from_slice(...) [&ref] | provenance | MaD:19 | +| test_cipher.rs:38:73:38:79 | &const7 [&ref] | test_cipher.rs:38:49:38:80 | ...::from_slice(...) [&ref] | provenance | MaD:24 | | test_cipher.rs:38:74:38:79 | const7 | test_cipher.rs:38:73:38:79 | &const7 [&ref] | provenance | | | test_cipher.rs:41:9:41:14 | const8 [&ref] | test_cipher.rs:42:73:42:78 | const8 [&ref] | provenance | | | test_cipher.rs:41:28:41:76 | &... [&ref] | test_cipher.rs:41:9:41:14 | const8 [&ref] | provenance | | | test_cipher.rs:41:29:41:76 | [...] | test_cipher.rs:41:28:41:76 | &... [&ref] | provenance | | | test_cipher.rs:42:49:42:79 | ...::from_slice(...) [&ref] | test_cipher.rs:42:30:42:47 | ...::new | provenance | MaD:3 Sink:MaD:3 | -| test_cipher.rs:42:73:42:78 | const8 [&ref] | test_cipher.rs:42:49:42:79 | ...::from_slice(...) [&ref] | provenance | MaD:19 | +| test_cipher.rs:42:73:42:78 | const8 [&ref] | test_cipher.rs:42:49:42:79 | ...::from_slice(...) [&ref] | provenance | MaD:24 | | test_cipher.rs:50:9:50:15 | const10 [element] | test_cipher.rs:51:75:51:81 | const10 [element] | provenance | | | test_cipher.rs:50:37:50:52 | ...::zeroed | test_cipher.rs:50:37:50:54 | ...::zeroed(...) [element] | provenance | Src:MaD:7 | | test_cipher.rs:50:37:50:54 | ...::zeroed(...) [element] | test_cipher.rs:50:9:50:15 | const10 [element] | provenance | | | test_cipher.rs:51:50:51:82 | ...::from_slice(...) [&ref, element] | test_cipher.rs:51:31:51:48 | ...::new | provenance | MaD:3 Sink:MaD:3 Sink:MaD:3 | -| test_cipher.rs:51:74:51:81 | &const10 [&ref, element] | test_cipher.rs:51:50:51:82 | ...::from_slice(...) [&ref, element] | provenance | MaD:19 | +| test_cipher.rs:51:74:51:81 | &const10 [&ref, element] | test_cipher.rs:51:50:51:82 | ...::from_slice(...) [&ref, element] | provenance | MaD:24 | | test_cipher.rs:51:75:51:81 | const10 [element] | test_cipher.rs:51:74:51:81 | &const10 [&ref, element] | provenance | | | test_cipher.rs:73:9:73:14 | const2 [&ref] | test_cipher.rs:74:46:74:51 | const2 [&ref] | provenance | | | test_cipher.rs:73:18:73:26 | &... [&ref] | test_cipher.rs:73:9:73:14 | const2 [&ref] | provenance | | @@ -65,9 +65,14 @@ edges | test_cookie.rs:38:9:38:14 | array2 | test_cookie.rs:42:34:42:39 | array2 | provenance | | | test_cookie.rs:38:18:38:37 | ...::from(...) | test_cookie.rs:38:9:38:14 | array2 | provenance | | | test_cookie.rs:38:28:38:36 | [0u8; 64] | test_cookie.rs:38:18:38:37 | ...::from(...) | provenance | MaD:8 | +| test_cookie.rs:38:28:38:36 | [0u8; 64] | test_cookie.rs:38:18:38:37 | ...::from(...) | provenance | MaD:18 | +| test_cookie.rs:38:28:38:36 | [0u8; 64] | test_cookie.rs:38:18:38:37 | ...::from(...) | provenance | MaD:19 | +| test_cookie.rs:38:28:38:36 | [0u8; 64] | test_cookie.rs:38:18:38:37 | ...::from(...) | provenance | MaD:20 | +| test_cookie.rs:38:28:38:36 | [0u8; 64] | test_cookie.rs:38:18:38:37 | ...::from(...) | provenance | MaD:21 | +| test_cookie.rs:38:28:38:36 | [0u8; 64] | test_cookie.rs:38:18:38:37 | ...::from(...) | provenance | MaD:22 | | test_cookie.rs:42:34:42:39 | array2 | test_cookie.rs:42:14:42:32 | ...::from | provenance | MaD:2 Sink:MaD:2 | | test_cookie.rs:49:9:49:14 | array3 [element] | test_cookie.rs:53:34:53:39 | array3 [element] | provenance | | -| test_cookie.rs:49:23:49:25 | 0u8 | test_cookie.rs:49:23:49:29 | ...::from_elem(...) [element] | provenance | MaD:20 | +| test_cookie.rs:49:23:49:25 | 0u8 | test_cookie.rs:49:23:49:29 | ...::from_elem(...) [element] | provenance | MaD:25 | | test_cookie.rs:49:23:49:29 | ...::from_elem(...) [element] | test_cookie.rs:49:9:49:14 | array3 [element] | provenance | | | test_cookie.rs:53:34:53:39 | array3 [element] | test_cookie.rs:53:14:53:32 | ...::from | provenance | MaD:2 Sink:MaD:2 | | test_heuristic.rs:44:9:44:16 | const_iv [&ref] | test_heuristic.rs:45:41:45:48 | const_iv | provenance | | @@ -80,7 +85,7 @@ edges | test_heuristic.rs:70:23:70:35 | ... << ... | test_heuristic.rs:70:22:70:62 | ... ^ ... | provenance | MaD:15 | | test_heuristic.rs:70:34:70:35 | 32 | test_heuristic.rs:70:23:70:35 | ... << ... | provenance | MaD:17 | | test_heuristic.rs:70:34:70:35 | 32 | test_heuristic.rs:70:23:70:35 | ... << ... | provenance | MaD:16 | -| test_heuristic.rs:70:34:70:35 | 32 | test_heuristic.rs:70:23:70:35 | ... << ... | provenance | MaD:18 | +| test_heuristic.rs:70:34:70:35 | 32 | test_heuristic.rs:70:23:70:35 | ... << ... | provenance | MaD:23 | | test_heuristic.rs:70:41:70:61 | ... & ... | test_heuristic.rs:70:22:70:62 | ... ^ ... | provenance | MaD:14 | | test_heuristic.rs:70:41:70:61 | ... & ... | test_heuristic.rs:70:22:70:62 | ... ^ ... | provenance | MaD:13 | | test_heuristic.rs:70:52:70:61 | 0xFFFFFFFF | test_heuristic.rs:70:41:70:61 | ... & ... | provenance | MaD:12 | @@ -103,9 +108,14 @@ models | 15 | Summary: <_ as core::ops::bit::BitXor>::bitxor; Argument[self]; ReturnValue; taint | | 16 | Summary: <_ as core::ops::bit::Shl>::shl; Argument[0].Reference; ReturnValue; taint | | 17 | Summary: <_ as core::ops::bit::Shl>::shl; Argument[0]; ReturnValue; taint | -| 18 | Summary: ::shl; Argument[0]; ReturnValue; taint | -| 19 | Summary: ::from_slice; Argument[0].Reference; ReturnValue.Reference; value | -| 20 | Summary: alloc::vec::from_elem; Argument[0]; ReturnValue.Element; value | +| 18 | Summary: ::from; Argument[0].Field[0]; ReturnValue; value | +| 19 | Summary: ::from; Argument[0].Field[alloc::borrow::Cow::Owned(0)]; ReturnValue; value | +| 20 | Summary: ::from; Argument[0].Field[alloc::bstr::ByteString(0)]; ReturnValue; value | +| 21 | Summary: ::from; Argument[0].Field[alloc::collections::binary_heap::BinaryHeap::data]; ReturnValue; value | +| 22 | Summary: ::from; Argument[0].Field[alloc::string::String::vec]; ReturnValue; value | +| 23 | Summary: ::shl; Argument[0]; ReturnValue; taint | +| 24 | Summary: ::from_slice; Argument[0].Reference; ReturnValue.Reference; value | +| 25 | Summary: alloc::vec::from_elem; Argument[0]; ReturnValue.Element; value | nodes | test_cipher.rs:18:9:18:14 | const1 [&ref] | semmle.label | const1 [&ref] | | test_cipher.rs:18:28:18:36 | &... [&ref] | semmle.label | &... [&ref] | From 31b0d3eb1dc6440746ef4c2f9e778fbeac572553 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 8 Jan 2026 10:57:35 +0100 Subject: [PATCH 53/63] Rust: Fix some models in `fs.model.yml` --- .../rust/frameworks/stdlib/fs.model.yml | 30 +++++++++---------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/fs.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/fs.model.yml index 8be4fdc05bf..6216f79ea85 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/fs.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/fs.model.yml @@ -59,27 +59,25 @@ extensions: - ["std::fs::canonicalize", "Argument[0].OptionalStep[normalize-path]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["std::fs::canonicalize", "Argument[0].OptionalBarrier[normalize-path]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["::as_path", "Argument[self].Reference", "ReturnValue.Reference", "value", "manual"] - - ["::as_mut_os_string", "Argument[Self].Reference", "ReturnValue.Reference", "value", "manual"] - - ["::into_os_string", "Argument[Self]", "ReturnValue", "value", "manual"] - - ["::into_boxed_path", "Argument[Self]", "ReturnValue.Reference", "value", "manual"] + - ["::into_boxed_path", "Argument[self]", "ReturnValue.Field[alloc::boxed::Box(0)]", "taint", "manual"] - ["::new", "Argument[0].Reference", "ReturnValue.Reference", "value", "manual"] - ["::join", "Argument[self]", "ReturnValue", "taint", "manual"] - ["::join", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["::as_os_string", "Argument[Self].Reference", "ReturnValue.Reference", "value", "manual"] - - ["::as_mut_os_string", "Argument[Self].Reference", "ReturnValue.Reference", "value", "manual"] + - ["::as_os_str", "Argument[self].Reference.Field[std::path::Path::inner]", "ReturnValue.Reference", "value", "manual"] + - ["::as_mut_os_str", "Argument[self].Reference.Field[std::path::Path::inner]", "ReturnValue.Reference", "value", "manual"] - ["::canonicalize", "Argument[self].Reference.OptionalStep[normalize-path]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["::canonicalize", "Argument[self].Reference.OptionalBarrier[normalize-path]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - - ["::extension", "Argument[Self].Reference", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "taint", "manual"] - - ["::file_name", "Argument[Self].Reference", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "taint", "manual"] - - ["::file_prefix", "Argument[Self].Reference", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "taint", "manual"] - - ["::file_stem", "Argument[Self].Reference", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "taint", "manual"] - - ["::into_path_buf", "Argument[Self].Reference", "ReturnValue", "value", "manual"] - - ["::parent", "Argument[Self].Reference", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "taint", "manual"] - - ["::to_path_buf", "Argument[Self].Reference", "ReturnValue", "value", "manual"] - - ["::to_str", "Argument[Self].Reference", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "manual"] - - ["::with_added_extension", "Argument[Self].Reference", "ReturnValue", "taint", "manual"] - - ["::with_extension", "Argument[Self].Reference", "ReturnValue", "taint", "manual"] - - ["::with_file_name", "Argument[Self].Reference", "ReturnValue", "taint", "manual"] + - ["::extension", "Argument[self].Reference", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "taint", "manual"] + - ["::file_name", "Argument[self].Reference", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "taint", "manual"] + - ["::file_prefix", "Argument[self].Reference", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "taint", "manual"] + - ["::file_stem", "Argument[self].Reference", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "taint", "manual"] + - ["::into_path_buf", "Argument[self].Field[alloc::boxed::Box(0)]", "ReturnValue", "value", "manual"] + - ["::parent", "Argument[self].Reference", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "taint", "manual"] + - ["::to_path_buf", "Argument[self].Reference", "ReturnValue", "value", "manual"] + - ["::to_str", "Argument[self].Reference", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "manual"] + - ["::with_added_extension", "Argument[self].Reference", "ReturnValue", "taint", "manual"] + - ["::with_extension", "Argument[self].Reference", "ReturnValue", "taint", "manual"] + - ["::with_file_name", "Argument[self].Reference", "ReturnValue", "taint", "manual"] - ["::with_file_name", "Argument[0]", "ReturnValue", "taint", "manual"] - ["::accessed", "Argument[self].Reference", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["::created", "Argument[self].Reference", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] From 792908586aec71a17576e5198726f4d7d3691ca2 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 8 Jan 2026 13:51:16 +0100 Subject: [PATCH 54/63] Rust: Add some `ffi` models --- rust/ql/lib/codeql/rust/frameworks/stdlib/ffi.model.yml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 rust/ql/lib/codeql/rust/frameworks/stdlib/ffi.model.yml diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/ffi.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/ffi.model.yml new file mode 100644 index 00000000000..0f7545f8a92 --- /dev/null +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/ffi.model.yml @@ -0,0 +1,8 @@ +extensions: + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["::to_str", "Argument[self].Reference.Field[std::ffi::os_str::OsStr::inner]", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "taint", "manual"] + - ["::to_string_lossy", "Argument[self].Reference.Field[std::ffi::os_str::OsStr::inner]", "ReturnValue.Field[alloc::borrow::Cow::Owned(0)]", "taint", "manual"] + - ["::as_encoded_bytes", "Argument[self].Reference.Field[std::ffi::os_str::OsStr::inner]", "ReturnValue.Reference", "taint", "manual"] \ No newline at end of file From 0d0029f5a3d836b01880c8d85b5f6fc92d246075 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 8 Jan 2026 13:54:15 +0100 Subject: [PATCH 55/63] Rust: Update expected test output --- .../dataflow/sources/file/InlineFlow.expected | 994 ++++++++++-------- .../sources/file/TaintSources.expected | 60 +- .../dataflow/sources/file/test.rs | 54 +- 3 files changed, 600 insertions(+), 508 deletions(-) diff --git a/rust/ql/test/library-tests/dataflow/sources/file/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/file/InlineFlow.expected index 6ed7d5dafb9..c7413e3c28f 100644 --- a/rust/ql/test/library-tests/dataflow/sources/file/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/file/InlineFlow.expected @@ -35,9 +35,14 @@ models | 34 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_end; Argument[self].Reference; Argument[0].Reference; taint | | 35 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_to_string; Argument[self].Reference; Argument[0].Reference; taint | | 36 | Summary: <_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_u8; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 37 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 38 | Summary: ::into_string; Argument[self].Field[std::ffi::os_str::OsString::inner].Field[std::sys::os_str::bytes::Buf::inner]; ReturnValue.Field[core::result::Result::Ok(0)].Field[alloc::string::String::vec]; value | -| 39 | Summary: ::as_path; Argument[self].Reference; ReturnValue.Reference; value | +| 37 | Summary: ::to_mut; Argument[self].Reference.Field[alloc::borrow::Cow::Owned(0)]; ReturnValue.Reference; value | +| 38 | Summary: ::unwrap; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 39 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 40 | Summary: ::into_string; Argument[self].Field[std::ffi::os_str::OsString::inner].Field[std::sys::os_str::bytes::Buf::inner]; ReturnValue.Field[core::result::Result::Ok(0)].Field[alloc::string::String::vec]; value | +| 41 | Summary: ::from; Argument[0]; ReturnValue.Field[std::path::PathBuf::inner]; value | +| 42 | Summary: ::as_path; Argument[self].Reference; ReturnValue.Reference; value | +| 43 | Summary: ::into_boxed_path; Argument[self]; ReturnValue.Field[alloc::boxed::Box(0)]; taint | +| 44 | Summary: ::into_os_string; Argument[self].Field[std::path::PathBuf::inner]; ReturnValue; value | edges | test.rs:12:13:12:18 | buffer | test.rs:13:14:13:19 | buffer | provenance | | | test.rs:12:31:12:43 | ...::read | test.rs:12:31:12:55 | ...::read(...) [Ok] | provenance | Src:MaD:11 | @@ -51,213 +56,245 @@ edges | test.rs:22:22:22:39 | ...::read_to_string | test.rs:22:22:22:51 | ...::read_to_string(...) [Ok] | provenance | Src:MaD:13 | | test.rs:22:22:22:51 | ...::read_to_string(...) [Ok] | test.rs:22:22:22:52 | TryExpr | provenance | | | test.rs:22:22:22:52 | TryExpr | test.rs:22:13:22:18 | buffer | provenance | | -| test.rs:29:13:29:16 | path | test.rs:30:14:30:17 | path | provenance | | -| test.rs:29:13:29:16 | path | test.rs:31:14:31:17 | path | provenance | | -| test.rs:29:13:29:16 | path | test.rs:40:14:40:17 | path | provenance | | -| test.rs:29:13:29:16 | path | test.rs:41:14:41:17 | path | provenance | | -| test.rs:29:20:29:27 | e.path() | test.rs:29:13:29:16 | path | provenance | | -| test.rs:29:22:29:25 | path | test.rs:29:20:29:27 | e.path() | provenance | Src:MaD:4 MaD:4 | -| test.rs:30:14:30:17 | path | test.rs:30:14:30:25 | path.clone() | provenance | MaD:18 | +| test.rs:30:13:30:16 | path | test.rs:31:14:31:17 | path | provenance | | +| test.rs:30:13:30:16 | path | test.rs:32:14:32:17 | path | provenance | | +| test.rs:30:13:30:16 | path | test.rs:33:14:33:17 | path | provenance | | +| test.rs:30:13:30:16 | path | test.rs:34:39:34:42 | path | provenance | | +| test.rs:30:13:30:16 | path | test.rs:35:14:35:17 | path | provenance | | +| test.rs:30:13:30:16 | path | test.rs:36:14:36:17 | path | provenance | | +| test.rs:30:13:30:16 | path | test.rs:37:14:37:17 | path | provenance | | +| test.rs:30:13:30:16 | path | test.rs:38:14:38:17 | path | provenance | | +| test.rs:30:13:30:16 | path | test.rs:39:14:39:17 | path | provenance | | +| test.rs:30:13:30:16 | path | test.rs:40:14:40:17 | path | provenance | | +| test.rs:30:13:30:16 | path | test.rs:41:14:41:17 | path | provenance | | +| test.rs:30:13:30:16 | path | test.rs:42:14:42:17 | path | provenance | | +| test.rs:30:20:30:27 | e.path() | test.rs:30:13:30:16 | path | provenance | | +| test.rs:30:22:30:25 | path | test.rs:30:20:30:27 | e.path() | provenance | Src:MaD:4 MaD:4 | | test.rs:31:14:31:17 | path | test.rs:31:14:31:25 | path.clone() | provenance | MaD:18 | -| test.rs:31:14:31:25 | path.clone() | test.rs:31:14:31:35 | ... .as_path() | provenance | MaD:39 | -| test.rs:40:14:40:17 | path | test.rs:40:14:40:32 | path.canonicalize() [Ok] | provenance | MaD:19 | -| test.rs:40:14:40:32 | path.canonicalize() [Ok] | test.rs:40:14:40:41 | ... .unwrap() | provenance | MaD:37 | -| test.rs:43:13:43:21 | file_name | test.rs:44:14:44:22 | file_name | provenance | | -| test.rs:43:13:43:21 | file_name | test.rs:45:14:45:22 | file_name | provenance | | -| test.rs:43:13:43:21 | file_name | test.rs:49:14:49:22 | file_name | provenance | | -| test.rs:43:25:43:37 | e.file_name() | test.rs:43:13:43:21 | file_name | provenance | | -| test.rs:43:27:43:35 | file_name | test.rs:43:25:43:37 | e.file_name() | provenance | Src:MaD:3 MaD:3 | -| test.rs:44:14:44:22 | file_name | test.rs:44:14:44:30 | file_name.clone() | provenance | MaD:18 | +| test.rs:32:14:32:17 | path | test.rs:32:14:32:25 | path.clone() | provenance | MaD:18 | +| test.rs:32:14:32:25 | path.clone() | test.rs:32:14:32:35 | ... .as_path() | provenance | MaD:42 | +| test.rs:33:14:33:17 | path | test.rs:33:14:33:25 | path.clone() | provenance | MaD:18 | +| test.rs:33:14:33:25 | path.clone() | test.rs:33:14:33:42 | ... .into_os_string() | provenance | MaD:44 | +| test.rs:34:39:34:42 | path | test.rs:34:39:34:50 | path.clone() | provenance | MaD:18 | +| test.rs:34:39:34:50 | path.clone() | test.rs:34:39:34:68 | ... .into_boxed_path() [Box(0)] | provenance | MaD:43 | +| test.rs:34:39:34:68 | ... .into_boxed_path() [Box(0)] | test.rs:34:14:34:69 | ...::from(...) | provenance | MaD:41 | +| test.rs:35:14:35:17 | path | test.rs:35:14:35:25 | path.clone() | provenance | MaD:18 | +| test.rs:35:14:35:25 | path.clone() | test.rs:35:14:35:37 | ... .as_os_str() | provenance | MaD:19 | +| test.rs:36:14:36:17 | path | test.rs:36:14:36:25 | path.clone() | provenance | MaD:18 | +| test.rs:36:14:36:25 | path.clone() | test.rs:36:14:36:41 | ... .as_mut_os_str() | provenance | MaD:19 | +| test.rs:37:14:37:17 | path | test.rs:37:14:37:26 | path.to_str() | provenance | MaD:19 | +| test.rs:38:14:38:17 | path | test.rs:38:14:38:31 | path.to_path_buf() | provenance | MaD:19 | +| test.rs:39:14:39:17 | path | test.rs:39:14:39:29 | path.file_name() [Some, &ref] | provenance | MaD:19 | +| test.rs:39:14:39:29 | path.file_name() [Some, &ref] | test.rs:39:14:39:38 | ... .unwrap() | provenance | MaD:38 | +| test.rs:40:14:40:17 | path | test.rs:40:14:40:29 | path.extension() [Some, &ref] | provenance | MaD:19 | +| test.rs:40:14:40:29 | path.extension() [Some, &ref] | test.rs:40:14:40:38 | ... .unwrap() | provenance | MaD:38 | +| test.rs:41:14:41:17 | path | test.rs:41:14:41:32 | path.canonicalize() [Ok] | provenance | MaD:19 | +| test.rs:41:14:41:32 | path.canonicalize() [Ok] | test.rs:41:14:41:41 | ... .unwrap() | provenance | MaD:39 | +| test.rs:44:13:44:21 | file_name | test.rs:45:14:45:22 | file_name | provenance | | +| test.rs:44:13:44:21 | file_name | test.rs:46:14:46:22 | file_name | provenance | | +| test.rs:44:13:44:21 | file_name | test.rs:47:14:47:22 | file_name | provenance | | +| test.rs:44:13:44:21 | file_name | test.rs:48:14:48:22 | file_name | provenance | | +| test.rs:44:13:44:21 | file_name | test.rs:49:14:49:22 | file_name | provenance | | +| test.rs:44:13:44:21 | file_name | test.rs:50:14:50:22 | file_name | provenance | | +| test.rs:44:25:44:37 | e.file_name() | test.rs:44:13:44:21 | file_name | provenance | | +| test.rs:44:27:44:35 | file_name | test.rs:44:25:44:37 | e.file_name() | provenance | Src:MaD:3 MaD:3 | | test.rs:45:14:45:22 | file_name | test.rs:45:14:45:30 | file_name.clone() | provenance | MaD:18 | -| test.rs:45:14:45:30 | file_name.clone() | test.rs:45:14:45:44 | ... .into_string() [Ok, String] | provenance | MaD:38 | -| test.rs:45:14:45:44 | ... .into_string() [Ok, String] | test.rs:45:14:45:53 | ... .unwrap() | provenance | MaD:37 | -| test.rs:65:13:65:18 | target | test.rs:66:14:66:19 | target | provenance | | -| test.rs:65:22:65:34 | ...::read_link | test.rs:65:22:65:49 | ...::read_link(...) [Ok] | provenance | Src:MaD:12 | -| test.rs:65:22:65:49 | ...::read_link(...) [Ok] | test.rs:65:22:65:50 | TryExpr | provenance | | -| test.rs:65:22:65:50 | TryExpr | test.rs:65:13:65:18 | target | provenance | | -| test.rs:74:13:74:18 | buffer | test.rs:75:14:75:19 | buffer | provenance | | -| test.rs:74:31:74:45 | ...::read | test.rs:74:31:74:57 | ...::read(...) [future, Ok] | provenance | Src:MaD:14 | -| test.rs:74:31:74:57 | ...::read(...) [future, Ok] | test.rs:74:31:74:63 | await ... [Ok] | provenance | | -| test.rs:74:31:74:63 | await ... [Ok] | test.rs:74:31:74:64 | TryExpr | provenance | | -| test.rs:74:31:74:64 | TryExpr | test.rs:74:13:74:18 | buffer | provenance | | -| test.rs:79:13:79:18 | buffer | test.rs:80:14:80:19 | buffer | provenance | | -| test.rs:79:31:79:45 | ...::read | test.rs:79:31:79:57 | ...::read(...) [future, Ok] | provenance | Src:MaD:14 | -| test.rs:79:31:79:57 | ...::read(...) [future, Ok] | test.rs:79:31:79:63 | await ... [Ok] | provenance | | -| test.rs:79:31:79:63 | await ... [Ok] | test.rs:79:31:79:64 | TryExpr | provenance | | -| test.rs:79:31:79:64 | TryExpr | test.rs:79:13:79:18 | buffer | provenance | | -| test.rs:84:13:84:18 | buffer | test.rs:85:14:85:19 | buffer | provenance | | -| test.rs:84:22:84:46 | ...::read_to_string | test.rs:84:22:84:58 | ...::read_to_string(...) [future, Ok] | provenance | Src:MaD:16 | -| test.rs:84:22:84:58 | ...::read_to_string(...) [future, Ok] | test.rs:84:22:84:64 | await ... [Ok] | provenance | | -| test.rs:84:22:84:64 | await ... [Ok] | test.rs:84:22:84:65 | TryExpr | provenance | | -| test.rs:84:22:84:65 | TryExpr | test.rs:84:13:84:18 | buffer | provenance | | -| test.rs:90:13:90:16 | path | test.rs:92:14:92:17 | path | provenance | | -| test.rs:90:20:90:31 | entry.path() | test.rs:90:13:90:16 | path | provenance | | -| test.rs:90:26:90:29 | path | test.rs:90:20:90:31 | entry.path() | provenance | Src:MaD:10 MaD:10 | -| test.rs:91:13:91:21 | file_name | test.rs:93:14:93:22 | file_name | provenance | | -| test.rs:91:25:91:41 | entry.file_name() | test.rs:91:13:91:21 | file_name | provenance | | -| test.rs:91:31:91:39 | file_name | test.rs:91:25:91:41 | entry.file_name() | provenance | Src:MaD:9 MaD:9 | -| test.rs:97:13:97:18 | target | test.rs:98:14:98:19 | target | provenance | | -| test.rs:97:22:97:41 | ...::read_link | test.rs:97:22:97:56 | ...::read_link(...) [future, Ok] | provenance | Src:MaD:15 | -| test.rs:97:22:97:56 | ...::read_link(...) [future, Ok] | test.rs:97:22:97:62 | await ... [Ok] | provenance | | -| test.rs:97:22:97:62 | await ... [Ok] | test.rs:97:22:97:63 | TryExpr | provenance | | -| test.rs:97:22:97:63 | TryExpr | test.rs:97:13:97:18 | target | provenance | | -| test.rs:107:9:107:16 | mut file | test.rs:111:22:111:25 | file | provenance | | -| test.rs:107:9:107:16 | mut file | test.rs:117:22:117:25 | file | provenance | | -| test.rs:107:9:107:16 | mut file | test.rs:123:22:123:25 | file | provenance | | -| test.rs:107:9:107:16 | mut file | test.rs:129:9:129:12 | file | provenance | | -| test.rs:107:9:107:16 | mut file | test.rs:133:17:133:20 | file | provenance | | -| test.rs:107:20:107:38 | ...::open | test.rs:107:20:107:50 | ...::open(...) [Ok] | provenance | Src:MaD:5 | -| test.rs:107:20:107:50 | ...::open(...) [Ok] | test.rs:107:20:107:51 | TryExpr | provenance | | -| test.rs:107:20:107:51 | TryExpr | test.rs:107:9:107:16 | mut file | provenance | | -| test.rs:111:22:111:25 | file | test.rs:111:32:111:42 | [post] &mut buffer [&ref] | provenance | MaD:23 | -| test.rs:111:32:111:42 | [post] &mut buffer [&ref] | test.rs:111:37:111:42 | [post] buffer | provenance | | -| test.rs:111:37:111:42 | [post] buffer | test.rs:112:15:112:20 | buffer | provenance | | -| test.rs:112:15:112:20 | buffer | test.rs:112:14:112:20 | &buffer | provenance | | -| test.rs:117:22:117:25 | file | test.rs:117:39:117:49 | [post] &mut buffer [&ref] | provenance | MaD:25 | -| test.rs:117:39:117:49 | [post] &mut buffer [&ref] | test.rs:117:44:117:49 | [post] buffer | provenance | | -| test.rs:117:44:117:49 | [post] buffer | test.rs:118:15:118:20 | buffer | provenance | | -| test.rs:118:15:118:20 | buffer | test.rs:118:14:118:20 | &buffer | provenance | | -| test.rs:123:22:123:25 | file | test.rs:123:42:123:52 | [post] &mut buffer [&ref] | provenance | MaD:26 | -| test.rs:123:42:123:52 | [post] &mut buffer [&ref] | test.rs:123:47:123:52 | [post] buffer | provenance | | -| test.rs:123:47:123:52 | [post] buffer | test.rs:124:15:124:20 | buffer | provenance | | -| test.rs:124:15:124:20 | buffer | test.rs:124:14:124:20 | &buffer | provenance | | -| test.rs:129:9:129:12 | file | test.rs:129:25:129:35 | [post] &mut buffer [&ref] | provenance | MaD:24 | -| test.rs:129:25:129:35 | [post] &mut buffer [&ref] | test.rs:129:30:129:35 | [post] buffer | provenance | | -| test.rs:129:30:129:35 | [post] buffer | test.rs:130:15:130:20 | buffer | provenance | | -| test.rs:130:15:130:20 | buffer | test.rs:130:14:130:20 | &buffer | provenance | | -| test.rs:133:17:133:20 | file | test.rs:133:17:133:28 | file.bytes() | provenance | MaD:20 | -| test.rs:133:17:133:28 | file.bytes() | test.rs:134:14:134:17 | byte | provenance | | -| test.rs:140:13:140:18 | mut f1 | test.rs:142:22:142:23 | f1 | provenance | | -| test.rs:140:22:140:63 | ... .open(...) [Ok] | test.rs:140:22:140:72 | ... .unwrap() | provenance | MaD:37 | -| test.rs:140:22:140:72 | ... .unwrap() | test.rs:140:13:140:18 | mut f1 | provenance | | -| test.rs:140:50:140:53 | open | test.rs:140:22:140:63 | ... .open(...) [Ok] | provenance | Src:MaD:6 | -| test.rs:142:22:142:23 | f1 | test.rs:142:30:142:40 | [post] &mut buffer [&ref] | provenance | MaD:23 | -| test.rs:142:30:142:40 | [post] &mut buffer [&ref] | test.rs:142:35:142:40 | [post] buffer | provenance | | -| test.rs:142:35:142:40 | [post] buffer | test.rs:143:15:143:20 | buffer | provenance | | -| test.rs:143:15:143:20 | buffer | test.rs:143:14:143:20 | &buffer | provenance | | -| test.rs:147:13:147:18 | mut f2 | test.rs:149:22:149:23 | f2 | provenance | | -| test.rs:147:22:147:80 | ... .open(...) [Ok] | test.rs:147:22:147:89 | ... .unwrap() | provenance | MaD:37 | -| test.rs:147:22:147:89 | ... .unwrap() | test.rs:147:13:147:18 | mut f2 | provenance | | -| test.rs:147:67:147:70 | open | test.rs:147:22:147:80 | ... .open(...) [Ok] | provenance | Src:MaD:6 | -| test.rs:149:22:149:23 | f2 | test.rs:149:30:149:40 | [post] &mut buffer [&ref] | provenance | MaD:23 | -| test.rs:149:30:149:40 | [post] &mut buffer [&ref] | test.rs:149:35:149:40 | [post] buffer | provenance | | -| test.rs:149:35:149:40 | [post] buffer | test.rs:150:15:150:20 | buffer | provenance | | -| test.rs:150:15:150:20 | buffer | test.rs:150:14:150:20 | &buffer | provenance | | -| test.rs:154:13:154:18 | mut f3 | test.rs:156:22:156:23 | f3 | provenance | | -| test.rs:154:22:154:114 | ... .open(...) [Ok] | test.rs:154:22:154:123 | ... .unwrap() | provenance | MaD:37 | -| test.rs:154:22:154:123 | ... .unwrap() | test.rs:154:13:154:18 | mut f3 | provenance | | -| test.rs:154:101:154:104 | open | test.rs:154:22:154:114 | ... .open(...) [Ok] | provenance | Src:MaD:6 | -| test.rs:156:22:156:23 | f3 | test.rs:156:30:156:40 | [post] &mut buffer [&ref] | provenance | MaD:23 | -| test.rs:156:30:156:40 | [post] &mut buffer [&ref] | test.rs:156:35:156:40 | [post] buffer | provenance | | -| test.rs:156:35:156:40 | [post] buffer | test.rs:157:15:157:20 | buffer | provenance | | -| test.rs:157:15:157:20 | buffer | test.rs:157:14:157:20 | &buffer | provenance | | -| test.rs:164:13:164:17 | file1 | test.rs:166:26:166:30 | file1 | provenance | | -| test.rs:164:21:164:39 | ...::open | test.rs:164:21:164:51 | ...::open(...) [Ok] | provenance | Src:MaD:5 | -| test.rs:164:21:164:51 | ...::open(...) [Ok] | test.rs:164:21:164:52 | TryExpr | provenance | | -| test.rs:164:21:164:52 | TryExpr | test.rs:164:13:164:17 | file1 | provenance | | -| test.rs:165:13:165:17 | file2 | test.rs:166:38:166:42 | file2 | provenance | | -| test.rs:165:21:165:39 | ...::open | test.rs:165:21:165:59 | ...::open(...) [Ok] | provenance | Src:MaD:5 | -| test.rs:165:21:165:59 | ...::open(...) [Ok] | test.rs:165:21:165:60 | TryExpr | provenance | | -| test.rs:165:21:165:60 | TryExpr | test.rs:165:13:165:17 | file2 | provenance | | -| test.rs:166:13:166:22 | mut reader | test.rs:167:9:167:14 | reader | provenance | | -| test.rs:166:26:166:30 | file1 | test.rs:166:26:166:43 | file1.chain(...) | provenance | MaD:22 | -| test.rs:166:26:166:43 | file1.chain(...) | test.rs:166:13:166:22 | mut reader | provenance | | -| test.rs:166:38:166:42 | file2 | test.rs:166:26:166:43 | file1.chain(...) | provenance | MaD:21 | -| test.rs:167:9:167:14 | reader | test.rs:167:31:167:41 | [post] &mut buffer [&ref] | provenance | MaD:26 | -| test.rs:167:31:167:41 | [post] &mut buffer [&ref] | test.rs:167:36:167:41 | [post] buffer | provenance | | -| test.rs:167:36:167:41 | [post] buffer | test.rs:168:15:168:20 | buffer | provenance | | -| test.rs:168:15:168:20 | buffer | test.rs:168:14:168:20 | &buffer | provenance | | -| test.rs:173:13:173:17 | file1 | test.rs:174:26:174:30 | file1 | provenance | | -| test.rs:173:21:173:39 | ...::open | test.rs:173:21:173:51 | ...::open(...) [Ok] | provenance | Src:MaD:5 | -| test.rs:173:21:173:51 | ...::open(...) [Ok] | test.rs:173:21:173:52 | TryExpr | provenance | | -| test.rs:173:21:173:52 | TryExpr | test.rs:173:13:173:17 | file1 | provenance | | -| test.rs:174:13:174:22 | mut reader | test.rs:175:9:175:14 | reader | provenance | | -| test.rs:174:26:174:30 | file1 | test.rs:174:26:174:40 | file1.take(...) | provenance | MaD:27 | -| test.rs:174:26:174:40 | file1.take(...) | test.rs:174:13:174:22 | mut reader | provenance | | -| test.rs:175:9:175:14 | reader | test.rs:175:31:175:41 | [post] &mut buffer [&ref] | provenance | MaD:26 | -| test.rs:175:31:175:41 | [post] &mut buffer [&ref] | test.rs:175:36:175:41 | [post] buffer | provenance | | -| test.rs:175:36:175:41 | [post] buffer | test.rs:176:15:176:20 | buffer | provenance | | -| test.rs:176:15:176:20 | buffer | test.rs:176:14:176:20 | &buffer | provenance | | -| test.rs:185:9:185:16 | mut file | test.rs:189:22:189:25 | file | provenance | | -| test.rs:185:9:185:16 | mut file | test.rs:195:22:195:25 | file | provenance | | -| test.rs:185:9:185:16 | mut file | test.rs:201:22:201:25 | file | provenance | | -| test.rs:185:9:185:16 | mut file | test.rs:207:9:207:12 | file | provenance | | -| test.rs:185:9:185:16 | mut file | test.rs:212:18:212:21 | file | provenance | | -| test.rs:185:9:185:16 | mut file | test.rs:213:18:213:21 | file | provenance | | -| test.rs:185:9:185:16 | mut file | test.rs:214:18:214:21 | file | provenance | | -| test.rs:185:9:185:16 | mut file | test.rs:215:18:215:21 | file | provenance | | -| test.rs:185:9:185:16 | mut file | test.rs:224:9:224:12 | file | provenance | | -| test.rs:185:20:185:40 | ...::open | test.rs:185:20:185:52 | ...::open(...) [future, Ok] | provenance | Src:MaD:7 | -| test.rs:185:20:185:52 | ...::open(...) [future, Ok] | test.rs:185:20:185:58 | await ... [Ok] | provenance | | -| test.rs:185:20:185:58 | await ... [Ok] | test.rs:185:20:185:59 | TryExpr | provenance | | -| test.rs:185:20:185:59 | TryExpr | test.rs:185:9:185:16 | mut file | provenance | | -| test.rs:189:22:189:25 | file | test.rs:189:32:189:42 | [post] &mut buffer [&ref] | provenance | MaD:28 | -| test.rs:189:32:189:42 | [post] &mut buffer [&ref] | test.rs:189:37:189:42 | [post] buffer | provenance | | -| test.rs:189:37:189:42 | [post] buffer | test.rs:190:15:190:20 | buffer | provenance | | -| test.rs:190:15:190:20 | buffer | test.rs:190:14:190:20 | &buffer | provenance | | -| test.rs:195:22:195:25 | file | test.rs:195:39:195:49 | [post] &mut buffer [&ref] | provenance | MaD:34 | -| test.rs:195:39:195:49 | [post] &mut buffer [&ref] | test.rs:195:44:195:49 | [post] buffer | provenance | | -| test.rs:195:44:195:49 | [post] buffer | test.rs:196:15:196:20 | buffer | provenance | | -| test.rs:196:15:196:20 | buffer | test.rs:196:14:196:20 | &buffer | provenance | | -| test.rs:201:22:201:25 | file | test.rs:201:42:201:52 | [post] &mut buffer [&ref] | provenance | MaD:35 | -| test.rs:201:42:201:52 | [post] &mut buffer [&ref] | test.rs:201:47:201:52 | [post] buffer | provenance | | -| test.rs:201:47:201:52 | [post] buffer | test.rs:202:15:202:20 | buffer | provenance | | +| test.rs:46:14:46:22 | file_name | test.rs:46:14:46:30 | file_name.clone() | provenance | MaD:18 | +| test.rs:46:14:46:30 | file_name.clone() | test.rs:46:14:46:44 | ... .into_string() [Ok, String] | provenance | MaD:40 | +| test.rs:46:14:46:44 | ... .into_string() [Ok, String] | test.rs:46:14:46:53 | ... .unwrap() | provenance | MaD:39 | +| test.rs:47:14:47:22 | file_name | test.rs:47:14:47:31 | file_name.to_str() [Some, &ref] | provenance | MaD:19 | +| test.rs:47:14:47:31 | file_name.to_str() [Some, &ref] | test.rs:47:14:47:40 | ... .unwrap() | provenance | MaD:38 | +| test.rs:48:14:48:22 | file_name | test.rs:48:14:48:40 | file_name.to_string_lossy() [Owned] | provenance | MaD:19 | +| test.rs:48:14:48:40 | file_name.to_string_lossy() [Owned] | test.rs:48:14:48:49 | ... .to_mut() | provenance | MaD:37 | +| test.rs:49:14:49:22 | file_name | test.rs:49:14:49:30 | file_name.clone() | provenance | MaD:18 | +| test.rs:49:14:49:30 | file_name.clone() | test.rs:49:14:49:49 | ... .as_encoded_bytes() | provenance | MaD:19 | +| test.rs:68:13:68:18 | target | test.rs:69:14:69:19 | target | provenance | | +| test.rs:68:22:68:34 | ...::read_link | test.rs:68:22:68:49 | ...::read_link(...) [Ok] | provenance | Src:MaD:12 | +| test.rs:68:22:68:49 | ...::read_link(...) [Ok] | test.rs:68:22:68:50 | TryExpr | provenance | | +| test.rs:68:22:68:50 | TryExpr | test.rs:68:13:68:18 | target | provenance | | +| test.rs:77:13:77:18 | buffer | test.rs:78:14:78:19 | buffer | provenance | | +| test.rs:77:31:77:45 | ...::read | test.rs:77:31:77:57 | ...::read(...) [future, Ok] | provenance | Src:MaD:14 | +| test.rs:77:31:77:57 | ...::read(...) [future, Ok] | test.rs:77:31:77:63 | await ... [Ok] | provenance | | +| test.rs:77:31:77:63 | await ... [Ok] | test.rs:77:31:77:64 | TryExpr | provenance | | +| test.rs:77:31:77:64 | TryExpr | test.rs:77:13:77:18 | buffer | provenance | | +| test.rs:82:13:82:18 | buffer | test.rs:83:14:83:19 | buffer | provenance | | +| test.rs:82:31:82:45 | ...::read | test.rs:82:31:82:57 | ...::read(...) [future, Ok] | provenance | Src:MaD:14 | +| test.rs:82:31:82:57 | ...::read(...) [future, Ok] | test.rs:82:31:82:63 | await ... [Ok] | provenance | | +| test.rs:82:31:82:63 | await ... [Ok] | test.rs:82:31:82:64 | TryExpr | provenance | | +| test.rs:82:31:82:64 | TryExpr | test.rs:82:13:82:18 | buffer | provenance | | +| test.rs:87:13:87:18 | buffer | test.rs:88:14:88:19 | buffer | provenance | | +| test.rs:87:22:87:46 | ...::read_to_string | test.rs:87:22:87:58 | ...::read_to_string(...) [future, Ok] | provenance | Src:MaD:16 | +| test.rs:87:22:87:58 | ...::read_to_string(...) [future, Ok] | test.rs:87:22:87:64 | await ... [Ok] | provenance | | +| test.rs:87:22:87:64 | await ... [Ok] | test.rs:87:22:87:65 | TryExpr | provenance | | +| test.rs:87:22:87:65 | TryExpr | test.rs:87:13:87:18 | buffer | provenance | | +| test.rs:93:13:93:16 | path | test.rs:95:14:95:17 | path | provenance | | +| test.rs:93:20:93:31 | entry.path() | test.rs:93:13:93:16 | path | provenance | | +| test.rs:93:26:93:29 | path | test.rs:93:20:93:31 | entry.path() | provenance | Src:MaD:10 MaD:10 | +| test.rs:94:13:94:21 | file_name | test.rs:96:14:96:22 | file_name | provenance | | +| test.rs:94:25:94:41 | entry.file_name() | test.rs:94:13:94:21 | file_name | provenance | | +| test.rs:94:31:94:39 | file_name | test.rs:94:25:94:41 | entry.file_name() | provenance | Src:MaD:9 MaD:9 | +| test.rs:100:13:100:18 | target | test.rs:101:14:101:19 | target | provenance | | +| test.rs:100:22:100:41 | ...::read_link | test.rs:100:22:100:56 | ...::read_link(...) [future, Ok] | provenance | Src:MaD:15 | +| test.rs:100:22:100:56 | ...::read_link(...) [future, Ok] | test.rs:100:22:100:62 | await ... [Ok] | provenance | | +| test.rs:100:22:100:62 | await ... [Ok] | test.rs:100:22:100:63 | TryExpr | provenance | | +| test.rs:100:22:100:63 | TryExpr | test.rs:100:13:100:18 | target | provenance | | +| test.rs:110:9:110:16 | mut file | test.rs:114:22:114:25 | file | provenance | | +| test.rs:110:9:110:16 | mut file | test.rs:120:22:120:25 | file | provenance | | +| test.rs:110:9:110:16 | mut file | test.rs:126:22:126:25 | file | provenance | | +| test.rs:110:9:110:16 | mut file | test.rs:132:9:132:12 | file | provenance | | +| test.rs:110:9:110:16 | mut file | test.rs:136:17:136:20 | file | provenance | | +| test.rs:110:20:110:38 | ...::open | test.rs:110:20:110:50 | ...::open(...) [Ok] | provenance | Src:MaD:5 | +| test.rs:110:20:110:50 | ...::open(...) [Ok] | test.rs:110:20:110:51 | TryExpr | provenance | | +| test.rs:110:20:110:51 | TryExpr | test.rs:110:9:110:16 | mut file | provenance | | +| test.rs:114:22:114:25 | file | test.rs:114:32:114:42 | [post] &mut buffer [&ref] | provenance | MaD:23 | +| test.rs:114:32:114:42 | [post] &mut buffer [&ref] | test.rs:114:37:114:42 | [post] buffer | provenance | | +| test.rs:114:37:114:42 | [post] buffer | test.rs:115:15:115:20 | buffer | provenance | | +| test.rs:115:15:115:20 | buffer | test.rs:115:14:115:20 | &buffer | provenance | | +| test.rs:120:22:120:25 | file | test.rs:120:39:120:49 | [post] &mut buffer [&ref] | provenance | MaD:25 | +| test.rs:120:39:120:49 | [post] &mut buffer [&ref] | test.rs:120:44:120:49 | [post] buffer | provenance | | +| test.rs:120:44:120:49 | [post] buffer | test.rs:121:15:121:20 | buffer | provenance | | +| test.rs:121:15:121:20 | buffer | test.rs:121:14:121:20 | &buffer | provenance | | +| test.rs:126:22:126:25 | file | test.rs:126:42:126:52 | [post] &mut buffer [&ref] | provenance | MaD:26 | +| test.rs:126:42:126:52 | [post] &mut buffer [&ref] | test.rs:126:47:126:52 | [post] buffer | provenance | | +| test.rs:126:47:126:52 | [post] buffer | test.rs:127:15:127:20 | buffer | provenance | | +| test.rs:127:15:127:20 | buffer | test.rs:127:14:127:20 | &buffer | provenance | | +| test.rs:132:9:132:12 | file | test.rs:132:25:132:35 | [post] &mut buffer [&ref] | provenance | MaD:24 | +| test.rs:132:25:132:35 | [post] &mut buffer [&ref] | test.rs:132:30:132:35 | [post] buffer | provenance | | +| test.rs:132:30:132:35 | [post] buffer | test.rs:133:15:133:20 | buffer | provenance | | +| test.rs:133:15:133:20 | buffer | test.rs:133:14:133:20 | &buffer | provenance | | +| test.rs:136:17:136:20 | file | test.rs:136:17:136:28 | file.bytes() | provenance | MaD:20 | +| test.rs:136:17:136:28 | file.bytes() | test.rs:137:14:137:17 | byte | provenance | | +| test.rs:143:13:143:18 | mut f1 | test.rs:145:22:145:23 | f1 | provenance | | +| test.rs:143:22:143:63 | ... .open(...) [Ok] | test.rs:143:22:143:72 | ... .unwrap() | provenance | MaD:39 | +| test.rs:143:22:143:72 | ... .unwrap() | test.rs:143:13:143:18 | mut f1 | provenance | | +| test.rs:143:50:143:53 | open | test.rs:143:22:143:63 | ... .open(...) [Ok] | provenance | Src:MaD:6 | +| test.rs:145:22:145:23 | f1 | test.rs:145:30:145:40 | [post] &mut buffer [&ref] | provenance | MaD:23 | +| test.rs:145:30:145:40 | [post] &mut buffer [&ref] | test.rs:145:35:145:40 | [post] buffer | provenance | | +| test.rs:145:35:145:40 | [post] buffer | test.rs:146:15:146:20 | buffer | provenance | | +| test.rs:146:15:146:20 | buffer | test.rs:146:14:146:20 | &buffer | provenance | | +| test.rs:150:13:150:18 | mut f2 | test.rs:155:22:155:23 | f2 | provenance | | +| test.rs:150:22:152:27 | ... .open(...) [Ok] | test.rs:150:22:153:21 | ... .unwrap() | provenance | MaD:39 | +| test.rs:150:22:153:21 | ... .unwrap() | test.rs:150:13:150:18 | mut f2 | provenance | | +| test.rs:152:14:152:17 | open | test.rs:150:22:152:27 | ... .open(...) [Ok] | provenance | Src:MaD:6 | +| test.rs:155:22:155:23 | f2 | test.rs:155:30:155:40 | [post] &mut buffer [&ref] | provenance | MaD:23 | +| test.rs:155:30:155:40 | [post] &mut buffer [&ref] | test.rs:155:35:155:40 | [post] buffer | provenance | | +| test.rs:155:35:155:40 | [post] buffer | test.rs:156:15:156:20 | buffer | provenance | | +| test.rs:156:15:156:20 | buffer | test.rs:156:14:156:20 | &buffer | provenance | | +| test.rs:160:13:160:18 | mut f3 | test.rs:168:22:168:23 | f3 | provenance | | +| test.rs:160:22:165:27 | ... .open(...) [Ok] | test.rs:160:22:166:21 | ... .unwrap() | provenance | MaD:39 | +| test.rs:160:22:166:21 | ... .unwrap() | test.rs:160:13:160:18 | mut f3 | provenance | | +| test.rs:165:14:165:17 | open | test.rs:160:22:165:27 | ... .open(...) [Ok] | provenance | Src:MaD:6 | +| test.rs:168:22:168:23 | f3 | test.rs:168:30:168:40 | [post] &mut buffer [&ref] | provenance | MaD:23 | +| test.rs:168:30:168:40 | [post] &mut buffer [&ref] | test.rs:168:35:168:40 | [post] buffer | provenance | | +| test.rs:168:35:168:40 | [post] buffer | test.rs:169:15:169:20 | buffer | provenance | | +| test.rs:169:15:169:20 | buffer | test.rs:169:14:169:20 | &buffer | provenance | | +| test.rs:176:13:176:17 | file1 | test.rs:178:26:178:30 | file1 | provenance | | +| test.rs:176:21:176:39 | ...::open | test.rs:176:21:176:51 | ...::open(...) [Ok] | provenance | Src:MaD:5 | +| test.rs:176:21:176:51 | ...::open(...) [Ok] | test.rs:176:21:176:52 | TryExpr | provenance | | +| test.rs:176:21:176:52 | TryExpr | test.rs:176:13:176:17 | file1 | provenance | | +| test.rs:177:13:177:17 | file2 | test.rs:178:38:178:42 | file2 | provenance | | +| test.rs:177:21:177:39 | ...::open | test.rs:177:21:177:59 | ...::open(...) [Ok] | provenance | Src:MaD:5 | +| test.rs:177:21:177:59 | ...::open(...) [Ok] | test.rs:177:21:177:60 | TryExpr | provenance | | +| test.rs:177:21:177:60 | TryExpr | test.rs:177:13:177:17 | file2 | provenance | | +| test.rs:178:13:178:22 | mut reader | test.rs:179:9:179:14 | reader | provenance | | +| test.rs:178:26:178:30 | file1 | test.rs:178:26:178:43 | file1.chain(...) | provenance | MaD:22 | +| test.rs:178:26:178:43 | file1.chain(...) | test.rs:178:13:178:22 | mut reader | provenance | | +| test.rs:178:38:178:42 | file2 | test.rs:178:26:178:43 | file1.chain(...) | provenance | MaD:21 | +| test.rs:179:9:179:14 | reader | test.rs:179:31:179:41 | [post] &mut buffer [&ref] | provenance | MaD:26 | +| test.rs:179:31:179:41 | [post] &mut buffer [&ref] | test.rs:179:36:179:41 | [post] buffer | provenance | | +| test.rs:179:36:179:41 | [post] buffer | test.rs:180:15:180:20 | buffer | provenance | | +| test.rs:180:15:180:20 | buffer | test.rs:180:14:180:20 | &buffer | provenance | | +| test.rs:185:13:185:17 | file1 | test.rs:186:26:186:30 | file1 | provenance | | +| test.rs:185:21:185:39 | ...::open | test.rs:185:21:185:51 | ...::open(...) [Ok] | provenance | Src:MaD:5 | +| test.rs:185:21:185:51 | ...::open(...) [Ok] | test.rs:185:21:185:52 | TryExpr | provenance | | +| test.rs:185:21:185:52 | TryExpr | test.rs:185:13:185:17 | file1 | provenance | | +| test.rs:186:13:186:22 | mut reader | test.rs:187:9:187:14 | reader | provenance | | +| test.rs:186:26:186:30 | file1 | test.rs:186:26:186:40 | file1.take(...) | provenance | MaD:27 | +| test.rs:186:26:186:40 | file1.take(...) | test.rs:186:13:186:22 | mut reader | provenance | | +| test.rs:187:9:187:14 | reader | test.rs:187:31:187:41 | [post] &mut buffer [&ref] | provenance | MaD:26 | +| test.rs:187:31:187:41 | [post] &mut buffer [&ref] | test.rs:187:36:187:41 | [post] buffer | provenance | | +| test.rs:187:36:187:41 | [post] buffer | test.rs:188:15:188:20 | buffer | provenance | | +| test.rs:188:15:188:20 | buffer | test.rs:188:14:188:20 | &buffer | provenance | | +| test.rs:197:9:197:16 | mut file | test.rs:201:22:201:25 | file | provenance | | +| test.rs:197:9:197:16 | mut file | test.rs:207:22:207:25 | file | provenance | | +| test.rs:197:9:197:16 | mut file | test.rs:213:22:213:25 | file | provenance | | +| test.rs:197:9:197:16 | mut file | test.rs:219:9:219:12 | file | provenance | | +| test.rs:197:9:197:16 | mut file | test.rs:224:18:224:21 | file | provenance | | +| test.rs:197:9:197:16 | mut file | test.rs:225:18:225:21 | file | provenance | | +| test.rs:197:9:197:16 | mut file | test.rs:226:18:226:21 | file | provenance | | +| test.rs:197:9:197:16 | mut file | test.rs:227:18:227:21 | file | provenance | | +| test.rs:197:9:197:16 | mut file | test.rs:236:9:236:12 | file | provenance | | +| test.rs:197:20:197:40 | ...::open | test.rs:197:20:197:52 | ...::open(...) [future, Ok] | provenance | Src:MaD:7 | +| test.rs:197:20:197:52 | ...::open(...) [future, Ok] | test.rs:197:20:197:58 | await ... [Ok] | provenance | | +| test.rs:197:20:197:58 | await ... [Ok] | test.rs:197:20:197:59 | TryExpr | provenance | | +| test.rs:197:20:197:59 | TryExpr | test.rs:197:9:197:16 | mut file | provenance | | +| test.rs:201:22:201:25 | file | test.rs:201:32:201:42 | [post] &mut buffer [&ref] | provenance | MaD:28 | +| test.rs:201:32:201:42 | [post] &mut buffer [&ref] | test.rs:201:37:201:42 | [post] buffer | provenance | | +| test.rs:201:37:201:42 | [post] buffer | test.rs:202:15:202:20 | buffer | provenance | | | test.rs:202:15:202:20 | buffer | test.rs:202:14:202:20 | &buffer | provenance | | -| test.rs:207:9:207:12 | file | test.rs:207:25:207:35 | [post] &mut buffer [&ref] | provenance | MaD:30 | -| test.rs:207:25:207:35 | [post] &mut buffer [&ref] | test.rs:207:30:207:35 | [post] buffer | provenance | | -| test.rs:207:30:207:35 | [post] buffer | test.rs:208:15:208:20 | buffer | provenance | | +| test.rs:207:22:207:25 | file | test.rs:207:39:207:49 | [post] &mut buffer [&ref] | provenance | MaD:34 | +| test.rs:207:39:207:49 | [post] &mut buffer [&ref] | test.rs:207:44:207:49 | [post] buffer | provenance | | +| test.rs:207:44:207:49 | [post] buffer | test.rs:208:15:208:20 | buffer | provenance | | | test.rs:208:15:208:20 | buffer | test.rs:208:14:208:20 | &buffer | provenance | | -| test.rs:212:13:212:14 | v1 | test.rs:216:14:216:15 | v1 | provenance | | -| test.rs:212:18:212:21 | file | test.rs:212:18:212:31 | file.read_u8() [future, Ok] | provenance | MaD:36 | -| test.rs:212:18:212:31 | file.read_u8() [future, Ok] | test.rs:212:18:212:37 | await ... [Ok] | provenance | | -| test.rs:212:18:212:37 | await ... [Ok] | test.rs:212:18:212:38 | TryExpr | provenance | | -| test.rs:212:18:212:38 | TryExpr | test.rs:212:13:212:14 | v1 | provenance | | -| test.rs:213:13:213:14 | v2 | test.rs:217:14:217:15 | v2 | provenance | | -| test.rs:213:18:213:21 | file | test.rs:213:18:213:32 | file.read_i16() [future, Ok] | provenance | MaD:32 | -| test.rs:213:18:213:32 | file.read_i16() [future, Ok] | test.rs:213:18:213:38 | await ... [Ok] | provenance | | -| test.rs:213:18:213:38 | await ... [Ok] | test.rs:213:18:213:39 | TryExpr | provenance | | -| test.rs:213:18:213:39 | TryExpr | test.rs:213:13:213:14 | v2 | provenance | | -| test.rs:214:13:214:14 | v3 | test.rs:218:14:218:15 | v3 | provenance | | -| test.rs:214:18:214:21 | file | test.rs:214:18:214:32 | file.read_f32() [future, Ok] | provenance | MaD:31 | -| test.rs:214:18:214:32 | file.read_f32() [future, Ok] | test.rs:214:18:214:38 | await ... [Ok] | provenance | | -| test.rs:214:18:214:38 | await ... [Ok] | test.rs:214:18:214:39 | TryExpr | provenance | | -| test.rs:214:18:214:39 | TryExpr | test.rs:214:13:214:14 | v3 | provenance | | -| test.rs:215:13:215:14 | v4 | test.rs:219:14:219:15 | v4 | provenance | | -| test.rs:215:18:215:21 | file | test.rs:215:18:215:35 | file.read_i64_le() [future, Ok] | provenance | MaD:33 | -| test.rs:215:18:215:35 | file.read_i64_le() [future, Ok] | test.rs:215:18:215:41 | await ... [Ok] | provenance | | -| test.rs:215:18:215:41 | await ... [Ok] | test.rs:215:18:215:42 | TryExpr | provenance | | -| test.rs:215:18:215:42 | TryExpr | test.rs:215:13:215:14 | v4 | provenance | | -| test.rs:224:9:224:12 | file | test.rs:224:23:224:33 | [post] &mut buffer [&ref] | provenance | MaD:29 | -| test.rs:224:23:224:33 | [post] &mut buffer [&ref] | test.rs:224:28:224:33 | [post] buffer | provenance | | -| test.rs:224:28:224:33 | [post] buffer | test.rs:225:15:225:20 | buffer | provenance | | -| test.rs:225:15:225:20 | buffer | test.rs:225:14:225:20 | &buffer | provenance | | -| test.rs:231:13:231:18 | mut f1 | test.rs:233:22:233:23 | f1 | provenance | | -| test.rs:231:22:231:65 | ... .open(...) [future, Ok] | test.rs:231:22:231:71 | await ... [Ok] | provenance | | -| test.rs:231:22:231:71 | await ... [Ok] | test.rs:231:22:231:72 | TryExpr | provenance | | -| test.rs:231:22:231:72 | TryExpr | test.rs:231:13:231:18 | mut f1 | provenance | | -| test.rs:231:52:231:55 | open | test.rs:231:22:231:65 | ... .open(...) [future, Ok] | provenance | Src:MaD:8 | -| test.rs:233:22:233:23 | f1 | test.rs:233:30:233:40 | [post] &mut buffer [&ref] | provenance | MaD:28 | -| test.rs:233:30:233:40 | [post] &mut buffer [&ref] | test.rs:233:35:233:40 | [post] buffer | provenance | | -| test.rs:233:35:233:40 | [post] buffer | test.rs:234:15:234:20 | buffer | provenance | | -| test.rs:234:15:234:20 | buffer | test.rs:234:14:234:20 | &buffer | provenance | | -| test.rs:262:9:262:16 | mut file | test.rs:266:22:266:25 | file | provenance | | -| test.rs:262:20:262:44 | ...::open | test.rs:262:20:262:56 | ...::open(...) [future, Ok] | provenance | Src:MaD:1 | -| test.rs:262:20:262:56 | ...::open(...) [future, Ok] | test.rs:262:20:262:62 | await ... [Ok] | provenance | | -| test.rs:262:20:262:62 | await ... [Ok] | test.rs:262:20:262:63 | TryExpr | provenance | | -| test.rs:262:20:262:63 | TryExpr | test.rs:262:9:262:16 | mut file | provenance | | -| test.rs:266:22:266:25 | file | test.rs:266:32:266:42 | [post] &mut buffer [&ref] | provenance | MaD:17 | -| test.rs:266:32:266:42 | [post] &mut buffer [&ref] | test.rs:266:37:266:42 | [post] buffer | provenance | | -| test.rs:266:37:266:42 | [post] buffer | test.rs:267:15:267:20 | buffer | provenance | | -| test.rs:267:15:267:20 | buffer | test.rs:267:14:267:20 | &buffer | provenance | | -| test.rs:273:13:273:18 | mut f1 | test.rs:275:22:275:23 | f1 | provenance | | -| test.rs:273:22:273:69 | ... .open(...) [future, Ok] | test.rs:273:22:273:75 | await ... [Ok] | provenance | | -| test.rs:273:22:273:75 | await ... [Ok] | test.rs:273:22:273:76 | TryExpr | provenance | | -| test.rs:273:22:273:76 | TryExpr | test.rs:273:13:273:18 | mut f1 | provenance | | -| test.rs:273:56:273:59 | open | test.rs:273:22:273:69 | ... .open(...) [future, Ok] | provenance | Src:MaD:2 | -| test.rs:275:22:275:23 | f1 | test.rs:275:30:275:40 | [post] &mut buffer [&ref] | provenance | MaD:17 | -| test.rs:275:30:275:40 | [post] &mut buffer [&ref] | test.rs:275:35:275:40 | [post] buffer | provenance | | -| test.rs:275:35:275:40 | [post] buffer | test.rs:276:15:276:20 | buffer | provenance | | -| test.rs:276:15:276:20 | buffer | test.rs:276:14:276:20 | &buffer | provenance | | +| test.rs:213:22:213:25 | file | test.rs:213:42:213:52 | [post] &mut buffer [&ref] | provenance | MaD:35 | +| test.rs:213:42:213:52 | [post] &mut buffer [&ref] | test.rs:213:47:213:52 | [post] buffer | provenance | | +| test.rs:213:47:213:52 | [post] buffer | test.rs:214:15:214:20 | buffer | provenance | | +| test.rs:214:15:214:20 | buffer | test.rs:214:14:214:20 | &buffer | provenance | | +| test.rs:219:9:219:12 | file | test.rs:219:25:219:35 | [post] &mut buffer [&ref] | provenance | MaD:30 | +| test.rs:219:25:219:35 | [post] &mut buffer [&ref] | test.rs:219:30:219:35 | [post] buffer | provenance | | +| test.rs:219:30:219:35 | [post] buffer | test.rs:220:15:220:20 | buffer | provenance | | +| test.rs:220:15:220:20 | buffer | test.rs:220:14:220:20 | &buffer | provenance | | +| test.rs:224:13:224:14 | v1 | test.rs:228:14:228:15 | v1 | provenance | | +| test.rs:224:18:224:21 | file | test.rs:224:18:224:31 | file.read_u8() [future, Ok] | provenance | MaD:36 | +| test.rs:224:18:224:31 | file.read_u8() [future, Ok] | test.rs:224:18:224:37 | await ... [Ok] | provenance | | +| test.rs:224:18:224:37 | await ... [Ok] | test.rs:224:18:224:38 | TryExpr | provenance | | +| test.rs:224:18:224:38 | TryExpr | test.rs:224:13:224:14 | v1 | provenance | | +| test.rs:225:13:225:14 | v2 | test.rs:229:14:229:15 | v2 | provenance | | +| test.rs:225:18:225:21 | file | test.rs:225:18:225:32 | file.read_i16() [future, Ok] | provenance | MaD:32 | +| test.rs:225:18:225:32 | file.read_i16() [future, Ok] | test.rs:225:18:225:38 | await ... [Ok] | provenance | | +| test.rs:225:18:225:38 | await ... [Ok] | test.rs:225:18:225:39 | TryExpr | provenance | | +| test.rs:225:18:225:39 | TryExpr | test.rs:225:13:225:14 | v2 | provenance | | +| test.rs:226:13:226:14 | v3 | test.rs:230:14:230:15 | v3 | provenance | | +| test.rs:226:18:226:21 | file | test.rs:226:18:226:32 | file.read_f32() [future, Ok] | provenance | MaD:31 | +| test.rs:226:18:226:32 | file.read_f32() [future, Ok] | test.rs:226:18:226:38 | await ... [Ok] | provenance | | +| test.rs:226:18:226:38 | await ... [Ok] | test.rs:226:18:226:39 | TryExpr | provenance | | +| test.rs:226:18:226:39 | TryExpr | test.rs:226:13:226:14 | v3 | provenance | | +| test.rs:227:13:227:14 | v4 | test.rs:231:14:231:15 | v4 | provenance | | +| test.rs:227:18:227:21 | file | test.rs:227:18:227:35 | file.read_i64_le() [future, Ok] | provenance | MaD:33 | +| test.rs:227:18:227:35 | file.read_i64_le() [future, Ok] | test.rs:227:18:227:41 | await ... [Ok] | provenance | | +| test.rs:227:18:227:41 | await ... [Ok] | test.rs:227:18:227:42 | TryExpr | provenance | | +| test.rs:227:18:227:42 | TryExpr | test.rs:227:13:227:14 | v4 | provenance | | +| test.rs:236:9:236:12 | file | test.rs:236:23:236:33 | [post] &mut buffer [&ref] | provenance | MaD:29 | +| test.rs:236:23:236:33 | [post] &mut buffer [&ref] | test.rs:236:28:236:33 | [post] buffer | provenance | | +| test.rs:236:28:236:33 | [post] buffer | test.rs:237:15:237:20 | buffer | provenance | | +| test.rs:237:15:237:20 | buffer | test.rs:237:14:237:20 | &buffer | provenance | | +| test.rs:243:13:243:18 | mut f1 | test.rs:245:22:245:23 | f1 | provenance | | +| test.rs:243:22:243:65 | ... .open(...) [future, Ok] | test.rs:243:22:243:71 | await ... [Ok] | provenance | | +| test.rs:243:22:243:71 | await ... [Ok] | test.rs:243:22:243:72 | TryExpr | provenance | | +| test.rs:243:22:243:72 | TryExpr | test.rs:243:13:243:18 | mut f1 | provenance | | +| test.rs:243:52:243:55 | open | test.rs:243:22:243:65 | ... .open(...) [future, Ok] | provenance | Src:MaD:8 | +| test.rs:245:22:245:23 | f1 | test.rs:245:30:245:40 | [post] &mut buffer [&ref] | provenance | MaD:28 | +| test.rs:245:30:245:40 | [post] &mut buffer [&ref] | test.rs:245:35:245:40 | [post] buffer | provenance | | +| test.rs:245:35:245:40 | [post] buffer | test.rs:246:15:246:20 | buffer | provenance | | +| test.rs:246:15:246:20 | buffer | test.rs:246:14:246:20 | &buffer | provenance | | +| test.rs:274:9:274:16 | mut file | test.rs:278:22:278:25 | file | provenance | | +| test.rs:274:20:274:44 | ...::open | test.rs:274:20:274:56 | ...::open(...) [future, Ok] | provenance | Src:MaD:1 | +| test.rs:274:20:274:56 | ...::open(...) [future, Ok] | test.rs:274:20:274:62 | await ... [Ok] | provenance | | +| test.rs:274:20:274:62 | await ... [Ok] | test.rs:274:20:274:63 | TryExpr | provenance | | +| test.rs:274:20:274:63 | TryExpr | test.rs:274:9:274:16 | mut file | provenance | | +| test.rs:278:22:278:25 | file | test.rs:278:32:278:42 | [post] &mut buffer [&ref] | provenance | MaD:17 | +| test.rs:278:32:278:42 | [post] &mut buffer [&ref] | test.rs:278:37:278:42 | [post] buffer | provenance | | +| test.rs:278:37:278:42 | [post] buffer | test.rs:279:15:279:20 | buffer | provenance | | +| test.rs:279:15:279:20 | buffer | test.rs:279:14:279:20 | &buffer | provenance | | +| test.rs:285:13:285:18 | mut f1 | test.rs:287:22:287:23 | f1 | provenance | | +| test.rs:285:22:285:69 | ... .open(...) [future, Ok] | test.rs:285:22:285:75 | await ... [Ok] | provenance | | +| test.rs:285:22:285:75 | await ... [Ok] | test.rs:285:22:285:76 | TryExpr | provenance | | +| test.rs:285:22:285:76 | TryExpr | test.rs:285:13:285:18 | mut f1 | provenance | | +| test.rs:285:56:285:59 | open | test.rs:285:22:285:69 | ... .open(...) [future, Ok] | provenance | Src:MaD:2 | +| test.rs:287:22:287:23 | f1 | test.rs:287:30:287:40 | [post] &mut buffer [&ref] | provenance | MaD:17 | +| test.rs:287:30:287:40 | [post] &mut buffer [&ref] | test.rs:287:35:287:40 | [post] buffer | provenance | | +| test.rs:287:35:287:40 | [post] buffer | test.rs:288:15:288:20 | buffer | provenance | | +| test.rs:288:15:288:20 | buffer | test.rs:288:14:288:20 | &buffer | provenance | | nodes | test.rs:12:13:12:18 | buffer | semmle.label | buffer | | test.rs:12:31:12:43 | ...::read | semmle.label | ...::read | @@ -274,272 +311,315 @@ nodes | test.rs:22:22:22:51 | ...::read_to_string(...) [Ok] | semmle.label | ...::read_to_string(...) [Ok] | | test.rs:22:22:22:52 | TryExpr | semmle.label | TryExpr | | test.rs:23:14:23:19 | buffer | semmle.label | buffer | -| test.rs:29:13:29:16 | path | semmle.label | path | -| test.rs:29:20:29:27 | e.path() | semmle.label | e.path() | -| test.rs:29:22:29:25 | path | semmle.label | path | -| test.rs:30:14:30:17 | path | semmle.label | path | -| test.rs:30:14:30:25 | path.clone() | semmle.label | path.clone() | +| test.rs:30:13:30:16 | path | semmle.label | path | +| test.rs:30:20:30:27 | e.path() | semmle.label | e.path() | +| test.rs:30:22:30:25 | path | semmle.label | path | | test.rs:31:14:31:17 | path | semmle.label | path | | test.rs:31:14:31:25 | path.clone() | semmle.label | path.clone() | -| test.rs:31:14:31:35 | ... .as_path() | semmle.label | ... .as_path() | +| test.rs:32:14:32:17 | path | semmle.label | path | +| test.rs:32:14:32:25 | path.clone() | semmle.label | path.clone() | +| test.rs:32:14:32:35 | ... .as_path() | semmle.label | ... .as_path() | +| test.rs:33:14:33:17 | path | semmle.label | path | +| test.rs:33:14:33:25 | path.clone() | semmle.label | path.clone() | +| test.rs:33:14:33:42 | ... .into_os_string() | semmle.label | ... .into_os_string() | +| test.rs:34:14:34:69 | ...::from(...) | semmle.label | ...::from(...) | +| test.rs:34:39:34:42 | path | semmle.label | path | +| test.rs:34:39:34:50 | path.clone() | semmle.label | path.clone() | +| test.rs:34:39:34:68 | ... .into_boxed_path() [Box(0)] | semmle.label | ... .into_boxed_path() [Box(0)] | +| test.rs:35:14:35:17 | path | semmle.label | path | +| test.rs:35:14:35:25 | path.clone() | semmle.label | path.clone() | +| test.rs:35:14:35:37 | ... .as_os_str() | semmle.label | ... .as_os_str() | +| test.rs:36:14:36:17 | path | semmle.label | path | +| test.rs:36:14:36:25 | path.clone() | semmle.label | path.clone() | +| test.rs:36:14:36:41 | ... .as_mut_os_str() | semmle.label | ... .as_mut_os_str() | +| test.rs:37:14:37:17 | path | semmle.label | path | +| test.rs:37:14:37:26 | path.to_str() | semmle.label | path.to_str() | +| test.rs:38:14:38:17 | path | semmle.label | path | +| test.rs:38:14:38:31 | path.to_path_buf() | semmle.label | path.to_path_buf() | +| test.rs:39:14:39:17 | path | semmle.label | path | +| test.rs:39:14:39:29 | path.file_name() [Some, &ref] | semmle.label | path.file_name() [Some, &ref] | +| test.rs:39:14:39:38 | ... .unwrap() | semmle.label | ... .unwrap() | | test.rs:40:14:40:17 | path | semmle.label | path | -| test.rs:40:14:40:32 | path.canonicalize() [Ok] | semmle.label | path.canonicalize() [Ok] | -| test.rs:40:14:40:41 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:40:14:40:29 | path.extension() [Some, &ref] | semmle.label | path.extension() [Some, &ref] | +| test.rs:40:14:40:38 | ... .unwrap() | semmle.label | ... .unwrap() | | test.rs:41:14:41:17 | path | semmle.label | path | -| test.rs:43:13:43:21 | file_name | semmle.label | file_name | -| test.rs:43:25:43:37 | e.file_name() | semmle.label | e.file_name() | -| test.rs:43:27:43:35 | file_name | semmle.label | file_name | -| test.rs:44:14:44:22 | file_name | semmle.label | file_name | -| test.rs:44:14:44:30 | file_name.clone() | semmle.label | file_name.clone() | +| test.rs:41:14:41:32 | path.canonicalize() [Ok] | semmle.label | path.canonicalize() [Ok] | +| test.rs:41:14:41:41 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:42:14:42:17 | path | semmle.label | path | +| test.rs:44:13:44:21 | file_name | semmle.label | file_name | +| test.rs:44:25:44:37 | e.file_name() | semmle.label | e.file_name() | +| test.rs:44:27:44:35 | file_name | semmle.label | file_name | | test.rs:45:14:45:22 | file_name | semmle.label | file_name | | test.rs:45:14:45:30 | file_name.clone() | semmle.label | file_name.clone() | -| test.rs:45:14:45:44 | ... .into_string() [Ok, String] | semmle.label | ... .into_string() [Ok, String] | -| test.rs:45:14:45:53 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:46:14:46:22 | file_name | semmle.label | file_name | +| test.rs:46:14:46:30 | file_name.clone() | semmle.label | file_name.clone() | +| test.rs:46:14:46:44 | ... .into_string() [Ok, String] | semmle.label | ... .into_string() [Ok, String] | +| test.rs:46:14:46:53 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:47:14:47:22 | file_name | semmle.label | file_name | +| test.rs:47:14:47:31 | file_name.to_str() [Some, &ref] | semmle.label | file_name.to_str() [Some, &ref] | +| test.rs:47:14:47:40 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:48:14:48:22 | file_name | semmle.label | file_name | +| test.rs:48:14:48:40 | file_name.to_string_lossy() [Owned] | semmle.label | file_name.to_string_lossy() [Owned] | +| test.rs:48:14:48:49 | ... .to_mut() | semmle.label | ... .to_mut() | | test.rs:49:14:49:22 | file_name | semmle.label | file_name | -| test.rs:65:13:65:18 | target | semmle.label | target | -| test.rs:65:22:65:34 | ...::read_link | semmle.label | ...::read_link | -| test.rs:65:22:65:49 | ...::read_link(...) [Ok] | semmle.label | ...::read_link(...) [Ok] | -| test.rs:65:22:65:50 | TryExpr | semmle.label | TryExpr | -| test.rs:66:14:66:19 | target | semmle.label | target | -| test.rs:74:13:74:18 | buffer | semmle.label | buffer | -| test.rs:74:31:74:45 | ...::read | semmle.label | ...::read | -| test.rs:74:31:74:57 | ...::read(...) [future, Ok] | semmle.label | ...::read(...) [future, Ok] | -| test.rs:74:31:74:63 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:74:31:74:64 | TryExpr | semmle.label | TryExpr | -| test.rs:75:14:75:19 | buffer | semmle.label | buffer | -| test.rs:79:13:79:18 | buffer | semmle.label | buffer | -| test.rs:79:31:79:45 | ...::read | semmle.label | ...::read | -| test.rs:79:31:79:57 | ...::read(...) [future, Ok] | semmle.label | ...::read(...) [future, Ok] | -| test.rs:79:31:79:63 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:79:31:79:64 | TryExpr | semmle.label | TryExpr | -| test.rs:80:14:80:19 | buffer | semmle.label | buffer | -| test.rs:84:13:84:18 | buffer | semmle.label | buffer | -| test.rs:84:22:84:46 | ...::read_to_string | semmle.label | ...::read_to_string | -| test.rs:84:22:84:58 | ...::read_to_string(...) [future, Ok] | semmle.label | ...::read_to_string(...) [future, Ok] | -| test.rs:84:22:84:64 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:84:22:84:65 | TryExpr | semmle.label | TryExpr | -| test.rs:85:14:85:19 | buffer | semmle.label | buffer | -| test.rs:90:13:90:16 | path | semmle.label | path | -| test.rs:90:20:90:31 | entry.path() | semmle.label | entry.path() | -| test.rs:90:26:90:29 | path | semmle.label | path | -| test.rs:91:13:91:21 | file_name | semmle.label | file_name | -| test.rs:91:25:91:41 | entry.file_name() | semmle.label | entry.file_name() | -| test.rs:91:31:91:39 | file_name | semmle.label | file_name | -| test.rs:92:14:92:17 | path | semmle.label | path | -| test.rs:93:14:93:22 | file_name | semmle.label | file_name | -| test.rs:97:13:97:18 | target | semmle.label | target | -| test.rs:97:22:97:41 | ...::read_link | semmle.label | ...::read_link | -| test.rs:97:22:97:56 | ...::read_link(...) [future, Ok] | semmle.label | ...::read_link(...) [future, Ok] | -| test.rs:97:22:97:62 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:97:22:97:63 | TryExpr | semmle.label | TryExpr | -| test.rs:98:14:98:19 | target | semmle.label | target | -| test.rs:107:9:107:16 | mut file | semmle.label | mut file | -| test.rs:107:20:107:38 | ...::open | semmle.label | ...::open | -| test.rs:107:20:107:50 | ...::open(...) [Ok] | semmle.label | ...::open(...) [Ok] | -| test.rs:107:20:107:51 | TryExpr | semmle.label | TryExpr | -| test.rs:111:22:111:25 | file | semmle.label | file | -| test.rs:111:32:111:42 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:111:37:111:42 | [post] buffer | semmle.label | [post] buffer | -| test.rs:112:14:112:20 | &buffer | semmle.label | &buffer | -| test.rs:112:15:112:20 | buffer | semmle.label | buffer | -| test.rs:117:22:117:25 | file | semmle.label | file | -| test.rs:117:39:117:49 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:117:44:117:49 | [post] buffer | semmle.label | [post] buffer | -| test.rs:118:14:118:20 | &buffer | semmle.label | &buffer | -| test.rs:118:15:118:20 | buffer | semmle.label | buffer | -| test.rs:123:22:123:25 | file | semmle.label | file | -| test.rs:123:42:123:52 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:123:47:123:52 | [post] buffer | semmle.label | [post] buffer | -| test.rs:124:14:124:20 | &buffer | semmle.label | &buffer | -| test.rs:124:15:124:20 | buffer | semmle.label | buffer | -| test.rs:129:9:129:12 | file | semmle.label | file | -| test.rs:129:25:129:35 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:129:30:129:35 | [post] buffer | semmle.label | [post] buffer | -| test.rs:130:14:130:20 | &buffer | semmle.label | &buffer | -| test.rs:130:15:130:20 | buffer | semmle.label | buffer | -| test.rs:133:17:133:20 | file | semmle.label | file | -| test.rs:133:17:133:28 | file.bytes() | semmle.label | file.bytes() | -| test.rs:134:14:134:17 | byte | semmle.label | byte | -| test.rs:140:13:140:18 | mut f1 | semmle.label | mut f1 | -| test.rs:140:22:140:63 | ... .open(...) [Ok] | semmle.label | ... .open(...) [Ok] | -| test.rs:140:22:140:72 | ... .unwrap() | semmle.label | ... .unwrap() | -| test.rs:140:50:140:53 | open | semmle.label | open | -| test.rs:142:22:142:23 | f1 | semmle.label | f1 | -| test.rs:142:30:142:40 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:142:35:142:40 | [post] buffer | semmle.label | [post] buffer | -| test.rs:143:14:143:20 | &buffer | semmle.label | &buffer | -| test.rs:143:15:143:20 | buffer | semmle.label | buffer | -| test.rs:147:13:147:18 | mut f2 | semmle.label | mut f2 | -| test.rs:147:22:147:80 | ... .open(...) [Ok] | semmle.label | ... .open(...) [Ok] | -| test.rs:147:22:147:89 | ... .unwrap() | semmle.label | ... .unwrap() | -| test.rs:147:67:147:70 | open | semmle.label | open | -| test.rs:149:22:149:23 | f2 | semmle.label | f2 | -| test.rs:149:30:149:40 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:149:35:149:40 | [post] buffer | semmle.label | [post] buffer | -| test.rs:150:14:150:20 | &buffer | semmle.label | &buffer | -| test.rs:150:15:150:20 | buffer | semmle.label | buffer | -| test.rs:154:13:154:18 | mut f3 | semmle.label | mut f3 | -| test.rs:154:22:154:114 | ... .open(...) [Ok] | semmle.label | ... .open(...) [Ok] | -| test.rs:154:22:154:123 | ... .unwrap() | semmle.label | ... .unwrap() | -| test.rs:154:101:154:104 | open | semmle.label | open | -| test.rs:156:22:156:23 | f3 | semmle.label | f3 | -| test.rs:156:30:156:40 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:156:35:156:40 | [post] buffer | semmle.label | [post] buffer | -| test.rs:157:14:157:20 | &buffer | semmle.label | &buffer | -| test.rs:157:15:157:20 | buffer | semmle.label | buffer | -| test.rs:164:13:164:17 | file1 | semmle.label | file1 | -| test.rs:164:21:164:39 | ...::open | semmle.label | ...::open | -| test.rs:164:21:164:51 | ...::open(...) [Ok] | semmle.label | ...::open(...) [Ok] | -| test.rs:164:21:164:52 | TryExpr | semmle.label | TryExpr | -| test.rs:165:13:165:17 | file2 | semmle.label | file2 | -| test.rs:165:21:165:39 | ...::open | semmle.label | ...::open | -| test.rs:165:21:165:59 | ...::open(...) [Ok] | semmle.label | ...::open(...) [Ok] | -| test.rs:165:21:165:60 | TryExpr | semmle.label | TryExpr | -| test.rs:166:13:166:22 | mut reader | semmle.label | mut reader | -| test.rs:166:26:166:30 | file1 | semmle.label | file1 | -| test.rs:166:26:166:43 | file1.chain(...) | semmle.label | file1.chain(...) | -| test.rs:166:38:166:42 | file2 | semmle.label | file2 | -| test.rs:167:9:167:14 | reader | semmle.label | reader | -| test.rs:167:31:167:41 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:167:36:167:41 | [post] buffer | semmle.label | [post] buffer | -| test.rs:168:14:168:20 | &buffer | semmle.label | &buffer | -| test.rs:168:15:168:20 | buffer | semmle.label | buffer | -| test.rs:173:13:173:17 | file1 | semmle.label | file1 | -| test.rs:173:21:173:39 | ...::open | semmle.label | ...::open | -| test.rs:173:21:173:51 | ...::open(...) [Ok] | semmle.label | ...::open(...) [Ok] | -| test.rs:173:21:173:52 | TryExpr | semmle.label | TryExpr | -| test.rs:174:13:174:22 | mut reader | semmle.label | mut reader | -| test.rs:174:26:174:30 | file1 | semmle.label | file1 | -| test.rs:174:26:174:40 | file1.take(...) | semmle.label | file1.take(...) | -| test.rs:175:9:175:14 | reader | semmle.label | reader | -| test.rs:175:31:175:41 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:175:36:175:41 | [post] buffer | semmle.label | [post] buffer | -| test.rs:176:14:176:20 | &buffer | semmle.label | &buffer | -| test.rs:176:15:176:20 | buffer | semmle.label | buffer | -| test.rs:185:9:185:16 | mut file | semmle.label | mut file | -| test.rs:185:20:185:40 | ...::open | semmle.label | ...::open | -| test.rs:185:20:185:52 | ...::open(...) [future, Ok] | semmle.label | ...::open(...) [future, Ok] | -| test.rs:185:20:185:58 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:185:20:185:59 | TryExpr | semmle.label | TryExpr | -| test.rs:189:22:189:25 | file | semmle.label | file | -| test.rs:189:32:189:42 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:189:37:189:42 | [post] buffer | semmle.label | [post] buffer | -| test.rs:190:14:190:20 | &buffer | semmle.label | &buffer | -| test.rs:190:15:190:20 | buffer | semmle.label | buffer | -| test.rs:195:22:195:25 | file | semmle.label | file | -| test.rs:195:39:195:49 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:195:44:195:49 | [post] buffer | semmle.label | [post] buffer | -| test.rs:196:14:196:20 | &buffer | semmle.label | &buffer | -| test.rs:196:15:196:20 | buffer | semmle.label | buffer | +| test.rs:49:14:49:30 | file_name.clone() | semmle.label | file_name.clone() | +| test.rs:49:14:49:49 | ... .as_encoded_bytes() | semmle.label | ... .as_encoded_bytes() | +| test.rs:50:14:50:22 | file_name | semmle.label | file_name | +| test.rs:68:13:68:18 | target | semmle.label | target | +| test.rs:68:22:68:34 | ...::read_link | semmle.label | ...::read_link | +| test.rs:68:22:68:49 | ...::read_link(...) [Ok] | semmle.label | ...::read_link(...) [Ok] | +| test.rs:68:22:68:50 | TryExpr | semmle.label | TryExpr | +| test.rs:69:14:69:19 | target | semmle.label | target | +| test.rs:77:13:77:18 | buffer | semmle.label | buffer | +| test.rs:77:31:77:45 | ...::read | semmle.label | ...::read | +| test.rs:77:31:77:57 | ...::read(...) [future, Ok] | semmle.label | ...::read(...) [future, Ok] | +| test.rs:77:31:77:63 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:77:31:77:64 | TryExpr | semmle.label | TryExpr | +| test.rs:78:14:78:19 | buffer | semmle.label | buffer | +| test.rs:82:13:82:18 | buffer | semmle.label | buffer | +| test.rs:82:31:82:45 | ...::read | semmle.label | ...::read | +| test.rs:82:31:82:57 | ...::read(...) [future, Ok] | semmle.label | ...::read(...) [future, Ok] | +| test.rs:82:31:82:63 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:82:31:82:64 | TryExpr | semmle.label | TryExpr | +| test.rs:83:14:83:19 | buffer | semmle.label | buffer | +| test.rs:87:13:87:18 | buffer | semmle.label | buffer | +| test.rs:87:22:87:46 | ...::read_to_string | semmle.label | ...::read_to_string | +| test.rs:87:22:87:58 | ...::read_to_string(...) [future, Ok] | semmle.label | ...::read_to_string(...) [future, Ok] | +| test.rs:87:22:87:64 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:87:22:87:65 | TryExpr | semmle.label | TryExpr | +| test.rs:88:14:88:19 | buffer | semmle.label | buffer | +| test.rs:93:13:93:16 | path | semmle.label | path | +| test.rs:93:20:93:31 | entry.path() | semmle.label | entry.path() | +| test.rs:93:26:93:29 | path | semmle.label | path | +| test.rs:94:13:94:21 | file_name | semmle.label | file_name | +| test.rs:94:25:94:41 | entry.file_name() | semmle.label | entry.file_name() | +| test.rs:94:31:94:39 | file_name | semmle.label | file_name | +| test.rs:95:14:95:17 | path | semmle.label | path | +| test.rs:96:14:96:22 | file_name | semmle.label | file_name | +| test.rs:100:13:100:18 | target | semmle.label | target | +| test.rs:100:22:100:41 | ...::read_link | semmle.label | ...::read_link | +| test.rs:100:22:100:56 | ...::read_link(...) [future, Ok] | semmle.label | ...::read_link(...) [future, Ok] | +| test.rs:100:22:100:62 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:100:22:100:63 | TryExpr | semmle.label | TryExpr | +| test.rs:101:14:101:19 | target | semmle.label | target | +| test.rs:110:9:110:16 | mut file | semmle.label | mut file | +| test.rs:110:20:110:38 | ...::open | semmle.label | ...::open | +| test.rs:110:20:110:50 | ...::open(...) [Ok] | semmle.label | ...::open(...) [Ok] | +| test.rs:110:20:110:51 | TryExpr | semmle.label | TryExpr | +| test.rs:114:22:114:25 | file | semmle.label | file | +| test.rs:114:32:114:42 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:114:37:114:42 | [post] buffer | semmle.label | [post] buffer | +| test.rs:115:14:115:20 | &buffer | semmle.label | &buffer | +| test.rs:115:15:115:20 | buffer | semmle.label | buffer | +| test.rs:120:22:120:25 | file | semmle.label | file | +| test.rs:120:39:120:49 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:120:44:120:49 | [post] buffer | semmle.label | [post] buffer | +| test.rs:121:14:121:20 | &buffer | semmle.label | &buffer | +| test.rs:121:15:121:20 | buffer | semmle.label | buffer | +| test.rs:126:22:126:25 | file | semmle.label | file | +| test.rs:126:42:126:52 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:126:47:126:52 | [post] buffer | semmle.label | [post] buffer | +| test.rs:127:14:127:20 | &buffer | semmle.label | &buffer | +| test.rs:127:15:127:20 | buffer | semmle.label | buffer | +| test.rs:132:9:132:12 | file | semmle.label | file | +| test.rs:132:25:132:35 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:132:30:132:35 | [post] buffer | semmle.label | [post] buffer | +| test.rs:133:14:133:20 | &buffer | semmle.label | &buffer | +| test.rs:133:15:133:20 | buffer | semmle.label | buffer | +| test.rs:136:17:136:20 | file | semmle.label | file | +| test.rs:136:17:136:28 | file.bytes() | semmle.label | file.bytes() | +| test.rs:137:14:137:17 | byte | semmle.label | byte | +| test.rs:143:13:143:18 | mut f1 | semmle.label | mut f1 | +| test.rs:143:22:143:63 | ... .open(...) [Ok] | semmle.label | ... .open(...) [Ok] | +| test.rs:143:22:143:72 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:143:50:143:53 | open | semmle.label | open | +| test.rs:145:22:145:23 | f1 | semmle.label | f1 | +| test.rs:145:30:145:40 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:145:35:145:40 | [post] buffer | semmle.label | [post] buffer | +| test.rs:146:14:146:20 | &buffer | semmle.label | &buffer | +| test.rs:146:15:146:20 | buffer | semmle.label | buffer | +| test.rs:150:13:150:18 | mut f2 | semmle.label | mut f2 | +| test.rs:150:22:152:27 | ... .open(...) [Ok] | semmle.label | ... .open(...) [Ok] | +| test.rs:150:22:153:21 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:152:14:152:17 | open | semmle.label | open | +| test.rs:155:22:155:23 | f2 | semmle.label | f2 | +| test.rs:155:30:155:40 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:155:35:155:40 | [post] buffer | semmle.label | [post] buffer | +| test.rs:156:14:156:20 | &buffer | semmle.label | &buffer | +| test.rs:156:15:156:20 | buffer | semmle.label | buffer | +| test.rs:160:13:160:18 | mut f3 | semmle.label | mut f3 | +| test.rs:160:22:165:27 | ... .open(...) [Ok] | semmle.label | ... .open(...) [Ok] | +| test.rs:160:22:166:21 | ... .unwrap() | semmle.label | ... .unwrap() | +| test.rs:165:14:165:17 | open | semmle.label | open | +| test.rs:168:22:168:23 | f3 | semmle.label | f3 | +| test.rs:168:30:168:40 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:168:35:168:40 | [post] buffer | semmle.label | [post] buffer | +| test.rs:169:14:169:20 | &buffer | semmle.label | &buffer | +| test.rs:169:15:169:20 | buffer | semmle.label | buffer | +| test.rs:176:13:176:17 | file1 | semmle.label | file1 | +| test.rs:176:21:176:39 | ...::open | semmle.label | ...::open | +| test.rs:176:21:176:51 | ...::open(...) [Ok] | semmle.label | ...::open(...) [Ok] | +| test.rs:176:21:176:52 | TryExpr | semmle.label | TryExpr | +| test.rs:177:13:177:17 | file2 | semmle.label | file2 | +| test.rs:177:21:177:39 | ...::open | semmle.label | ...::open | +| test.rs:177:21:177:59 | ...::open(...) [Ok] | semmle.label | ...::open(...) [Ok] | +| test.rs:177:21:177:60 | TryExpr | semmle.label | TryExpr | +| test.rs:178:13:178:22 | mut reader | semmle.label | mut reader | +| test.rs:178:26:178:30 | file1 | semmle.label | file1 | +| test.rs:178:26:178:43 | file1.chain(...) | semmle.label | file1.chain(...) | +| test.rs:178:38:178:42 | file2 | semmle.label | file2 | +| test.rs:179:9:179:14 | reader | semmle.label | reader | +| test.rs:179:31:179:41 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:179:36:179:41 | [post] buffer | semmle.label | [post] buffer | +| test.rs:180:14:180:20 | &buffer | semmle.label | &buffer | +| test.rs:180:15:180:20 | buffer | semmle.label | buffer | +| test.rs:185:13:185:17 | file1 | semmle.label | file1 | +| test.rs:185:21:185:39 | ...::open | semmle.label | ...::open | +| test.rs:185:21:185:51 | ...::open(...) [Ok] | semmle.label | ...::open(...) [Ok] | +| test.rs:185:21:185:52 | TryExpr | semmle.label | TryExpr | +| test.rs:186:13:186:22 | mut reader | semmle.label | mut reader | +| test.rs:186:26:186:30 | file1 | semmle.label | file1 | +| test.rs:186:26:186:40 | file1.take(...) | semmle.label | file1.take(...) | +| test.rs:187:9:187:14 | reader | semmle.label | reader | +| test.rs:187:31:187:41 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:187:36:187:41 | [post] buffer | semmle.label | [post] buffer | +| test.rs:188:14:188:20 | &buffer | semmle.label | &buffer | +| test.rs:188:15:188:20 | buffer | semmle.label | buffer | +| test.rs:197:9:197:16 | mut file | semmle.label | mut file | +| test.rs:197:20:197:40 | ...::open | semmle.label | ...::open | +| test.rs:197:20:197:52 | ...::open(...) [future, Ok] | semmle.label | ...::open(...) [future, Ok] | +| test.rs:197:20:197:58 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:197:20:197:59 | TryExpr | semmle.label | TryExpr | | test.rs:201:22:201:25 | file | semmle.label | file | -| test.rs:201:42:201:52 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:201:47:201:52 | [post] buffer | semmle.label | [post] buffer | +| test.rs:201:32:201:42 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:201:37:201:42 | [post] buffer | semmle.label | [post] buffer | | test.rs:202:14:202:20 | &buffer | semmle.label | &buffer | | test.rs:202:15:202:20 | buffer | semmle.label | buffer | -| test.rs:207:9:207:12 | file | semmle.label | file | -| test.rs:207:25:207:35 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:207:30:207:35 | [post] buffer | semmle.label | [post] buffer | +| test.rs:207:22:207:25 | file | semmle.label | file | +| test.rs:207:39:207:49 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:207:44:207:49 | [post] buffer | semmle.label | [post] buffer | | test.rs:208:14:208:20 | &buffer | semmle.label | &buffer | | test.rs:208:15:208:20 | buffer | semmle.label | buffer | -| test.rs:212:13:212:14 | v1 | semmle.label | v1 | -| test.rs:212:18:212:21 | file | semmle.label | file | -| test.rs:212:18:212:31 | file.read_u8() [future, Ok] | semmle.label | file.read_u8() [future, Ok] | -| test.rs:212:18:212:37 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:212:18:212:38 | TryExpr | semmle.label | TryExpr | -| test.rs:213:13:213:14 | v2 | semmle.label | v2 | -| test.rs:213:18:213:21 | file | semmle.label | file | -| test.rs:213:18:213:32 | file.read_i16() [future, Ok] | semmle.label | file.read_i16() [future, Ok] | -| test.rs:213:18:213:38 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:213:18:213:39 | TryExpr | semmle.label | TryExpr | -| test.rs:214:13:214:14 | v3 | semmle.label | v3 | -| test.rs:214:18:214:21 | file | semmle.label | file | -| test.rs:214:18:214:32 | file.read_f32() [future, Ok] | semmle.label | file.read_f32() [future, Ok] | -| test.rs:214:18:214:38 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:214:18:214:39 | TryExpr | semmle.label | TryExpr | -| test.rs:215:13:215:14 | v4 | semmle.label | v4 | -| test.rs:215:18:215:21 | file | semmle.label | file | -| test.rs:215:18:215:35 | file.read_i64_le() [future, Ok] | semmle.label | file.read_i64_le() [future, Ok] | -| test.rs:215:18:215:41 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:215:18:215:42 | TryExpr | semmle.label | TryExpr | -| test.rs:216:14:216:15 | v1 | semmle.label | v1 | -| test.rs:217:14:217:15 | v2 | semmle.label | v2 | -| test.rs:218:14:218:15 | v3 | semmle.label | v3 | -| test.rs:219:14:219:15 | v4 | semmle.label | v4 | -| test.rs:224:9:224:12 | file | semmle.label | file | -| test.rs:224:23:224:33 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:224:28:224:33 | [post] buffer | semmle.label | [post] buffer | -| test.rs:225:14:225:20 | &buffer | semmle.label | &buffer | -| test.rs:225:15:225:20 | buffer | semmle.label | buffer | -| test.rs:231:13:231:18 | mut f1 | semmle.label | mut f1 | -| test.rs:231:22:231:65 | ... .open(...) [future, Ok] | semmle.label | ... .open(...) [future, Ok] | -| test.rs:231:22:231:71 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:231:22:231:72 | TryExpr | semmle.label | TryExpr | -| test.rs:231:52:231:55 | open | semmle.label | open | -| test.rs:233:22:233:23 | f1 | semmle.label | f1 | -| test.rs:233:30:233:40 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:233:35:233:40 | [post] buffer | semmle.label | [post] buffer | -| test.rs:234:14:234:20 | &buffer | semmle.label | &buffer | -| test.rs:234:15:234:20 | buffer | semmle.label | buffer | -| test.rs:262:9:262:16 | mut file | semmle.label | mut file | -| test.rs:262:20:262:44 | ...::open | semmle.label | ...::open | -| test.rs:262:20:262:56 | ...::open(...) [future, Ok] | semmle.label | ...::open(...) [future, Ok] | -| test.rs:262:20:262:62 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:262:20:262:63 | TryExpr | semmle.label | TryExpr | -| test.rs:266:22:266:25 | file | semmle.label | file | -| test.rs:266:32:266:42 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:266:37:266:42 | [post] buffer | semmle.label | [post] buffer | -| test.rs:267:14:267:20 | &buffer | semmle.label | &buffer | -| test.rs:267:15:267:20 | buffer | semmle.label | buffer | -| test.rs:273:13:273:18 | mut f1 | semmle.label | mut f1 | -| test.rs:273:22:273:69 | ... .open(...) [future, Ok] | semmle.label | ... .open(...) [future, Ok] | -| test.rs:273:22:273:75 | await ... [Ok] | semmle.label | await ... [Ok] | -| test.rs:273:22:273:76 | TryExpr | semmle.label | TryExpr | -| test.rs:273:56:273:59 | open | semmle.label | open | -| test.rs:275:22:275:23 | f1 | semmle.label | f1 | -| test.rs:275:30:275:40 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | -| test.rs:275:35:275:40 | [post] buffer | semmle.label | [post] buffer | -| test.rs:276:14:276:20 | &buffer | semmle.label | &buffer | -| test.rs:276:15:276:20 | buffer | semmle.label | buffer | +| test.rs:213:22:213:25 | file | semmle.label | file | +| test.rs:213:42:213:52 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:213:47:213:52 | [post] buffer | semmle.label | [post] buffer | +| test.rs:214:14:214:20 | &buffer | semmle.label | &buffer | +| test.rs:214:15:214:20 | buffer | semmle.label | buffer | +| test.rs:219:9:219:12 | file | semmle.label | file | +| test.rs:219:25:219:35 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:219:30:219:35 | [post] buffer | semmle.label | [post] buffer | +| test.rs:220:14:220:20 | &buffer | semmle.label | &buffer | +| test.rs:220:15:220:20 | buffer | semmle.label | buffer | +| test.rs:224:13:224:14 | v1 | semmle.label | v1 | +| test.rs:224:18:224:21 | file | semmle.label | file | +| test.rs:224:18:224:31 | file.read_u8() [future, Ok] | semmle.label | file.read_u8() [future, Ok] | +| test.rs:224:18:224:37 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:224:18:224:38 | TryExpr | semmle.label | TryExpr | +| test.rs:225:13:225:14 | v2 | semmle.label | v2 | +| test.rs:225:18:225:21 | file | semmle.label | file | +| test.rs:225:18:225:32 | file.read_i16() [future, Ok] | semmle.label | file.read_i16() [future, Ok] | +| test.rs:225:18:225:38 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:225:18:225:39 | TryExpr | semmle.label | TryExpr | +| test.rs:226:13:226:14 | v3 | semmle.label | v3 | +| test.rs:226:18:226:21 | file | semmle.label | file | +| test.rs:226:18:226:32 | file.read_f32() [future, Ok] | semmle.label | file.read_f32() [future, Ok] | +| test.rs:226:18:226:38 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:226:18:226:39 | TryExpr | semmle.label | TryExpr | +| test.rs:227:13:227:14 | v4 | semmle.label | v4 | +| test.rs:227:18:227:21 | file | semmle.label | file | +| test.rs:227:18:227:35 | file.read_i64_le() [future, Ok] | semmle.label | file.read_i64_le() [future, Ok] | +| test.rs:227:18:227:41 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:227:18:227:42 | TryExpr | semmle.label | TryExpr | +| test.rs:228:14:228:15 | v1 | semmle.label | v1 | +| test.rs:229:14:229:15 | v2 | semmle.label | v2 | +| test.rs:230:14:230:15 | v3 | semmle.label | v3 | +| test.rs:231:14:231:15 | v4 | semmle.label | v4 | +| test.rs:236:9:236:12 | file | semmle.label | file | +| test.rs:236:23:236:33 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:236:28:236:33 | [post] buffer | semmle.label | [post] buffer | +| test.rs:237:14:237:20 | &buffer | semmle.label | &buffer | +| test.rs:237:15:237:20 | buffer | semmle.label | buffer | +| test.rs:243:13:243:18 | mut f1 | semmle.label | mut f1 | +| test.rs:243:22:243:65 | ... .open(...) [future, Ok] | semmle.label | ... .open(...) [future, Ok] | +| test.rs:243:22:243:71 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:243:22:243:72 | TryExpr | semmle.label | TryExpr | +| test.rs:243:52:243:55 | open | semmle.label | open | +| test.rs:245:22:245:23 | f1 | semmle.label | f1 | +| test.rs:245:30:245:40 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:245:35:245:40 | [post] buffer | semmle.label | [post] buffer | +| test.rs:246:14:246:20 | &buffer | semmle.label | &buffer | +| test.rs:246:15:246:20 | buffer | semmle.label | buffer | +| test.rs:274:9:274:16 | mut file | semmle.label | mut file | +| test.rs:274:20:274:44 | ...::open | semmle.label | ...::open | +| test.rs:274:20:274:56 | ...::open(...) [future, Ok] | semmle.label | ...::open(...) [future, Ok] | +| test.rs:274:20:274:62 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:274:20:274:63 | TryExpr | semmle.label | TryExpr | +| test.rs:278:22:278:25 | file | semmle.label | file | +| test.rs:278:32:278:42 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:278:37:278:42 | [post] buffer | semmle.label | [post] buffer | +| test.rs:279:14:279:20 | &buffer | semmle.label | &buffer | +| test.rs:279:15:279:20 | buffer | semmle.label | buffer | +| test.rs:285:13:285:18 | mut f1 | semmle.label | mut f1 | +| test.rs:285:22:285:69 | ... .open(...) [future, Ok] | semmle.label | ... .open(...) [future, Ok] | +| test.rs:285:22:285:75 | await ... [Ok] | semmle.label | await ... [Ok] | +| test.rs:285:22:285:76 | TryExpr | semmle.label | TryExpr | +| test.rs:285:56:285:59 | open | semmle.label | open | +| test.rs:287:22:287:23 | f1 | semmle.label | f1 | +| test.rs:287:30:287:40 | [post] &mut buffer [&ref] | semmle.label | [post] &mut buffer [&ref] | +| test.rs:287:35:287:40 | [post] buffer | semmle.label | [post] buffer | +| test.rs:288:14:288:20 | &buffer | semmle.label | &buffer | +| test.rs:288:15:288:20 | buffer | semmle.label | buffer | subpaths testFailures #select | test.rs:13:14:13:19 | buffer | test.rs:12:31:12:43 | ...::read | test.rs:13:14:13:19 | buffer | $@ | test.rs:12:31:12:43 | ...::read | ...::read | | test.rs:18:14:18:19 | buffer | test.rs:17:31:17:38 | ...::read | test.rs:18:14:18:19 | buffer | $@ | test.rs:17:31:17:38 | ...::read | ...::read | | test.rs:23:14:23:19 | buffer | test.rs:22:22:22:39 | ...::read_to_string | test.rs:23:14:23:19 | buffer | $@ | test.rs:22:22:22:39 | ...::read_to_string | ...::read_to_string | -| test.rs:30:14:30:25 | path.clone() | test.rs:29:22:29:25 | path | test.rs:30:14:30:25 | path.clone() | $@ | test.rs:29:22:29:25 | path | path | -| test.rs:31:14:31:35 | ... .as_path() | test.rs:29:22:29:25 | path | test.rs:31:14:31:35 | ... .as_path() | $@ | test.rs:29:22:29:25 | path | path | -| test.rs:40:14:40:41 | ... .unwrap() | test.rs:29:22:29:25 | path | test.rs:40:14:40:41 | ... .unwrap() | $@ | test.rs:29:22:29:25 | path | path | -| test.rs:41:14:41:17 | path | test.rs:29:22:29:25 | path | test.rs:41:14:41:17 | path | $@ | test.rs:29:22:29:25 | path | path | -| test.rs:44:14:44:30 | file_name.clone() | test.rs:43:27:43:35 | file_name | test.rs:44:14:44:30 | file_name.clone() | $@ | test.rs:43:27:43:35 | file_name | file_name | -| test.rs:45:14:45:53 | ... .unwrap() | test.rs:43:27:43:35 | file_name | test.rs:45:14:45:53 | ... .unwrap() | $@ | test.rs:43:27:43:35 | file_name | file_name | -| test.rs:49:14:49:22 | file_name | test.rs:43:27:43:35 | file_name | test.rs:49:14:49:22 | file_name | $@ | test.rs:43:27:43:35 | file_name | file_name | -| test.rs:66:14:66:19 | target | test.rs:65:22:65:34 | ...::read_link | test.rs:66:14:66:19 | target | $@ | test.rs:65:22:65:34 | ...::read_link | ...::read_link | -| test.rs:75:14:75:19 | buffer | test.rs:74:31:74:45 | ...::read | test.rs:75:14:75:19 | buffer | $@ | test.rs:74:31:74:45 | ...::read | ...::read | -| test.rs:80:14:80:19 | buffer | test.rs:79:31:79:45 | ...::read | test.rs:80:14:80:19 | buffer | $@ | test.rs:79:31:79:45 | ...::read | ...::read | -| test.rs:85:14:85:19 | buffer | test.rs:84:22:84:46 | ...::read_to_string | test.rs:85:14:85:19 | buffer | $@ | test.rs:84:22:84:46 | ...::read_to_string | ...::read_to_string | -| test.rs:92:14:92:17 | path | test.rs:90:26:90:29 | path | test.rs:92:14:92:17 | path | $@ | test.rs:90:26:90:29 | path | path | -| test.rs:93:14:93:22 | file_name | test.rs:91:31:91:39 | file_name | test.rs:93:14:93:22 | file_name | $@ | test.rs:91:31:91:39 | file_name | file_name | -| test.rs:98:14:98:19 | target | test.rs:97:22:97:41 | ...::read_link | test.rs:98:14:98:19 | target | $@ | test.rs:97:22:97:41 | ...::read_link | ...::read_link | -| test.rs:112:14:112:20 | &buffer | test.rs:107:20:107:38 | ...::open | test.rs:112:14:112:20 | &buffer | $@ | test.rs:107:20:107:38 | ...::open | ...::open | -| test.rs:118:14:118:20 | &buffer | test.rs:107:20:107:38 | ...::open | test.rs:118:14:118:20 | &buffer | $@ | test.rs:107:20:107:38 | ...::open | ...::open | -| test.rs:124:14:124:20 | &buffer | test.rs:107:20:107:38 | ...::open | test.rs:124:14:124:20 | &buffer | $@ | test.rs:107:20:107:38 | ...::open | ...::open | -| test.rs:130:14:130:20 | &buffer | test.rs:107:20:107:38 | ...::open | test.rs:130:14:130:20 | &buffer | $@ | test.rs:107:20:107:38 | ...::open | ...::open | -| test.rs:134:14:134:17 | byte | test.rs:107:20:107:38 | ...::open | test.rs:134:14:134:17 | byte | $@ | test.rs:107:20:107:38 | ...::open | ...::open | -| test.rs:143:14:143:20 | &buffer | test.rs:140:50:140:53 | open | test.rs:143:14:143:20 | &buffer | $@ | test.rs:140:50:140:53 | open | open | -| test.rs:150:14:150:20 | &buffer | test.rs:147:67:147:70 | open | test.rs:150:14:150:20 | &buffer | $@ | test.rs:147:67:147:70 | open | open | -| test.rs:157:14:157:20 | &buffer | test.rs:154:101:154:104 | open | test.rs:157:14:157:20 | &buffer | $@ | test.rs:154:101:154:104 | open | open | -| test.rs:168:14:168:20 | &buffer | test.rs:164:21:164:39 | ...::open | test.rs:168:14:168:20 | &buffer | $@ | test.rs:164:21:164:39 | ...::open | ...::open | -| test.rs:168:14:168:20 | &buffer | test.rs:165:21:165:39 | ...::open | test.rs:168:14:168:20 | &buffer | $@ | test.rs:165:21:165:39 | ...::open | ...::open | -| test.rs:176:14:176:20 | &buffer | test.rs:173:21:173:39 | ...::open | test.rs:176:14:176:20 | &buffer | $@ | test.rs:173:21:173:39 | ...::open | ...::open | -| test.rs:190:14:190:20 | &buffer | test.rs:185:20:185:40 | ...::open | test.rs:190:14:190:20 | &buffer | $@ | test.rs:185:20:185:40 | ...::open | ...::open | -| test.rs:196:14:196:20 | &buffer | test.rs:185:20:185:40 | ...::open | test.rs:196:14:196:20 | &buffer | $@ | test.rs:185:20:185:40 | ...::open | ...::open | -| test.rs:202:14:202:20 | &buffer | test.rs:185:20:185:40 | ...::open | test.rs:202:14:202:20 | &buffer | $@ | test.rs:185:20:185:40 | ...::open | ...::open | -| test.rs:208:14:208:20 | &buffer | test.rs:185:20:185:40 | ...::open | test.rs:208:14:208:20 | &buffer | $@ | test.rs:185:20:185:40 | ...::open | ...::open | -| test.rs:216:14:216:15 | v1 | test.rs:185:20:185:40 | ...::open | test.rs:216:14:216:15 | v1 | $@ | test.rs:185:20:185:40 | ...::open | ...::open | -| test.rs:217:14:217:15 | v2 | test.rs:185:20:185:40 | ...::open | test.rs:217:14:217:15 | v2 | $@ | test.rs:185:20:185:40 | ...::open | ...::open | -| test.rs:218:14:218:15 | v3 | test.rs:185:20:185:40 | ...::open | test.rs:218:14:218:15 | v3 | $@ | test.rs:185:20:185:40 | ...::open | ...::open | -| test.rs:219:14:219:15 | v4 | test.rs:185:20:185:40 | ...::open | test.rs:219:14:219:15 | v4 | $@ | test.rs:185:20:185:40 | ...::open | ...::open | -| test.rs:225:14:225:20 | &buffer | test.rs:185:20:185:40 | ...::open | test.rs:225:14:225:20 | &buffer | $@ | test.rs:185:20:185:40 | ...::open | ...::open | -| test.rs:234:14:234:20 | &buffer | test.rs:231:52:231:55 | open | test.rs:234:14:234:20 | &buffer | $@ | test.rs:231:52:231:55 | open | open | -| test.rs:267:14:267:20 | &buffer | test.rs:262:20:262:44 | ...::open | test.rs:267:14:267:20 | &buffer | $@ | test.rs:262:20:262:44 | ...::open | ...::open | -| test.rs:276:14:276:20 | &buffer | test.rs:273:56:273:59 | open | test.rs:276:14:276:20 | &buffer | $@ | test.rs:273:56:273:59 | open | open | +| test.rs:31:14:31:25 | path.clone() | test.rs:30:22:30:25 | path | test.rs:31:14:31:25 | path.clone() | $@ | test.rs:30:22:30:25 | path | path | +| test.rs:32:14:32:35 | ... .as_path() | test.rs:30:22:30:25 | path | test.rs:32:14:32:35 | ... .as_path() | $@ | test.rs:30:22:30:25 | path | path | +| test.rs:33:14:33:42 | ... .into_os_string() | test.rs:30:22:30:25 | path | test.rs:33:14:33:42 | ... .into_os_string() | $@ | test.rs:30:22:30:25 | path | path | +| test.rs:34:14:34:69 | ...::from(...) | test.rs:30:22:30:25 | path | test.rs:34:14:34:69 | ...::from(...) | $@ | test.rs:30:22:30:25 | path | path | +| test.rs:35:14:35:37 | ... .as_os_str() | test.rs:30:22:30:25 | path | test.rs:35:14:35:37 | ... .as_os_str() | $@ | test.rs:30:22:30:25 | path | path | +| test.rs:36:14:36:41 | ... .as_mut_os_str() | test.rs:30:22:30:25 | path | test.rs:36:14:36:41 | ... .as_mut_os_str() | $@ | test.rs:30:22:30:25 | path | path | +| test.rs:37:14:37:26 | path.to_str() | test.rs:30:22:30:25 | path | test.rs:37:14:37:26 | path.to_str() | $@ | test.rs:30:22:30:25 | path | path | +| test.rs:38:14:38:31 | path.to_path_buf() | test.rs:30:22:30:25 | path | test.rs:38:14:38:31 | path.to_path_buf() | $@ | test.rs:30:22:30:25 | path | path | +| test.rs:39:14:39:38 | ... .unwrap() | test.rs:30:22:30:25 | path | test.rs:39:14:39:38 | ... .unwrap() | $@ | test.rs:30:22:30:25 | path | path | +| test.rs:40:14:40:38 | ... .unwrap() | test.rs:30:22:30:25 | path | test.rs:40:14:40:38 | ... .unwrap() | $@ | test.rs:30:22:30:25 | path | path | +| test.rs:41:14:41:41 | ... .unwrap() | test.rs:30:22:30:25 | path | test.rs:41:14:41:41 | ... .unwrap() | $@ | test.rs:30:22:30:25 | path | path | +| test.rs:42:14:42:17 | path | test.rs:30:22:30:25 | path | test.rs:42:14:42:17 | path | $@ | test.rs:30:22:30:25 | path | path | +| test.rs:45:14:45:30 | file_name.clone() | test.rs:44:27:44:35 | file_name | test.rs:45:14:45:30 | file_name.clone() | $@ | test.rs:44:27:44:35 | file_name | file_name | +| test.rs:46:14:46:53 | ... .unwrap() | test.rs:44:27:44:35 | file_name | test.rs:46:14:46:53 | ... .unwrap() | $@ | test.rs:44:27:44:35 | file_name | file_name | +| test.rs:47:14:47:40 | ... .unwrap() | test.rs:44:27:44:35 | file_name | test.rs:47:14:47:40 | ... .unwrap() | $@ | test.rs:44:27:44:35 | file_name | file_name | +| test.rs:48:14:48:49 | ... .to_mut() | test.rs:44:27:44:35 | file_name | test.rs:48:14:48:49 | ... .to_mut() | $@ | test.rs:44:27:44:35 | file_name | file_name | +| test.rs:49:14:49:49 | ... .as_encoded_bytes() | test.rs:44:27:44:35 | file_name | test.rs:49:14:49:49 | ... .as_encoded_bytes() | $@ | test.rs:44:27:44:35 | file_name | file_name | +| test.rs:50:14:50:22 | file_name | test.rs:44:27:44:35 | file_name | test.rs:50:14:50:22 | file_name | $@ | test.rs:44:27:44:35 | file_name | file_name | +| test.rs:69:14:69:19 | target | test.rs:68:22:68:34 | ...::read_link | test.rs:69:14:69:19 | target | $@ | test.rs:68:22:68:34 | ...::read_link | ...::read_link | +| test.rs:78:14:78:19 | buffer | test.rs:77:31:77:45 | ...::read | test.rs:78:14:78:19 | buffer | $@ | test.rs:77:31:77:45 | ...::read | ...::read | +| test.rs:83:14:83:19 | buffer | test.rs:82:31:82:45 | ...::read | test.rs:83:14:83:19 | buffer | $@ | test.rs:82:31:82:45 | ...::read | ...::read | +| test.rs:88:14:88:19 | buffer | test.rs:87:22:87:46 | ...::read_to_string | test.rs:88:14:88:19 | buffer | $@ | test.rs:87:22:87:46 | ...::read_to_string | ...::read_to_string | +| test.rs:95:14:95:17 | path | test.rs:93:26:93:29 | path | test.rs:95:14:95:17 | path | $@ | test.rs:93:26:93:29 | path | path | +| test.rs:96:14:96:22 | file_name | test.rs:94:31:94:39 | file_name | test.rs:96:14:96:22 | file_name | $@ | test.rs:94:31:94:39 | file_name | file_name | +| test.rs:101:14:101:19 | target | test.rs:100:22:100:41 | ...::read_link | test.rs:101:14:101:19 | target | $@ | test.rs:100:22:100:41 | ...::read_link | ...::read_link | +| test.rs:115:14:115:20 | &buffer | test.rs:110:20:110:38 | ...::open | test.rs:115:14:115:20 | &buffer | $@ | test.rs:110:20:110:38 | ...::open | ...::open | +| test.rs:121:14:121:20 | &buffer | test.rs:110:20:110:38 | ...::open | test.rs:121:14:121:20 | &buffer | $@ | test.rs:110:20:110:38 | ...::open | ...::open | +| test.rs:127:14:127:20 | &buffer | test.rs:110:20:110:38 | ...::open | test.rs:127:14:127:20 | &buffer | $@ | test.rs:110:20:110:38 | ...::open | ...::open | +| test.rs:133:14:133:20 | &buffer | test.rs:110:20:110:38 | ...::open | test.rs:133:14:133:20 | &buffer | $@ | test.rs:110:20:110:38 | ...::open | ...::open | +| test.rs:137:14:137:17 | byte | test.rs:110:20:110:38 | ...::open | test.rs:137:14:137:17 | byte | $@ | test.rs:110:20:110:38 | ...::open | ...::open | +| test.rs:146:14:146:20 | &buffer | test.rs:143:50:143:53 | open | test.rs:146:14:146:20 | &buffer | $@ | test.rs:143:50:143:53 | open | open | +| test.rs:156:14:156:20 | &buffer | test.rs:152:14:152:17 | open | test.rs:156:14:156:20 | &buffer | $@ | test.rs:152:14:152:17 | open | open | +| test.rs:169:14:169:20 | &buffer | test.rs:165:14:165:17 | open | test.rs:169:14:169:20 | &buffer | $@ | test.rs:165:14:165:17 | open | open | +| test.rs:180:14:180:20 | &buffer | test.rs:176:21:176:39 | ...::open | test.rs:180:14:180:20 | &buffer | $@ | test.rs:176:21:176:39 | ...::open | ...::open | +| test.rs:180:14:180:20 | &buffer | test.rs:177:21:177:39 | ...::open | test.rs:180:14:180:20 | &buffer | $@ | test.rs:177:21:177:39 | ...::open | ...::open | +| test.rs:188:14:188:20 | &buffer | test.rs:185:21:185:39 | ...::open | test.rs:188:14:188:20 | &buffer | $@ | test.rs:185:21:185:39 | ...::open | ...::open | +| test.rs:202:14:202:20 | &buffer | test.rs:197:20:197:40 | ...::open | test.rs:202:14:202:20 | &buffer | $@ | test.rs:197:20:197:40 | ...::open | ...::open | +| test.rs:208:14:208:20 | &buffer | test.rs:197:20:197:40 | ...::open | test.rs:208:14:208:20 | &buffer | $@ | test.rs:197:20:197:40 | ...::open | ...::open | +| test.rs:214:14:214:20 | &buffer | test.rs:197:20:197:40 | ...::open | test.rs:214:14:214:20 | &buffer | $@ | test.rs:197:20:197:40 | ...::open | ...::open | +| test.rs:220:14:220:20 | &buffer | test.rs:197:20:197:40 | ...::open | test.rs:220:14:220:20 | &buffer | $@ | test.rs:197:20:197:40 | ...::open | ...::open | +| test.rs:228:14:228:15 | v1 | test.rs:197:20:197:40 | ...::open | test.rs:228:14:228:15 | v1 | $@ | test.rs:197:20:197:40 | ...::open | ...::open | +| test.rs:229:14:229:15 | v2 | test.rs:197:20:197:40 | ...::open | test.rs:229:14:229:15 | v2 | $@ | test.rs:197:20:197:40 | ...::open | ...::open | +| test.rs:230:14:230:15 | v3 | test.rs:197:20:197:40 | ...::open | test.rs:230:14:230:15 | v3 | $@ | test.rs:197:20:197:40 | ...::open | ...::open | +| test.rs:231:14:231:15 | v4 | test.rs:197:20:197:40 | ...::open | test.rs:231:14:231:15 | v4 | $@ | test.rs:197:20:197:40 | ...::open | ...::open | +| test.rs:237:14:237:20 | &buffer | test.rs:197:20:197:40 | ...::open | test.rs:237:14:237:20 | &buffer | $@ | test.rs:197:20:197:40 | ...::open | ...::open | +| test.rs:246:14:246:20 | &buffer | test.rs:243:52:243:55 | open | test.rs:246:14:246:20 | &buffer | $@ | test.rs:243:52:243:55 | open | open | +| test.rs:279:14:279:20 | &buffer | test.rs:274:20:274:44 | ...::open | test.rs:279:14:279:20 | &buffer | $@ | test.rs:274:20:274:44 | ...::open | ...::open | +| test.rs:288:14:288:20 | &buffer | test.rs:285:56:285:59 | open | test.rs:288:14:288:20 | &buffer | $@ | test.rs:285:56:285:59 | open | open | diff --git a/rust/ql/test/library-tests/dataflow/sources/file/TaintSources.expected b/rust/ql/test/library-tests/dataflow/sources/file/TaintSources.expected index dd1b94de717..dc17269abe8 100644 --- a/rust/ql/test/library-tests/dataflow/sources/file/TaintSources.expected +++ b/rust/ql/test/library-tests/dataflow/sources/file/TaintSources.expected @@ -1,33 +1,33 @@ | test.rs:12:31:12:43 | ...::read | Flow source 'FileSource' of type file (DEFAULT). | | test.rs:17:31:17:38 | ...::read | Flow source 'FileSource' of type file (DEFAULT). | | test.rs:22:22:22:39 | ...::read_to_string | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:26:18:26:29 | ...::read_dir | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:29:22:29:25 | path | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:43:27:43:35 | file_name | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:51:52:51:59 | read_dir | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:54:22:54:25 | path | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:55:27:55:35 | file_name | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:57:56:57:63 | read_dir | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:60:22:60:25 | path | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:61:27:61:35 | file_name | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:65:22:65:34 | ...::read_link | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:74:31:74:45 | ...::read | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:79:31:79:45 | ...::read | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:84:22:84:46 | ...::read_to_string | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:90:26:90:29 | path | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:91:31:91:39 | file_name | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:97:22:97:41 | ...::read_link | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:107:20:107:38 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:140:50:140:53 | open | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:147:67:147:70 | open | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:154:101:154:104 | open | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:164:21:164:39 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:165:21:165:39 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:173:21:173:39 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:185:20:185:40 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:231:52:231:55 | open | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:241:21:241:41 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:242:21:242:41 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:250:21:250:41 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:262:20:262:44 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | -| test.rs:273:56:273:59 | open | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:27:26:27:37 | ...::read_dir | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:30:22:30:25 | path | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:44:27:44:35 | file_name | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:53:60:53:67 | read_dir | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:56:22:56:25 | path | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:57:27:57:35 | file_name | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:60:64:60:71 | read_dir | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:63:22:63:25 | path | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:64:27:64:35 | file_name | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:68:22:68:34 | ...::read_link | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:77:31:77:45 | ...::read | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:82:31:82:45 | ...::read | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:87:22:87:46 | ...::read_to_string | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:93:26:93:29 | path | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:94:31:94:39 | file_name | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:100:22:100:41 | ...::read_link | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:110:20:110:38 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:143:50:143:53 | open | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:152:14:152:17 | open | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:165:14:165:17 | open | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:176:21:176:39 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:177:21:177:39 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:185:21:185:39 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:197:20:197:40 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:243:52:243:55 | open | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:253:21:253:41 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:254:21:254:41 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:262:21:262:41 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:274:20:274:44 | ...::open | Flow source 'FileSource' of type file (DEFAULT). | +| test.rs:285:56:285:59 | open | Flow source 'FileSource' of type file (DEFAULT). | diff --git a/rust/ql/test/library-tests/dataflow/sources/file/test.rs b/rust/ql/test/library-tests/dataflow/sources/file/test.rs index 18090a54568..5752c07f4d9 100644 --- a/rust/ql/test/library-tests/dataflow/sources/file/test.rs +++ b/rust/ql/test/library-tests/dataflow/sources/file/test.rs @@ -1,11 +1,11 @@ -fn sink(_: T) { } +fn sink(_: T) {} // --- tests --- +use async_std::io::ReadExt; use std::fs; use std::io::Read; use tokio::io::AsyncReadExt; -use async_std::io::ReadExt; fn test_fs() -> Result<(), Box> { { @@ -23,43 +23,46 @@ fn test_fs() -> Result<(), Box> { sink(buffer); // $ hasTaintFlow="file.txt" } - for entry in fs::read_dir("directory")? { // $ Alert[rust/summary/taint-sources] + #[rustfmt::skip] + let _ = for entry in fs::read_dir("directory")? { // $ Alert[rust/summary/taint-sources] let e = entry?; let path = e.path(); // $ Alert[rust/summary/taint-sources] sink(path.clone()); // $ hasTaintFlow sink(path.clone().as_path()); // $ hasTaintFlow - sink(path.clone().into_os_string()); // $ MISSING: hasTaintFlow - sink(std::path::PathBuf::from(path.clone().into_boxed_path())); // $ MISSING: hasTaintFlow - sink(path.clone().as_os_str()); // $ MISSING: hasTaintFlow - sink(path.clone().as_mut_os_str()); // $ MISSING: hasTaintFlow - sink(path.to_str()); // $ MISSING: hasTaintFlow - sink(path.to_path_buf()); // $ MISSING: hasTaintFlow - sink(path.file_name().unwrap()); // $ MISSING: hasTaintFlow - sink(path.extension().unwrap()); // $ MISSING: hasTaintFlow + sink(path.clone().into_os_string()); // $ hasTaintFlow + sink(std::path::PathBuf::from(path.clone().into_boxed_path())); // $ hasTaintFlow + sink(path.clone().as_os_str()); // $ hasTaintFlow + sink(path.clone().as_mut_os_str()); // $ hasTaintFlow + sink(path.to_str()); // $ hasTaintFlow + sink(path.to_path_buf()); // $ hasTaintFlow + sink(path.file_name().unwrap()); // $ hasTaintFlow + sink(path.extension().unwrap()); // $ hasTaintFlow sink(path.canonicalize().unwrap()); // $ hasTaintFlow sink(path); // $ hasTaintFlow let file_name = e.file_name(); // $ Alert[rust/summary/taint-sources] sink(file_name.clone()); // $ hasTaintFlow sink(file_name.clone().into_string().unwrap()); // $ hasTaintFlow - sink(file_name.to_str().unwrap()); // $ MISSING: hasTaintFlow - sink(file_name.to_string_lossy().to_mut()); // $ MISSING: hasTaintFlow - sink(file_name.clone().as_encoded_bytes()); // $ MISSING: hasTaintFlow + sink(file_name.to_str().unwrap()); // $ hasTaintFlow + sink(file_name.to_string_lossy().to_mut()); // $ hasTaintFlow + sink(file_name.clone().as_encoded_bytes()); // $ hasTaintFlow sink(file_name); // $ hasTaintFlow - } - for entry in std::path::Path::new("directory").read_dir()? { // $ Alert[rust/summary/taint-sources] + }; + #[rustfmt::skip] + let _ = for entry in std::path::Path::new("directory").read_dir()? { // $ Alert[rust/summary/taint-sources] let e = entry?; let path = e.path(); // $ Alert[rust/summary/taint-sources] let file_name = e.file_name(); // $ Alert[rust/summary/taint-sources] - } - for entry in std::path::PathBuf::from("directory").read_dir()? { // $ Alert[rust/summary/taint-sources] + }; + #[rustfmt::skip] + let _ = for entry in std::path::PathBuf::from("directory").read_dir()? { // $ Alert[rust/summary/taint-sources] let e = entry?; let path = e.path(); // $ Alert[rust/summary/taint-sources] let file_name = e.file_name(); // $ Alert[rust/summary/taint-sources] - } + }; { let target = fs::read_link("symlink.txt")?; // $ Alert[rust/summary/taint-sources] @@ -144,14 +147,23 @@ fn test_io_file() -> std::io::Result<()> { } { - let mut f2 = std::fs::OpenOptions::new().create_new(true).open("f2.txt").unwrap(); // $ Alert[rust/summary/taint-sources] + let mut f2 = std::fs::OpenOptions::new() + .create_new(true) + .open("f2.txt") // $ Alert[rust/summary/taint-sources] + .unwrap(); let mut buffer = [0u8; 1024]; let _bytes = f2.read(&mut buffer)?; sink(&buffer); // $ hasTaintFlow="f2.txt" } { - let mut f3 = std::fs::OpenOptions::new().read(true).write(true).truncate(true).create(true).open("f3.txt").unwrap(); // $ Alert[rust/summary/taint-sources] + let mut f3 = std::fs::OpenOptions::new() + .read(true) + .write(true) + .truncate(true) + .create(true) + .open("f3.txt") // $ Alert[rust/summary/taint-sources] + .unwrap(); let mut buffer = [0u8; 1024]; let _bytes = f3.read(&mut buffer)?; sink(&buffer); // $ hasTaintFlow="f3.txt" From 609eb17e3027d39cad523416a34016c198a8b0cc Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 8 Jan 2026 15:00:42 +0100 Subject: [PATCH 56/63] Rust: Add more models --- rust/ql/lib/codeql/rust/frameworks/http.model.yml | 7 +++++++ rust/ql/lib/codeql/rust/frameworks/stdlib/alloc.model.yml | 1 + rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml | 2 ++ rust/ql/lib/codeql/rust/frameworks/stdlib/io.model.yml | 1 + 4 files changed, 11 insertions(+) diff --git a/rust/ql/lib/codeql/rust/frameworks/http.model.yml b/rust/ql/lib/codeql/rust/frameworks/http.model.yml index 6a497f34647..5c527cc1d40 100644 --- a/rust/ql/lib/codeql/rust/frameworks/http.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/http.model.yml @@ -1,4 +1,11 @@ extensions: + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["::body", "Argument[self].Reference.Field[http::response::Response::body]", "ReturnValue.Reference", "value", "manual"] + - ["::body_mut", "Argument[self].Reference.Field[http::response::Response::body]", "ReturnValue.Reference", "value", "manual"] + - ["::into_body", "Argument[self].Field[http::response::Response::body]", "ReturnValue", "value", "manual"] - addsTo: pack: codeql/rust-all extensible: sourceModel diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/alloc.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/alloc.model.yml index cfaef568f1f..84579743563 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/alloc.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/alloc.model.yml @@ -55,3 +55,4 @@ extensions: - ["::add", "Argument[0].Reference", "ReturnValue", "taint", "manual"] # Vec - ["alloc::vec::from_elem", "Argument[0]", "ReturnValue.Element", "value", "manual"] + - ["::deref", "Argument[self].Reference.Element", "ReturnValue.Reference.Element", "value", "manual"] \ No newline at end of file diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml index 0844dae5612..3ff02d732b0 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml @@ -123,6 +123,8 @@ extensions: - ["<_ as core::cmp::Ord>::min", "Argument[self,0]", "ReturnValue", "value", "manual"] - ["<_ as core::cmp::Ord>::max", "Argument[self,0]", "ReturnValue", "value", "manual"] - ["<_ as core::cmp::Ord>::clamp", "Argument[self,0,1]", "ReturnValue", "value", "manual"] + # Slice + - ["<[]>::get", "Argument[self].Reference.Element", "ReturnValue.Field[core::option::Option::Some(0)].Reference", "value", "manual"] - addsTo: pack: codeql/rust-all extensible: sourceModel diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/io.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/io.model.yml index 064c2cd19cf..afb6757ef66 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/io.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/io.model.yml @@ -24,4 +24,5 @@ extensions: - ["<_ as std::io::Read>::chain", "Argument[0]", "ReturnValue", "taint", "manual"] - ["<_ as std::io::Read>::take", "Argument[self]", "ReturnValue", "taint", "manual"] - ["::lock", "Argument[self].Reference", "ReturnValue", "taint", "manual"] + - ["::read_line", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"] - ["::next", "Argument[self].Reference.Element", "ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]", "value", "manual"] From f3d78a4e0bcc60bcd11199bc6357d83379851872 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Thu, 8 Jan 2026 21:09:55 +0100 Subject: [PATCH 57/63] Rust: Update expected test output --- .../dataflow/sources/net/InlineFlow.expected | 68 +++++++---- .../dataflow/sources/net/test.rs | 6 +- .../security/CWE-117/LogInjection.expected | 114 ++++++++++++++++-- .../test/query-tests/security/CWE-117/main.rs | 16 +-- .../CWE-295/DisabledCertificateCheck.expected | 46 +++++-- .../test/query-tests/security/CWE-295/main.rs | 4 +- 6 files changed, 198 insertions(+), 56 deletions(-) diff --git a/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected b/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected index d9f811bd341..31a41522450 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected +++ b/rust/ql/test/library-tests/dataflow/sources/net/InlineFlow.expected @@ -28,46 +28,49 @@ models | 27 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | | 28 | Summary: ::connect; Argument[1]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | | 29 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 30 | Summary: ::bytes; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 31 | Summary: ::chunk; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | -| 32 | Summary: ::text; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | -| 33 | Summary: ::bytes; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 34 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 35 | Summary: ::text_with_charset; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 36 | Summary: ::new; Argument[0]; ReturnValue; taint | -| 37 | Summary: ::peek; Argument[self].Reference; Argument[0].Reference; taint | -| 38 | Summary: ::try_read; Argument[self].Reference; Argument[0].Reference; taint | -| 39 | Summary: ::try_read_buf; Argument[self].Reference; Argument[0].Reference; taint | +| 30 | Summary: ::body; Argument[self].Reference.Field[http::response::Response::body]; ReturnValue.Reference; value | +| 31 | Summary: ::body_mut; Argument[self].Reference.Field[http::response::Response::body]; ReturnValue.Reference; value | +| 32 | Summary: ::into_body; Argument[self].Field[http::response::Response::body]; ReturnValue; value | +| 33 | Summary: ::bytes; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 34 | Summary: ::chunk; Argument[self].Reference; ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]; taint | +| 35 | Summary: ::text; Argument[self]; ReturnValue.Future.Field[core::result::Result::Ok(0)]; taint | +| 36 | Summary: ::bytes; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 37 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 38 | Summary: ::text_with_charset; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 39 | Summary: ::new; Argument[0]; ReturnValue; taint | +| 40 | Summary: ::peek; Argument[self].Reference; Argument[0].Reference; taint | +| 41 | Summary: ::try_read; Argument[self].Reference; Argument[0].Reference; taint | +| 42 | Summary: ::try_read_buf; Argument[self].Reference; Argument[0].Reference; taint | edges | test.rs:11:9:11:22 | remote_string1 | test.rs:12:10:12:23 | remote_string1 | provenance | | | test.rs:11:26:11:47 | ...::get | test.rs:11:26:11:62 | ...::get(...) [Ok] | provenance | Src:MaD:7 | | test.rs:11:26:11:62 | ...::get(...) [Ok] | test.rs:11:26:11:63 | TryExpr | provenance | | -| test.rs:11:26:11:63 | TryExpr | test.rs:11:26:11:70 | ... .text() [Ok] | provenance | MaD:34 | +| test.rs:11:26:11:63 | TryExpr | test.rs:11:26:11:70 | ... .text() [Ok] | provenance | MaD:37 | | test.rs:11:26:11:70 | ... .text() [Ok] | test.rs:11:26:11:71 | TryExpr | provenance | | | test.rs:11:26:11:71 | TryExpr | test.rs:11:9:11:22 | remote_string1 | provenance | | | test.rs:14:9:14:22 | remote_string2 | test.rs:15:10:15:23 | remote_string2 | provenance | | | test.rs:14:26:14:47 | ...::get | test.rs:14:26:14:62 | ...::get(...) [Ok] | provenance | Src:MaD:7 | | test.rs:14:26:14:62 | ...::get(...) [Ok] | test.rs:14:26:14:71 | ... .unwrap() | provenance | MaD:27 | -| test.rs:14:26:14:71 | ... .unwrap() | test.rs:14:26:14:78 | ... .text() [Ok] | provenance | MaD:34 | +| test.rs:14:26:14:71 | ... .unwrap() | test.rs:14:26:14:78 | ... .text() [Ok] | provenance | MaD:37 | | test.rs:14:26:14:78 | ... .text() [Ok] | test.rs:14:26:14:87 | ... .unwrap() | provenance | MaD:27 | | test.rs:14:26:14:87 | ... .unwrap() | test.rs:14:9:14:22 | remote_string2 | provenance | | | test.rs:17:9:17:22 | remote_string3 | test.rs:18:10:18:23 | remote_string3 | provenance | | | test.rs:17:26:17:47 | ...::get | test.rs:17:26:17:62 | ...::get(...) [Ok] | provenance | Src:MaD:7 | | test.rs:17:26:17:62 | ...::get(...) [Ok] | test.rs:17:26:17:71 | ... .unwrap() | provenance | MaD:27 | -| test.rs:17:26:17:71 | ... .unwrap() | test.rs:17:26:17:98 | ... .text_with_charset(...) [Ok] | provenance | MaD:35 | +| test.rs:17:26:17:71 | ... .unwrap() | test.rs:17:26:17:98 | ... .text_with_charset(...) [Ok] | provenance | MaD:38 | | test.rs:17:26:17:98 | ... .text_with_charset(...) [Ok] | test.rs:17:26:17:107 | ... .unwrap() | provenance | MaD:27 | | test.rs:17:26:17:107 | ... .unwrap() | test.rs:17:9:17:22 | remote_string3 | provenance | | | test.rs:20:9:20:22 | remote_string4 | test.rs:21:10:21:23 | remote_string4 | provenance | | | test.rs:20:26:20:47 | ...::get | test.rs:20:26:20:62 | ...::get(...) [Ok] | provenance | Src:MaD:7 | | test.rs:20:26:20:62 | ...::get(...) [Ok] | test.rs:20:26:20:71 | ... .unwrap() | provenance | MaD:27 | -| test.rs:20:26:20:71 | ... .unwrap() | test.rs:20:26:20:79 | ... .bytes() [Ok] | provenance | MaD:33 | +| test.rs:20:26:20:71 | ... .unwrap() | test.rs:20:26:20:79 | ... .bytes() [Ok] | provenance | MaD:36 | | test.rs:20:26:20:79 | ... .bytes() [Ok] | test.rs:20:26:20:88 | ... .unwrap() | provenance | MaD:27 | | test.rs:20:26:20:88 | ... .unwrap() | test.rs:20:9:20:22 | remote_string4 | provenance | | | test.rs:23:9:23:22 | remote_string5 | test.rs:24:10:24:23 | remote_string5 | provenance | | | test.rs:23:26:23:37 | ...::get | test.rs:23:26:23:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:8 | | test.rs:23:26:23:52 | ...::get(...) [future, Ok] | test.rs:23:26:23:58 | await ... [Ok] | provenance | | | test.rs:23:26:23:58 | await ... [Ok] | test.rs:23:26:23:59 | TryExpr | provenance | | -| test.rs:23:26:23:59 | TryExpr | test.rs:23:26:23:66 | ... .text() [future, Ok] | provenance | MaD:32 | +| test.rs:23:26:23:59 | TryExpr | test.rs:23:26:23:66 | ... .text() [future, Ok] | provenance | MaD:35 | | test.rs:23:26:23:66 | ... .text() [future, Ok] | test.rs:23:26:23:72 | await ... [Ok] | provenance | | | test.rs:23:26:23:72 | await ... [Ok] | test.rs:23:26:23:73 | TryExpr | provenance | | | test.rs:23:26:23:73 | TryExpr | test.rs:23:9:23:22 | remote_string5 | provenance | | @@ -75,7 +78,7 @@ edges | test.rs:26:26:26:37 | ...::get | test.rs:26:26:26:52 | ...::get(...) [future, Ok] | provenance | Src:MaD:8 | | test.rs:26:26:26:52 | ...::get(...) [future, Ok] | test.rs:26:26:26:58 | await ... [Ok] | provenance | | | test.rs:26:26:26:58 | await ... [Ok] | test.rs:26:26:26:59 | TryExpr | provenance | | -| test.rs:26:26:26:59 | TryExpr | test.rs:26:26:26:67 | ... .bytes() [future, Ok] | provenance | MaD:30 | +| test.rs:26:26:26:59 | TryExpr | test.rs:26:26:26:67 | ... .bytes() [future, Ok] | provenance | MaD:33 | | test.rs:26:26:26:67 | ... .bytes() [future, Ok] | test.rs:26:26:26:73 | await ... [Ok] | provenance | | | test.rs:26:26:26:73 | await ... [Ok] | test.rs:26:26:26:74 | TryExpr | provenance | | | test.rs:26:26:26:74 | TryExpr | test.rs:26:9:26:22 | remote_string6 | provenance | | @@ -85,13 +88,13 @@ edges | test.rs:29:24:29:50 | ...::get(...) [future, Ok] | test.rs:29:24:29:56 | await ... [Ok] | provenance | | | test.rs:29:24:29:56 | await ... [Ok] | test.rs:29:24:29:57 | TryExpr | provenance | | | test.rs:29:24:29:57 | TryExpr | test.rs:29:9:29:20 | mut request1 | provenance | | -| test.rs:30:10:30:17 | request1 | test.rs:30:10:30:25 | request1.chunk() [future, Ok, Some] | provenance | MaD:31 | +| test.rs:30:10:30:17 | request1 | test.rs:30:10:30:25 | request1.chunk() [future, Ok, Some] | provenance | MaD:34 | | test.rs:30:10:30:25 | request1.chunk() [future, Ok, Some] | test.rs:30:10:30:31 | await ... [Ok, Some] | provenance | | | test.rs:30:10:30:31 | await ... [Ok, Some] | test.rs:30:10:30:32 | TryExpr [Some] | provenance | | | test.rs:30:10:30:32 | TryExpr [Some] | test.rs:30:10:30:41 | ... .unwrap() | provenance | MaD:24 | | test.rs:31:15:31:25 | Some(...) [Some] | test.rs:31:20:31:24 | chunk | provenance | | | test.rs:31:20:31:24 | chunk | test.rs:32:14:32:18 | chunk | provenance | | -| test.rs:31:29:31:36 | request1 | test.rs:31:29:31:44 | request1.chunk() [future, Ok, Some] | provenance | MaD:31 | +| test.rs:31:29:31:36 | request1 | test.rs:31:29:31:44 | request1.chunk() [future, Ok, Some] | provenance | MaD:34 | | test.rs:31:29:31:44 | request1.chunk() [future, Ok, Some] | test.rs:31:29:31:50 | await ... [Ok, Some] | provenance | | | test.rs:31:29:31:50 | await ... [Ok, Some] | test.rs:31:29:31:51 | TryExpr [Some] | provenance | | | test.rs:31:29:31:51 | TryExpr [Some] | test.rs:31:15:31:25 | Some(...) [Some] | provenance | | @@ -103,11 +106,20 @@ edges | test.rs:60:31:60:42 | send_request | test.rs:60:24:60:51 | sender.send_request(...) [future, Ok] | provenance | Src:MaD:2 | | test.rs:61:15:61:22 | response | test.rs:61:14:61:22 | &response | provenance | | | test.rs:67:9:67:20 | mut response | test.rs:68:11:68:18 | response | provenance | | +| test.rs:67:9:67:20 | mut response | test.rs:76:18:76:25 | response | provenance | | +| test.rs:67:9:67:20 | mut response | test.rs:77:18:77:25 | response | provenance | | +| test.rs:67:9:67:20 | mut response | test.rs:79:24:79:31 | response | provenance | | | test.rs:67:24:67:51 | sender.send_request(...) [future, Ok] | test.rs:67:24:67:57 | await ... [Ok] | provenance | | | test.rs:67:24:67:57 | await ... [Ok] | test.rs:67:24:67:58 | TryExpr | provenance | | | test.rs:67:24:67:58 | TryExpr | test.rs:67:9:67:20 | mut response | provenance | | | test.rs:67:31:67:42 | send_request | test.rs:67:24:67:51 | sender.send_request(...) [future, Ok] | provenance | Src:MaD:2 | | test.rs:68:11:68:18 | response | test.rs:68:10:68:18 | &response | provenance | | +| test.rs:76:18:76:25 | response | test.rs:76:18:76:32 | response.body() | provenance | MaD:30 | +| test.rs:77:18:77:25 | response | test.rs:77:18:77:36 | response.body_mut() | provenance | MaD:31 | +| test.rs:79:17:79:20 | body | test.rs:80:19:80:22 | body | provenance | | +| test.rs:79:24:79:31 | response | test.rs:79:24:79:43 | response.into_body() | provenance | MaD:32 | +| test.rs:79:24:79:43 | response.into_body() | test.rs:79:17:79:20 | body | provenance | | +| test.rs:80:19:80:22 | body | test.rs:80:18:80:22 | &body | provenance | | | test.rs:155:13:155:22 | mut stream | test.rs:162:17:162:22 | stream | provenance | | | test.rs:155:26:155:53 | ...::connect | test.rs:155:26:155:62 | ...::connect(...) [Ok] | provenance | Src:MaD:4 | | test.rs:155:26:155:62 | ...::connect(...) [Ok] | test.rs:155:26:155:63 | TryExpr | provenance | | @@ -125,7 +137,7 @@ edges | test.rs:182:21:182:30 | mut reader | test.rs:185:27:185:32 | reader | provenance | | | test.rs:182:34:182:64 | ...::new(...) | test.rs:182:34:182:74 | ... .take(...) | provenance | MaD:22 | | test.rs:182:34:182:74 | ... .take(...) | test.rs:182:21:182:30 | mut reader | provenance | | -| test.rs:182:58:182:63 | stream | test.rs:182:34:182:64 | ...::new(...) | provenance | MaD:36 | +| test.rs:182:58:182:63 | stream | test.rs:182:34:182:64 | ...::new(...) | provenance | MaD:39 | | test.rs:185:27:185:32 | reader | test.rs:185:44:185:52 | [post] &mut line [&ref] | provenance | MaD:18 | | test.rs:185:44:185:52 | [post] &mut line [&ref] | test.rs:185:49:185:52 | [post] line | provenance | | | test.rs:185:49:185:52 | [post] line | test.rs:192:35:192:38 | line | provenance | | @@ -138,7 +150,7 @@ edges | test.rs:224:28:224:66 | ...::connect(...) [future, Ok] | test.rs:224:28:224:72 | await ... [Ok] | provenance | | | test.rs:224:28:224:72 | await ... [Ok] | test.rs:224:28:224:73 | TryExpr | provenance | | | test.rs:224:28:224:73 | TryExpr | test.rs:224:9:224:24 | mut tokio_stream | provenance | | -| test.rs:232:17:232:28 | tokio_stream | test.rs:232:35:232:46 | [post] &mut buffer1 [&ref] | provenance | MaD:37 | +| test.rs:232:17:232:28 | tokio_stream | test.rs:232:35:232:46 | [post] &mut buffer1 [&ref] | provenance | MaD:40 | | test.rs:232:35:232:46 | [post] &mut buffer1 [&ref] | test.rs:232:40:232:46 | [post] buffer1 | provenance | | | test.rs:232:40:232:46 | [post] buffer1 | test.rs:239:15:239:21 | buffer1 | provenance | | | test.rs:232:40:232:46 | [post] buffer1 | test.rs:240:14:240:20 | buffer1 | provenance | | @@ -150,11 +162,11 @@ edges | test.rs:240:14:240:20 | buffer1 | test.rs:240:14:240:23 | buffer1[0] | provenance | MaD:10 | | test.rs:243:15:243:21 | buffer2 | test.rs:243:14:243:21 | &buffer2 | provenance | | | test.rs:244:14:244:20 | buffer2 | test.rs:244:14:244:23 | buffer2[0] | provenance | MaD:10 | -| test.rs:252:19:252:30 | tokio_stream | test.rs:252:41:252:51 | [post] &mut buffer [&ref] | provenance | MaD:38 | +| test.rs:252:19:252:30 | tokio_stream | test.rs:252:41:252:51 | [post] &mut buffer [&ref] | provenance | MaD:41 | | test.rs:252:41:252:51 | [post] &mut buffer [&ref] | test.rs:252:46:252:51 | [post] buffer | provenance | | | test.rs:252:46:252:51 | [post] buffer | test.rs:259:27:259:32 | buffer | provenance | | | test.rs:259:27:259:32 | buffer | test.rs:259:26:259:32 | &buffer | provenance | | -| test.rs:275:19:275:30 | tokio_stream | test.rs:275:45:275:55 | [post] &mut buffer [&ref] | provenance | MaD:39 | +| test.rs:275:19:275:30 | tokio_stream | test.rs:275:45:275:55 | [post] &mut buffer [&ref] | provenance | MaD:42 | | test.rs:275:45:275:55 | [post] &mut buffer [&ref] | test.rs:275:50:275:55 | [post] buffer | provenance | | | test.rs:275:50:275:55 | [post] buffer | test.rs:282:27:282:32 | buffer | provenance | | | test.rs:282:27:282:32 | buffer | test.rs:282:26:282:32 | &buffer | provenance | | @@ -423,6 +435,15 @@ nodes | test.rs:67:31:67:42 | send_request | semmle.label | send_request | | test.rs:68:10:68:18 | &response | semmle.label | &response | | test.rs:68:11:68:18 | response | semmle.label | response | +| test.rs:76:18:76:25 | response | semmle.label | response | +| test.rs:76:18:76:32 | response.body() | semmle.label | response.body() | +| test.rs:77:18:77:25 | response | semmle.label | response | +| test.rs:77:18:77:36 | response.body_mut() | semmle.label | response.body_mut() | +| test.rs:79:17:79:20 | body | semmle.label | body | +| test.rs:79:24:79:31 | response | semmle.label | response | +| test.rs:79:24:79:43 | response.into_body() | semmle.label | response.into_body() | +| test.rs:80:18:80:22 | &body | semmle.label | &body | +| test.rs:80:19:80:22 | body | semmle.label | body | | test.rs:155:13:155:22 | mut stream | semmle.label | mut stream | | test.rs:155:26:155:53 | ...::connect | semmle.label | ...::connect | | test.rs:155:26:155:62 | ...::connect(...) [Ok] | semmle.label | ...::connect(...) [Ok] | @@ -668,6 +689,9 @@ testFailures | test.rs:61:14:61:22 | &response | test.rs:60:31:60:42 | send_request | test.rs:61:14:61:22 | &response | $@ | test.rs:60:31:60:42 | send_request | send_request | | test.rs:62:14:62:21 | response | test.rs:60:31:60:42 | send_request | test.rs:62:14:62:21 | response | $@ | test.rs:60:31:60:42 | send_request | send_request | | test.rs:68:10:68:18 | &response | test.rs:67:31:67:42 | send_request | test.rs:68:10:68:18 | &response | $@ | test.rs:67:31:67:42 | send_request | send_request | +| test.rs:76:18:76:32 | response.body() | test.rs:67:31:67:42 | send_request | test.rs:76:18:76:32 | response.body() | $@ | test.rs:67:31:67:42 | send_request | send_request | +| test.rs:77:18:77:36 | response.body_mut() | test.rs:67:31:67:42 | send_request | test.rs:77:18:77:36 | response.body_mut() | $@ | test.rs:67:31:67:42 | send_request | send_request | +| test.rs:80:18:80:22 | &body | test.rs:67:31:67:42 | send_request | test.rs:80:18:80:22 | &body | $@ | test.rs:67:31:67:42 | send_request | send_request | | test.rs:165:14:165:20 | &buffer | test.rs:155:26:155:53 | ...::connect | test.rs:165:14:165:20 | &buffer | $@ | test.rs:155:26:155:53 | ...::connect | ...::connect | | test.rs:166:14:166:22 | buffer[0] | test.rs:155:26:155:53 | ...::connect | test.rs:166:14:166:22 | buffer[0] | $@ | test.rs:155:26:155:53 | ...::connect | ...::connect | | test.rs:192:34:192:38 | &line | test.rs:174:26:174:61 | ...::connect_timeout | test.rs:192:34:192:38 | &line | $@ | test.rs:174:26:174:61 | ...::connect_timeout | ...::connect_timeout | diff --git a/rust/ql/test/library-tests/dataflow/sources/net/test.rs b/rust/ql/test/library-tests/dataflow/sources/net/test.rs index f029ac53805..2f51be773b7 100644 --- a/rust/ql/test/library-tests/dataflow/sources/net/test.rs +++ b/rust/ql/test/library-tests/dataflow/sources/net/test.rs @@ -73,11 +73,11 @@ async fn test_hyper_http(case: i64) -> Result<(), Box> { match case { 1 => { - sink(response.body()); // $ MISSING: hasTaintFlow - sink(response.body_mut()); // $ MISSING: hasTaintFlow + sink(response.body()); // $ hasTaintFlow=request + sink(response.body_mut()); // $ hasTaintFlow=request let body = response.into_body(); - sink(&body); // $ MISSING: hasTaintFlow + sink(&body); // $ hasTaintFlow=request println!("awaiting response..."); let data = body.collect().await?; diff --git a/rust/ql/test/query-tests/security/CWE-117/LogInjection.expected b/rust/ql/test/query-tests/security/CWE-117/LogInjection.expected index d812380d9c7..e326a87c42d 100644 --- a/rust/ql/test/query-tests/security/CWE-117/LogInjection.expected +++ b/rust/ql/test/query-tests/security/CWE-117/LogInjection.expected @@ -1,8 +1,14 @@ #select +| main.rs:15:5:15:9 | ...::log | main.rs:8:29:8:37 | ...::args | main.rs:15:5:15:9 | ...::log | Log entry depends on a $@. | main.rs:8:29:8:37 | ...::args | user-provided value | | main.rs:16:5:16:9 | ...::log | main.rs:10:22:10:34 | ...::var | main.rs:16:5:16:9 | ...::log | Log entry depends on a $@. | main.rs:10:22:10:34 | ...::var | user-provided value | | main.rs:17:5:17:10 | ...::log | main.rs:11:23:11:44 | ...::get | main.rs:17:5:17:10 | ...::log | Log entry depends on a $@. | main.rs:11:23:11:44 | ...::get | user-provided value | +| main.rs:18:5:18:10 | ...::log | main.rs:8:29:8:37 | ...::args | main.rs:18:5:18:10 | ...::log | Log entry depends on a $@. | main.rs:8:29:8:37 | ...::args | user-provided value | | main.rs:19:5:19:10 | ...::log | main.rs:10:22:10:34 | ...::var | main.rs:19:5:19:10 | ...::log | Log entry depends on a $@. | main.rs:10:22:10:34 | ...::var | user-provided value | +| main.rs:23:5:23:9 | ...::log | main.rs:8:29:8:37 | ...::args | main.rs:23:5:23:9 | ...::log | Log entry depends on a $@. | main.rs:8:29:8:37 | ...::args | user-provided value | +| main.rs:27:5:27:9 | ...::log | main.rs:8:29:8:37 | ...::args | main.rs:27:5:27:9 | ...::log | Log entry depends on a $@. | main.rs:8:29:8:37 | ...::args | user-provided value | +| main.rs:30:5:30:9 | ...::log | main.rs:8:29:8:37 | ...::args | main.rs:30:5:30:9 | ...::log | Log entry depends on a $@. | main.rs:8:29:8:37 | ...::args | user-provided value | | main.rs:30:5:30:9 | ...::log | main.rs:11:23:11:44 | ...::get | main.rs:30:5:30:9 | ...::log | Log entry depends on a $@. | main.rs:11:23:11:44 | ...::get | user-provided value | +| main.rs:66:5:66:9 | ...::log | main.rs:8:29:8:37 | ...::args | main.rs:66:5:66:9 | ...::log | Log entry depends on a $@. | main.rs:8:29:8:37 | ...::args | user-provided value | | main.rs:112:9:112:13 | ...::log | main.rs:109:25:109:38 | ...::args | main.rs:112:9:112:13 | ...::log | Log entry depends on a $@. | main.rs:109:25:109:38 | ...::args | user-provided value | | main.rs:113:9:113:13 | ...::log | main.rs:109:25:109:38 | ...::args | main.rs:113:9:113:13 | ...::log | Log entry depends on a $@. | main.rs:109:25:109:38 | ...::args | user-provided value | | main.rs:114:9:114:14 | ...::log | main.rs:109:25:109:38 | ...::args | main.rs:114:9:114:14 | ...::log | Log entry depends on a $@. | main.rs:109:25:109:38 | ...::args | user-provided value | @@ -12,22 +18,59 @@ | main.rs:126:9:126:16 | ...::_print | main.rs:123:25:123:37 | ...::var | main.rs:126:9:126:16 | ...::_print | Log entry depends on a $@. | main.rs:123:25:123:37 | ...::var | user-provided value | | main.rs:127:9:127:17 | ...::_eprint | main.rs:123:25:123:37 | ...::var | main.rs:127:9:127:17 | ...::_eprint | Log entry depends on a $@. | main.rs:123:25:123:37 | ...::var | user-provided value | edges +| main.rs:8:9:8:12 | args [element] | main.rs:9:20:9:23 | args [element] | provenance | | +| main.rs:8:29:8:37 | ...::args | main.rs:8:29:8:39 | ...::args(...) [element] | provenance | Src:MaD:5 | +| main.rs:8:29:8:39 | ...::args(...) [element] | main.rs:8:29:8:49 | ... .collect() [element] | provenance | MaD:9 | +| main.rs:8:29:8:49 | ... .collect() [element] | main.rs:8:9:8:12 | args [element] | provenance | | +| main.rs:9:9:9:16 | username | main.rs:15:11:15:36 | MacroExpr | provenance | | +| main.rs:9:9:9:16 | username | main.rs:18:12:18:37 | MacroExpr | provenance | | +| main.rs:9:9:9:16 | username | main.rs:22:33:22:63 | MacroExpr | provenance | | +| main.rs:9:9:9:16 | username | main.rs:26:55:26:62 | username | provenance | | +| main.rs:9:9:9:16 | username | main.rs:30:11:30:66 | MacroExpr | provenance | | +| main.rs:9:9:9:16 | username | main.rs:52:29:52:36 | username | provenance | | +| main.rs:9:20:9:23 | args [element] | main.rs:9:20:9:30 | args.get(...) [Some, &ref] | provenance | MaD:12 | +| main.rs:9:20:9:30 | args.get(...) [Some, &ref] | main.rs:9:20:9:64 | ... .unwrap_or(...) [&ref] | provenance | MaD:13 | +| main.rs:9:20:9:64 | ... .unwrap_or(...) [&ref] | main.rs:9:20:9:72 | ... .clone() | provenance | MaD:8 | +| main.rs:9:20:9:72 | ... .clone() | main.rs:9:9:9:16 | username | provenance | | | main.rs:10:9:10:18 | user_input | main.rs:16:11:16:44 | MacroExpr | provenance | | | main.rs:10:9:10:18 | user_input | main.rs:19:12:19:39 | MacroExpr | provenance | | | main.rs:10:22:10:34 | ...::var | main.rs:10:22:10:48 | ...::var(...) [Ok] | provenance | Src:MaD:6 | -| main.rs:10:22:10:48 | ...::var(...) [Ok] | main.rs:10:22:10:81 | ... .unwrap_or(...) | provenance | MaD:10 | +| main.rs:10:22:10:48 | ...::var(...) [Ok] | main.rs:10:22:10:81 | ... .unwrap_or(...) | provenance | MaD:16 | | main.rs:10:22:10:81 | ... .unwrap_or(...) | main.rs:10:9:10:18 | user_input | provenance | | | main.rs:11:9:11:19 | remote_data | main.rs:17:12:17:46 | MacroExpr | provenance | | | main.rs:11:9:11:19 | remote_data | main.rs:30:11:30:66 | MacroExpr | provenance | | | main.rs:11:23:11:44 | ...::get | main.rs:11:23:11:71 | ...::get(...) [Ok] | provenance | Src:MaD:4 | -| main.rs:11:23:11:71 | ...::get(...) [Ok] | main.rs:11:23:12:17 | ... .unwrap() | provenance | MaD:9 | -| main.rs:11:23:12:17 | ... .unwrap() | main.rs:11:23:12:24 | ... .text() [Ok] | provenance | MaD:12 | -| main.rs:11:23:12:24 | ... .text() [Ok] | main.rs:11:23:12:61 | ... .unwrap_or(...) | provenance | MaD:10 | +| main.rs:11:23:11:71 | ...::get(...) [Ok] | main.rs:11:23:12:17 | ... .unwrap() | provenance | MaD:15 | +| main.rs:11:23:12:17 | ... .unwrap() | main.rs:11:23:12:24 | ... .text() [Ok] | provenance | MaD:18 | +| main.rs:11:23:12:24 | ... .text() [Ok] | main.rs:11:23:12:61 | ... .unwrap_or(...) | provenance | MaD:16 | | main.rs:11:23:12:61 | ... .unwrap_or(...) | main.rs:11:9:11:19 | remote_data | provenance | | +| main.rs:15:11:15:36 | MacroExpr | main.rs:15:5:15:9 | ...::log | provenance | MaD:1 Sink:MaD:1 | | main.rs:16:11:16:44 | MacroExpr | main.rs:16:5:16:9 | ...::log | provenance | MaD:1 Sink:MaD:1 | | main.rs:17:12:17:46 | MacroExpr | main.rs:17:5:17:10 | ...::log | provenance | MaD:1 Sink:MaD:1 | +| main.rs:18:12:18:37 | MacroExpr | main.rs:18:5:18:10 | ...::log | provenance | MaD:1 Sink:MaD:1 | | main.rs:19:12:19:39 | MacroExpr | main.rs:19:5:19:10 | ...::log | provenance | MaD:1 Sink:MaD:1 | +| main.rs:22:9:22:21 | formatted_msg | main.rs:23:11:23:29 | MacroExpr | provenance | | +| main.rs:22:33:22:63 | ...::format(...) | main.rs:22:33:22:63 | { ... } | provenance | | +| main.rs:22:33:22:63 | ...::must_use(...) | main.rs:22:9:22:21 | formatted_msg | provenance | | +| main.rs:22:33:22:63 | MacroExpr | main.rs:22:33:22:63 | ...::format(...) | provenance | MaD:19 | +| main.rs:22:33:22:63 | { ... } | main.rs:22:33:22:63 | ...::must_use(...) | provenance | MaD:20 | +| main.rs:23:11:23:29 | MacroExpr | main.rs:23:5:23:9 | ...::log | provenance | MaD:1 Sink:MaD:1 | +| main.rs:26:9:26:18 | concat_msg | main.rs:27:11:27:26 | MacroExpr | provenance | | +| main.rs:26:22:26:62 | ... + ... | main.rs:26:9:26:18 | concat_msg | provenance | | +| main.rs:26:54:26:62 | &username [&ref] | main.rs:26:22:26:62 | ... + ... | provenance | MaD:11 | +| main.rs:26:55:26:62 | username | main.rs:26:54:26:62 | &username [&ref] | provenance | | +| main.rs:27:11:27:26 | MacroExpr | main.rs:27:5:27:9 | ...::log | provenance | MaD:1 Sink:MaD:1 | | main.rs:30:11:30:66 | MacroExpr | main.rs:30:5:30:9 | ...::log | provenance | MaD:1 Sink:MaD:1 | +| main.rs:52:28:52:36 | &username [&ref] | main.rs:56:27:56:40 | ...: ... [&ref] | provenance | | +| main.rs:52:29:52:36 | username | main.rs:52:28:52:36 | &username [&ref] | provenance | | +| main.rs:56:27:56:40 | ...: ... [&ref] | main.rs:65:38:65:45 | username [&ref] | provenance | | +| main.rs:65:9:65:17 | user_info [UserInfo] | main.rs:66:28:66:36 | user_info [UserInfo] | provenance | | +| main.rs:65:21:65:59 | UserInfo {...} [UserInfo] | main.rs:65:9:65:17 | user_info [UserInfo] | provenance | | +| main.rs:65:38:65:45 | username [&ref] | main.rs:65:38:65:57 | username.to_string() | provenance | MaD:7 | +| main.rs:65:38:65:57 | username.to_string() | main.rs:65:21:65:59 | UserInfo {...} [UserInfo] | provenance | | +| main.rs:66:11:66:41 | MacroExpr | main.rs:66:5:66:9 | ...::log | provenance | MaD:1 Sink:MaD:1 | +| main.rs:66:28:66:36 | user_info [UserInfo] | main.rs:66:28:66:41 | user_info.name | provenance | | +| main.rs:66:28:66:41 | user_info.name | main.rs:66:11:66:41 | MacroExpr | provenance | | | main.rs:109:13:109:21 | user_data | main.rs:112:15:112:35 | MacroExpr | provenance | | | main.rs:109:13:109:21 | user_data | main.rs:113:15:113:38 | MacroExpr | provenance | | | main.rs:109:13:109:21 | user_data | main.rs:114:16:114:37 | MacroExpr | provenance | | @@ -35,8 +78,8 @@ edges | main.rs:109:13:109:21 | user_data | main.rs:116:16:116:37 | MacroExpr | provenance | | | main.rs:109:13:109:21 | user_data | main.rs:119:15:119:75 | MacroExpr | provenance | | | main.rs:109:25:109:38 | ...::args | main.rs:109:25:109:40 | ...::args(...) [element] | provenance | Src:MaD:5 | -| main.rs:109:25:109:40 | ...::args(...) [element] | main.rs:109:25:109:47 | ... .nth(...) [Some] | provenance | MaD:7 | -| main.rs:109:25:109:47 | ... .nth(...) [Some] | main.rs:109:25:109:67 | ... .unwrap_or_default() | provenance | MaD:8 | +| main.rs:109:25:109:40 | ...::args(...) [element] | main.rs:109:25:109:47 | ... .nth(...) [Some] | provenance | MaD:10 | +| main.rs:109:25:109:47 | ... .nth(...) [Some] | main.rs:109:25:109:67 | ... .unwrap_or_default() | provenance | MaD:14 | | main.rs:109:25:109:67 | ... .unwrap_or_default() | main.rs:109:13:109:21 | user_data | provenance | | | main.rs:112:15:112:35 | MacroExpr | main.rs:112:9:112:13 | ...::log | provenance | MaD:1 Sink:MaD:1 | | main.rs:113:15:113:38 | MacroExpr | main.rs:113:9:113:13 | ...::log | provenance | MaD:1 Sink:MaD:1 | @@ -47,7 +90,7 @@ edges | main.rs:123:13:123:21 | user_data | main.rs:126:18:126:38 | MacroExpr | provenance | | | main.rs:123:13:123:21 | user_data | main.rs:127:19:127:49 | MacroExpr | provenance | | | main.rs:123:25:123:37 | ...::var | main.rs:123:25:123:45 | ...::var(...) [Ok] | provenance | Src:MaD:6 | -| main.rs:123:25:123:45 | ...::var(...) [Ok] | main.rs:123:25:123:65 | ... .unwrap_or_default() | provenance | MaD:11 | +| main.rs:123:25:123:45 | ...::var(...) [Ok] | main.rs:123:25:123:65 | ... .unwrap_or_default() | provenance | MaD:17 | | main.rs:123:25:123:65 | ... .unwrap_or_default() | main.rs:123:13:123:21 | user_data | provenance | | | main.rs:126:18:126:38 | MacroExpr | main.rs:126:9:126:16 | ...::_print | provenance | MaD:3 Sink:MaD:3 | | main.rs:127:19:127:49 | MacroExpr | main.rs:127:9:127:17 | ...::_eprint | provenance | MaD:2 Sink:MaD:2 | @@ -58,13 +101,30 @@ models | 4 | Source: reqwest::blocking::get; ReturnValue.Field[core::result::Result::Ok(0)]; remote | | 5 | Source: std::env::args; ReturnValue.Element; commandargs | | 6 | Source: std::env::var; ReturnValue.Field[core::result::Result::Ok(0)]; environment | -| 7 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Reference.Element; ReturnValue.Field[core::option::Option::Some(0)]; value | -| 8 | Summary: ::unwrap_or_default; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | -| 9 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 10 | Summary: ::unwrap_or; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 11 | Summary: ::unwrap_or_default; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 12 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 7 | Summary: <_ as alloc::string::ToString>::to_string; Argument[self].Reference; ReturnValue; taint | +| 8 | Summary: <_ as core::clone::Clone>::clone; Argument[self].Reference; ReturnValue; value | +| 9 | Summary: <_ as core::iter::traits::iterator::Iterator>::collect; Argument[self].Element; ReturnValue.Element; value | +| 10 | Summary: <_ as core::iter::traits::iterator::Iterator>::nth; Argument[self].Reference.Element; ReturnValue.Field[core::option::Option::Some(0)]; value | +| 11 | Summary: ::add; Argument[0].Reference; ReturnValue; taint | +| 12 | Summary: ::deref; Argument[self].Reference.Element; ReturnValue.Reference.Element; value | +| 13 | Summary: ::unwrap_or; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 14 | Summary: ::unwrap_or_default; Argument[self].Field[core::option::Option::Some(0)]; ReturnValue; value | +| 15 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 16 | Summary: ::unwrap_or; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 17 | Summary: ::unwrap_or_default; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 18 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 19 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | +| 20 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | nodes +| main.rs:8:9:8:12 | args [element] | semmle.label | args [element] | +| main.rs:8:29:8:37 | ...::args | semmle.label | ...::args | +| main.rs:8:29:8:39 | ...::args(...) [element] | semmle.label | ...::args(...) [element] | +| main.rs:8:29:8:49 | ... .collect() [element] | semmle.label | ... .collect() [element] | +| main.rs:9:9:9:16 | username | semmle.label | username | +| main.rs:9:20:9:23 | args [element] | semmle.label | args [element] | +| main.rs:9:20:9:30 | args.get(...) [Some, &ref] | semmle.label | args.get(...) [Some, &ref] | +| main.rs:9:20:9:64 | ... .unwrap_or(...) [&ref] | semmle.label | ... .unwrap_or(...) [&ref] | +| main.rs:9:20:9:72 | ... .clone() | semmle.label | ... .clone() | | main.rs:10:9:10:18 | user_input | semmle.label | user_input | | main.rs:10:22:10:34 | ...::var | semmle.label | ...::var | | main.rs:10:22:10:48 | ...::var(...) [Ok] | semmle.label | ...::var(...) [Ok] | @@ -75,14 +135,42 @@ nodes | main.rs:11:23:12:17 | ... .unwrap() | semmle.label | ... .unwrap() | | main.rs:11:23:12:24 | ... .text() [Ok] | semmle.label | ... .text() [Ok] | | main.rs:11:23:12:61 | ... .unwrap_or(...) | semmle.label | ... .unwrap_or(...) | +| main.rs:15:5:15:9 | ...::log | semmle.label | ...::log | +| main.rs:15:11:15:36 | MacroExpr | semmle.label | MacroExpr | | main.rs:16:5:16:9 | ...::log | semmle.label | ...::log | | main.rs:16:11:16:44 | MacroExpr | semmle.label | MacroExpr | | main.rs:17:5:17:10 | ...::log | semmle.label | ...::log | | main.rs:17:12:17:46 | MacroExpr | semmle.label | MacroExpr | +| main.rs:18:5:18:10 | ...::log | semmle.label | ...::log | +| main.rs:18:12:18:37 | MacroExpr | semmle.label | MacroExpr | | main.rs:19:5:19:10 | ...::log | semmle.label | ...::log | | main.rs:19:12:19:39 | MacroExpr | semmle.label | MacroExpr | +| main.rs:22:9:22:21 | formatted_msg | semmle.label | formatted_msg | +| main.rs:22:33:22:63 | ...::format(...) | semmle.label | ...::format(...) | +| main.rs:22:33:22:63 | ...::must_use(...) | semmle.label | ...::must_use(...) | +| main.rs:22:33:22:63 | MacroExpr | semmle.label | MacroExpr | +| main.rs:22:33:22:63 | { ... } | semmle.label | { ... } | +| main.rs:23:5:23:9 | ...::log | semmle.label | ...::log | +| main.rs:23:11:23:29 | MacroExpr | semmle.label | MacroExpr | +| main.rs:26:9:26:18 | concat_msg | semmle.label | concat_msg | +| main.rs:26:22:26:62 | ... + ... | semmle.label | ... + ... | +| main.rs:26:54:26:62 | &username [&ref] | semmle.label | &username [&ref] | +| main.rs:26:55:26:62 | username | semmle.label | username | +| main.rs:27:5:27:9 | ...::log | semmle.label | ...::log | +| main.rs:27:11:27:26 | MacroExpr | semmle.label | MacroExpr | | main.rs:30:5:30:9 | ...::log | semmle.label | ...::log | | main.rs:30:11:30:66 | MacroExpr | semmle.label | MacroExpr | +| main.rs:52:28:52:36 | &username [&ref] | semmle.label | &username [&ref] | +| main.rs:52:29:52:36 | username | semmle.label | username | +| main.rs:56:27:56:40 | ...: ... [&ref] | semmle.label | ...: ... [&ref] | +| main.rs:65:9:65:17 | user_info [UserInfo] | semmle.label | user_info [UserInfo] | +| main.rs:65:21:65:59 | UserInfo {...} [UserInfo] | semmle.label | UserInfo {...} [UserInfo] | +| main.rs:65:38:65:45 | username [&ref] | semmle.label | username [&ref] | +| main.rs:65:38:65:57 | username.to_string() | semmle.label | username.to_string() | +| main.rs:66:5:66:9 | ...::log | semmle.label | ...::log | +| main.rs:66:11:66:41 | MacroExpr | semmle.label | MacroExpr | +| main.rs:66:28:66:36 | user_info [UserInfo] | semmle.label | user_info [UserInfo] | +| main.rs:66:28:66:41 | user_info.name | semmle.label | user_info.name | | main.rs:109:13:109:21 | user_data | semmle.label | user_data | | main.rs:109:25:109:38 | ...::args | semmle.label | ...::args | | main.rs:109:25:109:40 | ...::args(...) [element] | semmle.label | ...::args(...) [element] | diff --git a/rust/ql/test/query-tests/security/CWE-117/main.rs b/rust/ql/test/query-tests/security/CWE-117/main.rs index f5001846d1b..9fb3558b3d2 100644 --- a/rust/ql/test/query-tests/security/CWE-117/main.rs +++ b/rust/ql/test/query-tests/security/CWE-117/main.rs @@ -5,29 +5,29 @@ fn main() { env_logger::init(); // Sources of user input - let args: Vec = env::args().collect(); - let username = args.get(1).unwrap_or(&String::from("Guest")).clone(); // $ MISSING: Source=commandargs + let args: Vec = env::args().collect(); // $ Source=commandargs + let username = args.get(1).unwrap_or(&String::from("Guest")).clone(); let user_input = std::env::var("USER_INPUT").unwrap_or("default".to_string()); // $ Source=environment let remote_data = reqwest::blocking::get("http://example.com/user") // $ Source=remote .unwrap().text().unwrap_or("remote_user".to_string()); // BAD: Direct logging of user input - info!("User login: {}", username); // $ MISSING: Alert[rust/log-injection] + info!("User login: {}", username); // $ Alert[rust/log-injection]=commandargs warn!("Warning for user: {}", user_input); // $ Alert[rust/log-injection]=environment error!("Error processing: {}", remote_data); // $ Alert[rust/log-injection]=remote - debug!("Debug info: {}", username); // $ MISSING: Alert[rust/log-injection] + debug!("Debug info: {}", username); // $ Alert[rust/log-injection]=commandargs trace!("Trace data: {}", user_input); // $ Alert[rust/log-injection]=environment // BAD: Formatted strings with user input let formatted_msg = format!("Processing user: {}", username); - info!("{}", formatted_msg); // $ MISSING: Alert[rust/log-injection] + info!("{}", formatted_msg); // $ Alert[rust/log-injection]=commandargs // BAD: String concatenation with user input let concat_msg = "User activity: ".to_string() + &username; - info!("{}", concat_msg); // $ MISSING: Alert[rust/log-injection] + info!("{}", concat_msg); // $ Alert[rust/log-injection]=commandargs // BAD: Complex formatting - info!("User {} accessed resource at {}", username, remote_data); // $ Alert[rust/log-injection]=remote + info!("User {} accessed resource at {}", username, remote_data); // $ Alert[rust/log-injection]=remote Alert[rust/log-injection]=commandargs // GOOD: Sanitized input let sanitized_username = username.replace('\n', "").replace('\r', ""); @@ -63,7 +63,7 @@ fn test_complex_scenarios(username: &str, user_input: &str) { // BAD: Through struct fields let user_info = UserInfo { name: username.to_string() }; - info!("User info: {}", user_info.name); // $ MISSING: Alert[rust/log-injection] + info!("User info: {}", user_info.name); // $ Alert[rust/log-injection]=commandargs // GOOD: After sanitization let clean_input = sanitize_input(user_input); diff --git a/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected b/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected index bbc67f6fd18..dd4fd929404 100644 --- a/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected +++ b/rust/ql/test/query-tests/security/CWE-295/DisabledCertificateCheck.expected @@ -15,6 +15,7 @@ | main.rs:109:4:109:34 | danger_accept_invalid_hostnames | main.rs:107:17:107:31 | ...::exists | main.rs:109:4:109:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | | main.rs:115:4:115:34 | danger_accept_invalid_hostnames | main.rs:113:43:113:50 | metadata | main.rs:115:4:115:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | | main.rs:121:4:121:34 | danger_accept_invalid_hostnames | main.rs:119:11:119:27 | ...::metadata | main.rs:121:4:121:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | +| main.rs:134:4:134:34 | danger_accept_invalid_hostnames | main.rs:129:14:129:27 | ...::stdin | main.rs:134:4:134:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | | main.rs:146:4:146:34 | danger_accept_invalid_hostnames | main.rs:144:39:144:42 | true | main.rs:146:4:146:34 | danger_accept_invalid_hostnames | Disabling TLS certificate validation can expose the application to man-in-the-middle attacks. | edges | main.rs:4:32:4:35 | true | main.rs:4:4:4:30 | danger_accept_invalid_certs | provenance | MaD:1 Sink:MaD:1 | @@ -37,21 +38,33 @@ edges | main.rs:93:32:93:47 | sometimes_global | main.rs:93:4:93:30 | danger_accept_invalid_certs | provenance | MaD:1 Sink:MaD:1 | | main.rs:107:6:107:7 | b1 | main.rs:109:36:109:37 | b1 | provenance | | | main.rs:107:17:107:31 | ...::exists | main.rs:107:17:107:42 | ...::exists(...) [Ok] | provenance | Src:MaD:8 | -| main.rs:107:17:107:42 | ...::exists(...) [Ok] | main.rs:107:17:107:51 | ... .unwrap() | provenance | MaD:10 | +| main.rs:107:17:107:42 | ...::exists(...) [Ok] | main.rs:107:17:107:51 | ... .unwrap() | provenance | MaD:13 | | main.rs:107:17:107:51 | ... .unwrap() | main.rs:107:6:107:7 | b1 | provenance | | | main.rs:109:36:109:37 | b1 | main.rs:109:4:109:34 | danger_accept_invalid_hostnames | provenance | MaD:2 Sink:MaD:2 | | main.rs:113:6:113:7 | b2 | main.rs:115:36:115:37 | b2 | provenance | | -| main.rs:113:11:113:52 | ... .metadata() [Ok] | main.rs:113:11:113:61 | ... .unwrap() | provenance | MaD:10 | -| main.rs:113:11:113:61 | ... .unwrap() | main.rs:113:11:113:71 | ... .is_file() | provenance | MaD:12 | +| main.rs:113:11:113:52 | ... .metadata() [Ok] | main.rs:113:11:113:61 | ... .unwrap() | provenance | MaD:13 | +| main.rs:113:11:113:61 | ... .unwrap() | main.rs:113:11:113:71 | ... .is_file() | provenance | MaD:16 | | main.rs:113:11:113:71 | ... .is_file() | main.rs:113:6:113:7 | b2 | provenance | | | main.rs:113:43:113:50 | metadata | main.rs:113:11:113:52 | ... .metadata() [Ok] | provenance | Src:MaD:7 | | main.rs:115:36:115:37 | b2 | main.rs:115:4:115:34 | danger_accept_invalid_hostnames | provenance | MaD:2 Sink:MaD:2 | | main.rs:119:6:119:7 | b3 | main.rs:121:36:121:37 | b3 | provenance | | | main.rs:119:11:119:27 | ...::metadata | main.rs:119:11:119:38 | ...::metadata(...) [Ok] | provenance | Src:MaD:9 | -| main.rs:119:11:119:38 | ...::metadata(...) [Ok] | main.rs:119:11:119:47 | ... .unwrap() | provenance | MaD:10 | -| main.rs:119:11:119:47 | ... .unwrap() | main.rs:119:11:119:56 | ... .is_dir() | provenance | MaD:11 | +| main.rs:119:11:119:38 | ...::metadata(...) [Ok] | main.rs:119:11:119:47 | ... .unwrap() | provenance | MaD:13 | +| main.rs:119:11:119:47 | ... .unwrap() | main.rs:119:11:119:56 | ... .is_dir() | provenance | MaD:15 | | main.rs:119:11:119:56 | ... .is_dir() | main.rs:119:6:119:7 | b3 | provenance | | | main.rs:121:36:121:37 | b3 | main.rs:121:4:121:34 | danger_accept_invalid_hostnames | provenance | MaD:2 Sink:MaD:2 | +| main.rs:129:6:129:10 | input | main.rs:130:2:130:6 | input | provenance | | +| main.rs:129:14:129:27 | ...::stdin | main.rs:129:14:129:29 | ...::stdin(...) | provenance | Src:MaD:10 MaD:10 | +| main.rs:129:14:129:29 | ...::stdin(...) | main.rs:129:6:129:10 | input | provenance | | +| main.rs:130:2:130:6 | input | main.rs:130:18:130:32 | [post] &mut input_line [&ref] | provenance | MaD:17 | +| main.rs:130:18:130:32 | [post] &mut input_line [&ref] | main.rs:130:23:130:32 | [post] input_line | provenance | | +| main.rs:130:23:130:32 | [post] input_line | main.rs:132:17:132:26 | input_line | provenance | | +| main.rs:132:6:132:7 | b4 | main.rs:134:36:134:37 | b4 | provenance | | +| main.rs:132:17:132:26 | input_line | main.rs:132:17:132:42 | input_line.parse() [Ok] | provenance | MaD:11 | +| main.rs:132:17:132:26 | input_line | main.rs:132:17:132:42 | input_line.parse() [Ok] | provenance | MaD:12 | +| main.rs:132:17:132:42 | input_line.parse() [Ok] | main.rs:132:17:132:59 | ... .unwrap_or(...) | provenance | MaD:14 | +| main.rs:132:17:132:59 | ... .unwrap_or(...) | main.rs:132:6:132:7 | b4 | provenance | | +| main.rs:134:36:134:37 | b4 | main.rs:134:4:134:34 | danger_accept_invalid_hostnames | provenance | MaD:2 Sink:MaD:2 | | main.rs:144:6:144:7 | b6 | main.rs:146:36:146:37 | b6 | provenance | | | main.rs:144:39:144:42 | true | main.rs:144:6:144:7 | b6 | provenance | | | main.rs:146:36:146:37 | b6 | main.rs:146:4:146:34 | danger_accept_invalid_hostnames | provenance | MaD:2 Sink:MaD:2 | @@ -66,9 +79,14 @@ models | 7 | Source: ::metadata; ReturnValue.Field[core::result::Result::Ok(0)]; file | | 8 | Source: std::fs::exists; ReturnValue.Field[core::result::Result::Ok(0)]; file | | 9 | Source: std::fs::metadata; ReturnValue.Field[core::result::Result::Ok(0)]; file | -| 10 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 11 | Summary: ::is_dir; Argument[self].Reference; ReturnValue; taint | -| 12 | Summary: ::is_file; Argument[self].Reference; ReturnValue; taint | +| 10 | Source: std::io::stdio::stdin; ReturnValue; stdin | +| 11 | Summary: <_ as core::ops::deref::Deref>::deref; Argument[self].Reference; ReturnValue.Reference; taint | +| 12 | Summary: ::deref; Argument[self]; ReturnValue; value | +| 13 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 14 | Summary: ::unwrap_or; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 15 | Summary: ::is_dir; Argument[self].Reference; ReturnValue; taint | +| 16 | Summary: ::is_file; Argument[self].Reference; ReturnValue; taint | +| 17 | Summary: ::read_line; Argument[self].Reference; Argument[0].Reference; taint | nodes | main.rs:4:4:4:30 | danger_accept_invalid_certs | semmle.label | danger_accept_invalid_certs | | main.rs:4:32:4:35 | true | semmle.label | true | @@ -121,6 +139,18 @@ nodes | main.rs:119:11:119:56 | ... .is_dir() | semmle.label | ... .is_dir() | | main.rs:121:4:121:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | | main.rs:121:36:121:37 | b3 | semmle.label | b3 | +| main.rs:129:6:129:10 | input | semmle.label | input | +| main.rs:129:14:129:27 | ...::stdin | semmle.label | ...::stdin | +| main.rs:129:14:129:29 | ...::stdin(...) | semmle.label | ...::stdin(...) | +| main.rs:130:2:130:6 | input | semmle.label | input | +| main.rs:130:18:130:32 | [post] &mut input_line [&ref] | semmle.label | [post] &mut input_line [&ref] | +| main.rs:130:23:130:32 | [post] input_line | semmle.label | [post] input_line | +| main.rs:132:6:132:7 | b4 | semmle.label | b4 | +| main.rs:132:17:132:26 | input_line | semmle.label | input_line | +| main.rs:132:17:132:42 | input_line.parse() [Ok] | semmle.label | input_line.parse() [Ok] | +| main.rs:132:17:132:59 | ... .unwrap_or(...) | semmle.label | ... .unwrap_or(...) | +| main.rs:134:4:134:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | +| main.rs:134:36:134:37 | b4 | semmle.label | b4 | | main.rs:144:6:144:7 | b6 | semmle.label | b6 | | main.rs:144:39:144:42 | true | semmle.label | true | | main.rs:146:4:146:34 | danger_accept_invalid_hostnames | semmle.label | danger_accept_invalid_hostnames | diff --git a/rust/ql/test/query-tests/security/CWE-295/main.rs b/rust/ql/test/query-tests/security/CWE-295/main.rs index 6088e6fc1be..e8c20c1d6df 100644 --- a/rust/ql/test/query-tests/security/CWE-295/main.rs +++ b/rust/ql/test/query-tests/security/CWE-295/main.rs @@ -126,12 +126,12 @@ fn test_threat_model_source() { // (these are a little closer to something real) let mut input_line = String::new(); - let input = std::io::stdin(); + let input = std::io::stdin(); // $ Source=stdin input.read_line(&mut input_line).unwrap(); let b4: bool = input_line.parse::().unwrap_or(false); let _client = native_tls::TlsConnector::builder() - .danger_accept_invalid_hostnames(b4) // $ MISSING: Alert[rust/disabled-certificate-check]=stdin + .danger_accept_invalid_hostnames(b4) // $ Alert[rust/disabled-certificate-check]=stdin .build() .unwrap(); From 13e0e6c6948657a2ab7df45fc52aa85ecf66b703 Mon Sep 17 00:00:00 2001 From: Chris Smowton Date: Fri, 9 Jan 2026 13:42:43 +0000 Subject: [PATCH 58/63] Reapply "Add integration test for paths and paths-ignore vs. Java buildless mode" This reverts commit 9db11f73c561a0eaf6da0241120849148f5f3669. --- .../java/buildless-paths/codescanning-config.yml | 4 ++++ .../java/buildless-paths/include/ShouldAppear2.java | 1 + .../java/buildless-paths/include/ShouldAppear2.xml | 1 + .../buildless-paths/include/exclude/ShouldNotAppear3.java | 1 + .../buildless-paths/include/exclude/ShouldNotAppear3.xml | 1 + .../java/buildless-paths/sibling/ShouldNotAppear1.java | 1 + .../java/buildless-paths/sibling/ShouldNotAppear1.xml | 1 + .../ql/integration-tests/java/buildless-paths/test.expected | 4 ++++ java/ql/integration-tests/java/buildless-paths/test.py | 5 +++++ java/ql/integration-tests/java/buildless-paths/test.ql | 6 ++++++ 10 files changed, 25 insertions(+) create mode 100644 java/ql/integration-tests/java/buildless-paths/codescanning-config.yml create mode 100644 java/ql/integration-tests/java/buildless-paths/include/ShouldAppear2.java create mode 100644 java/ql/integration-tests/java/buildless-paths/include/ShouldAppear2.xml create mode 100644 java/ql/integration-tests/java/buildless-paths/include/exclude/ShouldNotAppear3.java create mode 100644 java/ql/integration-tests/java/buildless-paths/include/exclude/ShouldNotAppear3.xml create mode 100644 java/ql/integration-tests/java/buildless-paths/sibling/ShouldNotAppear1.java create mode 100644 java/ql/integration-tests/java/buildless-paths/sibling/ShouldNotAppear1.xml create mode 100644 java/ql/integration-tests/java/buildless-paths/test.expected create mode 100644 java/ql/integration-tests/java/buildless-paths/test.py create mode 100644 java/ql/integration-tests/java/buildless-paths/test.ql diff --git a/java/ql/integration-tests/java/buildless-paths/codescanning-config.yml b/java/ql/integration-tests/java/buildless-paths/codescanning-config.yml new file mode 100644 index 00000000000..9baea12fdfe --- /dev/null +++ b/java/ql/integration-tests/java/buildless-paths/codescanning-config.yml @@ -0,0 +1,4 @@ +paths: + - include +paths-ignore: + - include/exclude diff --git a/java/ql/integration-tests/java/buildless-paths/include/ShouldAppear2.java b/java/ql/integration-tests/java/buildless-paths/include/ShouldAppear2.java new file mode 100644 index 00000000000..09e2bc29dcc --- /dev/null +++ b/java/ql/integration-tests/java/buildless-paths/include/ShouldAppear2.java @@ -0,0 +1 @@ +public class ShouldAppear2 { } diff --git a/java/ql/integration-tests/java/buildless-paths/include/ShouldAppear2.xml b/java/ql/integration-tests/java/buildless-paths/include/ShouldAppear2.xml new file mode 100644 index 00000000000..5c2795036a0 --- /dev/null +++ b/java/ql/integration-tests/java/buildless-paths/include/ShouldAppear2.xml @@ -0,0 +1 @@ + diff --git a/java/ql/integration-tests/java/buildless-paths/include/exclude/ShouldNotAppear3.java b/java/ql/integration-tests/java/buildless-paths/include/exclude/ShouldNotAppear3.java new file mode 100644 index 00000000000..164b0c1d1d8 --- /dev/null +++ b/java/ql/integration-tests/java/buildless-paths/include/exclude/ShouldNotAppear3.java @@ -0,0 +1 @@ +public class ShouldNotAppear3 { } diff --git a/java/ql/integration-tests/java/buildless-paths/include/exclude/ShouldNotAppear3.xml b/java/ql/integration-tests/java/buildless-paths/include/exclude/ShouldNotAppear3.xml new file mode 100644 index 00000000000..5c2795036a0 --- /dev/null +++ b/java/ql/integration-tests/java/buildless-paths/include/exclude/ShouldNotAppear3.xml @@ -0,0 +1 @@ + diff --git a/java/ql/integration-tests/java/buildless-paths/sibling/ShouldNotAppear1.java b/java/ql/integration-tests/java/buildless-paths/sibling/ShouldNotAppear1.java new file mode 100644 index 00000000000..55a0b62aa88 --- /dev/null +++ b/java/ql/integration-tests/java/buildless-paths/sibling/ShouldNotAppear1.java @@ -0,0 +1 @@ +public class ShouldNotAppear1 { } diff --git a/java/ql/integration-tests/java/buildless-paths/sibling/ShouldNotAppear1.xml b/java/ql/integration-tests/java/buildless-paths/sibling/ShouldNotAppear1.xml new file mode 100644 index 00000000000..5c2795036a0 --- /dev/null +++ b/java/ql/integration-tests/java/buildless-paths/sibling/ShouldNotAppear1.xml @@ -0,0 +1 @@ + diff --git a/java/ql/integration-tests/java/buildless-paths/test.expected b/java/ql/integration-tests/java/buildless-paths/test.expected new file mode 100644 index 00000000000..95b59dab6b1 --- /dev/null +++ b/java/ql/integration-tests/java/buildless-paths/test.expected @@ -0,0 +1,4 @@ +javaFiles +| include/ShouldAppear2.java:0:0:0:0 | ShouldAppear2 | +#select +| include/ShouldAppear2.xml:0:0:0:0 | include/ShouldAppear2.xml | diff --git a/java/ql/integration-tests/java/buildless-paths/test.py b/java/ql/integration-tests/java/buildless-paths/test.py new file mode 100644 index 00000000000..bbbf14aaa2c --- /dev/null +++ b/java/ql/integration-tests/java/buildless-paths/test.py @@ -0,0 +1,5 @@ +import os +import os.path + +def test(codeql, java): + codeql.database.create(build_mode = "none", codescanning_config = "codescanning-config.yml") diff --git a/java/ql/integration-tests/java/buildless-paths/test.ql b/java/ql/integration-tests/java/buildless-paths/test.ql new file mode 100644 index 00000000000..3023403edfc --- /dev/null +++ b/java/ql/integration-tests/java/buildless-paths/test.ql @@ -0,0 +1,6 @@ +import java + +query predicate javaFiles(File f) { f.isJavaSourceFile() } + +from XmlFile f +select f From 634e9e6c39ecde16be70b92012cf758a68cb220d Mon Sep 17 00:00:00 2001 From: Chris Smowton Date: Fri, 9 Jan 2026 13:42:48 +0000 Subject: [PATCH 59/63] Reapply "Change note" This reverts commit 688f10daf1e61c2be55a8e04fada92b45434db48. --- java/ql/lib/change-notes/2025-12-16-java-xml-paths.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 java/ql/lib/change-notes/2025-12-16-java-xml-paths.md diff --git a/java/ql/lib/change-notes/2025-12-16-java-xml-paths.md b/java/ql/lib/change-notes/2025-12-16-java-xml-paths.md new file mode 100644 index 00000000000..877d0e7e2ed --- /dev/null +++ b/java/ql/lib/change-notes/2025-12-16-java-xml-paths.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* When a code-scanning configuration specifies the `paths:` and/or `paths-ignore:` settings, these are now taken into account by the Java extractor's search for XML and properties files. From d45269609afc5b15bd49e70d0b2a735dc36dd999 Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Fri, 9 Jan 2026 15:33:42 +0100 Subject: [PATCH 60/63] Rust: Add test with fn trait syntax without return type --- .../library-tests/type-inference/closure.rs | 4 + .../type-inference/type-inference.expected | 308 +++++++++--------- 2 files changed, 162 insertions(+), 150 deletions(-) diff --git a/rust/ql/test/library-tests/type-inference/closure.rs b/rust/ql/test/library-tests/type-inference/closure.rs index 43b26819325..bc0cce6c642 100644 --- a/rust/ql/test/library-tests/type-inference/closure.rs +++ b/rust/ql/test/library-tests/type-inference/closure.rs @@ -36,6 +36,10 @@ mod fn_once_trait { let _return = f(true); // $ type=_return:i64 } + fn return_type_omitted(f: F) { + let _return = f(true); // $ MISSING: type=_return:() + } + fn argument_type i64>(f: F) { let arg = Default::default(); // $ target=default type=arg:bool f(arg); diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index a9328488156..0b9222d424f 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -230,51 +230,55 @@ inferCertainType | closure.rs:35:50:37:5 | { ... } | | {EXTERNAL LOCATION} | () | | closure.rs:36:23:36:23 | f | | closure.rs:35:20:35:41 | F | | closure.rs:36:25:36:28 | true | | {EXTERNAL LOCATION} | bool | -| closure.rs:39:46:39:46 | f | | closure.rs:39:22:39:43 | F | -| closure.rs:39:52:42:5 | { ... } | | {EXTERNAL LOCATION} | () | -| closure.rs:41:9:41:9 | f | | closure.rs:39:22:39:43 | F | -| closure.rs:44:39:44:39 | f | | closure.rs:44:20:44:36 | F | -| closure.rs:44:45:44:45 | a | | closure.rs:44:14:44:14 | A | -| closure.rs:44:56:46:5 | { ... } | | closure.rs:44:17:44:17 | B | -| closure.rs:45:9:45:9 | f | | closure.rs:44:20:44:36 | F | -| closure.rs:45:11:45:11 | a | | closure.rs:44:14:44:14 | A | -| closure.rs:48:18:48:18 | f | | closure.rs:48:21:48:43 | impl ... | -| closure.rs:48:53:50:5 | { ... } | | {EXTERNAL LOCATION} | i64 | -| closure.rs:49:9:49:9 | f | | closure.rs:48:21:48:43 | impl ... | -| closure.rs:52:15:64:5 | { ... } | | {EXTERNAL LOCATION} | () | -| closure.rs:53:18:53:18 | x | | {EXTERNAL LOCATION} | bool | -| closure.rs:54:16:54:16 | x | | {EXTERNAL LOCATION} | bool | -| closure.rs:60:27:60:30 | true | | {EXTERNAL LOCATION} | bool | -| closure.rs:63:13:63:15 | _r2 | | {EXTERNAL LOCATION} | i64 | -| closure.rs:63:19:63:30 | apply_two(...) | | {EXTERNAL LOCATION} | i64 | -| closure.rs:68:54:68:54 | f | | {EXTERNAL LOCATION} | Box | -| closure.rs:68:54:68:54 | f | A | {EXTERNAL LOCATION} | Global | -| closure.rs:68:54:68:54 | f | T | closure.rs:68:26:68:51 | F | -| closure.rs:68:65:68:67 | arg | | closure.rs:68:20:68:20 | A | -| closure.rs:68:78:70:5 | { ... } | | closure.rs:68:23:68:23 | B | -| closure.rs:69:9:69:9 | f | | {EXTERNAL LOCATION} | Box | -| closure.rs:69:9:69:9 | f | A | {EXTERNAL LOCATION} | Global | -| closure.rs:69:9:69:9 | f | T | closure.rs:68:26:68:51 | F | -| closure.rs:69:11:69:13 | arg | | closure.rs:68:20:68:20 | A | -| closure.rs:72:30:72:30 | f | | {EXTERNAL LOCATION} | Box | -| closure.rs:72:30:72:30 | f | A | {EXTERNAL LOCATION} | Global | -| closure.rs:72:30:72:30 | f | T | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:72:30:72:30 | f | T.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:72:30:72:30 | f | T.dyn(Args).T0 | closure.rs:72:24:72:24 | A | -| closure.rs:72:30:72:30 | f | T.dyn(Output) | closure.rs:72:27:72:27 | B | -| closure.rs:72:58:72:60 | arg | | closure.rs:72:24:72:24 | A | -| closure.rs:72:66:75:5 | { ... } | | {EXTERNAL LOCATION} | () | -| closure.rs:73:31:73:31 | f | | {EXTERNAL LOCATION} | Box | -| closure.rs:73:31:73:31 | f | A | {EXTERNAL LOCATION} | Global | -| closure.rs:73:31:73:31 | f | T | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:73:31:73:31 | f | T.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:73:31:73:31 | f | T.dyn(Args).T0 | closure.rs:72:24:72:24 | A | -| closure.rs:73:31:73:31 | f | T.dyn(Output) | closure.rs:72:27:72:27 | B | -| closure.rs:73:34:73:36 | arg | | closure.rs:72:24:72:24 | A | -| closure.rs:74:31:74:53 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| closure.rs:74:31:74:53 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| closure.rs:74:41:74:41 | _ | | {EXTERNAL LOCATION} | i64 | -| closure.rs:74:49:74:52 | true | | {EXTERNAL LOCATION} | bool | +| closure.rs:39:45:39:45 | f | | closure.rs:39:28:39:42 | F | +| closure.rs:39:51:41:5 | { ... } | | {EXTERNAL LOCATION} | () | +| closure.rs:40:23:40:23 | f | | closure.rs:39:28:39:42 | F | +| closure.rs:40:25:40:28 | true | | {EXTERNAL LOCATION} | bool | +| closure.rs:43:46:43:46 | f | | closure.rs:43:22:43:43 | F | +| closure.rs:43:52:46:5 | { ... } | | {EXTERNAL LOCATION} | () | +| closure.rs:45:9:45:9 | f | | closure.rs:43:22:43:43 | F | +| closure.rs:48:39:48:39 | f | | closure.rs:48:20:48:36 | F | +| closure.rs:48:45:48:45 | a | | closure.rs:48:14:48:14 | A | +| closure.rs:48:56:50:5 | { ... } | | closure.rs:48:17:48:17 | B | +| closure.rs:49:9:49:9 | f | | closure.rs:48:20:48:36 | F | +| closure.rs:49:11:49:11 | a | | closure.rs:48:14:48:14 | A | +| closure.rs:52:18:52:18 | f | | closure.rs:52:21:52:43 | impl ... | +| closure.rs:52:53:54:5 | { ... } | | {EXTERNAL LOCATION} | i64 | +| closure.rs:53:9:53:9 | f | | closure.rs:52:21:52:43 | impl ... | +| closure.rs:56:15:68:5 | { ... } | | {EXTERNAL LOCATION} | () | +| closure.rs:57:18:57:18 | x | | {EXTERNAL LOCATION} | bool | +| closure.rs:58:16:58:16 | x | | {EXTERNAL LOCATION} | bool | +| closure.rs:64:27:64:30 | true | | {EXTERNAL LOCATION} | bool | +| closure.rs:67:13:67:15 | _r2 | | {EXTERNAL LOCATION} | i64 | +| closure.rs:67:19:67:30 | apply_two(...) | | {EXTERNAL LOCATION} | i64 | +| closure.rs:72:54:72:54 | f | | {EXTERNAL LOCATION} | Box | +| closure.rs:72:54:72:54 | f | A | {EXTERNAL LOCATION} | Global | +| closure.rs:72:54:72:54 | f | T | closure.rs:72:26:72:51 | F | +| closure.rs:72:65:72:67 | arg | | closure.rs:72:20:72:20 | A | +| closure.rs:72:78:74:5 | { ... } | | closure.rs:72:23:72:23 | B | +| closure.rs:73:9:73:9 | f | | {EXTERNAL LOCATION} | Box | +| closure.rs:73:9:73:9 | f | A | {EXTERNAL LOCATION} | Global | +| closure.rs:73:9:73:9 | f | T | closure.rs:72:26:72:51 | F | +| closure.rs:73:11:73:13 | arg | | closure.rs:72:20:72:20 | A | +| closure.rs:76:30:76:30 | f | | {EXTERNAL LOCATION} | Box | +| closure.rs:76:30:76:30 | f | A | {EXTERNAL LOCATION} | Global | +| closure.rs:76:30:76:30 | f | T | {EXTERNAL LOCATION} | dyn FnOnce | +| closure.rs:76:30:76:30 | f | T.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:76:30:76:30 | f | T.dyn(Args).T0 | closure.rs:76:24:76:24 | A | +| closure.rs:76:30:76:30 | f | T.dyn(Output) | closure.rs:76:27:76:27 | B | +| closure.rs:76:58:76:60 | arg | | closure.rs:76:24:76:24 | A | +| closure.rs:76:66:79:5 | { ... } | | {EXTERNAL LOCATION} | () | +| closure.rs:77:31:77:31 | f | | {EXTERNAL LOCATION} | Box | +| closure.rs:77:31:77:31 | f | A | {EXTERNAL LOCATION} | Global | +| closure.rs:77:31:77:31 | f | T | {EXTERNAL LOCATION} | dyn FnOnce | +| closure.rs:77:31:77:31 | f | T.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:77:31:77:31 | f | T.dyn(Args).T0 | closure.rs:76:24:76:24 | A | +| closure.rs:77:31:77:31 | f | T.dyn(Output) | closure.rs:76:27:76:27 | B | +| closure.rs:77:34:77:36 | arg | | closure.rs:76:24:76:24 | A | +| closure.rs:78:31:78:53 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| closure.rs:78:31:78:53 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| closure.rs:78:41:78:41 | _ | | {EXTERNAL LOCATION} | i64 | +| closure.rs:78:49:78:52 | true | | {EXTERNAL LOCATION} | bool | | dereference.rs:13:14:13:18 | SelfParam | | {EXTERNAL LOCATION} | & | | dereference.rs:13:14:13:18 | SelfParam | TRef | dereference.rs:5:1:7:1 | MyIntPointer | | dereference.rs:13:29:15:5 | { ... } | | {EXTERNAL LOCATION} | & | @@ -4976,111 +4980,115 @@ inferType | closure.rs:36:23:36:23 | f | | closure.rs:35:20:35:41 | F | | closure.rs:36:23:36:29 | f(...) | | {EXTERNAL LOCATION} | i64 | | closure.rs:36:25:36:28 | true | | {EXTERNAL LOCATION} | bool | -| closure.rs:39:46:39:46 | f | | closure.rs:39:22:39:43 | F | -| closure.rs:39:52:42:5 | { ... } | | {EXTERNAL LOCATION} | () | -| closure.rs:40:13:40:15 | arg | | {EXTERNAL LOCATION} | bool | -| closure.rs:40:19:40:36 | ...::default(...) | | {EXTERNAL LOCATION} | bool | -| closure.rs:41:9:41:9 | f | | closure.rs:39:22:39:43 | F | -| closure.rs:41:9:41:14 | f(...) | | {EXTERNAL LOCATION} | i64 | -| closure.rs:41:11:41:13 | arg | | {EXTERNAL LOCATION} | bool | -| closure.rs:44:39:44:39 | f | | closure.rs:44:20:44:36 | F | -| closure.rs:44:45:44:45 | a | | closure.rs:44:14:44:14 | A | -| closure.rs:44:56:46:5 | { ... } | | closure.rs:44:17:44:17 | B | -| closure.rs:45:9:45:9 | f | | closure.rs:44:20:44:36 | F | -| closure.rs:45:9:45:12 | f(...) | | closure.rs:44:17:44:17 | B | -| closure.rs:45:11:45:11 | a | | closure.rs:44:14:44:14 | A | -| closure.rs:48:18:48:18 | f | | closure.rs:48:21:48:43 | impl ... | -| closure.rs:48:53:50:5 | { ... } | | {EXTERNAL LOCATION} | i64 | -| closure.rs:49:9:49:9 | f | | closure.rs:48:21:48:43 | impl ... | -| closure.rs:49:9:49:12 | f(...) | | {EXTERNAL LOCATION} | i64 | -| closure.rs:49:11:49:11 | 2 | | {EXTERNAL LOCATION} | i32 | -| closure.rs:49:11:49:11 | 2 | | {EXTERNAL LOCATION} | i64 | -| closure.rs:52:15:64:5 | { ... } | | {EXTERNAL LOCATION} | () | -| closure.rs:53:13:53:13 | f | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:53:13:53:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:53:13:53:13 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | -| closure.rs:53:13:53:13 | f | dyn(Output) | {EXTERNAL LOCATION} | i32 | -| closure.rs:53:13:53:13 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | -| closure.rs:53:17:59:9 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:53:17:59:9 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:53:17:59:9 | \|...\| ... | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | -| closure.rs:53:17:59:9 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | i32 | -| closure.rs:53:17:59:9 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | i64 | -| closure.rs:53:18:53:18 | x | | {EXTERNAL LOCATION} | bool | -| closure.rs:53:34:59:9 | { ... } | | {EXTERNAL LOCATION} | i32 | -| closure.rs:53:34:59:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| closure.rs:54:13:58:13 | if x {...} else {...} | | {EXTERNAL LOCATION} | i32 | -| closure.rs:54:13:58:13 | if x {...} else {...} | | {EXTERNAL LOCATION} | i64 | -| closure.rs:54:16:54:16 | x | | {EXTERNAL LOCATION} | bool | -| closure.rs:54:18:56:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| closure.rs:54:18:56:13 | { ... } | | {EXTERNAL LOCATION} | i64 | -| closure.rs:55:17:55:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| closure.rs:55:17:55:17 | 1 | | {EXTERNAL LOCATION} | i64 | -| closure.rs:56:20:58:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| closure.rs:56:20:58:13 | { ... } | | {EXTERNAL LOCATION} | i64 | -| closure.rs:57:17:57:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| closure.rs:57:17:57:17 | 0 | | {EXTERNAL LOCATION} | i64 | -| closure.rs:60:13:60:14 | _r | | {EXTERNAL LOCATION} | i32 | -| closure.rs:60:13:60:14 | _r | | {EXTERNAL LOCATION} | i64 | -| closure.rs:60:18:60:31 | apply(...) | | {EXTERNAL LOCATION} | i32 | -| closure.rs:60:18:60:31 | apply(...) | | {EXTERNAL LOCATION} | i64 | -| closure.rs:60:24:60:24 | f | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:60:24:60:24 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:60:24:60:24 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | -| closure.rs:60:24:60:24 | f | dyn(Output) | {EXTERNAL LOCATION} | i32 | -| closure.rs:60:24:60:24 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | -| closure.rs:60:27:60:30 | true | | {EXTERNAL LOCATION} | bool | -| closure.rs:62:13:62:13 | f | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:62:13:62:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:62:17:62:25 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:62:17:62:25 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:62:25:62:25 | 1 | | {EXTERNAL LOCATION} | i32 | -| closure.rs:63:13:63:15 | _r2 | | {EXTERNAL LOCATION} | i64 | -| closure.rs:63:19:63:30 | apply_two(...) | | {EXTERNAL LOCATION} | i64 | -| closure.rs:63:29:63:29 | f | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:63:29:63:29 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:68:54:68:54 | f | | {EXTERNAL LOCATION} | Box | -| closure.rs:68:54:68:54 | f | A | {EXTERNAL LOCATION} | Global | -| closure.rs:68:54:68:54 | f | T | closure.rs:68:26:68:51 | F | -| closure.rs:68:65:68:67 | arg | | closure.rs:68:20:68:20 | A | -| closure.rs:68:78:70:5 | { ... } | | closure.rs:68:23:68:23 | B | -| closure.rs:69:9:69:9 | f | | {EXTERNAL LOCATION} | Box | -| closure.rs:69:9:69:9 | f | A | {EXTERNAL LOCATION} | Global | -| closure.rs:69:9:69:9 | f | T | closure.rs:68:26:68:51 | F | -| closure.rs:69:9:69:14 | f(...) | | closure.rs:68:23:68:23 | B | -| closure.rs:69:11:69:13 | arg | | closure.rs:68:20:68:20 | A | -| closure.rs:72:30:72:30 | f | | {EXTERNAL LOCATION} | Box | -| closure.rs:72:30:72:30 | f | A | {EXTERNAL LOCATION} | Global | -| closure.rs:72:30:72:30 | f | T | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:72:30:72:30 | f | T.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:72:30:72:30 | f | T.dyn(Args).T0 | closure.rs:72:24:72:24 | A | -| closure.rs:72:30:72:30 | f | T.dyn(Output) | closure.rs:72:27:72:27 | B | -| closure.rs:72:58:72:60 | arg | | closure.rs:72:24:72:24 | A | -| closure.rs:72:66:75:5 | { ... } | | {EXTERNAL LOCATION} | () | -| closure.rs:73:13:73:15 | _r1 | | closure.rs:72:27:72:27 | B | -| closure.rs:73:19:73:37 | apply_boxed(...) | | closure.rs:72:27:72:27 | B | -| closure.rs:73:31:73:31 | f | | {EXTERNAL LOCATION} | Box | -| closure.rs:73:31:73:31 | f | A | {EXTERNAL LOCATION} | Global | -| closure.rs:73:31:73:31 | f | T | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:73:31:73:31 | f | T.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:73:31:73:31 | f | T.dyn(Args).T0 | closure.rs:72:24:72:24 | A | -| closure.rs:73:31:73:31 | f | T.dyn(Output) | closure.rs:72:27:72:27 | B | -| closure.rs:73:34:73:36 | arg | | closure.rs:72:24:72:24 | A | -| closure.rs:74:13:74:15 | _r2 | | {EXTERNAL LOCATION} | bool | -| closure.rs:74:19:74:57 | apply_boxed(...) | | {EXTERNAL LOCATION} | bool | -| closure.rs:74:31:74:53 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| closure.rs:74:31:74:53 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| closure.rs:74:31:74:53 | ...::new(...) | T | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:74:31:74:53 | ...::new(...) | T.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:74:31:74:53 | ...::new(...) | T.dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:74:31:74:53 | ...::new(...) | T.dyn(Output) | {EXTERNAL LOCATION} | bool | -| closure.rs:74:40:74:52 | \|...\| true | | {EXTERNAL LOCATION} | dyn FnOnce | -| closure.rs:74:40:74:52 | \|...\| true | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | -| closure.rs:74:40:74:52 | \|...\| true | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | -| closure.rs:74:40:74:52 | \|...\| true | dyn(Output) | {EXTERNAL LOCATION} | bool | -| closure.rs:74:41:74:41 | _ | | {EXTERNAL LOCATION} | i64 | -| closure.rs:74:49:74:52 | true | | {EXTERNAL LOCATION} | bool | -| closure.rs:74:56:74:56 | 3 | | {EXTERNAL LOCATION} | i32 | +| closure.rs:39:45:39:45 | f | | closure.rs:39:28:39:42 | F | +| closure.rs:39:51:41:5 | { ... } | | {EXTERNAL LOCATION} | () | +| closure.rs:40:23:40:23 | f | | closure.rs:39:28:39:42 | F | +| closure.rs:40:25:40:28 | true | | {EXTERNAL LOCATION} | bool | +| closure.rs:43:46:43:46 | f | | closure.rs:43:22:43:43 | F | +| closure.rs:43:52:46:5 | { ... } | | {EXTERNAL LOCATION} | () | +| closure.rs:44:13:44:15 | arg | | {EXTERNAL LOCATION} | bool | +| closure.rs:44:19:44:36 | ...::default(...) | | {EXTERNAL LOCATION} | bool | +| closure.rs:45:9:45:9 | f | | closure.rs:43:22:43:43 | F | +| closure.rs:45:9:45:14 | f(...) | | {EXTERNAL LOCATION} | i64 | +| closure.rs:45:11:45:13 | arg | | {EXTERNAL LOCATION} | bool | +| closure.rs:48:39:48:39 | f | | closure.rs:48:20:48:36 | F | +| closure.rs:48:45:48:45 | a | | closure.rs:48:14:48:14 | A | +| closure.rs:48:56:50:5 | { ... } | | closure.rs:48:17:48:17 | B | +| closure.rs:49:9:49:9 | f | | closure.rs:48:20:48:36 | F | +| closure.rs:49:9:49:12 | f(...) | | closure.rs:48:17:48:17 | B | +| closure.rs:49:11:49:11 | a | | closure.rs:48:14:48:14 | A | +| closure.rs:52:18:52:18 | f | | closure.rs:52:21:52:43 | impl ... | +| closure.rs:52:53:54:5 | { ... } | | {EXTERNAL LOCATION} | i64 | +| closure.rs:53:9:53:9 | f | | closure.rs:52:21:52:43 | impl ... | +| closure.rs:53:9:53:12 | f(...) | | {EXTERNAL LOCATION} | i64 | +| closure.rs:53:11:53:11 | 2 | | {EXTERNAL LOCATION} | i32 | +| closure.rs:53:11:53:11 | 2 | | {EXTERNAL LOCATION} | i64 | +| closure.rs:56:15:68:5 | { ... } | | {EXTERNAL LOCATION} | () | +| closure.rs:57:13:57:13 | f | | {EXTERNAL LOCATION} | dyn FnOnce | +| closure.rs:57:13:57:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:57:13:57:13 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | +| closure.rs:57:13:57:13 | f | dyn(Output) | {EXTERNAL LOCATION} | i32 | +| closure.rs:57:13:57:13 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:57:17:63:9 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | +| closure.rs:57:17:63:9 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:57:17:63:9 | \|...\| ... | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | +| closure.rs:57:17:63:9 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | i32 | +| closure.rs:57:17:63:9 | \|...\| ... | dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:57:18:57:18 | x | | {EXTERNAL LOCATION} | bool | +| closure.rs:57:34:63:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| closure.rs:57:34:63:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| closure.rs:58:13:62:13 | if x {...} else {...} | | {EXTERNAL LOCATION} | i32 | +| closure.rs:58:13:62:13 | if x {...} else {...} | | {EXTERNAL LOCATION} | i64 | +| closure.rs:58:16:58:16 | x | | {EXTERNAL LOCATION} | bool | +| closure.rs:58:18:60:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| closure.rs:58:18:60:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| closure.rs:59:17:59:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| closure.rs:59:17:59:17 | 1 | | {EXTERNAL LOCATION} | i64 | +| closure.rs:60:20:62:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| closure.rs:60:20:62:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| closure.rs:61:17:61:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| closure.rs:61:17:61:17 | 0 | | {EXTERNAL LOCATION} | i64 | +| closure.rs:64:13:64:14 | _r | | {EXTERNAL LOCATION} | i32 | +| closure.rs:64:13:64:14 | _r | | {EXTERNAL LOCATION} | i64 | +| closure.rs:64:18:64:31 | apply(...) | | {EXTERNAL LOCATION} | i32 | +| closure.rs:64:18:64:31 | apply(...) | | {EXTERNAL LOCATION} | i64 | +| closure.rs:64:24:64:24 | f | | {EXTERNAL LOCATION} | dyn FnOnce | +| closure.rs:64:24:64:24 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:64:24:64:24 | f | dyn(Args).T0 | {EXTERNAL LOCATION} | bool | +| closure.rs:64:24:64:24 | f | dyn(Output) | {EXTERNAL LOCATION} | i32 | +| closure.rs:64:24:64:24 | f | dyn(Output) | {EXTERNAL LOCATION} | i64 | +| closure.rs:64:27:64:30 | true | | {EXTERNAL LOCATION} | bool | +| closure.rs:66:13:66:13 | f | | {EXTERNAL LOCATION} | dyn FnOnce | +| closure.rs:66:13:66:13 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:66:17:66:25 | \|...\| ... | | {EXTERNAL LOCATION} | dyn FnOnce | +| closure.rs:66:17:66:25 | \|...\| ... | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:66:25:66:25 | 1 | | {EXTERNAL LOCATION} | i32 | +| closure.rs:67:13:67:15 | _r2 | | {EXTERNAL LOCATION} | i64 | +| closure.rs:67:19:67:30 | apply_two(...) | | {EXTERNAL LOCATION} | i64 | +| closure.rs:67:29:67:29 | f | | {EXTERNAL LOCATION} | dyn FnOnce | +| closure.rs:67:29:67:29 | f | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:72:54:72:54 | f | | {EXTERNAL LOCATION} | Box | +| closure.rs:72:54:72:54 | f | A | {EXTERNAL LOCATION} | Global | +| closure.rs:72:54:72:54 | f | T | closure.rs:72:26:72:51 | F | +| closure.rs:72:65:72:67 | arg | | closure.rs:72:20:72:20 | A | +| closure.rs:72:78:74:5 | { ... } | | closure.rs:72:23:72:23 | B | +| closure.rs:73:9:73:9 | f | | {EXTERNAL LOCATION} | Box | +| closure.rs:73:9:73:9 | f | A | {EXTERNAL LOCATION} | Global | +| closure.rs:73:9:73:9 | f | T | closure.rs:72:26:72:51 | F | +| closure.rs:73:9:73:14 | f(...) | | closure.rs:72:23:72:23 | B | +| closure.rs:73:11:73:13 | arg | | closure.rs:72:20:72:20 | A | +| closure.rs:76:30:76:30 | f | | {EXTERNAL LOCATION} | Box | +| closure.rs:76:30:76:30 | f | A | {EXTERNAL LOCATION} | Global | +| closure.rs:76:30:76:30 | f | T | {EXTERNAL LOCATION} | dyn FnOnce | +| closure.rs:76:30:76:30 | f | T.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:76:30:76:30 | f | T.dyn(Args).T0 | closure.rs:76:24:76:24 | A | +| closure.rs:76:30:76:30 | f | T.dyn(Output) | closure.rs:76:27:76:27 | B | +| closure.rs:76:58:76:60 | arg | | closure.rs:76:24:76:24 | A | +| closure.rs:76:66:79:5 | { ... } | | {EXTERNAL LOCATION} | () | +| closure.rs:77:13:77:15 | _r1 | | closure.rs:76:27:76:27 | B | +| closure.rs:77:19:77:37 | apply_boxed(...) | | closure.rs:76:27:76:27 | B | +| closure.rs:77:31:77:31 | f | | {EXTERNAL LOCATION} | Box | +| closure.rs:77:31:77:31 | f | A | {EXTERNAL LOCATION} | Global | +| closure.rs:77:31:77:31 | f | T | {EXTERNAL LOCATION} | dyn FnOnce | +| closure.rs:77:31:77:31 | f | T.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:77:31:77:31 | f | T.dyn(Args).T0 | closure.rs:76:24:76:24 | A | +| closure.rs:77:31:77:31 | f | T.dyn(Output) | closure.rs:76:27:76:27 | B | +| closure.rs:77:34:77:36 | arg | | closure.rs:76:24:76:24 | A | +| closure.rs:78:13:78:15 | _r2 | | {EXTERNAL LOCATION} | bool | +| closure.rs:78:19:78:57 | apply_boxed(...) | | {EXTERNAL LOCATION} | bool | +| closure.rs:78:31:78:53 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| closure.rs:78:31:78:53 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| closure.rs:78:31:78:53 | ...::new(...) | T | {EXTERNAL LOCATION} | dyn FnOnce | +| closure.rs:78:31:78:53 | ...::new(...) | T.dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:78:31:78:53 | ...::new(...) | T.dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:78:31:78:53 | ...::new(...) | T.dyn(Output) | {EXTERNAL LOCATION} | bool | +| closure.rs:78:40:78:52 | \|...\| true | | {EXTERNAL LOCATION} | dyn FnOnce | +| closure.rs:78:40:78:52 | \|...\| true | dyn(Args) | {EXTERNAL LOCATION} | (T_1) | +| closure.rs:78:40:78:52 | \|...\| true | dyn(Args).T0 | {EXTERNAL LOCATION} | i64 | +| closure.rs:78:40:78:52 | \|...\| true | dyn(Output) | {EXTERNAL LOCATION} | bool | +| closure.rs:78:41:78:41 | _ | | {EXTERNAL LOCATION} | i64 | +| closure.rs:78:49:78:52 | true | | {EXTERNAL LOCATION} | bool | +| closure.rs:78:56:78:56 | 3 | | {EXTERNAL LOCATION} | i32 | | dereference.rs:13:14:13:18 | SelfParam | | {EXTERNAL LOCATION} | & | | dereference.rs:13:14:13:18 | SelfParam | TRef | dereference.rs:5:1:7:1 | MyIntPointer | | dereference.rs:13:29:15:5 | { ... } | | {EXTERNAL LOCATION} | & | From 41921a85bb127b4f406d9543017987c413c5d87d Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Fri, 9 Jan 2026 16:08:01 +0100 Subject: [PATCH 61/63] Rust: Make function trait syntax without return type default to unit --- .../lib/codeql/rust/internal/TypeMention.qll | 38 +++++++++++++------ .../library-tests/type-inference/closure.rs | 2 +- .../type-inference/type-inference.expected | 2 + 3 files changed, 30 insertions(+), 12 deletions(-) diff --git a/rust/ql/lib/codeql/rust/internal/TypeMention.qll b/rust/ql/lib/codeql/rust/internal/TypeMention.qll index 74661bb86c3..2f451c521d8 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeMention.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeMention.qll @@ -222,6 +222,33 @@ class NonAliasPathTypeMention extends PathTypeMention { result = this.getPositionalTypeArgument(pragma[only_bind_into](i), path) and tp = this.resolveRootType().getPositionalTypeParameter(pragma[only_bind_into](i)) ) + or + // Handle the special syntactic sugar for function traits. The syntactic + // form is detected by the presence of a parenthesized argument list which + // is a mandatory part of the syntax [1]. + // + // For now we only support `FnOnce` as we can't support the "inherited" + // associated types of `Fn` and `FnMut` yet. + // + // [1]: https://doc.rust-lang.org/reference/paths.html#grammar-TypePathFn + exists(FnOnceTrait t, PathSegment s | + t = resolved and + s = this.getSegment() and + s.hasParenthesizedArgList() + | + tp = TTypeParamTypeParameter(t.getTypeParam()) and + result = s.getParenthesizedArgList().(TypeMention).resolveTypeAt(path) + or + tp = TAssociatedTypeTypeParameter(t.getOutputType()) and + ( + result = s.getRetType().getTypeRepr().(TypeMention).resolveTypeAt(path) + or + // When the `-> ...` return type is omitted, it defaults to `()`. + not s.hasRetType() and + result instanceof UnitType and + path.isEmpty() + ) + ) } pragma[nomagic] @@ -256,17 +283,6 @@ class NonAliasPathTypeMention extends PathTypeMention { result = alias.getTypeRepr() and tp = TAssociatedTypeTypeParameter(this.getResolvedAlias(pragma[only_bind_into](name))) ) - or - // Handle the special syntactic sugar for function traits. For now we only - // support `FnOnce` as we can't support the "inherited" associated types of - // `Fn` and `FnMut` yet. - exists(FnOnceTrait t | t = resolved | - tp = TTypeParamTypeParameter(t.getTypeParam()) and - result = this.getSegment().getParenthesizedArgList() - or - tp = TAssociatedTypeTypeParameter(t.getOutputType()) and - result = this.getSegment().getRetType().getTypeRepr() - ) } pragma[nomagic] diff --git a/rust/ql/test/library-tests/type-inference/closure.rs b/rust/ql/test/library-tests/type-inference/closure.rs index bc0cce6c642..e5a9c83aa07 100644 --- a/rust/ql/test/library-tests/type-inference/closure.rs +++ b/rust/ql/test/library-tests/type-inference/closure.rs @@ -37,7 +37,7 @@ mod fn_once_trait { } fn return_type_omitted(f: F) { - let _return = f(true); // $ MISSING: type=_return:() + let _return = f(true); // $ type=_return:() } fn argument_type i64>(f: F) { diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index 0b9222d424f..353b18ff840 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -4982,7 +4982,9 @@ inferType | closure.rs:36:25:36:28 | true | | {EXTERNAL LOCATION} | bool | | closure.rs:39:45:39:45 | f | | closure.rs:39:28:39:42 | F | | closure.rs:39:51:41:5 | { ... } | | {EXTERNAL LOCATION} | () | +| closure.rs:40:13:40:19 | _return | | {EXTERNAL LOCATION} | () | | closure.rs:40:23:40:23 | f | | closure.rs:39:28:39:42 | F | +| closure.rs:40:23:40:29 | f(...) | | {EXTERNAL LOCATION} | () | | closure.rs:40:25:40:28 | true | | {EXTERNAL LOCATION} | bool | | closure.rs:43:46:43:46 | f | | closure.rs:43:22:43:43 | F | | closure.rs:43:52:46:5 | { ... } | | {EXTERNAL LOCATION} | () | From 4318c285cb24e521c0cfdf94f91967b4cc569eef Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Jan 2026 03:07:33 +0000 Subject: [PATCH 62/63] Bump golang.org/x/mod Bumps the extractor-dependencies group in /go/extractor with 1 update: [golang.org/x/mod](https://github.com/golang/mod). Updates `golang.org/x/mod` from 0.31.0 to 0.32.0 - [Commits](https://github.com/golang/mod/compare/v0.31.0...v0.32.0) --- updated-dependencies: - dependency-name: golang.org/x/mod dependency-version: 0.32.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: extractor-dependencies ... Signed-off-by: dependabot[bot] --- go/extractor/go.mod | 2 +- go/extractor/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go/extractor/go.mod b/go/extractor/go.mod index 2729c7dfcc5..ece2a30deb0 100644 --- a/go/extractor/go.mod +++ b/go/extractor/go.mod @@ -9,7 +9,7 @@ toolchain go1.25.0 // when adding or removing dependencies, run // bazel mod tidy require ( - golang.org/x/mod v0.31.0 + golang.org/x/mod v0.32.0 golang.org/x/tools v0.40.0 ) diff --git a/go/extractor/go.sum b/go/extractor/go.sum index 488d2003193..4b494d6f23f 100644 --- a/go/extractor/go.sum +++ b/go/extractor/go.sum @@ -1,7 +1,7 @@ github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -golang.org/x/mod v0.31.0 h1:HaW9xtz0+kOcWKwli0ZXy79Ix+UW/vOfmWI5QVd2tgI= -golang.org/x/mod v0.31.0/go.mod h1:43JraMp9cGx1Rx3AqioxrbrhNsLl2l/iNAvuBkrezpg= +golang.org/x/mod v0.32.0 h1:9F4d3PHLljb6x//jOyokMv3eX+YDeepZSEo3mFJy93c= +golang.org/x/mod v0.32.0/go.mod h1:SgipZ/3h2Ci89DlEtEXWUk/HteuRin+HHhN+WbNhguU= golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/tools v0.40.0 h1:yLkxfA+Qnul4cs9QA3KnlFu0lVmd8JJfoq+E41uSutA= From aae8ec224038ec9782a77b0b475ba9fc10bd77bf Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Mon, 12 Jan 2026 09:39:15 +0100 Subject: [PATCH 63/63] SSA: Use fastTC for even better performance. --- shared/ssa/codeql/ssa/Ssa.qll | 35 +++++++++++------------------------ 1 file changed, 11 insertions(+), 24 deletions(-) diff --git a/shared/ssa/codeql/ssa/Ssa.qll b/shared/ssa/codeql/ssa/Ssa.qll index b58d28c534f..cb2d527c964 100644 --- a/shared/ssa/codeql/ssa/Ssa.qll +++ b/shared/ssa/codeql/ssa/Ssa.qll @@ -2095,38 +2095,25 @@ module Make< ) } - /** - * Holds if `prev` is the block containing the unique predecessor of `phi` - * that reaches `phi` through the input block `input`, and that `mid` is a - * block in the dominator tree between `prev` and `input` that is - * guard-equivalent with `input` in the sense that the set of guards - * controlling `mid` is the same as the set of guards controlling `input`. - * - * This is restricted to phi inputs that are actually read. - */ - private predicate phiInputGuardEquivalenceReaches( - BasicBlock prev, BasicBlock mid, SsaPhiExt phi, BasicBlock input - ) { - phiInputHasRead(phi, input) and - AdjacentSsaRefs::adjacentRefPhi(prev, _, input, phi.getBasicBlock(), phi.getSourceVariable()) and - mid = input - or - exists(BasicBlock mid0 | - phiInputGuardEquivalenceReaches(prev, mid0, phi, input) and - not guardControlledBranchTarget(mid0) and - mid0 != prev and - mid = mid0.getImmediateDominator() - ) + private BasicBlock getGuardEquivalentImmediateDominator(BasicBlock bb) { + result = bb.getImmediateDominator() and + not guardControlledBranchTarget(bb) } /** * Holds if the immediately preceding reference to the input to `phi` from - * the block `input` is guard-equivalent with `input`. + * the block `input` is guard-equivalent with `input` in the sense that the + * set of guards controlling the preceding reference is the same as the set + * of guards controlling `input`. * * This is restricted to phi inputs that are actually read. */ private predicate phiInputIsGuardEquivalentWithPreviousRef(SsaPhiExt phi, BasicBlock input) { - exists(BasicBlock prev | phiInputGuardEquivalenceReaches(prev, prev, phi, input)) + exists(BasicBlock prev | + phiInputHasRead(phi, input) and + AdjacentSsaRefs::adjacentRefPhi(prev, _, input, phi.getBasicBlock(), phi.getSourceVariable()) and + prev = getGuardEquivalentImmediateDominator*(input) + ) } /**