simonmar [Tue, 13 Jun 2000 15:35:29 +0000 (15:35 +0000)]
[project @ 2000-06-13 15:35:29 by simonmar]
Add NetBSD/x86 support.
simonmar [Tue, 13 Jun 2000 15:35:29 +0000 (15:35 +0000)]
[project @ 2000-06-13 15:35:29 by simonmar]
- generalise the per-module initialisation stubs so that we use it
in normal (non-profiled) code too. The initialisation stubs are
now called '__init_<module>' rather than '_reg<module>'.
- Register foreign exported functions as stable pointers in the
initialisation code for the module. This fixes the foreign export
problems reported by several people.
- remove the concept of "module groups" from the profiling subsystem.
- change the profiling semantics slightly; it should be unnecessary
to use '-caf-all' to get reasonable profiles now.
simonm [Tue, 13 Jun 2000 15:35:29 +0000 (15:35 +0000)]
[project @ 2000-06-13 15:35:29 by simonm]
sparc-sun-solaris2 uses .LLC<n> to refer to local string constants.
simonm [Tue, 13 Jun 2000 15:35:29 +0000 (15:35 +0000)]
[project @ 2000-06-13 15:35:29 by simonm]
mangler fix.
simonm [Tue, 13 Jun 2000 15:35:29 +0000 (15:35 +0000)]
[project @ 2000-06-13 15:35:29 by simonm]
fixup problem with '.' at the front of a local label.
simonm [Tue, 13 Jun 2000 15:35:29 +0000 (15:35 +0000)]
[project @ 2000-06-13 15:35:29 by simonm]
egcs sometimes leaves a 'popl %ecx' in the epilogue, it seems.
simonm [Tue, 13 Jun 2000 15:35:29 +0000 (15:35 +0000)]
[project @ 2000-06-13 15:35:29 by simonm]
Reduce alignment for info tables on x86 to 1 word. It was previously
4 words, which meant that the entry code was wrongly aligned all the
time (because info tables are either 2 or 3 words). At least this way
we've got a 1 in 4 chance of being properly aligned.
simonm [Tue, 13 Jun 2000 15:35:29 +0000 (15:35 +0000)]
[project @ 2000-06-13 15:35:29 by simonm]
Move 4.01 onto the main trunk.
simonm [Tue, 13 Jun 2000 15:35:29 +0000 (15:35 +0000)]
[project @ 2000-06-13 15:35:29 by simonm]
Miraculously, the same bug exists on sparc-sun-solaris2.
simonm [Tue, 13 Jun 2000 15:35:29 +0000 (15:35 +0000)]
[project @ 2000-06-13 15:35:29 by simonm]
HPPA tweaks.
simonm [Tue, 13 Jun 2000 15:35:29 +0000 (15:35 +0000)]
[project @ 2000-06-13 15:35:29 by simonm]
Fix splitting on i386-unknwon-linux: string constants were being
duplicated in each object, leading to large increases in binary
sizes.
simonm [Tue, 13 Jun 2000 15:35:29 +0000 (15:35 +0000)]
[project @ 2000-06-13 15:35:29 by simonm]
Fix for egcs on sparc.
simonm [Tue, 13 Jun 2000 15:35:29 +0000 (15:35 +0000)]
[project @ 2000-06-13 15:35:29 by simonm]
Changes to unbox the state in the ST and IO monads.
ST now has type
newtype ST s a = ST (State# s -> STret s a)
data STret s a = STret (State# s) a
IO now has type
newtype IO a = IO (State# RealWorld -> IOResult a)
data IOResult a = IOok (State# RealWorld) a
| IOfail (State# RealWorld) IOError
So ST should be slightly more efficient, and IO should be nearly as
efficient as ST.
simonm [Tue, 13 Jun 2000 15:35:29 +0000 (15:35 +0000)]
[project @ 2000-06-13 15:35:29 by simonm]
Bring in rev. 1.22.2.1 - Don't apply -monly-n-reg patches to _regBlah
functions (profiling cost-centre register things)
simonm [Tue, 13 Jun 2000 15:35:29 +0000 (15:35 +0000)]
[project @ 2000-06-13 15:35:29 by simonm]
Another sparc/egcs fix.
simonm [Tue, 13 Jun 2000 15:35:29 +0000 (15:35 +0000)]
[project @ 2000-06-13 15:35:29 by simonm]
- support the .p2align directive on x86 a.out architectures. This
might be required for others, too.
rrt [Tue, 13 Jun 2000 15:35:29 +0000 (15:35 +0000)]
[project @ 2000-06-13 15:35:29 by rrt]
Added subl clause to epilogue munging.
partain [Tue, 13 Jun 2000 15:35:29 +0000 (15:35 +0000)]
[project @ 2000-06-13 15:35:29 by partain]
partain 1.3 changes to 960626
partain [Tue, 13 Jun 2000 15:35:29 +0000 (15:35 +0000)]
[project @ 2000-06-13 15:35:29 by partain]
Initial revision
partain [Tue, 13 Jun 2000 15:35:29 +0000 (15:35 +0000)]
[project @ 2000-06-13 15:35:29 by partain]
Bulk of final changes for 2.01
partain [Tue, 13 Jun 2000 15:35:29 +0000 (15:35 +0000)]
[project @ 2000-06-13 15:35:29 by partain]
Alleged post-Sansom 0.27+ code
partain [Tue, 13 Jun 2000 15:35:29 +0000 (15:35 +0000)]
[project @ 2000-06-13 15:35:29 by partain]
After Andy Gill's late-95 changes
partain [Tue, 13 Jun 2000 15:35:29 +0000 (15:35 +0000)]
[project @ 2000-06-13 15:35:29 by partain]
hwloidl [Tue, 13 Jun 2000 15:35:29 +0000 (15:35 +0000)]
[project @ 2000-06-13 15:35:29 by hwloidl]
Merged GUM-4-04 branch into the main trunk. In particular merged GUM and
SMP code. Most of the GranSim code in GUM-4-04 still has to be carried over.
andre [Tue, 13 Jun 2000 15:35:29 +0000 (15:35 +0000)]
[project @ 2000-06-13 15:35:29 by andre]
RS6000/AIX patches
andre [Tue, 13 Jun 2000 15:35:29 +0000 (15:35 +0000)]
[project @ 2000-06-13 15:35:29 by andre]
RS6000 prof & conc patches
andre [Tue, 13 Jun 2000 15:35:29 +0000 (15:35 +0000)]
[project @ 2000-06-13 15:35:29 by andre]
Parallel 2.04 patches
andre [Tue, 13 Jun 2000 15:35:29 +0000 (15:35 +0000)]
[project @ 2000-06-13 15:35:29 by andre]
AIX/RS6000 patches
keithw [Tue, 13 Jun 2000 15:04:48 +0000 (15:04 +0000)]
[project @ 2000-06-13 15:04:48 by keithw]
Fix: mkPiType has moved.
keithw [Tue, 13 Jun 2000 14:46:30 +0000 (14:46 +0000)]
[project @ 2000-06-13 14:46:30 by keithw]
Alter to match new CoreLint.
keithw [Tue, 13 Jun 2000 14:37:46 +0000 (14:37 +0000)]
[project @ 2000-06-13 14:37:46 by keithw]
A few things here:
* fix some comment typos
* alter CoreLint architecture to permit warnings as well as errors
* add `endPassWithRules' to permit printing of rules as well as binds
* move mkPiType to CoreUtils (for UsageSP reasons)
panne [Mon, 12 Jun 2000 21:40:05 +0000 (21:40 +0000)]
[project @ 2000-06-12 21:40:05 by panne]
printf => showFFloat. Now waugh_neural fails with
Fail: Prelude.(!!): negative index,
but that's better than before. :-)
panne [Mon, 12 Jun 2000 21:27:03 +0000 (21:27 +0000)]
[project @ 2000-06-12 21:27:03 by panne]
Synched with output required by H98 report
panne [Mon, 12 Jun 2000 20:47:34 +0000 (20:47 +0000)]
[project @ 2000-06-12 20:47:34 by panne]
*nix-ified the expected output. M$-people are more used to error
messages, and one has to lose... >:-)
panne [Mon, 12 Jun 2000 20:32:16 +0000 (20:32 +0000)]
[project @ 2000-06-12 20:32:16 by panne]
"Non-exhaustive guards" => "Non-exhaustive patterns"
panne [Mon, 12 Jun 2000 19:57:40 +0000 (19:57 +0000)]
[project @ 2000-06-12 19:57:40 by panne]
Print only the first 6 characters of the result's decimal
representation, this "solves" the problem that without optimization
0.
46920002 was printed and 0.4692 with -O. Perhaps this could be
turned into a test for constant folding, but this was probably not the
test writer's intention.
panne [Mon, 12 Jun 2000 18:15:18 +0000 (18:15 +0000)]
[project @ 2000-06-12 18:15:18 by panne]
Use "foreign label" instead of litlit for stdout.
panne [Mon, 12 Jun 2000 18:13:20 +0000 (18:13 +0000)]
[project @ 2000-06-12 18:13:20 by panne]
`foreign label foo :: Addr' was simply mapped to `foo' on the C side,
but this is wrong, resp. only works for C *functions*, not *variables*
(praise the implicit conversions of C!). It now correctly maps to `(&foo)'.
ATTENTION: I'm not sure if this fix breaks some SW which depends on
the old (wrong) behaviour (H/Direct?).
panne [Mon, 12 Jun 2000 17:05:35 +0000 (17:05 +0000)]
[project @ 2000-06-12 17:05:35 by panne]
Added type signature to resolve ambiguity.
panne [Mon, 12 Jun 2000 17:04:51 +0000 (17:04 +0000)]
[project @ 2000-06-12 17:04:51 by panne]
Synched with reality.
panne [Mon, 12 Jun 2000 17:04:12 +0000 (17:04 +0000)]
[project @ 2000-06-12 17:04:12 by panne]
Synched with reality. The expected output is a little bit fragile...
panne [Mon, 12 Jun 2000 17:03:14 +0000 (17:03 +0000)]
[project @ 2000-06-12 17:03:14 by panne]
-syslib => -package
panne [Mon, 12 Jun 2000 17:02:00 +0000 (17:02 +0000)]
[project @ 2000-06-12 17:01:56 by panne]
HC_OPTS => SRC_HC_OPTS again, sorry about that
panne [Mon, 12 Jun 2000 16:59:54 +0000 (16:59 +0000)]
[project @ 2000-06-12 16:59:54 by panne]
Added a few lines how to pass global options, just for oblivious
people like me. :-}
panne [Mon, 12 Jun 2000 16:27:03 +0000 (16:27 +0000)]
[project @ 2000-06-12 16:26:59 by panne]
* Changed `SRC_HC_OPTS += ...' to `HC_OPTS += ...', otherwise `make
SRC_HC_OPTS=foo' does not work.
* -syslib => -package
panne [Mon, 12 Jun 2000 16:20:31 +0000 (16:20 +0000)]
[project @ 2000-06-12 16:20:31 by panne]
Only add -o? FOO.stdBAR when it exists. I'm not sure if this
foreach-hack is the most elegant way to go though...
simonmar [Mon, 12 Jun 2000 16:13:12 +0000 (16:13 +0000)]
[project @ 2000-06-12 16:13:12 by simonmar]
Delete whole swathes of old FFI-related stuff, after all no
documentation is better than wrong documentation :)
simonmar [Mon, 12 Jun 2000 16:01:02 +0000 (16:01 +0000)]
[project @ 2000-06-12 16:01:02 by simonmar]
revert part of previous commit that sneaked in by mistake.
simonmar [Mon, 12 Jun 2000 15:48:55 +0000 (15:48 +0000)]
[project @ 2000-06-12 15:48:55 by simonmar]
update link to deleted mkdependHS stuff
simonmar [Mon, 12 Jun 2000 15:47:27 +0000 (15:47 +0000)]
[project @ 2000-06-12 15:47:27 by simonmar]
add an id to the dependency section
panne [Mon, 12 Jun 2000 13:40:20 +0000 (13:40 +0000)]
[project @ 2000-06-12 13:40:20 by panne]
Pretty-printing EncodedStrings, next try...
simonmar [Mon, 12 Jun 2000 11:41:00 +0000 (11:41 +0000)]
[project @ 2000-06-12 11:41:00 by simonmar]
Update docs on mkdependHS: it isn't a separate utility, so document it
under "Using GHC".
Also update section on Happy.
panne [Mon, 12 Jun 2000 11:04:50 +0000 (11:04 +0000)]
[project @ 2000-06-12 11:04:50 by panne]
Undo the changes and make userStyle printing work again
simonmar [Mon, 12 Jun 2000 11:04:12 +0000 (11:04 +0000)]
[project @ 2000-06-12 11:04:12 by simonmar]
Fix a nasty bug: the 'c' component of StgUnion was declared as type
StgChar, which sounds reasonable, but meant that when assigning a char
to R1 gcc would correctly arrange to only overwrite the low byte
rather than zero-extending the value. We assume elsewhere that when
R1 contains a char that the upper 24 bits are zero, so this was wrong.
This bug must have been around for a *long* time, strange that it only
just showed up. <shrug>
andy [Mon, 12 Jun 2000 06:01:03 +0000 (06:01 +0000)]
[project @ 2000-06-12 06:01:03 by andy]
Commiting version of STG -> GOO that seems to compile PrelBase successfully.
Many other wibbles; esp. String handling.
panne [Sun, 11 Jun 2000 19:14:27 +0000 (19:14 +0000)]
[project @ 2000-06-11 19:14:27 by panne]
* Synched comments with reality
* Ensure that a f.e.d. function is never inlined, because the address
of the C stub (a litlit) is might not be in scope in other modules.
(untested fix).
*** merge ***
andy [Sun, 11 Jun 2000 08:12:02 +0000 (08:12 +0000)]
[project @ 2000-06-11 08:12:02 by andy]
Adding change that handles trivial use of primitives (compares,
integer arithmetic, etc) better when generating Java.
lewie [Sat, 10 Jun 2000 00:34:52 +0000 (00:34 +0000)]
[project @ 2000-06-10 00:34:52 by lewie]
Update instFunDepsOfTheta to accomodate Simon's recent commit (it hadn't
needed to generate fundeps for IParams previously). This undoes Simon's
comment about `forall a. ?x::a => Int' being ambiguous. It isn't, and
now it isn't flagged as such either. I.e, there's nothing wrong with:
foo :: ?x::a => Int
foo = fst (13, ?x)
(of course, less contrived examples can also be given!).
lewie [Fri, 9 Jun 2000 23:28:34 +0000 (23:28 +0000)]
[project @ 2000-06-09 23:28:34 by lewie]
Simon was kind enough to re-write elegantly a function that I had written
awkwardly, but revealed that beautification doesn't always yield better
code ;-) Fixed a silly typo and further beautified the code (so that the
cut-n-paster error that Simon introduced would have been easier to spot).
simonmar [Fri, 9 Jun 2000 16:21:30 +0000 (16:21 +0000)]
[project @ 2000-06-09 16:21:30 by simonmar]
ieee-flpt.h is in ../../includes, not ../includes.
simonpj [Fri, 9 Jun 2000 15:53:12 +0000 (15:53 +0000)]
[project @ 2000-06-09 15:53:12 by simonpj]
GHC gets upset if you have types like
Eq a => a->a
where 'a' is *not* universally quantified.
By "upset" I mean that the typechecker generates
rather bogus code, that subsequently kills Lint.
Such types used to be rejected in the renamer,
but Jeff removed that in favour of an ambiguity
check in TcMonoType. I remember agreeing to move
the renamer check to the type checker, and Jeff did this,
but the check in TcMonoType was only checking for
*ambiguity*, which isn't quite the same.
I've restored the missing check and commented it
better in TcMonoType.
Jeff: if this isn't right for you, let's dicuss.
Incidentally, I also generalise the ambiguity check
to detect
forall a. ?x::a => Int
which is ambiguous.
I did a few formatting changes too.
simonmar [Fri, 9 Jun 2000 15:15:25 +0000 (15:15 +0000)]
[project @ 2000-06-09 15:15:25 by simonmar]
Don't group variable bindings with the same name together. They
should be flagged as duplicate definitions.
simonmar [Fri, 9 Jun 2000 13:50:15 +0000 (13:50 +0000)]
[project @ 2000-06-09 13:48:46 by simonmar]
remove NonExhaustiveGuards exception
simonmar [Fri, 9 Jun 2000 13:48:09 +0000 (13:48 +0000)]
[project @ 2000-06-09 13:48:09 by simonmar]
Guard failure will now throw a PatternMatchFail, the
NonExhaustiveGuards exception is to be removed.
simonmar [Fri, 9 Jun 2000 11:01:58 +0000 (11:01 +0000)]
[project @ 2000-06-09 11:01:58 by simonmar]
Part of the -split-objs commit that I forgot yesterday.
simonpj [Fri, 9 Jun 2000 07:32:31 +0000 (07:32 +0000)]
[project @ 2000-06-09 07:32:31 by simonpj]
In my commit of 24 May I got this boolean condition
back to front:
tryWW non_rec fn_id rhs
| not (isNeverInlinePrag inline_prag)
= -- Don't split things that will never be inlined
The 'not' is obviously wrong! As a result virtually nothing
is being worker-wrapper'd
How this has survived for more than two weeks beats me.
andy [Fri, 9 Jun 2000 00:43:55 +0000 (00:43 +0000)]
[project @ 2000-06-09 00:43:55 by andy]
Commiting version of the STG->GOO code generator that works with fib.
panne [Thu, 8 Jun 2000 20:57:02 +0000 (20:57 +0000)]
[project @ 2000-06-08 20:57:02 by panne]
autoconf hackery for CTypes{,ISO} (continued)
panne [Thu, 8 Jun 2000 20:41:30 +0000 (20:41 +0000)]
[project @ 2000-06-08 20:41:30 by panne]
autoconf hackery for CTypes{,ISO}
simonmar [Thu, 8 Jun 2000 15:00:21 +0000 (15:00 +0000)]
[project @ 2000-06-08 15:00:21 by simonmar]
Remove out-of-date table that conflicts with the new one in the FFI
documentation.
rrt [Thu, 8 Jun 2000 14:59:17 +0000 (14:59 +0000)]
[project @ 2000-06-08 14:59:17 by rrt]
Commented out the revision history.
rrt [Thu, 8 Jun 2000 14:58:34 +0000 (14:58 +0000)]
[project @ 2000-06-08 14:58:34 by rrt]
Improved link to Foreign hslibs stuff.
rrt [Thu, 8 Jun 2000 14:50:18 +0000 (14:50 +0000)]
[project @ 2000-06-08 14:50:18 by rrt]
Tidied up a table.
rrt [Thu, 8 Jun 2000 14:43:47 +0000 (14:43 +0000)]
[project @ 2000-06-08 14:43:47 by rrt]
Better chapter name.
rrt [Thu, 8 Jun 2000 14:36:13 +0000 (14:36 +0000)]
[project @ 2000-06-08 14:36:13 by rrt]
Added new FFI story from fptools/docs, and removed ccall docs.
Pls mrg
simonmar [Thu, 8 Jun 2000 12:54:29 +0000 (12:54 +0000)]
[project @ 2000-06-08 12:54:29 by simonmar]
Make object file splitting simpler, in preparation for conversion to
the new driver.
The "inject split markers" phase is now omitted, instead we generate
the split markers directly.
Driver: also removed now-defunct -fpedantic-bottoms flag.
rrt [Thu, 8 Jun 2000 10:48:58 +0000 (10:48 +0000)]
[project @ 2000-06-08 10:48:58 by rrt]
Changed ffi doc to worker-wrapper format.
simonmar [Thu, 8 Jun 2000 09:11:13 +0000 (09:11 +0000)]
[project @ 2000-06-08 09:11:13 by simonmar]
remove unneeded file.
simonmar [Thu, 8 Jun 2000 09:01:35 +0000 (09:01 +0000)]
[project @ 2000-06-08 09:01:35 by simonmar]
update interface file syntax
simonmar [Thu, 8 Jun 2000 08:54:33 +0000 (08:54 +0000)]
[project @ 2000-06-08 08:54:33 by simonmar]
update expected output
simonmar [Thu, 8 Jun 2000 08:45:20 +0000 (08:45 +0000)]
[project @ 2000-06-08 08:45:20 by simonmar]
Move read010 to rename/should_fail; this is really a renamer test.
rrt [Wed, 7 Jun 2000 16:15:22 +0000 (16:15 +0000)]
[project @ 2000-06-07 16:15:22 by rrt]
DocBooked and moved here from hdirect/doc.
keithw [Wed, 7 Jun 2000 15:33:50 +0000 (15:33 +0000)]
[project @ 2000-06-07 15:33:50 by keithw]
Fix printing of unfoldings in hi-files: lambda binders are now grouped
again like they used to be, rather than printed one-at-a-time.
andy [Wed, 7 Jun 2000 06:10:53 +0000 (06:10 +0000)]
[project @ 2000-06-07 06:10:53 by andy]
Adding types to the names inside the GOO.
All needed for a langauge with unboxed types ...
andy [Tue, 6 Jun 2000 21:55:30 +0000 (21:55 +0000)]
[project @ 2000-06-06 21:55:30 by andy]
More wibbles towards compiling data constructors and unboxing correctly.
andy [Tue, 6 Jun 2000 07:10:44 +0000 (07:10 +0000)]
[project @ 2000-06-06 07:10:44 by andy]
Significant reworking of Java code generator, towards
getting unboxing working.
panne [Mon, 5 Jun 2000 20:57:58 +0000 (20:57 +0000)]
[project @ 2000-06-05 20:57:58 by panne]
The n-th attempt to get GCD right, this time negative Int arguments in
combination with zero. Another bug in this area and I'll leap out of
the window immediately... :-P
panne [Mon, 5 Jun 2000 20:55:25 +0000 (20:55 +0000)]
[project @ 2000-06-05 20:55:25 by panne]
Synched with reality
panne [Mon, 5 Jun 2000 20:54:29 +0000 (20:54 +0000)]
[project @ 2000-06-05 20:54:29 by panne]
Added tests for gcdInt/gcdInteger
panne [Sun, 4 Jun 2000 20:32:49 +0000 (20:32 +0000)]
[project @ 2000-06-04 20:32:49 by panne]
Fixed braino.
panne [Sun, 4 Jun 2000 18:27:45 +0000 (18:27 +0000)]
[project @ 2000-06-04 18:27:45 by panne]
The GCD saga continues: Fixed gcdInt/gcdInteger to work correctly for
non-positive values, i.e. call mpn_gcd_1 only with positive inputs,
and issue an error if both operands are zero. This should fix the bug
reported by Marc.
panne [Sun, 4 Jun 2000 08:45:39 +0000 (08:45 +0000)]
[project @ 2000-06-04 08:45:39 by panne]
Unbreak the driver again
lewie [Fri, 2 Jun 2000 16:19:47 +0000 (16:19 +0000)]
[project @ 2000-06-02 16:19:47 by lewie]
Class decls weren't taking functional dependencies into account when
checking for ambiguous type vars. Fixed.
rrt [Fri, 2 Jun 2000 16:12:00 +0000 (16:12 +0000)]
[project @ 2000-06-02 16:12:00 by rrt]
Updated DocBook notes to reflect heroic efforts of Messrs Panne and
Chakravarty.
rrt [Fri, 2 Jun 2000 16:02:22 +0000 (16:02 +0000)]
[project @ 2000-06-02 16:02:22 by rrt]
Added new greencard package.
simonmar [Fri, 2 Jun 2000 12:19:40 +0000 (12:19 +0000)]
[project @ 2000-06-02 12:19:40 by simonmar]
checkTyCon shouldn't look through newtypes. Instead, we add a new
function checkRepTyCon which does, and use it in the few cases where
it is needed.
This fixes a nasty bug with overloaded literals of newtypes, and
probably a whole bunch of other lurking bugs too.
simonmar [Fri, 2 Jun 2000 12:16:19 +0000 (12:16 +0000)]
[project @ 2000-06-02 12:16:19 by simonmar]
add new flag -fglasgow-exts-no-lang, which is the same as
-fglsagow-exts but doesn't include the implicit -package lang. This
is needed only for compiling ghc/lib/std, where hslibs/lang may or may
not exist.
simonmar [Fri, 2 Jun 2000 11:54:53 +0000 (11:54 +0000)]
[project @ 2000-06-02 11:54:53 by simonmar]
Fix bug in new version of hGetLine: it didn't handle unbuffered
handles properly.
The fix involves re-importing the old code for hGetLine :-(
panne [Thu, 1 Jun 2000 19:00:25 +0000 (19:00 +0000)]
[project @ 2000-06-01 19:00:25 by panne]
While adding a syslib, setup include dirs in addition to cc injects, too.
The driver is really a piece from hell... :-(
panne [Thu, 1 Jun 2000 10:45:09 +0000 (10:45 +0000)]
[project @ 2000-06-01 10:45:09 by panne]
The DocBook saga continues: Look for already installed catalog first.