1%%
2%% %CopyrightBegin%
3%%
4%% Copyright Ericsson AB 1997-2016. All Rights Reserved.
5%%
6%% Licensed under the Apache License, Version 2.0 (the "License");
7%% you may not use this file except in compliance with the License.
8%% You may obtain a copy of the License at
9%%
10%%     http://www.apache.org/licenses/LICENSE-2.0
11%%
12%% Unless required by applicable law or agreed to in writing, software
13%% distributed under the License is distributed on an "AS IS" BASIS,
14%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15%% See the License for the specific language governing permissions and
16%% limitations under the License.
17%%
18%% %CopyrightEnd%
19%%
20-module(beam_compiler_4).
21-export([beam_compiler_4/0]).
22
23%% From Ulf Wiger.
24
25beam_compiler_4() ->
26    ok.
27
28selected_alarm(_Env, Parameters) ->
29    UnWebParam = x,
30    [Time, Severity, Info, Cause,
31     Type, Sender, Name, FaultId] = bar:foo(),
32
33    %% The following case generates no test heap instructions,
34    %% but the test heap generated before the call to bar:foo(),
35    %% will be moved to here.  And the number of words to allocate
36    %% will be ridicously big (> 65535) and will not fit in a 16 big
37    %% word.
38
39    SenderLink = case Name of
40		     "pchScheduledConnectionAlarm" ->
41			 Sender;
42		     "pchVpVcAlarm" ->
43			 Sender;
44		     "pchSystemMemoryAlarm" ->
45			 Sender;
46		     "uniProtocolRestartFailureAlarm" ->
47			 Sender;
48		     "spvcScheduledConnectionAlarm" ->
49			 Sender;
50		     "eqmSwitchCoreInterfaceAlarm" ->
51			 Sender;
52		     "atmPhysicalLayerAlarm" ->
53			 Sender;
54		     "atmBufferCongestionAlarm" ->
55			 Sender;
56		     "sdhLinkAlarm" ->
57			 Sender;
58		     "sdhFarEndAlarm" ->
59			 Sender;
60		     "sdhUpperQosAlarm" ->
61			 Sender;
62		     "sdhLowerQosAlarm" ->
63			 Sender;
64		     "eqmSwitchCoreAlarm" ->
65			 Sender;
66		     "eqmEtAlarm" ->
67			 Sender;
68		     "eqmHwIdentityFaultAlarm" ->
69			 Sender;
70		     "eqmOperatorBlockedEquipmentAlarm" ->
71			 Sender;
72		     "pdh34PathAlarm" ->
73			 Sender;
74		     "pdh34ObservationAlarm" ->
75			 Sender;
76		     "pdh34UpperQosAlarm" ->
77			 Sender;
78		     "pdh34LowerQosAlarm" ->
79			 Sender;
80		     "nsySynchRefAlarm" ->
81			 Sender;
82		     "nsySynchRefBlockedAlarm" ->
83			 Sender;
84		     "nsySynchNodeHoldoverAlarm" ->
85			 Sender;
86		     "nsySynchNodeNotWorkingAlarm" ->
87			 Sender;
88		     "eqmAtbAlarm" ->
89			 Sender;
90		     "eqmCbEtAlarm" ->
91			 Sender;
92		     "eqmCpAlarm" ->
93			 Sender;
94		     "eqmCpInterfaceAlarm" ->
95			 Sender;
96		     "eqmCbClkAlarm" ->
97			 Sender;
98		     "eqmCbClkInterfaceAlarm" ->
99			 Sender;
100		     "eqmCbClkVelocityAlarm" ->
101			 Sender;
102		     "eqmCbClkPhaseDiffAlarm" ->
103			 Sender;
104		     "eqmHwNotFoundAlarm" ->
105			 Sender;
106		     "eqmPduAlarm" ->
107			 Sender;
108		     "eqmFanAlarm" ->
109			 Sender;
110		     "eqmLocAlarm" ->
111			 Sender;
112		     "eqmCustomerDefined1Alarm" ->
113			 Sender;
114		     "eqmCustomerDefined2Alarm" ->
115			 Sender;
116		     "eqmCustomerDefined3Alarm" ->
117			 Sender;
118		     "eqmCustomerDefined4Alarm" ->
119			 Sender;
120		     "eqmOperatorBlockedLinkAlarm" ->
121			 Sender;
122		     "eqmPowerFilterAlarm" ->
123			 Sender;
124		     "eqmCbAbrAlarm" ->
125			 Sender;
126		     "eqmAlarmCutOffAlarm" ->
127			 Sender;
128		     OtherAlarm ->
129			 Sender
130		 end,
131
132    %% The testHeap instruction generated here will move up to before
133    %% the case.
134
135    bar:foo("<TABLE>
136                           <TR><TD ALIGN=LEFT>Fault id:
137                               <TD>" ++ FaultId ++ "
138                           <TR><TD ALIGN=LEFT>Name:
139                               <TD>" ++ Name ++ "
140                           <TR><TD ALIGN=LEFT>Sender:
141                               <TD>" ++ SenderLink ++ "
142                           <TR><TD ALIGN=LEFT>Class:
143                               <TD>" ++ Type ++ "
144                           <TR><TD ALIGN=LEFT>Cause:
145                               <TD>" ++ Cause ++ "
146                           <TR><TD ALIGN=LEFT>Severity:
147                               <TD>" ++ Severity ++ "
148                           <TR><TD ALIGN=LEFT>Information:
149                               <TD>" ++ Info ++ "
150                           <TR><TD ALIGN=LEFT>Time:
151                               <TD>" ++ Time).
152